@visulima/dev-toolbar 1.0.0-alpha.2 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +59 -42
  3. package/dist/apps/a11y/a11y-store.d.ts +1 -1
  4. package/dist/apps/a11y/a11y-tooltip.d.ts +1 -1
  5. package/dist/apps/a11y/index.js +3 -3
  6. package/dist/apps/inspector/index.d.ts +3 -0
  7. package/dist/apps/inspector/index.js +17 -0
  8. package/dist/apps/inspector/inspector-app.d.ts +12 -0
  9. package/dist/apps/module-graph/index.js +2 -2
  10. package/dist/apps/more/index.js +2 -2
  11. package/dist/apps/performance/index.js +2 -2
  12. package/dist/apps/seo/index.js +2 -2
  13. package/dist/apps/settings/index.js +2 -2
  14. package/dist/apps/settings/settings-app.d.ts +0 -1
  15. package/dist/apps/tailwind/index.d.ts +3 -0
  16. package/dist/apps/tailwind/index.js +7 -0
  17. package/dist/apps/tailwind/tailwind-app.d.ts +5 -0
  18. package/dist/apps/timeline/index.js +2 -2
  19. package/dist/apps/vite-config/index.js +2 -2
  20. package/dist/client/overlay.js +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.js +1 -1
  23. package/dist/packem_chunks/inject-source.js +1 -0
  24. package/dist/packem_shared/Alert-H-x1JuZ0.js +1 -0
  25. package/dist/packem_shared/Badge-C30mDKKG.js +1 -0
  26. package/dist/packem_shared/Button-DODNCTPZ.js +1 -0
  27. package/dist/packem_shared/Card-DdI7Wn3t.js +1 -0
  28. package/dist/packem_shared/Icon-DWFLZkwW.js +1 -0
  29. package/dist/packem_shared/Input-GfbOwAkK.js +1 -0
  30. package/dist/packem_shared/Label-Bzi47aUf.js +1 -0
  31. package/dist/packem_shared/Popover-o3Vkvndp.js +1 -0
  32. package/dist/packem_shared/Progress-vGfFpxRn.js +1 -0
  33. package/dist/packem_shared/Separator-DQGeJPQg.js +1 -0
  34. package/dist/packem_shared/Skeleton-BYXau6jM.js +1 -0
  35. package/dist/packem_shared/Switch-BeC78S_T.js +1 -0
  36. package/dist/packem_shared/Tabs-BBc4S-2T.js +1 -0
  37. package/dist/packem_shared/Textarea-DvbSX13V.js +1 -0
  38. package/dist/packem_shared/Tooltip-BwK-2I9P.js +1 -0
  39. package/dist/packem_shared/cn-DWLJYh3h.js +1 -0
  40. package/dist/packem_shared/createServerRPCContext-CRd6VAWp.js +1 -0
  41. package/dist/packem_shared/sharedToolbarStylesheet-DHHoFz2-.js +2 -0
  42. package/dist/packem_shared/use-theme-CX1gG6Sv.js +1 -0
  43. package/dist/rpc/functions/module-graph.d.ts +2 -2
  44. package/dist/rpc/functions/open-in-editor.d.ts +8 -3
  45. package/dist/rpc/functions/tailwind-config.d.ts +12 -0
  46. package/dist/rpc/server.d.ts +4 -1
  47. package/dist/timeline/capture.d.ts +6 -0
  48. package/dist/timeline/index.d.ts +1 -0
  49. package/dist/toolbar/app-manager.d.ts +7 -0
  50. package/dist/toolbar/components/app-button.d.ts +2 -2
  51. package/dist/toolbar/components/app-canvas.d.ts +0 -1
  52. package/dist/toolbar/components/app-tooltip-overlay.d.ts +0 -1
  53. package/dist/toolbar/components/first-visit-hint.d.ts +3 -3
  54. package/dist/toolbar/components/pinned-tooltip-card.d.ts +0 -1
  55. package/dist/toolbar/components/toolbar-bar.d.ts +0 -1
  56. package/dist/toolbar/components/vite-overlay-button.d.ts +0 -1
  57. package/dist/toolbar/context/index.d.ts +1 -1
  58. package/dist/toolbar/context/toolbar-context.d.ts +35 -35
  59. package/dist/toolbar/global-api.d.ts +1 -0
  60. package/dist/toolbar/hooks/index.d.ts +4 -4
  61. package/dist/toolbar/hooks/use-frame-state.d.ts +6 -6
  62. package/dist/toolbar/hooks/use-position.d.ts +1 -1
  63. package/dist/toolbar/index.d.ts +1 -2
  64. package/dist/toolbar/index.js +3 -4
  65. package/dist/types/app.d.ts +26 -14
  66. package/dist/types/global-api.d.ts +8 -1
  67. package/dist/types/rpc.d.ts +5 -0
  68. package/dist/ui/components/alert.d.ts +20 -0
  69. package/dist/ui/components/badge.d.ts +10 -0
  70. package/dist/ui/components/button.d.ts +12 -0
  71. package/dist/ui/components/card.d.ts +17 -0
  72. package/dist/ui/components/icon.d.ts +3 -3
  73. package/dist/ui/components/input.d.ts +8 -0
  74. package/dist/ui/components/label.d.ts +8 -0
  75. package/dist/ui/components/popover.d.ts +27 -0
  76. package/dist/ui/components/progress.d.ts +8 -0
  77. package/dist/ui/components/separator.d.ts +9 -0
  78. package/dist/ui/components/skeleton.d.ts +7 -0
  79. package/dist/ui/components/switch.d.ts +12 -0
  80. package/dist/ui/components/tabs.d.ts +29 -0
  81. package/dist/ui/components/textarea.d.ts +8 -0
  82. package/dist/ui/components/tooltip.d.ts +19 -0
  83. package/dist/ui/index.d.ts +17 -0
  84. package/dist/ui/index.js +1 -0
  85. package/dist/vite/inject-source.d.ts +25 -0
  86. package/dist/vite/matcher.d.ts +5 -0
  87. package/dist/vite-plugin.d.ts +39 -1
  88. package/dist/vite-plugin.js +2 -2
  89. package/package.json +20 -3
  90. package/dist/packem_shared/cn-BEsR6GkP.js +0 -1
  91. package/dist/packem_shared/createServerRPCContext-BVSesPXu.js +0 -1
  92. package/dist/packem_shared/icon-BUQ92HaT.js +0 -1
  93. package/dist/rpc/index.d.ts +0 -8
@@ -1,6 +1,5 @@
1
- var Wr=Object.defineProperty;var S=(r,e)=>Wr(r,"name",{value:e,configurable:!0});import{createContext as Br,render as Ar}from"preact";import{createClientRPCContext as Rr}from"../packem_shared/createClientRPCContext-DzKQpKTk.js";import{updateSettings as Zr,loadSettings as _r}from"../packem_shared/loadSettings-hvjR4fcS.js";import{getGlobalHook as Gr,setupGlobalHook as Yr}from"../packem_shared/setupGlobalHook-CFuxsCyl.js";import{jsx as a,jsxs as v,Fragment as Mr}from"preact/jsx-runtime";import{g as Or}from"../packem_shared/store-BxE0w51s.js";import{addHookName as s}from"preact/devtools";import{useContext as Xr,useEffect as _,useMemo as er,useState as W,useRef as b,useCallback as sr,useLayoutEffect as Jr}from"preact/hooks";import{m as h}from"../packem_shared/cn-BEsR6GkP.js";import{u as zr,a as Nr,i as tr}from"../packem_shared/icon-BUQ92HaT.js";var Ur=Object.defineProperty,Qr=S((r,e)=>Ur(r,"name",{value:e,configurable:!0}),"t$4");const ur=Qr(()=>{const r=Rr();return{rpc:new Proxy({},{get(e,t){return(...i)=>r.callServer(t,...i)}})}},"createServerHelpers");var qr=Object.defineProperty,Kr=S((r,e)=>qr(r,"name",{value:e,configurable:!0}),"n$3");class re{static{S(this,"AppManager")}static{Kr(this,"AppManager")}apps=new Map;activeAppId=null;initializedApps=new Set;appCanvases=new Map;registerApp(e,t=!1){this.apps.has(e.id)&&(this.initializedApps.delete(e.id),this.appCanvases.delete(e.id),this.activeAppId===e.id&&(this.activeAppId=null));const i=new EventTarget,o={...e,active:!1,builtIn:t,eventTarget:i,notification:{state:!1},status:"ready"};this.apps.set(e.id,o)}async unregisterApp(e){const t=this.apps.get(e);if(t?.destroy&&this.initializedApps.has(e)){const i=this.appCanvases.get(e);if(i)try{await t.destroy(i.shadowRoot)}catch(o){console.error(`[dev-toolbar] destroy() failed for app ${e}:`,o)}}this.apps.delete(e),this.initializedApps.delete(e),this.appCanvases.delete(e),this.activeAppId===e&&(this.activeAppId=null)}getApp(e){return this.apps.get(e)}getAllApps(){return[...this.apps.values()]}getActiveApp(){if(this.activeAppId)return this.apps.get(this.activeAppId)}async toggleApp(e){const t=this.apps.get(e);return t?t.active?await this.closeApp(e):this.activeAppId&&!await this.closeApp(this.activeAppId)?!1:await this.openApp(e):!1}isAppInitialized(e){return this.initializedApps.has(e)}markAppInitialized(e){this.initializedApps.add(e)}async openApp(e){const t=this.apps.get(e);if(!t)return!1;if(t.active=!0,t.status="loading",this.activeAppId=e,t.init&&!this.isAppInitialized(e))try{const i=this.getAppCanvas(e);if(i){const o=ur(),n=t.init(i.shadowRoot,t.eventTarget,o);n&&typeof n.then=="function"&&await n,this.markAppInitialized(e),t.status="ready"}else t.status="pending"}catch(i){return console.error(`[dev-toolbar] Failed to init app ${e}:`,i),t.status="error",t.active=!1,this.activeAppId=null,!1}else t.status="ready";return!0}async closeApp(e){const t=this.apps.get(e);if(!t||!t.active)return!1;if(t.beforeTogglingOff){const i=this.getAppCanvas(e);if(i)try{const o=t.beforeTogglingOff(i.shadowRoot);if(!(o&&typeof o.then=="function"?await o:o))return!1}catch(o){console.error(`[dev-toolbar] beforeTogglingOff() threw for app ${e}:`,o)}}return t.active=!1,this.activeAppId===e&&(this.activeAppId=null),!0}setNotification(e,t,i){const o=this.apps.get(e);o&&(o.notification={level:i,state:t})}clearNotification(e){const t=this.apps.get(e);t&&(t.notification={state:!1})}getAppCanvas(e){return this.appCanvases.get(e)||null}setAppCanvas(e,t){this.appCanvases.set(e,t)}}var ee=Object.defineProperty,te=S((r,e)=>ee(r,"name",{value:e,configurable:!0}),"t$3");const Vr=Br(null),Tr=te(()=>{const r=Xr(Vr);if(!r)throw new Error("useToolbarContext must be used within ToolbarContext provider");return r},"useToolbarContext");var oe=Object.defineProperty,ae=S((r,e)=>oe(r,"name",{value:e,configurable:!0}),"t$2");const Pr=ae(()=>{const r=Tr();return{activeAppId:r.activeAppId,apps:r.apps,clearNotification:r.clearNotification,registerApp:r.registerApp,setNotification:r.setNotification,toggleApp:r.toggleApp,unregisterApp:r.unregisterApp}},"useApps");var ie=Object.defineProperty,br=S((r,e)=>ie(r,"name",{value:e,configurable:!0}),"s$4");const ne=br((r,e)=>{const t=e.split("+"),i=t.at(-1)??"",o=t.includes("Alt"),n=t.includes("Shift"),c=t.includes("Control")||t.includes("Ctrl"),g=t.includes("Meta")||t.includes("Cmd");return(r.key===i||r.code===`Key${i.toUpperCase()}`)&&r.altKey===o&&r.shiftKey===n&&r.ctrlKey===c&&r.metaKey===g},"matchesBinding"),le=br(()=>{const{state:r,updateState:e}=zr(),t=br((n,c)=>{const g=c??!r.open;e({open:g,...g?{}:{viewMode:"default"}})},"togglePanelVisible"),i=br(()=>{r.open&&e({open:!1,viewMode:"default"})},"closePanel");_(()=>{const n=r.keybindings?.toggle??"Alt+Shift+D",c=br(g=>{ne(g,n)&&t()},"handleKeyDown");return globalThis.window?.addEventListener("keydown",c),()=>{globalThis.window?.removeEventListener("keydown",c)}},[r.open,r.keybindings?.toggle]);const o=s(er(()=>r.open,[r.open]),"panelVisibleValue: boolean");return{closePanel:i,panelVisible:o,togglePanelVisible:t}},"usePanelVisible");var se=Object.defineProperty,Fr=S((r,e)=>se(r,"name",{value:e,configurable:!0}),"e");const vr=Fr((r,e,t)=>Math.min(Math.max(r,e),t),"clamp");Fr(()=>navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),"checkIsSafari");const fr=Fr(r=>typeof r=="string"?r.endsWith("px")?Number(r.slice(0,-2)):Number(r):r,"pixelToNumber");var ce=Object.defineProperty,or=S((r,e)=>ce(r,"name",{value:e,configurable:!0}),"g$2");const jr=or(r=>r<5?0:r>95?100:Math.abs(r-50)<2?50:r,"snapToPoints"),de=or(()=>{if(globalThis.window===void 0)return{bottom:0,left:0,right:0,top:0};const r=getComputedStyle(document.documentElement);return{bottom:fr(r.getPropertyValue("env(safe-area-inset-bottom)")||"0"),left:fr(r.getPropertyValue("env(safe-area-inset-left)")||"0"),right:fr(r.getPropertyValue("env(safe-area-inset-right)")||"0"),top:fr(r.getPropertyValue("env(safe-area-inset-top)")||"0")}},"getSafeAreaInsets"),pe=or(()=>{const[r,e]=s(W(()=>({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})),"size");return _(()=>{const t=or(()=>{e({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})},"updateSize");return t(),globalThis.window?.addEventListener("resize",t),()=>{globalThis.window?.removeEventListener("resize",t)}},[]),r},"useWindowSize"),ue=or(r=>{const{state:e,updateState:t}=zr(),{height:i,width:o}=pe(),[n,c]=s(W(!1),"isHovering"),[g,T]=s(W(!1),"isDragging"),[V,y]=s(W(!1),"isViteOverlayOpen"),B=s(b({x:0,y:0}),"draggingOffsetRef"),P=s(b({x:0,y:0}),"mousePositionRef"),k=s(b(null),"timerRef"),w=s(b(null),"capturedPointerIdRef"),$=s(b(!1),"isDraggingRef"),j=s(b(o),"windowWidthRef"),R=s(b(i),"windowHeightRef"),Z=s(b(t),"updateStateRef");_(()=>{j.current=o,R.current=i},[o,i]),_(()=>{Z.current=t},[t]);const[x,O]=s(W(()=>({bottom:10,left:10,right:10,top:10})),"panelMargins");_(()=>{const u=de();O({bottom:u.bottom+10,left:u.left+10,right:u.right+10,top:u.top+10})},[]),_(()=>{const u=or(()=>{const F=globalThis.__v_o__current;if(F?.parentNode){const l=F.shadowRoot?.querySelector("#__v_o__root");y(!!l&&!l.classList.contains("hidden"))}else y(!1)},"check"),C=setInterval(u,300);return u(),()=>clearInterval(C)},[]);const J=sr(u=>{u.preventDefault(),u.stopPropagation(),T(!0),$.current=!0;const C=r.current;if(C){const{height:F,left:l,top:d,width:p}=C.getBoundingClientRect();B.current={x:u.clientX-l-p/2,y:u.clientY-d-F/2};const D=u.target;try{D&&D.setPointerCapture?(D.setPointerCapture(u.pointerId),w.current=u.pointerId):C.setPointerCapture&&(C.setPointerCapture(u.pointerId),w.current=u.pointerId)}catch(z){console.warn("Failed to capture pointer:",z)}document.body.style.cursor="grabbing",document.body.style.userSelect="none"}},[r]),Y=sr(()=>{c(!0),!(e.minimizePanelInactive<0)&&(k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{c(!1)},e.minimizePanelInactive||5e3))},[e.minimizePanelInactive]);_(()=>{Y()},[Y]),_(()=>{const u=or(d=>{if($.current&&(T(!1),$.current=!1,document.body.style.cursor="",document.body.style.userSelect="",w.current!==null)){try{const p=r.current;p&&w.current!==null&&p.releasePointerCapture(w.current)}catch{}w.current=null}},"handlePointerUp"),C=or(d=>{if($.current&&(T(!1),$.current=!1,document.body.style.cursor="",document.body.style.userSelect="",w.current!==null)){try{const p=r.current;p&&w.current!==null&&p.releasePointerCapture(w.current)}catch{}w.current=null}},"handlePointerCancel"),F=or(()=>{$.current&&(T(!1),$.current=!1,w.current=null,document.body.style.cursor="",document.body.style.userSelect="")},"handleLostPointerCapture"),l=or(d=>{if(!$.current)return;d.preventDefault();const p=j.current,D=R.current,z=p/2,G=D/2,q=d.clientX,I=d.clientY,ir=q-B.current.x,rr=I-B.current.y;P.current={x:ir,y:rr};const ar=Math.max(0,Math.min(q,p)),nr=Math.max(0,Math.min(I,D)),X=Math.atan2(nr-G,ar-z),m=70,E=Math.atan2(0-G+m,0-z),M=Math.atan2(0-G+m,p-z),K=Math.atan2(D-m-G,0-z),dr=Math.atan2(D-m-G,p-z),mr=X>=E&&X<=M?"top":X>=M&&X<=dr?"right":X>=dr&&X<=K?"bottom":"left",Hr=Math.max(0,Math.min(100,ir/p*100)),Lr=Math.max(0,Math.min(100,rr/D*100));Z.current({left:jr(Hr),position:mr,top:jr(Lr)})},"handlePointerMove");return document.addEventListener("pointermove",l,{capture:!0,passive:!1}),document.addEventListener("pointerup",u,{capture:!0}),document.addEventListener("pointercancel",C,{capture:!0}),document.addEventListener("lostpointercapture",F,{capture:!0}),()=>{document.removeEventListener("pointermove",l,{capture:!0}),document.removeEventListener("pointerup",u,{capture:!0}),document.removeEventListener("pointercancel",C,{capture:!0}),document.removeEventListener("lostpointercapture",F,{capture:!0})}},[]);const A=s(er(()=>e.position==="left"||e.position==="right",[e.position]),"isVertical"),f=s(er(()=>{if(e.minimizePanelInactive<0)return!1;if(e.minimizePanelInactive===0)return!0;const u=globalThis.window!==void 0&&("ontouchstart"in globalThis.window||(globalThis.navigator?.maxTouchPoints??0)>0);return!g&&!e.open&&!n&&!u&&e.minimizePanelInactive>0&&!V},[g,e.open,e.minimizePanelInactive,n,V]),"isHidden"),N=s(er(()=>{const u=r.current,C=(u?.clientWidth??0)/2,F=(u?.clientHeight??0)/2,l=A?F:C,d=A?C:F,p=e.left*o/100,D=e.top*i/100;switch(e.position){case"top":return{left:vr(p,l+x.left,o-l-x.right),top:x.top+d-(f?30:0)};case"right":return{left:o-x.right-l+(f?15:0)-(f?0:10),top:vr(D,d+x.top,i-d-x.bottom)};case"left":return{left:x.left+l-(f?30:0),top:vr(D,d+x.top,i-d-x.bottom)};default:return{left:vr(p,l+x.left,o-l-x.right),top:i-x.bottom-d+(f?30:0)}}},[e.left,e.open,e.position,e.top,i,o,x,r,f,A]),"anchorPos"),cr=s(er(()=>({left:`${N.left}px`,top:`${N.top}px`,transition:g?"none":"left 0.3s ease, top 0.3s ease"}),[N,g]),"anchorStyle"),U=s(er(()=>{const u=r.current,C=(u?.clientWidth??0)/2,F=(u?.clientHeight??0)/2,l=A?F:C,d=A?C:F,p={bottom:x.bottom+d,left:x.left+l,right:x.right+l,top:x.top+d},D=p.left+p.right,z=p.top+p.bottom,G=o-D,q=i-z,I={height:`min(${e.height}vh, calc(100vh - ${z}px))`,pointerEvents:g?"none":"auto",width:`min(${e.width}vw, calc(100vw - ${D}px))`,zIndex:"-1"},ir=N,rr=Math.min(G,e.width*o/100),ar=Math.min(q,e.height*i/100),nr=ir?.left??0,X=ir?.top??0;switch(e.position){case"top":case"bottom":{I.left="0",I.transform="translate(-50%, 0)",nr-p.left<rr/2?I.left=`${rr/2-nr+p.left}px`:o-nr-p.right<rr/2&&(I.left=`${o-nr-rr/2-p.right}px`);break}case"right":case"left":{I.top="0",I.transform="translate(0, -50%)",X-p.top<ar/2?I.top=`${ar/2-X+p.top}px`:i-X-p.bottom<ar/2&&(I.top=`${i-X-ar/2-p.bottom}px`);break}}switch(e.position){case"top":{I.top="0";break}case"right":{I.right="0";break}case"left":{I.left="0";break}default:{I.bottom="0";break}}return I},[N,g,x,e.height,e.position,e.width,i,o,r,A]),"iframeStyle"),Q=s(er(()=>{const u={};return A?u.transform="translate(-50%, -50%) rotate(90deg)":u.transform="translate(-50%, -50%)",g&&(u.transition="none !important"),u},[g,A]),"panelStyle");return{anchorStyle:cr,bringUp:Y,iframeStyle:U,isDragging:g,isHidden:f,isVertical:A,onPointerDown:J,panelStyle:Q}},"usePosition");var ge=Object.defineProperty,wr=S((r,e)=>ge(r,"name",{value:e,configurable:!0}),"t$1");const be=wr(({app:r})=>{const{toggleApp:e}=Pr(),{isVisible:t,setHoveredApp:i}=Tr(),o=s(b(null),"buttonRef"),n=wr(()=>{i(null),e(r.id).catch(T=>{console.error(`[dev-toolbar] Failed to toggle app ${r.id}:`,T)})},"handleClick"),c=wr(()=>{!r.tooltip||t||i(r,o.current?.getBoundingClientRect()??null)},"handleMouseEnter"),g=wr(()=>{r.tooltip&&i(null)},"handleMouseLeave");return a("button",{ref:o,"aria-label":r.name,class:h("relative flex justify-center items-center","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-primary/8 hover:text-primary","active:scale-[0.94]",r.active&&"bg-primary/12 text-primary","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":r.id,onClick:n,onMouseEnter:c,onMouseLeave:g,title:r.tooltip?void 0:r.name,type:"button",children:v("div",{class:"relative size-6 select-none flex items-center justify-center",children:[a("div",{class:"size-6 flex items-center justify-center [&_svg]:size-4.5",dangerouslySetInnerHTML:{__html:r.icon}}),r.notification.state&&a("span",{class:h("absolute -top-1 -right-1 size-1.5 rounded-full border border-background",r.notification.level==="error"&&"bg-destructive",r.notification.level==="warning"&&"bg-warning",(!r.notification.level||r.notification.level==="info")&&"bg-info"),"data-level":r.notification.level||"info"})]})})},"AppButton"),he="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-chevron-right%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m9%2018%206-6-6-6%22%20%2F%3E%20%3C%2Fsvg%3E",me="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-layers%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12.83%202.18a2%202%200%200%200-1.66%200L2.6%206.08a1%201%200%200%200%200%201.83l8.58%203.91a2%202%200%200%200%201.66%200l8.58-3.9a1%201%200%200%200%200-1.83z%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2012a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2012%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2017a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2017%22%20%2F%3E%20%3C%2Fsvg%3E",ve="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M15%203h6v6%22%20%2F%3E%20%3Cpath%20d%3D%22m21%203-7%207%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2021H3v-6%22%20%2F%3E%20%3C%2Fsvg%3E",fe="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203H5a2%202%200%200%200-2%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208V5a2%202%200%200%200-2-2h-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016v3a2%202%200%200%200%202%202h3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021h3a2%202%200%200%200%202-2v-3%22%20%2F%3E%20%3C%2Fsvg%3E",we="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m14%2010%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2010h-6V4%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2014h6v6%22%20%2F%3E%20%3C%2Fsvg%3E",xe="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203v3a2%202%200%200%201-2%202H3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208h-3a2%202%200%200%201-2-2V3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016h3a2%202%200%200%201%202%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021v-3a2%202%200%200%201%202-2h3%22%20%2F%3E%20%3C%2Fsvg%3E",ye="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-picture-in-picture-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M21%209V6a2%202%200%200%200-2-2H4a2%202%200%200%200-2%202v10c0%201.1.9%202%202%202h4%22%20%2F%3E%20%3Crect%20width%3D%2210%22%20height%3D%227%22%20x%3D%2212%22%20y%3D%2213%22%20rx%3D%222%22%20%2F%3E%20%3C%2Fsvg%3E",ke="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-x%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M18%206%206%2018%22%20%2F%3E%20%3Cpath%20d%3D%22m6%206%2012%2012%22%20%2F%3E%20%3C%2Fsvg%3E";var De=`/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#f2f2f2;--color-foreground:#18181b;--color-card:#fff;--color-primary:#7c3aed;--color-primary-foreground:#fff;--color-muted:#e4e4e7;--color-muted-foreground:#52525b;--color-accent:#e4e4e7;--color-destructive:oklch(55% .22 25);--color-border:#d4d4d8;--color-ring:#71717a;--color-info:oklch(45% .2 240);--color-success:oklch(48% .18 155);--color-success-foreground:oklch(38% .17 155);--color-warning:oklch(58% .18 65);--color-warning-foreground:oklch(45% .16 65)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--color-border);outline-color:#71717a80}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--color-ring) 50%, transparent)}}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-1\\.5{top:calc(var(--spacing) * 1.5)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.top-\\[-5px\\]{top:-5px}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-1\\.5{right:calc(var(--spacing) * 1.5)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-14{right:calc(var(--spacing) * 14)}.right-\\[-5px\\]{right:-5px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1\\.5{bottom:calc(var(--spacing) * 1.5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-14{bottom:calc(var(--spacing) * 14)}.bottom-\\[-5px\\]{bottom:-5px}.left-0{left:calc(var(--spacing) * 0)}.left-1\\.5{left:calc(var(--spacing) * 1.5)}.left-1\\/2{left:50%}.left-14{left:calc(var(--spacing) * 14)}.left-\\[-5px\\]{left:-5px}.left-\\[calc\\(100\\%\\+0\\.5rem\\)\\]{left:calc(100% + .5rem)}.z-10{z-index:10}.z-50{z-index:50}.z-\\[2147483646\\]{z-index:2147483646}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-0\\.5{margin-inline:calc(var(--spacing) * .5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.-mb-1{margin-bottom:calc(var(--spacing) * -1)}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\\[1200\\/630\\]{aspect-ratio:1200/630}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-48{min-height:calc(var(--spacing) * 48)}.w-2\\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-9{width:calc(var(--spacing) * 9)}.w-12\\.5{width:calc(var(--spacing) * 12.5)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-36{width:calc(var(--spacing) * 36)}.w-62\\.5{width:calc(var(--spacing) * 62.5)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\\[240px\\]{width:240px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-12\\!{max-width:calc(var(--spacing) * 12)!important}.max-w-\\[220px\\]{max-width:220px}.max-w-\\[240px\\]{max-width:240px}.max-w-\\[300px\\]{max-width:300px}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-3\\.5{min-width:calc(var(--spacing) * 3.5)}.min-w-\\[200px\\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\\[bottom_center\\]{transform-origin:bottom}.origin-\\[left_center\\]{transform-origin:0}.origin-\\[right_center\\]{transform-origin:100%}.origin-\\[top_center\\]{transform-origin:top}.origin-center{transform-origin:50%}.-translate-x-1{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-2{--tw-translate-x:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\\[-2px\\]{--tw-translate-x:-2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\\[0\\.97\\]{scale:.97}.scale-\\[0\\.99\\]{scale:.99}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-none\\!{animation:none!important}.animate-pulse{animation:var(--animate-pulse)}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/30>:not(:last-child)){border-color:#d4d4d84d}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/30>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}:where(.divide-border\\/50>:not(:last-child)){border-color:#d4d4d880}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-background{border-color:var(--color-background)}.border-blue-500\\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/30{border-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.border-blue-600\\/30{border-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.border-blue-600\\/30{border-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/30{border-color:#d4d4d84d}@supports (color:color-mix(in lab, red, red)){.border-border\\/30{border-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.border-border\\/40{border-color:#d4d4d866}@supports (color:color-mix(in lab, red, red)){.border-border\\/40{border-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.border-border\\/50{border-color:#d4d4d880}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-border\\/60{border-color:#d4d4d899}@supports (color:color-mix(in lab, red, red)){.border-border\\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-destructive\\/30{border-color:#d409244d}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/30{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.border-emerald-500\\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.border-foreground\\/20{border-color:#18181b33}@supports (color:color-mix(in lab, red, red)){.border-foreground\\/20{border-color:color-mix(in oklab, var(--color-foreground) 20%, transparent)}}.border-green-500\\/30{border-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/30{border-color:color-mix(in oklab, var(--color-green-500) 30%, transparent)}}.border-indigo-500\\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-info\\/30{border-color:#005b934d}@supports (color:color-mix(in lab, red, red)){.border-info\\/30{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.border-orange-500\\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab, red, red)){.border-orange-500\\/30{border-color:color-mix(in oklab, var(--color-orange-500) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\\/15{border-color:#7c3aed26}@supports (color:color-mix(in lab, red, red)){.border-primary\\/15{border-color:color-mix(in oklab, var(--color-primary) 15%, transparent)}}.border-primary\\/20{border-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.border-primary\\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-primary\\/25{border-color:#7c3aed40}@supports (color:color-mix(in lab, red, red)){.border-primary\\/25{border-color:color-mix(in oklab, var(--color-primary) 25%, transparent)}}.border-primary\\/30{border-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.border-primary\\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.border-primary\\/40{border-color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.border-primary\\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-purple-500\\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-sky-500\\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab, red, red)){.border-sky-500\\/30{border-color:color-mix(in oklab, var(--color-sky-500) 30%, transparent)}}.border-success\\/30{border-color:#0073394d}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/20{border-color:#af660033}@supports (color:color-mix(in lab, red, red)){.border-warning\\/20{border-color:color-mix(in oklab, var(--color-warning) 20%, transparent)}}.border-warning\\/30{border-color:#af66004d}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.border-yellow-500\\/30{border-color:#edb2004d}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-primary\\/20{border-left-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.border-l-primary\\/20{border-left-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-accent{background-color:var(--color-accent)}.bg-background{background-color:var(--color-background)}.bg-blue-500\\/15{background-color:#3080ff26}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/15{background-color:color-mix(in oklab, var(--color-blue-500) 15%, transparent)}}.bg-card{background-color:var(--color-card)}.bg-card\\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-card\\/50{background-color:color-mix(in oklab, var(--color-card) 50%, transparent)}}.bg-card\\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-card\\/95{background-color:color-mix(in oklab, var(--color-card) 95%, transparent)}}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\\/10{background-color:#d409241a}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/10{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.bg-destructive\\/15{background-color:#d4092426}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/15{background-color:color-mix(in oklab, var(--color-destructive) 15%, transparent)}}.bg-emerald-500\\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-foreground\\/2{background-color:#18181b05}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/2{background-color:color-mix(in oklab, var(--color-foreground) 2%, transparent)}}.bg-foreground\\/3{background-color:#18181b08}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/3{background-color:color-mix(in oklab, var(--color-foreground) 3%, transparent)}}.bg-foreground\\/4{background-color:#18181b0a}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/4{background-color:color-mix(in oklab, var(--color-foreground) 4%, transparent)}}.bg-foreground\\/5{background-color:#18181b0d}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/5{background-color:color-mix(in oklab, var(--color-foreground) 5%, transparent)}}.bg-foreground\\/6{background-color:#18181b0f}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/6{background-color:color-mix(in oklab, var(--color-foreground) 6%, transparent)}}.bg-foreground\\/8{background-color:#18181b14}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/8{background-color:color-mix(in oklab, var(--color-foreground) 8%, transparent)}}.bg-foreground\\/12{background-color:#18181b1f}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/12{background-color:color-mix(in oklab, var(--color-foreground) 12%, transparent)}}.bg-foreground\\/15{background-color:#18181b26}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/15{background-color:color-mix(in oklab, var(--color-foreground) 15%, transparent)}}.bg-green-500\\/15{background-color:#00c75826}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/15{background-color:color-mix(in oklab, var(--color-green-500) 15%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-info\\/15{background-color:#005b9326}@supports (color:color-mix(in lab, red, red)){.bg-info\\/15{background-color:color-mix(in oklab, var(--color-info) 15%, transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground\\/50{background-color:#52525b80}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/50{background-color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.bg-orange-500\\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab, red, red)){.bg-orange-500\\/15{background-color:color-mix(in oklab, var(--color-orange-500) 15%, transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary-foreground{background-color:var(--color-primary-foreground)}.bg-primary\\/4{background-color:#7c3aed0a}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/4{background-color:color-mix(in oklab, var(--color-primary) 4%, transparent)}}.bg-primary\\/5{background-color:#7c3aed0d}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/6{background-color:#7c3aed0f}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/6{background-color:color-mix(in oklab, var(--color-primary) 6%, transparent)}}.bg-primary\\/8{background-color:#7c3aed14}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/8{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.bg-primary\\/10{background-color:#7c3aed1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\\/12{background-color:#7c3aed1f}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/12{background-color:color-mix(in oklab, var(--color-primary) 12%, transparent)}}.bg-primary\\/20{background-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-primary\\/50{background-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/50{background-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.bg-purple-500\\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\\/15{background-color:color-mix(in oklab, var(--color-purple-500) 15%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success\\/10{background-color:#0073391a}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning\\/10{background-color:#af66001a}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-warning\\/15{background-color:#af660026}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/15{background-color:color-mix(in oklab, var(--color-warning) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/15{background-color:#edb20026}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/15{background-color:color-mix(in oklab, var(--color-yellow-500) 15%, transparent)}}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.toolbar-font{font-feature-settings:"kern" 1, "liga" 1, "calt" 1, "zero" 1;font-optical-sizing:auto;font-family:JetBrains Mono,Geist Mono,ui-monospace,Cascadia Code,Fira Code,monospace}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[0\\.5rem\\]{font-size:.5rem}.text-\\[0\\.6rem\\]{font-size:.6rem}.text-\\[0\\.7rem\\]{font-size:.7rem}.text-\\[0\\.8rem\\]{font-size:.8rem}.text-\\[0\\.9rem\\]{font-size:.9rem}.text-\\[0\\.55rem\\]{font-size:.55rem}.text-\\[0\\.58rem\\]{font-size:.58rem}.text-\\[0\\.62rem\\]{font-size:.62rem}.text-\\[0\\.65rem\\]{font-size:.65rem}.text-\\[0\\.72rem\\]{font-size:.72rem}.text-\\[0\\.75rem\\]{font-size:.75rem}.text-\\[0\\.85rem\\]{font-size:.85rem}.text-\\[0\\.725rem\\]{font-size:.725rem}.text-\\[0\\.775rem\\]{font-size:.775rem}.text-\\[0\\.8125rem\\]{font-size:.8125rem}.text-\\[9px\\]{font-size:9px}.text-\\[13px\\]\\!{font-size:13px!important}.leading-\\[1\\.6\\]\\!{--tw-leading:1.6!important;line-height:1.6!important}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\\[-0\\.01em\\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\\[0\\.1em\\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\\[0\\.06em\\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\\[0\\.12em\\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\\[0\\.14em\\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-400{color:var(--color-blue-400)}.text-destructive{color:var(--color-destructive)}.text-emerald-400{color:var(--color-emerald-400)}.text-foreground{color:var(--color-foreground)}.text-foreground\\/60{color:#18181b99}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/60{color:color-mix(in oklab, var(--color-foreground) 60%, transparent)}}.text-foreground\\/65{color:#18181ba6}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/65{color:color-mix(in oklab, var(--color-foreground) 65%, transparent)}}.text-foreground\\/70{color:#18181bb3}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/70{color:color-mix(in oklab, var(--color-foreground) 70%, transparent)}}.text-foreground\\/80{color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/80{color:color-mix(in oklab, var(--color-foreground) 80%, transparent)}}.text-green-400{color:var(--color-green-400)}.text-info{color:var(--color-info)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\\/40{color:#52525b66}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/40{color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.text-muted-foreground\\/50{color:#52525b80}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/50{color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.text-muted-foreground\\/60{color:#52525b99}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/60{color:color-mix(in oklab, var(--color-muted-foreground) 60%, transparent)}}.text-muted-foreground\\/70{color:#52525bb3}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/70{color:color-mix(in oklab, var(--color-muted-foreground) 70%, transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-primary{color:var(--color-primary)}.text-primary\\/40{color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.text-primary\\/40{color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.text-primary\\/45{color:#7c3aed73}@supports (color:color-mix(in lab, red, red)){.text-primary\\/45{color:color-mix(in oklab, var(--color-primary) 45%, transparent)}}.text-primary\\/50{color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.text-primary\\/50{color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.text-primary\\/60{color:#7c3aed99}@supports (color:color-mix(in lab, red, red)){.text-primary\\/60{color:color-mix(in oklab, var(--color-primary) 60%, transparent)}}.text-primary\\/70{color:#7c3aedb3}@supports (color:color-mix(in lab, red, red)){.text-primary\\/70{color:color-mix(in oklab, var(--color-primary) 70%, transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-success-foreground{color:var(--color-success-foreground)}.text-warning{color:var(--color-warning)}.text-warning-foreground{color:var(--color-warning-foreground)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-pill{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000001f), 0 0 0 1px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-primary\\/40{--tw-ring-color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.ring-primary\\/40{--tw-ring-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\\[0\\.625rem\\]{--tw-backdrop-blur:blur(.625rem);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[left_0\\.3s_cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\,top_0\\.3s_cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\]{transition-property:left .3s cubic-bezier(.4,0,.2,1),top .3s cubic-bezier(.4,0,.2,1);transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none\\!{transition-property:none!important}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-\\[cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-\\[cubic-bezier\\(0\\.23\\,1\\,0\\.32\\,1\\)\\]{--tw-ease:cubic-bezier(.23,1,.32,1);transition-timing-function:cubic-bezier(.23,1,.32,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.scrollbar-thin-border{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.transition-panel{transition:opacity .4s cubic-bezier(.23,1,.32,1),transform .4s cubic-bezier(.23,1,.32,1),translate .4s cubic-bezier(.23,1,.32,1),scale .4s cubic-bezier(.23,1,.32,1),width .35s cubic-bezier(.4,0,.2,1),clip-path .35s cubic-bezier(.4,0,.2,1)}.transition-pill{transition:all .6s,max-width .6s,padding .5s,transform .4s,opacity .2s}@media (hover:hover){.group-hover\\/nav-item\\:translate-x-0:is(:where(.group\\/nav-item):hover *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\\/nav-item\\:opacity-100:is(:where(.group\\/nav-item):hover *){opacity:1}}.group-data-\\[vertical\\]\\/panel\\:rotate-\\[-90deg\\]:is(:where(.group\\/panel)[data-vertical] *){rotate:-90deg}.placeholder\\:text-muted-foreground\\/50::placeholder{color:#52525b80}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/50::placeholder{color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.last\\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\\:border-foreground\\/30:hover{border-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-foreground\\/30:hover{border-color:color-mix(in oklab, var(--color-foreground) 30%, transparent)}}.hover\\:border-primary\\/30:hover{border-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-primary\\/30:hover{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.hover\\:border-primary\\/50:hover{border-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.hover\\:border-primary\\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\\:bg-destructive\\/8:hover{background-color:#d4092414}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/8:hover{background-color:color-mix(in oklab, var(--color-destructive) 8%, transparent)}}.hover\\:bg-foreground\\/3:hover{background-color:#18181b08}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/3:hover{background-color:color-mix(in oklab, var(--color-foreground) 3%, transparent)}}.hover\\:bg-foreground\\/4:hover{background-color:#18181b0a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/4:hover{background-color:color-mix(in oklab, var(--color-foreground) 4%, transparent)}}.hover\\:bg-foreground\\/5:hover{background-color:#18181b0d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/5:hover{background-color:color-mix(in oklab, var(--color-foreground) 5%, transparent)}}.hover\\:bg-foreground\\/6:hover{background-color:#18181b0f}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/6:hover{background-color:color-mix(in oklab, var(--color-foreground) 6%, transparent)}}.hover\\:bg-foreground\\/7:hover{background-color:#18181b12}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/7:hover{background-color:color-mix(in oklab, var(--color-foreground) 7%, transparent)}}.hover\\:bg-foreground\\/8:hover{background-color:#18181b14}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/8:hover{background-color:color-mix(in oklab, var(--color-foreground) 8%, transparent)}}.hover\\:bg-foreground\\/10:hover{background-color:#18181b1a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/10:hover{background-color:color-mix(in oklab, var(--color-foreground) 10%, transparent)}}.hover\\:bg-primary\\/4:hover{background-color:#7c3aed0a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/4:hover{background-color:color-mix(in oklab, var(--color-primary) 4%, transparent)}}.hover\\:bg-primary\\/7:hover{background-color:#7c3aed12}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/7:hover{background-color:color-mix(in oklab, var(--color-primary) 7%, transparent)}}.hover\\:bg-primary\\/8:hover{background-color:#7c3aed14}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/8:hover{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.hover\\:bg-primary\\/12:hover{background-color:#7c3aed1f}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/12:hover{background-color:color-mix(in oklab, var(--color-primary) 12%, transparent)}}.hover\\:text-destructive:hover{color:var(--color-destructive)}.hover\\:text-foreground:hover{color:var(--color-foreground)}.hover\\:text-muted-foreground:hover{color:var(--color-muted-foreground)}.hover\\:text-primary:hover{color:var(--color-primary)}}.focus\\:border-primary\\/50:focus{border-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.focus\\:border-primary\\/50:focus{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:scale-\\[0\\.94\\]:active{scale:.94}.active\\:scale-\\[0\\.95\\]:active{scale:.95}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.data-\\[dragging\\]\\:transition-none\\![data-dragging]{transition-property:none!important}@media print{.print\\:hidden{display:none}}.\\[\\&_\\*\\]\\:box-border *{box-sizing:border-box}.\\[\\&_\\*\\]\\:animate-none\\! *{animation:none!important}.\\[\\&_\\*\\]\\:transition-none\\! *{transition-property:none!important}.\\[\\&_svg\\]\\:size-3\\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\\[\\&_svg\\]\\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&_svg\\]\\:size-4\\.5 svg{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.\\[\\&_svg\\]\\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root,:host{--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-space-x-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--brand-violet:#7c3aed;--brand-violet-light:#c4b5fd;--brand-white:#fff;--brand-frost:#f2f2f2;--brand-silver:#d8d8d8;--brand-graphite:#6b6b6b;--brand-iron:#3c3c3c;--brand-charcoal:#212121;--brand-black:#000}.dark{--color-background:#212121;--color-foreground:#fafafa;--color-card:#18181b;--color-card-foreground:#fafafa;--color-popover:#18181b;--color-popover-foreground:#fafafa;--color-primary:#c4b5fd;--color-primary-foreground:#09090b;--color-secondary:#27272a;--color-secondary-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#18181b;--color-accent-foreground:#fafafa;--color-destructive:oklch(65% .2 25);--color-destructive-foreground:oklch(98% .01 25);--color-border:oklch(100% 0 0/.1);--color-input:oklch(100% 0 0/.14);--color-ring:#71717a;--color-info:oklch(62% .2 240);--color-info-foreground:oklch(75% .18 240);--color-success:oklch(65% .17 155);--color-success-foreground:oklch(78% .15 155);--color-warning:oklch(78% .16 65);--color-warning-foreground:oklch(88% .15 65);--shadow-pill:0 6px 24px #000000b3, 0 2px 8px #00000080}.devtools-content-scroll::-webkit-scrollbar{width:5px;height:5px}.devtools-content-scroll::-webkit-scrollbar-track{background:0 0}.devtools-content-scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.devtools-content-scroll::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}.dev-toolbar-badge{border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:-.25rem;right:-.375rem}.dev-toolbar-badge.info{background:var(--color-info)}.dev-toolbar-badge.warning{background:var(--color-warning)}.dev-toolbar-badge.error{background:var(--color-destructive)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}`,ze=Object.defineProperty,Ie=S((r,e)=>ze(r,"name",{value:e,configurable:!0}),"t");const Ae=De,Me=Ie(()=>{if(globalThis.window===void 0)return;const r=new CSSStyleSheet;return r.replaceSync(Ae),r},"createSharedStylesheet"),gr=Me();var Ce=Object.defineProperty,L=S((r,e)=>Ce(r,"name",{value:e,configurable:!0}),"s$2");const Te=L(({app:r})=>{const e=s(b(null),"contentRef"),t=s(b(!1),"initializedRef"),i=s(b(ur()),"helpersRef");return _(()=>{if(!e.current||t.current||r.component)return;const o=e.current;if(r.init){const n=document.createElement("div");n.style.cssText="width:100%;height:100%;",o.append(n);const c=n.attachShadow({mode:"open"});gr&&(c.adoptedStyleSheets=[gr]);const g=ur(),T=r.init(c,r.eventTarget,g);return T&&typeof T.then=="function"?T.then(()=>{t.current=!0}).catch(V=>{console.error(`[dev-toolbar] Failed to init app ${r.id}:`,V)}):t.current=!0,()=>{for(;o.firstChild;)o.removeChild(o.firstChild);t.current=!1}}},[r]),r.component?a(r.component,{eventTarget:r.eventTarget,helpers:i.current}):a("div",{class:"w-full h-full",ref:e})},"AppContent"),xr=20,yr=95,kr=L((r,e,t)=>Math.min(Math.max(r,e),t),"clamp"),Pe=L(r=>{switch(r){case"bottom":return"bottom-14";case"left":return"left-14 top-4 bottom-4";case"right":return"right-14 top-4 bottom-4";case"top":return"top-14";default:return"bottom-14"}},"getPanelPositionClasses"),Fe=L(r=>{switch(r){case"bottom":return"origin-[bottom_center]";case"left":return"origin-[left_center]";case"right":return"origin-[right_center]";case"top":return"origin-[top_center]";default:return"origin-[bottom_center]"}},"getOriginClass"),Se=L((r,e)=>e?"opacity-100 scale-100":h("opacity-0 pointer-events-none scale-[0.99]",{bottom:"translate-y-2",left:"-translate-x-2",right:"translate-x-2",top:"-translate-y-2"}[r]??"translate-y-2"),"getVisibilityClasses"),je=L(({activeAppId:r,apps:e,onClose:t,onToggleApp:i,panelVisible:o,position:n})=>{const[c,g]=s(W(!1),"isRendered"),[T,V]=s(W(!1),"isVisible"),[y,B]=s(W(!1),"sidebarCollapsed"),[,P]=s(W(0),"rerender"),{state:k,updateState:w}=zr(),{resolvedTheme:$}=Nr(),j=s(b(null),"panelDivRef"),R=s(b(!1),"isResizingRef"),Z=s(b({height:k.height,width:k.width}),"dimensionsRef"),x=s(b(null),"enteringFromRectRef"),O=s(b(null),"lastDockedRectRef"),J=s(b(!1),"prevIsFullscreenRef"),Y=s(b(!1),"isExitAnimatingRef"),A=s(b(null),"fsTimerRef"),f=k.viewMode==="fullscreen",N=k.viewMode==="wide",cr=typeof globalThis.window?.documentPictureInPicture<"u",U=s(b(null),"pipWindowRef"),Q=s(er(()=>{if(f)return{};const l=globalThis.window?.innerWidth??1920,d=globalThis.window?.innerHeight??1080,p=`${Z.current.height/100*d}px`;switch(n){case"bottom":case"top":return{height:p,left:"50%",transform:"translateX(-50%)",width:N?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"};case"left":case"right":return{width:`${Z.current.width/100*l}px`};default:return{height:p,left:"50%",transform:"translateX(-50%)",width:N?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"}}},[f,N,n,P]),"panelSizeStyle");_(()=>{const l=L(p=>{if(!R.current||!j.current)return;const D=j.current.getBoundingClientRect(),z=window.innerWidth,G=window.innerHeight,q={...Z.current};if(R.current.top){const I=Math.abs(D.bottom-p.clientY);q.height=kr(I/G*100,xr,yr)}else if(R.current.bottom){const I=Math.abs(p.clientY-D.top);q.height=kr(I/G*100,xr,yr)}else if(R.current.right){const I=Math.abs(p.clientX-D.left);q.width=kr(I/z*100,xr,yr)}else if(R.current.left){const I=Math.abs(D.right-p.clientX);q.width=kr(I/z*100,xr,yr)}Z.current=q,P(I=>I+1)},"handleMouseMove"),d=L(()=>{R.current&&(w({height:Z.current.height,width:Z.current.width}),R.current=!1)},"handleMouseUp");return window.addEventListener("mousemove",l),window.addEventListener("mouseup",d),()=>{window.removeEventListener("mousemove",l),window.removeEventListener("mouseup",d)}},[w]),Jr(()=>{const l=J.current;J.current=f,A.current!==null&&(clearTimeout(A.current),A.current=null);const d=j.current;if(d)if(f&&!l&&x.current){const p=x.current;x.current=null;const D=globalThis.window?.innerWidth??0,z=globalThis.window?.innerHeight??0;d.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",d.style.clipPath=`inset(${p.top}px ${D-p.right}px ${z-p.bottom}px ${p.left}px)`,requestAnimationFrame(()=>{d.style.clipPath="inset(0px 0px 0px 0px)",A.current=setTimeout(()=>{d.style.clipPath="",d.style.transition="",A.current=null},380)})}else!f&&l&&(Y.current||(d.style.transition="none",d.style.clipPath="",requestAnimationFrame(()=>{d.style.transition=""})))},[f]),_(()=>{if(o){g(!0);const d=setTimeout(()=>V(!0),16);return()=>clearTimeout(d)}V(!1);const l=setTimeout(()=>g(!1),220);return()=>clearTimeout(l)},[o]);const u=L(async()=>{const l=globalThis.window?.documentPictureInPicture;if(l)try{const d=await l.requestWindow({height:600,width:900});if(U.current=d,gr){const z=d.document.createElement("style");z.textContent=[...gr.cssRules].map(G=>G.cssText).join(`
3
- `),d.document.head.append(z)}const p=d.document.createElement("div");p.style.cssText="width:100%;height:100%;overflow:auto;",$==="dark"&&(d.document.documentElement.classList.add("dark"),p.classList.add("dark")),d.document.body.style.cssText="margin:0;padding:0;",d.document.body.append(p);const D=e.find(z=>z.id===r);if(D?.component){const z=ur();Ar(a(D.component,{eventTarget:D.eventTarget,helpers:z}),p)}w({isPip:!0}),d.addEventListener("pagehide",()=>{w({isPip:!1}),U.current=null})}catch(d){console.error("[dev-toolbar] PiP activation failed:",d)}},"activatePip");_(()=>{if(!o)return;const l=L(d=>{d.key==="Escape"&&t()},"handleKeyDown");return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[o,t]);const C=s(er(()=>e.find(l=>l.id===r),[e,r]),"activeApp");if(!c)return null;const F=L(l=>d=>{d.preventDefault(),R.current=l},"startResize");return v(Mr,{children:[a("div",{"aria-hidden":"true",class:h("fixed inset-0 z-[2147483646]","transition-opacity duration-200",T&&!f?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:k.closeOnOutsideClick?t:void 0,role:"presentation"}),v("div",{ref:j,"aria-label":"DevTools panel","aria-modal":"true",class:h("fixed z-[2147483647] pointer-events-auto antialiased font-mono",f?"inset-0":Pe(n),"bg-background overflow-hidden",f?"rounded-none border-0":"rounded-none border border-border","shadow-2xl","transition-panel",!f&&Fe(n),Se(n,T),"flex flex-row"),role:"dialog",style:Q,children:[!f&&v(Mr,{children:[n!=="top"&&a("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 top-0 h-2.5 -mt-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:F({top:!0})}),n==="top"&&a("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 bottom-0 h-2.5 -mb-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:F({bottom:!0})}),n==="left"&&a("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 right-0 w-2.5 -mr-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:F({right:!0})}),n==="right"&&a("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 left-0 w-2.5 -ml-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:F({left:!0})})]}),v("nav",{"aria-label":"DevTools apps",class:h("flex flex-col shrink-0 overflow-hidden","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]","bg-accent border-r border-border/60",y?"w-12.5":"w-62.5"),children:[a("div",{class:h("flex items-center shrink-0 border-b border-border/50 h-12",y?"justify-center px-2":"px-3"),children:y?a("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):v("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[a("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),a("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:e.map(l=>v("div",{class:"relative group/nav-item",children:[v("button",{"aria-label":l.name,"aria-pressed":r===l.id,class:h("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",y?"justify-center px-0":"gap-2.5 px-3",r===l.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:L(()=>{l.id!==r&&i(l.id).catch(console.error)},"onClick"),type:"button",children:[l.icon?a("span",{class:h("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",r===l.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:l.icon}}):a("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:l.name.slice(0,2)}),!y&&a("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:l.name})]}),l.notification.state&&a("span",{"aria-hidden":"true",class:h("pointer-events-none absolute top-1.5 rounded-full",y?"right-1.5":"right-2.5","size-1.5",l.notification.level==="error"?"bg-destructive":l.notification.level==="warning"?"bg-warning":"bg-info")}),y&&a("div",{class:h("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:a("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:l.name})})]},l.id))}),!y&&a("div",{class:"px-3 py-2.5 border-t border-border/40 shrink-0",children:v("span",{class:"text-[0.58rem] text-muted-foreground/50 leading-none select-none",children:[k.keybindings?.toggle??"Alt+Shift+D"," to toggle"]})})]}),v("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[v("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[v("div",{class:"flex items-center gap-3 min-w-0",children:[a("button",{"aria-label":y?"Expand sidebar":"Collapse sidebar",class:h("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:L(()=>B(l=>!l),"onClick"),type:"button",children:a(tr,{class:h("size-3.5 transition-transform duration-300",!y&&"rotate-180"),size:14,src:he})}),C?.icon&&a("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:C.icon}}),v("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[a("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),C?.name??"DevTools",a("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),v("div",{class:"flex items-center gap-1 shrink-0",children:[(n==="bottom"||n==="top")&&!f&&a("button",{"aria-label":N?"Switch to container width":"Expand to full width",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:L(()=>w({viewMode:N?"default":"wide"}),"onClick"),title:N?"Container width":"Full width",type:"button",children:a(tr,{size:13,src:N?we:ve})}),a("button",{"aria-label":f?"Exit fullscreen":"Enter fullscreen",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:L(()=>{if(f){const l=j.current,d=O.current;if(l&&d){const p=globalThis.window?.innerWidth??0,D=globalThis.window?.innerHeight??0,z=`inset(${d.top}px ${p-d.right}px ${D-d.bottom}px ${d.left}px)`;A.current!==null&&(clearTimeout(A.current),A.current=null),Y.current=!0,l.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",l.style.clipPath="inset(0px 0px 0px 0px)",requestAnimationFrame(()=>{l.style.clipPath=z,A.current=setTimeout(()=>{l.style.clipPath="",l.style.transition="",Y.current=!1,A.current=null,w({viewMode:"default"})},380)})}else w({viewMode:"default"})}else{if(j.current){const l=j.current.getBoundingClientRect();x.current=l,O.current=l}w({viewMode:"fullscreen"})}},"onClick"),title:f?"Exit fullscreen":"Fullscreen",type:"button",children:a(tr,{size:13,src:f?xe:fe})}),cr&&!f&&a("button",{"aria-label":"Open in Picture-in-Picture window",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent",k.isPip?"text-primary hover:bg-primary/7":"text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:L(()=>{u().then(()=>t()).catch(console.error)},"onClick"),title:"Open in floating window (PiP)",type:"button",children:a(tr,{size:13,src:ye})}),a("button",{"aria-label":"Close DevTools panel",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:t,title:"Close (Esc)",type:"button",children:a(tr,{size:12,src:ke})})]})]}),a("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:C?a(Te,{app:C},C.id):v("div",{class:"flex flex-col items-center justify-center h-full gap-7 p-8 select-none",children:[v("div",{class:"flex flex-col items-center gap-3",children:[a("div",{class:"size-14 border border-primary/25 bg-primary/5 flex items-center justify-center",children:a(tr,{class:"text-primary/45",size:26,src:me})}),v("div",{class:"text-center space-y-1",children:[a("p",{class:"text-[0.8rem] font-medium text-foreground/65",children:"No tool selected"}),a("p",{class:"text-[0.7rem] text-muted-foreground",children:"Choose a tool from the sidebar to get started"})]})]}),e.length>0&&v("div",{class:"w-full max-w-[220px]",children:[v("p",{class:"text-[0.58rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/60 mb-1.5",children:[a("span",{class:"text-primary/50",children:"// "}),"available"]}),a("div",{class:"flex flex-col gap-0.5",children:e.map(l=>v("button",{class:h("flex items-center gap-2.5 px-3 py-2","border border-border/40 bg-card/50","hover:border-primary/30 hover:bg-primary/4","cursor-pointer transition-all duration-150 text-left"),onClick:L(()=>i(l.id).catch(console.error),"onClick"),type:"button",children:[l.icon?a("span",{class:"size-3.5 shrink-0 flex items-center justify-center [&_svg]:size-3.5 text-muted-foreground",dangerouslySetInnerHTML:{__html:l.icon}}):a("span",{class:"size-3.5 text-[0.5rem] font-bold text-muted-foreground shrink-0 text-center",children:l.name.slice(0,2).toUpperCase()}),a("span",{class:"text-[0.75rem] font-medium text-muted-foreground",children:l.name})]},l.id))})]})]})})]})]})]})},"DevPanel"),Ee="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-more-horizontal%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3Ccircle%20cx%3D%2219%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3Ccircle%20cx%3D%225%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3C%2Fsvg%3E",Re="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-alert-triangle%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m21.73%2018-8-14a2%202%200%200%200-3.48%200l-8%2014A2%202%200%200%200%204%2021h16a2%202%200%200%200%201.73-3%22%20%2F%3E%20%3Cpath%20d%3D%22M12%209v4%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2017h.01%22%20%2F%3E%20%3C%2Fsvg%3E";var _e=Object.defineProperty,Ir=S((r,e)=>_e(r,"name",{value:e,configurable:!0}),"n$1");const Ne=Ir(()=>{const[r,e]=s(W(0),"errorCount"),[t,i]=s(W(!1),"isOverlayOpen");if(_(()=>{const c=Ir(()=>{const T=globalThis.__v_o_error_history,V=Array.isArray(T)?T.length:0;e(V);const y=globalThis.__v_o__current;if(y?.parentNode){const B=y.shadowRoot?.querySelector("#__v_o__root");i(!!B&&!B.classList.contains("hidden"))}else i(!1)},"sync"),g=setInterval(c,300);return c(),()=>clearInterval(g)},[]),r===0)return null;const o=Ir(()=>{const c=globalThis.__v_o__current;if(!c?.parentNode)return;const g=c.shadowRoot?.querySelector("#__v_o__root");g?.classList.contains("hidden")?(g.classList.remove("hidden"),i(!0)):typeof c.close=="function"&&(c.close(),i(!1))},"handleClick"),n=`${r} error${r!==1?"s":""} – click to ${t?"hide":"show"} overlay`;return v(Mr,{children:[a("div",{"aria-hidden":"true",class:"w-px h-5 bg-primary/20 shrink-0 mx-0.5"}),a("button",{"aria-label":n,class:h("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-destructive","transition-all duration-150","hover:bg-destructive/8","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),onClick:o,title:n,type:"button",children:v("div",{class:"relative size-6 select-none flex items-center justify-center",children:[a(tr,{size:16,src:Re}),a("span",{class:"absolute -top-0.5 -right-1 min-w-3.5 h-3.5 px-0.5 rounded-full bg-destructive text-white text-[9px] font-bold leading-none flex items-center justify-center border border-background",children:r>9?"9+":r})]})})]})},"ViteOverlayButton");var Ve=Object.defineProperty,Cr=S((r,e)=>Ve(r,"name",{value:e,configurable:!0}),"n");const $e=Cr(()=>{const{toggleApp:r}=Pr();return a("button",{class:h("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-foreground/8 hover:text-foreground","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":"dev-toolbar:more",onClick:Cr(()=>{r("dev-toolbar:more").catch(e=>{console.error("[dev-toolbar] Failed to toggle more app:",e)})},"onClick"),title:"More apps",type:"button",children:a("div",{class:"relative size-6 flex items-center justify-center select-none",children:a(tr,{size:16,src:Ee})})})},"MoreButton"),He=Cr(({customAppsToShow:r=3})=>{const{apps:e}=Pr(),t=e.filter(c=>c.builtIn),i=e.filter(c=>!c.builtIn),o=[...t,...i.slice(0,r)],n=i.slice(r);return a("div",{class:"flex items-center pointer-events-auto",id:"__v_dt__bar",children:v("div",{class:"flex flex-row items-center justify-start gap-1",id:"__v_dt__bar_container",children:[o.map(c=>a(be,{app:c},c.id)),n.length>0&&a($e,{}),a(Ne,{})]})})},"ToolbarBar"),Le="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQ4IDI5MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGRlZnM+IDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4gPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZWQiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9InJlZDtwdXJwbGU7Ymx1ZTtyZWQ7IiBkdXI9IjIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+IDwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InB1cnBsZSI+IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0b3AtY29sb3IiIHZhbHVlcz0icHVycGxlO2JsdWU7cmVkO3B1cnBsZTsiIGR1cj0iMjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9ImJsdWUiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9ImJsdWU7cmVkO3B1cnBsZTtibHVlOyIgZHVyPSIyMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPiA8L3N0b3A+IDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9ImdyYWRpZW50VHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgLjUgLjUiIHRvPSIzNjAgLjUgLjUiIGR1cj0iMTBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRBIiB4MT0iNjIiIHkxPSI0Mi4yMjUzIiB4Mj0iNjIiIHkyPSIyOTAuMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIG9mZnNldD0iMC4zNCIgc3RvcC1vcGFjaXR5PSIwLjUiIC8+IDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRCIiB4MT0iMTg2IiB5MT0iMCIgeDI9IjE4NiIgeTI9IjI0OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPiA8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIiAvPiA8c3RvcCBvZmZzZXQ9IjAuNjk1IiBzdG9wLW9wYWNpdHk9IjAuNSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiBNMjQ4IDEyNEMyNDggMTkyLjQ4MyAxOTIuNDgzIDI0OCAxMjQgMjQ4VjBDMTkyLjQ4MyAwIDI0OCA1NS41MTY3IDI0OCAxMjRaIiBmaWxsPSJ1cmwoI2EpIiAvPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRBKSIgLz4gPHBhdGggZD0iTTI0OCAxMjRDMjQ4IDE5Mi40ODMgMTkyLjQ4MyAyNDggMTI0IDI0OFYwQzE5Mi40ODMgMCAyNDggNTUuNTE2NyAyNDggMTI0WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRCKSIgLz4gPGNpcmNsZSBjeD0iMTI0IiBjeT0iMTQ3IiByPSI1MCIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPg==",We="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2010.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h12a1%201%200%200%200%201-1v-.76a2%202%200%200%200-1.11-1.79l-1.78-.9A2%202%200%200%201%2015%2010.76V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H8a2%202%200%200%200%200%204%201%201%200%200%201%201%201z%22%20%2F%3E%20%3C%2Fsvg%3E";var Be=Object.defineProperty,hr=S((r,e)=>Be(r,"name",{value:e,configurable:!0}),"o");const Ze=hr((r,e)=>{switch(e){case"top":return{left:`${r.left+r.width/2}px`,top:`${r.bottom+10}px`,transform:"translateX(-50%)"};case"left":return{left:`${r.right+10}px`,top:`${r.top+r.height/2}px`,transform:"translateY(-50%)"};case"right":return{right:`${globalThis.window?globalThis.window.innerWidth-r.left+10:0}px`,top:`${r.top+r.height/2}px`,transform:"translateY(-50%)"};default:return{bottom:`${globalThis.window?globalThis.window.innerHeight-r.top+10:0}px`,left:`${r.left+r.width/2}px`,transform:"translateX(-50%)"}}},"getTooltipStyle"),Ge=hr(({position:r})=>{const{hoveredApp:e,hoveredAppRect:t,pinTooltip:i,setHoveredApp:o}=Tr(),n=s(b(null),"overlayRef"),c=s(b(ur()),"helpersRef"),[g,T]=s(W(!1),"isRendered"),[V,y]=s(W(!1),"isVisible"),B=!!(e?.tooltip&&t);if(_(()=>{if(B){T(!0);const R=setTimeout(()=>y(!0),16);return()=>clearTimeout(R)}y(!1);const j=setTimeout(()=>T(!1),200);return()=>clearTimeout(j)},[B]),!g||!e?.tooltip||!t)return null;const P=e.tooltip,k=Ze(t,r),w=r==="left"||r==="right",$=hr(()=>{const j=n.current?.getBoundingClientRect();j&&i(e,j.left,j.top),o(null)},"handlePin");return v("div",{ref:n,"aria-label":`${e.name} quick preview`,class:h("fixed z-[2147483647] pointer-events-auto","antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-border shadow-2xl","transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]",V?"opacity-100 translate-y-0 scale-100":h("opacity-0 scale-[0.97]",r==="bottom"&&"translate-y-1",r==="top"&&"-translate-y-1",w&&"translate-x-[-2px]")),onMouseEnter:hr(()=>o(e,t),"onMouseEnter"),onMouseLeave:hr(()=>o(null),"onMouseLeave"),role:"tooltip",style:k,children:[v("div",{class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-border/60 bg-foreground/3",children:[v("div",{class:"flex items-center gap-2 min-w-0",children:[a("span",{class:"size-1.5 rounded-full bg-primary shrink-0","aria-hidden":"true"}),a("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-muted-foreground truncate",children:e.name})]}),a("button",{"aria-label":`Pin ${e.name} tooltip`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/60 hover:text-primary","transition-colors duration-150"),onClick:$,title:"Pin (keep visible)",type:"button",children:a(tr,{size:11,src:We})})]}),a("div",{class:"p-3",children:a(P,{helpers:c.current})})]})},"AppTooltipOverlay");var Ye=Object.defineProperty,Dr=S((r,e)=>Ye(r,"name",{value:e,configurable:!0}),"s$1");const Oe=Dr(r=>{switch(r){case"top":return{left:"50%",top:"0",transform:"translateX(-50%) translateY(24px)"};case"left":return{left:"0",top:"50%",transform:"translateX(24px) translateY(-50%)"};case"right":return{left:"0",top:"50%",transform:"translateX(calc(-100% - 24px)) translateY(-50%)"};default:return{left:"50%",top:"0",transform:"translateX(-50%) translateY(calc(-100% - 24px))"}}},"getHintStyle"),Xe=Dr(({position:r})=>{const e="absolute w-2.5 h-2.5 bg-card border-border";switch(r){case"top":return a("div",{"aria-hidden":"true",class:h(e,"top-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-t border-l")});case"left":return a("div",{"aria-hidden":"true",class:h(e,"left-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-b border-l")});case"right":return a("div",{"aria-hidden":"true",class:h(e,"right-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-t border-r")});default:return a("div",{"aria-hidden":"true",class:h(e,"bottom-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-b border-r")})}},"Arrow"),Je=[{icon:"⊙",text:"Click logo to open panel"},{icon:"⠿",text:"Drag pill to reposition"},{icon:"⌨",text:"Alt+Shift+D to toggle"}],Ue=Dr(({onDismiss:r,position:e})=>{const[t,i]=s(W(!1),"visible"),o=s(b(null),"dismissTimeoutRef");_(()=>{const c=setTimeout(()=>i(!0),600);return()=>clearTimeout(c)},[]),_(()=>()=>{o.current!==null&&(clearTimeout(o.current),o.current=null)},[]);const n=Dr(()=>{i(!1),o.current=setTimeout(r,180)},"handleDismiss");return v("div",{"aria-hidden":!t,"aria-label":"DevTools quick start",class:h("absolute pointer-events-auto","w-[240px]","bg-card border border-border","shadow-xl","p-3","font-mono","transition-all duration-200",t?"opacity-100 scale-100":"opacity-0 scale-95 pointer-events-none"),style:Oe(e),children:[a(Xe,{position:e}),v("p",{class:"flex items-center gap-1.5 mb-2.5",children:[a("span",{"aria-hidden":"true",class:"text-primary text-[0.6rem]",children:"▶"}),a("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.12em] text-foreground",children:"Quick start"})]}),a("ul",{class:"space-y-1.5 mb-3 list-none p-0 m-0",children:Je.map(({icon:c,text:g})=>v("li",{class:"flex items-center gap-2 text-[0.7rem] text-muted-foreground",children:[a("span",{"aria-hidden":"true",class:"text-primary shrink-0 w-3 text-center leading-none",children:c}),g]},g))}),a("button",{class:h("w-full h-6 text-[0.6rem] font-bold uppercase tracking-[0.1em]","border border-primary/30 bg-primary/6","text-primary cursor-pointer","hover:bg-primary/12 hover:border-primary/50","transition-all duration-150 active:scale-[0.98]"),onClick:n,tabIndex:t?void 0:-1,type:"button",children:"Got it"})]})},"FirstVisitHint"),Qe="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin-off%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M15%209.34V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H7.89%22%20%2F%3E%20%3Cpath%20d%3D%22m2%202%2020%2020%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209v1.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h11%22%20%2F%3E%20%3C%2Fsvg%3E";var qe=Object.defineProperty,pr=S((r,e)=>qe(r,"name",{value:e,configurable:!0}),"s");const Ke=pr(({onMove:r,onUnpin:e,pinned:t})=>{const i=s(b(null),"cardRef"),o=s(b(null),"headerRef"),n=s(b({x:t.initialX,y:t.initialY}),"posRef"),c=s(b(null),"dragRef"),g=s(er(()=>ur(),[]),"helpers"),T=s(b(g),"helpersRef"),V=s(b(r),"onMoveRef"),y=s(b(t.id),"pinnedIdRef");V.current=r,y.current=t.id,_(()=>{const k="transform 110ms cubic-bezier(0.25,0.46,0.45,0.94)",w=pr(j=>{if(!c.current||!i.current)return;const R=globalThis.window?.innerWidth??9999,Z=globalThis.window?.innerHeight??9999,{cardH:x,cardW:O}=c.current,J=Math.min(80,O),Y=Math.min(36,x);let A=c.current.origX+(j.clientX-c.current.startX),f=c.current.origY+(j.clientY-c.current.startY);A=Math.max(J-O,Math.min(R-J,A)),f=Math.max(Y-x,Math.min(Z-Y,f));const N=[0,R-O,J-O,R-J],cr=[0,Z-x,Y-x,Z-Y];let U=A,Q=f;for(const u of N)if(Math.abs(A-u)<28){U=u;break}for(const u of cr)if(Math.abs(f-u)<28){Q=u;break}i.current.style.transition=U!==A||Q!==f?k:"",i.current.style.transform=`translate(${U}px, ${Q}px)`,n.current={x:U,y:Q}},"handleMove"),$=pr(()=>{c.current&&(c.current=null,i.current&&(i.current.style.transition=""),o.current&&(o.current.style.cursor=""),V.current(y.current,n.current.x,n.current.y))},"handleUp");return document.addEventListener("mousemove",w),document.addEventListener("mouseup",$),()=>{document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",$)}},[]);const B=t.app.tooltip;if(!B)return null;const P=pr(k=>{k.button===0&&(c.current={cardH:i.current?.offsetHeight??200,cardW:i.current?.offsetWidth??300,origX:n.current.x,origY:n.current.y,startX:k.clientX,startY:k.clientY},o.current&&(o.current.style.cursor="grabbing"),k.preventDefault())},"handleDragStart");return v("div",{ref:i,"aria-label":`${t.app.name} pinned tooltip`,class:h("fixed z-[2147483647] pointer-events-auto antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-primary/40 shadow-2xl"),style:{left:0,top:0,transform:`translate(${n.current.x}px, ${n.current.y}px)`},children:[v("div",{ref:o,class:h("flex items-center justify-between gap-2 px-3 py-2","border-b border-primary/20 bg-primary/4","select-none cursor-grab"),onMouseDown:P,children:[v("div",{class:"flex items-center gap-2 min-w-0",children:[a("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),a("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-primary/70 truncate",children:t.app.name})]}),a("button",{"aria-label":`Unpin ${t.app.name}`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/50 hover:text-destructive","transition-colors duration-150"),onMouseDown:pr(k=>k.stopPropagation(),"onMouseDown"),onClick:pr(()=>e(t.id),"onClick"),title:"Unpin",type:"button",children:a(tr,{size:11,src:Qe})})]}),a("div",{class:"p-3",children:a(B,{helpers:T.current})})]})},"PinnedTooltipCard");var rt=Object.defineProperty,lr=S((r,e)=>rt(r,"name",{value:e,configurable:!0}),"p");const Er="__v_dt__pinned_tooltips",et=lr((r,e,t,i,o)=>{const n=e*i/100,c=t*o/100,g=i/4;switch(r){case"bottom":return n<g?"bottom-left":n>i-g?"bottom-right":"bottom-center";case"left":return c<o/2?"top-left":"bottom-left";case"right":return c<o/2?"top-right":"bottom-right";case"top":return n<g?"top-left":n>i-g?"top-right":"top-center";default:return"bottom-center"}},"computePlacement"),tt=lr(({activeAppId:r,apps:e,customAppsToShow:t=3,onClearNotification:i,onRegisterApp:o,onSetNotification:n,onToggleApp:c,onUnregisterApp:g})=>{const T=s(b(null),"anchorRef"),V=s(b(null),"panelRef"),y=s(b(null),"leaveTimerRef"),{resolvedTheme:B}=Nr(),{state:P,updateState:k}=zr(),{panelVisible:w,togglePanelVisible:$,closePanel:j}=le(),{anchorStyle:R,bringUp:Z,isDragging:x,isHidden:O,isVertical:J,onPointerDown:Y,panelStyle:A}=ue(V),[f,N]=s(W(null),"hoveredApp"),[cr,U]=s(W(null),"hoveredAppRect"),Q=s(b(new Map),"pinPositionsRef"),u=sr(m=>{try{const E=m.map(M=>{const K=Q.current.get(M.id);return{appId:M.app.id,x:K?.x??M.initialX,y:K?.y??M.initialY}});localStorage.setItem(Er,JSON.stringify(E))}catch{}},[]),[C,F]=s(W([]),"pinnedTooltips"),l=s(b([]),"pinnedTooltipsRef");l.current=C;const d=sr((m,E,M)=>{const K=`${m.id}-${Date.now()}`;F(dr=>{const mr=[...dr,{app:m,id:K,initialX:E,initialY:M}];return u(mr),mr})},[u]),p=sr(m=>{F(E=>{const M=E.filter(K=>K.id!==m);return Q.current.delete(m),u(M),M})},[u]),D=sr((m,E,M)=>{Q.current.set(m,{x:E,y:M}),u(l.current)},[u]),z=s(b(null),"storedPinsRef"),G=s(b(new Set),"restoredAppIdsRef");_(()=>{if(e.length===0)return;if(z.current===null)try{const M=localStorage.getItem(Er);z.current=M?JSON.parse(M):[]}catch{z.current=[]}const m=z.current;if(m.length===0)return;const E=[];for(const M of m){if(G.current.has(M.appId))continue;const K=e.find(dr=>dr.id===M.appId&&dr.tooltip);K&&(G.current.add(M.appId),E.push({app:K,id:`${K.id}-restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,initialX:M.x,initialY:M.y}))}E.length>0&&F(M=>[...M,...E])},[e]),_(()=>()=>{y.current!==null&&clearTimeout(y.current)},[]);const q=sr((m,E)=>{y.current!==null&&(clearTimeout(y.current),y.current=null),m?(N(m),U(E??null)):y.current=setTimeout(()=>{N(null),U(null),y.current=null},180)},[]),I=s(b(w),"panelVisibleRef");I.current=w;const ir=s(b(r),"activeAppIdRef");ir.current=r;const rr=s(b(c),"onToggleAppRef");rr.current=c;const ar=s(er(()=>{const m=globalThis.window?.innerWidth??1920,E=globalThis.window?.innerHeight??1080;return et(P.position,P.left,P.top,m,E)},[P.left,P.position,P.top]),"placement"),nr=sr(async m=>{const E=I.current,M=ir.current;if(m===M&&E){await rr.current(m),k({open:!1,viewMode:"default"});return}m!==M&&await rr.current(m),E||k({open:!0})},[k]),X={activeAppId:r,apps:e,clearNotification:i,hoveredApp:f,hoveredAppRect:cr,isDragging:x,isVisible:w,pinTooltip:d,pinnedTooltips:C,placement:ar,registerApp:o,setDragging:lr(()=>{},"setDragging"),setHoveredApp:q,setNotification:n,setPlacement:lr(()=>{},"setPlacement"),setVisible:lr(m=>k({open:m}),"setVisible"),toggleApp:nr,unpinTooltip:p,unregisterApp:g};return!P.preferShowFloatingPanel&&!w?null:a(Vr.Provider,{value:X,children:v("div",{class:h(B==="dark"&&"dark"),style:{display:"contents"},children:[v("div",{ref:T,class:h("fixed z-[2147483647]","pointer-events-auto","origin-center","transition-[left_0.3s_cubic-bezier(0.4,0,0.2,1),top_0.3s_cubic-bezier(0.4,0,0.2,1)]","data-[dragging]:transition-none!","group","toolbar-font text-[13px]! leading-[1.6]! antialiased box-border [&_*]:box-border print:hidden",P.reduceMotion&&"transition-none! animate-none! [&_*]:transition-none! [&_*]:animate-none!"),"data-dragging":x?"":void 0,"data-placement":ar,id:"__v_dt__root",onMouseMove:Z,style:R,children:[v("div",{ref:V,class:h("group/panel","absolute left-0 top-0","flex flex-row justify-start items-center","gap-1 p-1","box-border","overflow-hidden","rounded-none","text-foreground select-none",x?"cursor-grabbing":"cursor-grab","bg-background border-0",J?"shadow-pill-vertical!":"shadow-pill",O?"max-w-12!":"","transition-pill"),"data-vertical":J||void 0,onPointerDown:lr(m=>{P.isFirstVisit&&k({isFirstVisit:!1}),Y(m)},"onPointerDown"),style:A,children:[a("button",{"aria-label":"Toggle devtools panel",class:h("size-8 flex justify-center items-center shrink-0","cursor-pointer p-0 m-0 border-0","bg-transparent","transition-all duration-150","hover:bg-primary/8 active:scale-[0.95]","group-data-[vertical]/panel:rotate-[-90deg]",w?"opacity-100":"opacity-60"),onClick:lr(m=>{m.stopPropagation(),P.isFirstVisit&&k({isFirstVisit:!1}),$()},"onClick"),title:"Toggle devtools panel",type:"button",children:a("img",{alt:"Visulima",class:"size-6",src:Le})}),a("div",{"aria-hidden":"true",class:h("w-px h-5 bg-primary/20 shrink-0",O&&"hidden")}),a("div",{class:h("px-0.5",O&&"hidden"),children:a(He,{customAppsToShow:t})})]}),P.isFirstVisit&&a(Ue,{onDismiss:lr(()=>k({isFirstVisit:!1}),"onDismiss"),position:P.position})]}),a(je,{activeAppId:r,apps:e,onClose:j,onToggleApp:c,panelVisible:w,position:P.position}),a(Ge,{position:P.position}),C.map(m=>a(Ke,{onMove:D,onUnpin:p,pinned:m},m.id))]})})},"ToolbarContainer");var ot=Object.defineProperty,$r=S((r,e)=>ot(r,"name",{value:e,configurable:!0}),"r");const at=$r((r,e)=>{const t=Rr(),i=Gr();if(!i)throw new Error("Global hook not initialized");return{clearNotification(o){r.clearNotification(o)},async closeApp(){const o=r.getActiveApp();o&&await r.toggleApp(o.id)},getActiveApp(){return r.getActiveApp()?.id||null},getApps(){return r.getApps()},getSettings(){return _r()},hide(){e.hide()},hook:i,notify(o,n){r.setNotification(o,!0,n)},async openApp(o){await r.toggleApp(o)},registerApp(o){r.registerApp(o)},rpc:new Proxy({},{get(o,n){return(...c)=>t.callServer(n,...c)}}),show(){e.show()},toggle(){e.toggle()},unregisterApp(o){r.unregisterApp(o)},updateSettings(o){Zr(o)},version:"0.0.0"}},"createGlobalAPI"),it=$r(r=>{globalThis.window!==void 0&&(globalThis.__VISULIMA_DEVTOOLS__=r)},"setupGlobalAPI");var nt=Object.defineProperty,H=S((r,e)=>nt(r,"name",{value:e,configurable:!0}),"i");class Sr extends HTMLElement{static{S(this,"DevToolbar")}static{H(this,"DevToolbar")}appManager;hasBeenInitialized=!1;customAppsToShow=3;renderRoot=null;constructor(){super(),this.attachShadow({mode:"open"}),this.appManager=new re}connectedCallback(){this.hasBeenInitialized&&this.shadowRoot&&!this.renderRoot&&this.render()}disconnectedCallback(){this.renderRoot&&(Ar(null,this.renderRoot),this.renderRoot=null)}init(){if(this.hasBeenInitialized)return;this.hasBeenInitialized=!0,Sr.injectFont();const e=Yr(n=>{this.appManager.registerApp(n),this.render()},(n,c)=>{Or().addEvent(n,c)}),t=at({clearNotification:H(n=>{this.appManager.clearNotification(n),this.render()},"clearNotification"),getActiveApp:H(()=>this.appManager.getActiveApp(),"getActiveApp"),getApps:H(()=>this.appManager.getAllApps(),"getApps"),registerApp:H(n=>{this.appManager.registerApp(n),this.render()},"registerApp"),setNotification:H((n,c,g)=>{this.appManager.setNotification(n,c,g),this.render()},"setNotification"),toggleApp:H(n=>this.appManager.toggleApp(n),"toggleApp"),unregisterApp:H(n=>{this.appManager.unregisterApp(n),this.render()},"unregisterApp")},{hide:H(()=>this.setToolbarVisible(!1),"hide"),show:H(()=>this.setToolbarVisible(!0),"show"),toggle:H(()=>{const n=this.isHidden();this.setToolbarVisible(!n)},"toggle")});it(t),e.emit("devtools:init");const i=_r(),o=this.appManager.getAllApps().find(n=>n.defaultOpen);o&&!this.appManager.getActiveApp()&&this.appManager.openApp(o.id).catch(n=>{console.error(`[dev-toolbar] Failed to auto-open defaultOpen app ${o.id}:`,n)}),this.render(),this.setupEventListeners(),i.defaultVisible&&this.setToolbarVisible(!0)}isHidden(){return this.shadowRoot.querySelector("#__v_dt__root")?.hasAttribute("data-hidden")??!0}setToolbarVisible(e){const t=this.shadowRoot.querySelector("#__v_dt__root");t&&(e?t.removeAttribute("data-hidden"):t.setAttribute("data-hidden","")),this.render()}registerApp(e,t=!1){this.appManager.registerApp(e,t),this.render()}getAppManager(){return this.appManager}static injectFont(){const e="__v_dt__font";if(document.getElementById(e))return;const t=document.createElement("link");t.rel="preconnect",t.href="https://fonts.googleapis.com",document.head.append(t);const i=document.createElement("link");i.rel="preconnect",i.href="https://fonts.gstatic.com",i.crossOrigin="anonymous",document.head.append(i);const o=document.createElement("link");o.id=e,o.rel="stylesheet",o.href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap",document.head.append(o)}render(){const e=this.appManager.getAllApps(),t=this.shadowRoot;gr&&(t.adoptedStyleSheets=[gr]);let i=t.querySelector("style");i||(i=document.createElement("style"),i.textContent=`
1
+ var Ge=Object.defineProperty;var R=(e,t)=>Ge(e,"name",{value:t,configurable:!0});import{createContext as Ye,render as ke}from"preact";import{createClientRPCContext as _e}from"../packem_shared/createClientRPCContext-DzKQpKTk.js";import{updateSettings as Oe,loadSettings as Ne}from"../packem_shared/loadSettings-hvjR4fcS.js";import{getGlobalHook as Xe,setupGlobalHook as Je}from"../packem_shared/setupGlobalHook-CFuxsCyl.js";import{sharedToolbarStylesheet as he}from"../packem_shared/sharedToolbarStylesheet-DHHoFz2-.js";import{jsx as n,jsxs as m,Fragment as Te}from"preact/jsx-runtime";import{g as Ue}from"../packem_shared/store-BxE0w51s.js";import{addHookName as l}from"preact/devtools";import{useContext as Qe,useEffect as V,useMemo as ee,useState as $,useRef as b,useCallback as ce,useLayoutEffect as qe}from"preact/hooks";import h from"../packem_shared/cn-DWLJYh3h.js";import te from"../packem_shared/Icon-DWFLZkwW.js";import{u as Ce,a as Ve}from"../packem_shared/use-theme-CX1gG6Sv.js";var Ke=Object.defineProperty,et=R((e,t)=>Ke(e,"name",{value:t,configurable:!0}),"t$3");const me=et(()=>{const e=_e();return{rpc:new Proxy({},{get(t,r){return(...i)=>e.callServer(r,...i)}})}},"createServerHelpers");var tt=Object.defineProperty,rt=R((e,t)=>tt(e,"name",{value:t,configurable:!0}),"n$3");class nt{static{R(this,"AppManager")}static{rt(this,"AppManager")}apps=new Map;activeAppId=null;initializedApps=new Set;appCanvases=new Map;registerApp(t,r=!1){this.apps.has(t.id)&&(this.initializedApps.delete(t.id),this.appCanvases.delete(t.id),this.activeAppId===t.id&&(this.activeAppId=null));const i=new EventTarget,o={...t,active:!1,builtIn:r,eventTarget:i,notification:{state:!1},status:"ready"};this.apps.set(t.id,o)}async unregisterApp(t){const r=this.apps.get(t);if(r?.destroy&&this.initializedApps.has(t)){const i=this.appCanvases.get(t);if(i)try{await r.destroy(i.shadowRoot)}catch(o){console.error(`[dev-toolbar] destroy() failed for app ${t}:`,o)}}this.apps.delete(t),this.initializedApps.delete(t),this.appCanvases.delete(t),this.activeAppId===t&&(this.activeAppId=null)}getApp(t){return this.apps.get(t)}getAllApps(){return[...this.apps.values()]}getActiveApp(){if(this.activeAppId)return this.apps.get(this.activeAppId)}async toggleApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.onClick??r.onDeactivate){const i=r.active;return r.active=!i,!i&&r.onClick?await r.onClick():i&&r.onDeactivate&&await r.onDeactivate(),!0}return r.active?await this.closeApp(t):this.activeAppId&&!await this.closeApp(this.activeAppId)?!1:await this.openApp(t)}setAppActive(t,r){const i=this.apps.get(t);i&&(i.active=r)}isAppInitialized(t){return this.initializedApps.has(t)}markAppInitialized(t){this.initializedApps.add(t)}async openApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.active=!0,r.status="loading",this.activeAppId=t,r.init&&!this.isAppInitialized(t))try{const i=this.getAppCanvas(t);if(i){const o=me(),a=r.init(i.shadowRoot,r.eventTarget,o);a&&typeof a.then=="function"&&await a,this.markAppInitialized(t),r.status="ready"}else r.status="pending"}catch(i){return console.error(`[dev-toolbar] Failed to init app ${t}:`,i),r.status="error",r.active=!1,this.activeAppId=null,!1}else r.status="ready";return!0}async closeApp(t){const r=this.apps.get(t);if(!r||!r.active)return!1;if(r.beforeTogglingOff){const i=this.getAppCanvas(t);if(i)try{const o=r.beforeTogglingOff(i.shadowRoot);if(!(o&&typeof o.then=="function"?await o:o))return!1}catch(o){console.error(`[dev-toolbar] beforeTogglingOff() threw for app ${t}:`,o)}}return r.active=!1,this.activeAppId===t&&(this.activeAppId=null),!0}setNotification(t,r,i){const o=this.apps.get(t);o&&(o.notification={level:i,state:r})}clearNotification(t){const r=this.apps.get(t);r&&(r.notification={state:!1})}getAppCanvas(t){return this.appCanvases.get(t)||null}setAppCanvas(t,r){this.appCanvases.set(t,r)}}var it=Object.defineProperty,ot=R((e,t)=>it(e,"name",{value:t,configurable:!0}),"t$2");const $e=Ye(null),Pe=ot(()=>{const e=Qe($e);if(!e)throw new Error("useToolbarContext must be used within ToolbarContext provider");return e},"useToolbarContext");var at=Object.defineProperty,st=R((e,t)=>at(e,"name",{value:t,configurable:!0}),"t$1");const Fe=st(()=>{const e=Pe();return{activeAppId:e.activeAppId,apps:e.apps,clearNotification:e.clearNotification,registerApp:e.registerApp,setNotification:e.setNotification,toggleApp:e.toggleApp,unregisterApp:e.unregisterApp}},"useApps");var lt=Object.defineProperty,ge=R((e,t)=>lt(e,"name",{value:t,configurable:!0}),"s$2");const ct=ge((e,t)=>{const r=t.split("+"),i=r.at(-1)??"",o=r.includes("Alt"),a=r.includes("Shift"),c=r.includes("Control")||r.includes("Ctrl"),p=r.includes("Meta")||r.includes("Cmd");return(e.key===i||e.code===`Key${i.toUpperCase()}`)&&e.altKey===o&&e.shiftKey===a&&e.ctrlKey===c&&e.metaKey===p},"matchesBinding"),dt=ge(()=>{const{state:e,updateState:t}=Ce(),r=ge((a,c)=>{const p=c??!e.open;t({open:p,...p?{}:{viewMode:"default"}})},"togglePanelVisible"),i=ge(()=>{e.open&&t({open:!1,viewMode:"default"})},"closePanel");V(()=>{const a=e.keybindings?.toggle??"Alt+Shift+D",c=ge(p=>{ct(p,a)&&r()},"handleKeyDown");return globalThis.window?.addEventListener("keydown",c),()=>{globalThis.window?.removeEventListener("keydown",c)}},[e.open,e.keybindings?.toggle]);const o=l(ee(()=>e.open,[e.open]),"panelVisibleValue: boolean");return{closePanel:i,panelVisible:o,togglePanelVisible:r}},"usePanelVisible");var pt=Object.defineProperty,Ee=R((e,t)=>pt(e,"name",{value:t,configurable:!0}),"e");const ve=Ee((e,t,r)=>Math.min(Math.max(e,t),r),"clamp");Ee(()=>navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),"checkIsSafari");const xe=Ee(e=>typeof e=="string"?e.endsWith("px")?Number(e.slice(0,-2)):Number(e):e,"pixelToNumber");var ut=Object.defineProperty,ie=R((e,t)=>ut(e,"name",{value:t,configurable:!0}),"g$2");const Se=ie(e=>e<5?0:e>95?100:Math.abs(e-50)<2?50:e,"snapToPoints"),ht=ie(()=>{if(globalThis.window===void 0)return{bottom:0,left:0,right:0,top:0};const e=getComputedStyle(document.documentElement);return{bottom:xe(e.getPropertyValue("env(safe-area-inset-bottom)")||"0"),left:xe(e.getPropertyValue("env(safe-area-inset-left)")||"0"),right:xe(e.getPropertyValue("env(safe-area-inset-right)")||"0"),top:xe(e.getPropertyValue("env(safe-area-inset-top)")||"0")}},"getSafeAreaInsets"),gt=ie(()=>{const[e,t]=l($(()=>({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})),"size");return V(()=>{const r=ie(()=>{t({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})},"updateSize");return r(),globalThis.window?.addEventListener("resize",r),()=>{globalThis.window?.removeEventListener("resize",r)}},[]),e},"useWindowSize"),ft=ie(e=>{const{state:t,updateState:r}=Ce(),{height:i,width:o}=gt(),[a,c]=l($(!1),"isHovering"),[p,f]=l($(!1),"isDragging"),[L,y]=l($(!1),"isViteOverlayOpen"),B=l(b({x:0,y:0}),"draggingOffsetRef"),P=l(b({x:0,y:0}),"mousePositionRef"),D=l(b(null),"timerRef"),M=l(b(null),"capturedPointerIdRef"),F=l(b(!1),"isDraggingRef"),j=l(b(o),"windowWidthRef"),N=l(b(i),"windowHeightRef"),G=l(b(r),"updateStateRef");V(()=>{j.current=o,N.current=i},[o,i]),V(()=>{G.current=r},[r]);const[w,O]=l($(()=>({bottom:10,left:10,right:10,top:10})),"panelMargins");V(()=>{const g=ht();O({bottom:g.bottom+10,left:g.left+10,right:g.right+10,top:g.top+10})},[]),V(()=>{const g=ie(()=>{const E=globalThis.__v_o__current;if(E?.parentNode){const s=E.shadowRoot?.querySelector("#__v_o__root");y(!!s&&!s.classList.contains("hidden"))}else y(!1)},"check"),T=setInterval(g,300);return g(),()=>clearInterval(T)},[]);const U=ce(g=>{g.preventDefault(),g.stopPropagation(),f(!0),F.current=!0;const T=e.current;if(T){const{height:E,left:s,top:d,width:u}=T.getBoundingClientRect();B.current={x:g.clientX-s-u/2,y:g.clientY-d-E/2};const A=g.target;try{A&&A.setPointerCapture?(A.setPointerCapture(g.pointerId),M.current=g.pointerId):T.setPointerCapture&&(T.setPointerCapture(g.pointerId),M.current=g.pointerId)}catch(z){console.warn("Failed to capture pointer:",z)}document.body.style.cursor="grabbing",document.body.style.userSelect="none"}},[e]),Y=ce(()=>{c(!0),!(t.minimizePanelInactive<0)&&(D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{c(!1)},t.minimizePanelInactive||5e3))},[t.minimizePanelInactive]);V(()=>{Y()},[Y]),V(()=>{const g=ie(d=>{if(F.current&&(f(!1),F.current=!1,document.body.style.cursor="",document.body.style.userSelect="",M.current!==null)){try{const u=e.current;u&&M.current!==null&&u.releasePointerCapture(M.current)}catch{}M.current=null}},"handlePointerUp"),T=ie(d=>{if(F.current&&(f(!1),F.current=!1,document.body.style.cursor="",document.body.style.userSelect="",M.current!==null)){try{const u=e.current;u&&M.current!==null&&u.releasePointerCapture(M.current)}catch{}M.current=null}},"handlePointerCancel"),E=ie(()=>{F.current&&(f(!1),F.current=!1,M.current=null,document.body.style.cursor="",document.body.style.userSelect="")},"handleLostPointerCapture"),s=ie(d=>{if(!F.current)return;d.preventDefault();const u=j.current,A=N.current,z=u/2,X=A/2,K=d.clientX,I=d.clientY,ae=K-B.current.x,ne=I-B.current.y;P.current={x:ae,y:ne};const re=Math.max(0,Math.min(K,u)),oe=Math.max(0,Math.min(I,A)),J=Math.atan2(oe-X,re-z),pe=70,v=Math.atan2(0-X+pe,0-z),S=Math.atan2(0-X+pe,u-z),k=Math.atan2(A-pe-X,0-z),Z=Math.atan2(A-pe-X,u-z),se=J>=v&&J<=S?"top":J>=S&&J<=Z?"right":J>=Z&&J<=k?"bottom":"left",be=Math.max(0,Math.min(100,ae/u*100)),Ze=Math.max(0,Math.min(100,ne/A*100));G.current({left:Se(be),position:se,top:Se(Ze)})},"handlePointerMove");return document.addEventListener("pointermove",s,{capture:!0,passive:!1}),document.addEventListener("pointerup",g,{capture:!0}),document.addEventListener("pointercancel",T,{capture:!0}),document.addEventListener("lostpointercapture",E,{capture:!0}),()=>{document.removeEventListener("pointermove",s,{capture:!0}),document.removeEventListener("pointerup",g,{capture:!0}),document.removeEventListener("pointercancel",T,{capture:!0}),document.removeEventListener("lostpointercapture",E,{capture:!0})}},[]);const C=l(ee(()=>t.position==="left"||t.position==="right",[t.position]),"isVertical"),x=l(ee(()=>{if(t.minimizePanelInactive<0)return!1;if(t.minimizePanelInactive===0)return!0;const g=globalThis.window!==void 0&&("ontouchstart"in globalThis.window||(globalThis.navigator?.maxTouchPoints??0)>0);return!p&&!t.open&&!a&&!g&&t.minimizePanelInactive>0&&!L},[p,t.open,t.minimizePanelInactive,a,L]),"isHidden"),H=l(ee(()=>{const g=e.current,T=(g?.clientWidth??0)/2,E=(g?.clientHeight??0)/2,s=C?E:T,d=C?T:E,u=t.left*o/100,A=t.top*i/100;switch(t.position){case"left":return{left:w.left+s-(x?30:0),top:ve(A,d+w.top,i-d-w.bottom)};case"right":return{left:o-w.right-s+(x?15:0)-(x?0:10),top:ve(A,d+w.top,i-d-w.bottom)};case"top":return{left:ve(u,s+w.left,o-s-w.right),top:w.top+d-(x?30:0)};default:return{left:ve(u,s+w.left,o-s-w.right),top:i-w.bottom-d+(x?30:0)}}},[t.left,t.open,t.position,t.top,i,o,w,e,x,C]),"anchorPos"),de=l(ee(()=>({left:`${H.left}px`,top:`${H.top}px`,transition:p?"none":"left 0.3s ease, top 0.3s ease"}),[H,p]),"anchorStyle"),Q=l(ee(()=>{const g=e.current,T=(g?.clientWidth??0)/2,E=(g?.clientHeight??0)/2,s=C?E:T,d=C?T:E,u={bottom:w.bottom+d,left:w.left+s,right:w.right+s,top:w.top+d},A=u.left+u.right,z=u.top+u.bottom,X=o-A,K=i-z,I={height:`min(${t.height}vh, calc(100vh - ${z}px))`,pointerEvents:p?"none":"auto",width:`min(${t.width}vw, calc(100vw - ${A}px))`,zIndex:"-1"},ae=H,ne=Math.min(X,t.width*o/100),re=Math.min(K,t.height*i/100),oe=ae?.left??0,J=ae?.top??0;switch(t.position){case"bottom":case"top":{I.left="0",I.transform="translate(-50%, 0)",oe-u.left<ne/2?I.left=`${ne/2-oe+u.left}px`:o-oe-u.right<ne/2&&(I.left=`${o-oe-ne/2-u.right}px`);break}case"left":case"right":{I.top="0",I.transform="translate(0, -50%)",J-u.top<re/2?I.top=`${re/2-J+u.top}px`:i-J-u.bottom<re/2&&(I.top=`${i-J-re/2-u.bottom}px`);break}}switch(t.position){case"left":{I.left="0";break}case"right":{I.right="0";break}case"top":{I.top="0";break}default:{I.bottom="0";break}}return I},[H,p,w,t.height,t.position,t.width,i,o,e,C]),"iframeStyle"),q=l(ee(()=>{const g={transform:C?"translate(-50%, -50%) rotate(90deg)":"translate(-50%, -50%)"};return p&&(g.transition="none !important"),g},[p,C]),"panelStyle");return{anchorStyle:de,bringUp:Y,iframeStyle:Q,isDragging:p,isHidden:x,isVertical:C,onPointerDown:U,panelStyle:q}},"usePosition");var mt=Object.defineProperty,we=R((e,t)=>mt(e,"name",{value:t,configurable:!0}),"t");const bt=we(({app:e})=>{const{toggleApp:t}=Fe(),{isVisible:r,setHoveredApp:i}=Pe(),o=l(b(null),"buttonRef"),a=we(()=>{i(null),t(e.id).catch(f=>{console.error(`[dev-toolbar] Failed to toggle app ${e.id}:`,f)})},"handleClick"),c=we(()=>{!e.tooltip||r||i(e,o.current?.getBoundingClientRect()??null)},"handleMouseEnter"),p=we(()=>{e.tooltip&&i(null)},"handleMouseLeave");return n("button",{"aria-label":e.name,class:h("relative flex justify-center items-center","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-primary/8 hover:text-primary","active:scale-[0.94]",e.active&&"bg-primary/12 text-primary","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":e.id,onClick:a,onMouseEnter:c,onMouseLeave:p,ref:o,title:e.tooltip?void 0:e.name,type:"button",children:m("div",{class:"relative size-6 select-none flex items-center justify-center",children:[n("div",{class:"size-6 flex items-center justify-center [&_svg]:size-4.5",dangerouslySetInnerHTML:{__html:e.icon}}),e.notification.state&&n("span",{class:h("absolute -top-1 -right-1 size-1.5 rounded-full border border-background",e.notification.level==="error"&&"bg-destructive",e.notification.level==="warning"&&"bg-warning",(!e.notification.level||e.notification.level==="info")&&"bg-info"),"data-level":e.notification.level||"info"})]})})},"AppButton"),He="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-chevron-right%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m9%2018%206-6-6-6%22%20%2F%3E%20%3C%2Fsvg%3E",vt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-layers%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12.83%202.18a2%202%200%200%200-1.66%200L2.6%206.08a1%201%200%200%200%200%201.83l8.58%203.91a2%202%200%200%200%201.66%200l8.58-3.9a1%201%200%200%200%200-1.83z%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2012a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2012%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2017a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2017%22%20%2F%3E%20%3C%2Fsvg%3E",xt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203H5a2%202%200%200%200-2%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208V5a2%202%200%200%200-2-2h-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016v3a2%202%200%200%200%202%202h3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021h3a2%202%200%200%200%202-2v-3%22%20%2F%3E%20%3C%2Fsvg%3E",wt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M15%203h6v6%22%20%2F%3E%20%3Cpath%20d%3D%22m21%203-7%207%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2021H3v-6%22%20%2F%3E%20%3C%2Fsvg%3E",yt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203v3a2%202%200%200%201-2%202H3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208h-3a2%202%200%200%201-2-2V3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016h3a2%202%200%200%201%202%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021v-3a2%202%200%200%201%202-2h3%22%20%2F%3E%20%3C%2Fsvg%3E",Dt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m14%2010%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2010h-6V4%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2014h6v6%22%20%2F%3E%20%3C%2Fsvg%3E",At="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-picture-in-picture-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M21%209V6a2%202%200%200%200-2-2H4a2%202%200%200%200-2%202v10c0%201.1.9%202%202%202h4%22%20%2F%3E%20%3Crect%20width%3D%2210%22%20height%3D%227%22%20x%3D%2212%22%20y%3D%2213%22%20rx%3D%222%22%20%2F%3E%20%3C%2Fsvg%3E",We="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-x%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M18%206%206%2018%22%20%2F%3E%20%3Cpath%20d%3D%22m6%206%2012%2012%22%20%2F%3E%20%3C%2Fsvg%3E";var It=Object.defineProperty,_=R((e,t)=>It(e,"name",{value:t,configurable:!0}),"a");const Le=_(({app:e})=>{const t=l(b(null),"contentRef"),r=l(b(!1),"initializedRef"),i=l(b(me()),"helpersRef");return V(()=>{if(!t.current||r.current||e.component)return;const o=t.current;if(e.init){const a=document.createElement("div");a.style.cssText="width:100%;height:100%;",o.append(a);const c=a.attachShadow({mode:"open"});he&&(c.adoptedStyleSheets=[he]);const p=me(),f=e.init(c,e.eventTarget,p);return f&&typeof f.then=="function"?f.then(()=>{r.current=!0}).catch(L=>{console.error(`[dev-toolbar] Failed to init app ${e.id}:`,L)}):r.current=!0,()=>{for(;o.firstChild;)o.firstChild.remove();r.current=!1}}},[e]),e.component?n(e.component,{eventTarget:e.eventTarget,helpers:i.current}):n("div",{class:"w-full h-full",ref:t})},"AppContent"),Ct=_(({apps:e,initialActiveAppId:t,onClose:r})=>{const[i,o]=l($(t),"activeAppId"),[a,c]=l($(!1),"sidebarCollapsed"),p=l(ee(()=>e.find(f=>f.id===i),[e,i]),"activeApp");return m("div",{class:"flex flex-row w-full h-full bg-background font-mono antialiased text-foreground",children:[m("nav",{"aria-label":"DevTools apps",class:h("flex flex-col shrink-0 bg-accent border-r border-border/60","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]",a?"w-12.5":"w-62.5"),children:[n("div",{class:h("flex items-center shrink-0 border-b border-border/50 h-12",a?"justify-center px-2":"px-3"),children:a?n("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):m("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[n("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),n("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:e.filter(f=>f.component??f.init).map(f=>m("div",{class:"relative group/nav-item",children:[m("button",{"aria-label":f.name,"aria-pressed":i===f.id,class:h("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",a?"justify-center px-0":"gap-2.5 px-3",i===f.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:_(()=>o(f.id),"onClick"),type:"button",children:[f.icon?n("span",{class:h("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",i===f.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:f.icon}}):n("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:f.name.slice(0,2)}),!a&&n("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:f.name})]}),f.notification.state&&n("span",{"aria-hidden":"true",class:h("pointer-events-none absolute top-1.5 rounded-full",a?"right-1.5":"right-2.5","size-1.5",f.notification.level==="error"?"bg-destructive":f.notification.level==="warning"?"bg-warning":"bg-info")}),a&&n("div",{class:h("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:n("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:f.name})})]},f.id))})]}),m("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[m("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[m("div",{class:"flex items-center gap-3 min-w-0",children:[n("button",{"aria-label":a?"Expand sidebar":"Collapse sidebar",class:h("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:_(()=>c(f=>!f),"onClick"),type:"button",children:n(te,{class:h("size-3.5 transition-transform duration-300",!a&&"rotate-180"),size:14,src:He})}),p?.icon&&n("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:p.icon}}),m("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[n("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),p?.name??"DevTools",n("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),n("button",{"aria-label":"Close floating window",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close floating window",type:"button",children:n(te,{size:12,src:We})})]}),n("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:p?n(Le,{app:p},p.id):n("div",{class:"flex flex-col items-center justify-center h-full gap-3 p-8 select-none text-muted-foreground",children:n("p",{class:"text-[0.8rem]",children:"Select a tool from the sidebar"})})})]})]})},"PipPanel"),ye=20,De=95,Ae=_((e,t,r)=>Math.min(Math.max(e,t),r),"clamp"),Mt=_(e=>{switch(e){case"bottom":return"bottom-14";case"left":return"left-14 top-4 bottom-4";case"right":return"right-14 top-4 bottom-4";case"top":return"top-14";default:return"bottom-14"}},"getPanelPositionClasses"),kt=_(e=>{switch(e){case"bottom":return"origin-[bottom_center]";case"left":return"origin-[left_center]";case"right":return"origin-[right_center]";case"top":return"origin-[top_center]";default:return"origin-[bottom_center]"}},"getOriginClass"),Tt=_((e,t)=>t?"opacity-100 scale-100":h("opacity-0 pointer-events-none scale-[0.99]",{bottom:"translate-y-2",left:"-translate-x-2",right:"translate-x-2",top:"-translate-y-2"}[e]??"translate-y-2"),"getVisibilityClasses"),zt=_(({activeAppId:e,apps:t,onClose:r,onToggleApp:i,panelVisible:o,position:a})=>{const[c,p]=l($(!1),"isRendered"),[f,L]=l($(!1),"isVisible"),[y,B]=l($(!1),"sidebarCollapsed"),[,P]=l($(0),"rerender"),{state:D,updateState:M}=Ce(),{resolvedTheme:F}=Ve(),j=l(b(null),"panelDivRef"),N=l(b(!1),"isResizingRef"),G=l(b({height:D.height,width:D.width}),"dimensionsRef"),w=l(b(null),"enteringFromRectRef"),O=l(b(null),"lastDockedRectRef"),U=l(b(!1),"previousIsFullscreenRef"),Y=l(b(!1),"isExitAnimatingRef"),C=l(b(null),"fsTimerRef"),x=D.viewMode==="fullscreen",H=D.viewMode==="wide",de=globalThis.window?.documentPictureInPicture!==void 0,Q=l(b(null),"pipWindowRef"),q=l(ee(()=>{if(x)return{};const s=globalThis.window?.innerWidth??1920,d=globalThis.window?.innerHeight??1080,u=`${G.current.height/100*d}px`;switch(a){case"bottom":case"top":return{height:u,left:"50%",transform:"translateX(-50%)",width:H?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"};case"left":case"right":return{width:`${G.current.width/100*s}px`};default:return{height:u,left:"50%",transform:"translateX(-50%)",width:H?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"}}},[x,H,a,P]),"panelSizeStyle");V(()=>{const s=_(u=>{if(!N.current||!j.current)return;const A=j.current.getBoundingClientRect(),z=window.innerWidth,X=window.innerHeight,K={...G.current};if(N.current.top){const I=Math.abs(A.bottom-u.clientY);K.height=Ae(I/X*100,ye,De)}else if(N.current.bottom){const I=Math.abs(u.clientY-A.top);K.height=Ae(I/X*100,ye,De)}else if(N.current.right){const I=Math.abs(u.clientX-A.left);K.width=Ae(I/z*100,ye,De)}else if(N.current.left){const I=Math.abs(A.right-u.clientX);K.width=Ae(I/z*100,ye,De)}G.current=K,P(I=>I+1)},"handleMouseMove"),d=_(()=>{N.current&&(M({height:G.current.height,width:G.current.width}),N.current=!1)},"handleMouseUp");return globalThis.addEventListener("mousemove",s),globalThis.addEventListener("mouseup",d),()=>{globalThis.removeEventListener("mousemove",s),globalThis.removeEventListener("mouseup",d)}},[M]),qe(()=>{const s=U.current;U.current=x,C.current!==null&&(clearTimeout(C.current),C.current=null);const d=j.current;if(d)if(x&&!s&&w.current){const u=w.current;w.current=null;const A=globalThis.window?.innerWidth??0,z=globalThis.window?.innerHeight??0;d.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",d.style.clipPath=`inset(${u.top}px ${A-u.right}px ${z-u.bottom}px ${u.left}px)`,requestAnimationFrame(()=>{d.style.clipPath="inset(0px 0px 0px 0px)",C.current=setTimeout(()=>{d.style.clipPath="",d.style.transition="",C.current=null},380)})}else!x&&s&&!Y.current&&(d.style.transition="none",d.style.clipPath="",requestAnimationFrame(()=>{d.style.transition=""}))},[x]),V(()=>{if(o){p(!0);const d=setTimeout(L,16,!0);return()=>clearTimeout(d)}L(!1);const s=setTimeout(p,220,!1);return()=>clearTimeout(s)},[o]);const g=_(async()=>{const s=globalThis.window?.documentPictureInPicture;if(s)try{const d=await s.requestWindow({height:600,width:900});if(Q.current=d,he){const A=d.document.createElement("style");A.textContent=Array.from(he.cssRules,z=>z.cssText).join(`
2
+ `),d.document.head.append(A)}const u=d.document.createElement("div");u.style.cssText="width:100%;height:100%;display:flex;",F==="dark"&&(d.document.documentElement.classList.add("dark"),u.classList.add("dark")),d.document.body.style.cssText="margin:0;padding:0;height:100vh;",d.document.body.append(u),ke(n(Ct,{apps:t,initialActiveAppId:e,onClose:_(()=>{d.close()},"onClose")}),u),M({isPip:!0}),d.addEventListener("pagehide",()=>{M({isPip:!1}),Q.current=null})}catch(d){console.error("[dev-toolbar] PiP activation failed:",d)}},"activatePip");V(()=>{if(!o)return;const s=_(d=>{d.key==="Escape"&&r()},"handleKeyDown");return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[o,r]);const T=l(ee(()=>t.find(s=>s.id===e),[t,e]),"activeApp");if(!c)return null;const E=_(s=>d=>{d.preventDefault(),N.current=s},"startResize");return m(Te,{children:[n("div",{"aria-hidden":"true",class:h("fixed inset-0 z-[2147483646]","transition-opacity duration-200",f&&!x?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:D.closeOnOutsideClick?r:void 0,role:"presentation"}),m("div",{"aria-label":"DevTools panel","aria-modal":"true",class:h("fixed z-[2147483647] pointer-events-auto antialiased font-mono",x?"inset-0":Mt(a),"bg-background overflow-hidden",x?"rounded-none border-0":"rounded-none border border-border","shadow-2xl","transition-panel",!x&&kt(a),Tt(a,f),"flex flex-row"),ref:j,role:"dialog",style:q,children:[!x&&m(Te,{children:[a!=="top"&&n("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 top-0 h-2.5 -mt-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:E({top:!0})}),a==="top"&&n("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 bottom-0 h-2.5 -mb-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:E({bottom:!0})}),a==="left"&&n("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 right-0 w-2.5 -mr-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:E({right:!0})}),a==="right"&&n("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 left-0 w-2.5 -ml-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:E({left:!0})})]}),m("nav",{"aria-label":"DevTools apps",class:h("flex flex-col shrink-0 overflow-hidden","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]","bg-accent border-r border-border/60",y?"w-12.5":"w-62.5"),children:[n("div",{class:h("flex items-center shrink-0 border-b border-border/50 h-12",y?"justify-center px-2":"px-3"),children:y?n("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):m("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[n("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),n("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:t.filter(s=>s.component??s.init).map(s=>m("div",{class:"relative group/nav-item",children:[m("button",{"aria-label":s.name,"aria-pressed":e===s.id,class:h("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",y?"justify-center px-0":"gap-2.5 px-3",e===s.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:_(()=>{s.id!==e&&i(s.id).catch(console.error)},"onClick"),type:"button",children:[s.icon?n("span",{class:h("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",e===s.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:s.icon}}):n("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:s.name.slice(0,2)}),!y&&n("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:s.name})]}),s.notification.state&&n("span",{"aria-hidden":"true",class:h("pointer-events-none absolute top-1.5 rounded-full",y?"right-1.5":"right-2.5","size-1.5",s.notification.level==="error"?"bg-destructive":s.notification.level==="warning"?"bg-warning":"bg-info")}),y&&n("div",{class:h("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:n("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:s.name})})]},s.id))}),!y&&n("div",{class:"px-3 py-2.5 border-t border-border/40 shrink-0",children:m("span",{class:"text-[0.58rem] text-muted-foreground/50 leading-none select-none",children:[D.keybindings?.toggle??"Alt+Shift+D"," to toggle"]})})]}),m("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[m("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[m("div",{class:"flex items-center gap-3 min-w-0",children:[n("button",{"aria-label":y?"Expand sidebar":"Collapse sidebar",class:h("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:_(()=>B(s=>!s),"onClick"),type:"button",children:n(te,{class:h("size-3.5 transition-transform duration-300",!y&&"rotate-180"),size:14,src:He})}),T?.icon&&n("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:T.icon}}),m("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[n("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),T?.name??"DevTools",n("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),m("div",{class:"flex items-center gap-1 shrink-0",children:[(a==="bottom"||a==="top")&&!x&&n("button",{"aria-label":H?"Switch to container width":"Expand to full width",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>M({viewMode:H?"default":"wide"}),"onClick"),title:H?"Container width":"Full width",type:"button",children:n(te,{size:13,src:H?Dt:wt})}),n("button",{"aria-label":x?"Exit fullscreen":"Enter fullscreen",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>{if(x){const s=j.current,d=O.current;if(s&&d){const u=globalThis.window?.innerWidth??0,A=globalThis.window?.innerHeight??0,z=`inset(${d.top}px ${u-d.right}px ${A-d.bottom}px ${d.left}px)`;C.current!==null&&(clearTimeout(C.current),C.current=null),Y.current=!0,s.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",s.style.clipPath="inset(0px 0px 0px 0px)",requestAnimationFrame(()=>{s.style.clipPath=z,C.current=setTimeout(()=>{s.style.clipPath="",s.style.transition="",Y.current=!1,C.current=null,M({viewMode:"default"})},380)})}else M({viewMode:"default"})}else{if(j.current){const s=j.current.getBoundingClientRect();w.current=s,O.current=s}M({viewMode:"fullscreen"})}},"onClick"),title:x?"Exit fullscreen":"Fullscreen",type:"button",children:n(te,{size:13,src:x?yt:xt})}),de&&!x&&n("button",{"aria-label":"Open in Picture-in-Picture window",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent",D.isPip?"text-primary hover:bg-primary/7":"text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>{g().then(()=>r()).catch(console.error)},"onClick"),title:"Open in floating window (PiP)",type:"button",children:n(te,{size:13,src:At})}),n("button",{"aria-label":"Close DevTools panel",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close (Esc)",type:"button",children:n(te,{size:12,src:We})})]})]}),n("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:T?n(Le,{app:T},T.id):m("div",{class:"flex flex-col items-center justify-center h-full gap-7 p-8 select-none",children:[m("div",{class:"flex flex-col items-center gap-3",children:[n("div",{class:"size-14 border border-primary/25 bg-primary/5 flex items-center justify-center",children:n(te,{class:"text-primary/45",size:26,src:vt})}),m("div",{class:"text-center space-y-1",children:[n("p",{class:"text-[0.8rem] font-medium text-foreground/65",children:"No tool selected"}),n("p",{class:"text-[0.7rem] text-muted-foreground",children:"Choose a tool from the sidebar to get started"})]})]}),t.length>0&&m("div",{class:"w-full max-w-[220px]",children:[m("p",{class:"text-[0.58rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/60 mb-1.5",children:[n("span",{class:"text-primary/50",children:"// "}),"available"]}),n("div",{class:"flex flex-col gap-0.5",children:t.map(s=>m("button",{class:h("flex items-center gap-2.5 px-3 py-2","border border-border/40 bg-card/50","hover:border-primary/30 hover:bg-primary/4","cursor-pointer transition-all duration-150 text-left"),onClick:_(()=>i(s.id).catch(console.error),"onClick"),type:"button",children:[s.icon?n("span",{class:"size-3.5 shrink-0 flex items-center justify-center [&_svg]:size-3.5 text-muted-foreground",dangerouslySetInnerHTML:{__html:s.icon}}):n("span",{class:"size-3.5 text-[0.5rem] font-bold text-muted-foreground shrink-0 text-center",children:s.name.slice(0,2).toUpperCase()}),n("span",{class:"text-[0.75rem] font-medium text-muted-foreground",children:s.name})]},s.id))})]})]})})]})]})]})},"DevPanel"),Pt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-more-horizontal%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3Ccircle%20cx%3D%2219%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3Ccircle%20cx%3D%225%22%20cy%3D%2212%22%20r%3D%221%22%20%2F%3E%20%3C%2Fsvg%3E",Ft="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-alert-triangle%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m21.73%2018-8-14a2%202%200%200%200-3.48%200l-8%2014A2%202%200%200%200%204%2021h16a2%202%200%200%200%201.73-3%22%20%2F%3E%20%3Cpath%20d%3D%22M12%209v4%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2017h.01%22%20%2F%3E%20%3C%2Fsvg%3E";var Et=Object.defineProperty,Me=R((e,t)=>Et(e,"name",{value:t,configurable:!0}),"n$1");const jt=Me(()=>{const[e,t]=l($(0),"errorCount"),[r,i]=l($(!1),"isOverlayOpen");if(V(()=>{const c=Me(()=>{const f=globalThis.__v_o_error_history,L=Array.isArray(f)?f.length:0;t(L);const y=globalThis.__v_o__current;if(y?.parentNode){const B=y.shadowRoot?.querySelector("#__v_o__root");i(!!B&&!B.classList.contains("hidden"))}else i(!1)},"sync"),p=setInterval(c,300);return c(),()=>clearInterval(p)},[]),e===0)return null;const o=Me(()=>{const c=globalThis.__v_o__current;if(!c?.parentNode)return;const p=c.shadowRoot?.querySelector("#__v_o__root");p?.classList.contains("hidden")?(p.classList.remove("hidden"),i(!0)):typeof c.close=="function"&&(c.close(),i(!1))},"handleClick"),a=`${e} error${e===1?"":"s"} – click to ${r?"hide":"show"} overlay`;return m(Te,{children:[n("div",{"aria-hidden":"true",class:"w-px h-5 bg-primary/20 shrink-0 mx-0.5"}),n("button",{"aria-label":a,class:h("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-destructive","transition-all duration-150","hover:bg-destructive/8","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),onClick:o,title:a,type:"button",children:m("div",{class:"relative size-6 select-none flex items-center justify-center",children:[n(te,{size:16,src:Ft}),n("span",{class:"absolute -top-0.5 -right-1 min-w-3.5 h-3.5 px-0.5 rounded-full bg-destructive text-white text-[9px] font-bold leading-none flex items-center justify-center border border-background",children:e>9?"9+":e})]})})]})},"ViteOverlayButton");var St=Object.defineProperty,ze=R((e,t)=>St(e,"name",{value:t,configurable:!0}),"n");const Rt=ze(()=>{const{toggleApp:e}=Fe();return n("button",{class:h("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-foreground/8 hover:text-foreground","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":"dev-toolbar:more",onClick:ze(()=>{e("dev-toolbar:more").catch(t=>{console.error("[dev-toolbar] Failed to toggle more app:",t)})},"onClick"),title:"More apps",type:"button",children:n("div",{class:"relative size-6 flex items-center justify-center select-none",children:n(te,{size:16,src:Pt})})})},"MoreButton"),_t=ze(({customAppsToShow:e=3})=>{const{apps:t}=Fe(),r=t.filter(c=>c.builtIn),i=t.filter(c=>!c.builtIn),o=[...r,...i.slice(0,e)],a=i.slice(e);return n("div",{class:"flex items-center pointer-events-auto",id:"__v_dt__bar",children:m("div",{class:"flex flex-row items-center justify-start gap-1",id:"__v_dt__bar_container",children:[o.map(c=>n(bt,{app:c},c.id)),a.length>0&&n(Rt,{}),n(jt,{})]})})},"ToolbarBar"),Nt="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQ4IDI5MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGRlZnM+IDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4gPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZWQiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9InJlZDtwdXJwbGU7Ymx1ZTtyZWQ7IiBkdXI9IjIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+IDwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InB1cnBsZSI+IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0b3AtY29sb3IiIHZhbHVlcz0icHVycGxlO2JsdWU7cmVkO3B1cnBsZTsiIGR1cj0iMjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9ImJsdWUiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9ImJsdWU7cmVkO3B1cnBsZTtibHVlOyIgZHVyPSIyMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPiA8L3N0b3A+IDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9ImdyYWRpZW50VHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgLjUgLjUiIHRvPSIzNjAgLjUgLjUiIGR1cj0iMTBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRBIiB4MT0iNjIiIHkxPSI0Mi4yMjUzIiB4Mj0iNjIiIHkyPSIyOTAuMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIG9mZnNldD0iMC4zNCIgc3RvcC1vcGFjaXR5PSIwLjUiIC8+IDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRCIiB4MT0iMTg2IiB5MT0iMCIgeDI9IjE4NiIgeTI9IjI0OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPiA8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIiAvPiA8c3RvcCBvZmZzZXQ9IjAuNjk1IiBzdG9wLW9wYWNpdHk9IjAuNSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiBNMjQ4IDEyNEMyNDggMTkyLjQ4MyAxOTIuNDgzIDI0OCAxMjQgMjQ4VjBDMTkyLjQ4MyAwIDI0OCA1NS41MTY3IDI0OCAxMjRaIiBmaWxsPSJ1cmwoI2EpIiAvPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRBKSIgLz4gPHBhdGggZD0iTTI0OCAxMjRDMjQ4IDE5Mi40ODMgMTkyLjQ4MyAyNDggMTI0IDI0OFYwQzE5Mi40ODMgMCAyNDggNTUuNTE2NyAyNDggMTI0WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRCKSIgLz4gPGNpcmNsZSBjeD0iMTI0IiBjeT0iMTQ3IiByPSI1MCIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPg==",Vt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2010.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h12a1%201%200%200%200%201-1v-.76a2%202%200%200%200-1.11-1.79l-1.78-.9A2%202%200%200%201%2015%2010.76V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H8a2%202%200%200%200%200%204%201%201%200%200%201%201%201z%22%20%2F%3E%20%3C%2Fsvg%3E";var $t=Object.defineProperty,fe=R((e,t)=>$t(e,"name",{value:t,configurable:!0}),"o");const Ht=fe((e,t)=>{switch(t){case"left":return{left:`${e.right+10}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"right":return{right:`${globalThis.window?globalThis.window.innerWidth-e.left+10:0}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"top":return{left:`${e.left+e.width/2}px`,top:`${e.bottom+10}px`,transform:"translateX(-50%)"};default:return{bottom:`${globalThis.window?globalThis.window.innerHeight-e.top+10:0}px`,left:`${e.left+e.width/2}px`,transform:"translateX(-50%)"}}},"getTooltipStyle"),Wt=fe(({position:e})=>{const{hoveredApp:t,hoveredAppRect:r,pinTooltip:i,setHoveredApp:o}=Pe(),a=l(b(null),"overlayRef"),c=l(b(me()),"helpersRef"),[p,f]=l($(!1),"isRendered"),[L,y]=l($(!1),"isVisible"),B=!!(t?.tooltip&&r);if(V(()=>{if(B){f(!0);const N=setTimeout(y,16,!0);return()=>clearTimeout(N)}y(!1);const j=setTimeout(f,200,!1);return()=>clearTimeout(j)},[B]),!p||!t?.tooltip||!r)return null;const P=t.tooltip,D=Ht(r,e),M=e==="left"||e==="right",F=fe(()=>{const j=a.current?.getBoundingClientRect();j&&i(t,j.left,j.top),o(null)},"handlePin");return m("div",{"aria-label":`${t.name} quick preview`,class:h("fixed z-[2147483647] pointer-events-auto","antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-border shadow-2xl","transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]",L?"opacity-100 translate-y-0 scale-100":h("opacity-0 scale-[0.97]",e==="bottom"&&"translate-y-1",e==="top"&&"-translate-y-1",M&&"translate-x-[-2px]")),onMouseEnter:fe(()=>o(t,r),"onMouseEnter"),onMouseLeave:fe(()=>o(null),"onMouseLeave"),ref:a,role:"tooltip",style:D,children:[m("div",{class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-border/60 bg-foreground/3",children:[m("div",{class:"flex items-center gap-2 min-w-0",children:[n("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),n("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-muted-foreground truncate",children:t.name})]}),n("button",{"aria-label":`Pin ${t.name} tooltip`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/60 hover:text-primary","transition-colors duration-150"),onClick:F,title:"Pin (keep visible)",type:"button",children:n(te,{size:11,src:Vt})})]}),n("div",{class:"p-3",children:n(P,{helpers:c.current})})]})},"AppTooltipOverlay");var Lt=Object.defineProperty,Ie=R((e,t)=>Lt(e,"name",{value:t,configurable:!0}),"s$1");const Bt=Ie(e=>{switch(e){case"left":return{left:"0",top:"50%",transform:"translateX(24px) translateY(-50%)"};case"right":return{left:"0",top:"50%",transform:"translateX(calc(-100% - 24px)) translateY(-50%)"};case"top":return{left:"50%",top:"0",transform:"translateX(-50%) translateY(24px)"};default:return{left:"50%",top:"0",transform:"translateX(-50%) translateY(calc(-100% - 24px))"}}},"getHintStyle"),Zt=Ie(({position:e})=>{const t="absolute w-2.5 h-2.5 bg-card border-border";switch(e){case"left":return n("div",{"aria-hidden":"true",class:h(t,"left-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-b border-l")});case"right":return n("div",{"aria-hidden":"true",class:h(t,"right-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-t border-r")});case"top":return n("div",{"aria-hidden":"true",class:h(t,"top-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-t border-l")});default:return n("div",{"aria-hidden":"true",class:h(t,"bottom-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-b border-r")})}},"Arrow"),Gt=[{icon:"⊙",text:"Click logo to open panel"},{icon:"⠿",text:"Drag pill to reposition"},{icon:"⌨",text:"Alt+Shift+D to toggle"}],Yt=Ie(({onDismiss:e,position:t})=>{const[r,i]=l($(!1),"visible"),o=l(b(null),"dismissTimeoutRef");V(()=>{const c=setTimeout(i,600,!0);return()=>clearTimeout(c)},[]),V(()=>()=>{o.current!==null&&(clearTimeout(o.current),o.current=null)},[]);const a=Ie(()=>{i(!1),o.current=setTimeout(e,180)},"handleDismiss");return m("div",{"aria-hidden":!r,"aria-label":"DevTools quick start",class:h("absolute pointer-events-auto","w-[240px]","bg-card border border-border","shadow-xl","p-3","font-mono","transition-all duration-200",r?"opacity-100 scale-100":"opacity-0 scale-95 pointer-events-none"),style:Bt(t),children:[n(Zt,{position:t}),m("p",{class:"flex items-center gap-1.5 mb-2.5",children:[n("span",{"aria-hidden":"true",class:"text-primary text-[0.6rem]",children:"▶"}),n("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.12em] text-foreground",children:"Quick start"})]}),n("ul",{class:"space-y-1.5 mb-3 list-none p-0 m-0",children:Gt.map(({icon:c,text:p})=>m("li",{class:"flex items-center gap-2 text-[0.7rem] text-muted-foreground",children:[n("span",{"aria-hidden":"true",class:"text-primary shrink-0 w-3 text-center leading-none",children:c}),p]},p))}),n("button",{class:h("w-full h-6 text-[0.6rem] font-bold uppercase tracking-[0.1em]","border border-primary/30 bg-primary/6","text-primary cursor-pointer","hover:bg-primary/12 hover:border-primary/50","transition-all duration-150 active:scale-[0.98]"),onClick:a,tabIndex:r?void 0:-1,type:"button",children:"Got it"})]})},"FirstVisitHint"),Ot="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin-off%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M15%209.34V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H7.89%22%20%2F%3E%20%3Cpath%20d%3D%22m2%202%2020%2020%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209v1.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h11%22%20%2F%3E%20%3C%2Fsvg%3E";var Xt=Object.defineProperty,ue=R((e,t)=>Xt(e,"name",{value:t,configurable:!0}),"s");const Jt=ue(({onMove:e,onUnpin:t,pinned:r})=>{const i=l(b(null),"cardRef"),o=l(b(null),"headerRef"),a=l(b({x:r.initialX,y:r.initialY}),"posRef"),c=l(b(null),"dragRef"),p=l(ee(()=>me(),[]),"helpers"),f=l(b(p),"helpersRef"),L=l(b(e),"onMoveRef"),y=l(b(r.id),"pinnedIdRef");L.current=e,y.current=r.id,V(()=>{const D="transform 110ms cubic-bezier(0.25,0.46,0.45,0.94)",M=ue(j=>{if(!c.current||!i.current)return;const N=globalThis.window?.innerWidth??9999,G=globalThis.window?.innerHeight??9999,{cardH:w,cardW:O}=c.current,U=Math.min(80,O),Y=Math.min(36,w);let C=c.current.origX+(j.clientX-c.current.startX),x=c.current.origY+(j.clientY-c.current.startY);C=Math.max(U-O,Math.min(N-U,C)),x=Math.max(Y-w,Math.min(G-Y,x));const H=[0,N-O,U-O,N-U],de=[0,G-w,Y-w,G-Y];let Q=C,q=x;for(const g of H)if(Math.abs(C-g)<28){Q=g;break}for(const g of de)if(Math.abs(x-g)<28){q=g;break}i.current.style.transition=Q!==C||q!==x?D:"",i.current.style.transform=`translate(${Q}px, ${q}px)`,a.current={x:Q,y:q}},"handleMove"),F=ue(()=>{c.current&&(c.current=null,i.current&&(i.current.style.transition=""),o.current&&(o.current.style.cursor=""),L.current(y.current,a.current.x,a.current.y))},"handleUp");return document.addEventListener("mousemove",M),document.addEventListener("mouseup",F),()=>{document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",F)}},[]);const B=r.app.tooltip;if(!B)return null;const P=ue(D=>{D.button===0&&(c.current={cardH:i.current?.offsetHeight??200,cardW:i.current?.offsetWidth??300,origX:a.current.x,origY:a.current.y,startX:D.clientX,startY:D.clientY},o.current&&(o.current.style.cursor="grabbing"),D.preventDefault())},"handleDragStart");return m("div",{"aria-label":`${r.app.name} pinned tooltip`,class:h("fixed z-[2147483647] pointer-events-auto antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-primary/40 shadow-2xl"),ref:i,style:{left:0,top:0,transform:`translate(${a.current.x}px, ${a.current.y}px)`},children:[m("div",{class:h("flex items-center justify-between gap-2 px-3 py-2","border-b border-primary/20 bg-primary/4","select-none cursor-grab"),onMouseDown:P,ref:o,children:[m("div",{class:"flex items-center gap-2 min-w-0",children:[n("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),n("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-primary/70 truncate",children:r.app.name})]}),n("button",{"aria-label":`Unpin ${r.app.name}`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/50 hover:text-destructive","transition-colors duration-150"),onClick:ue(()=>t(r.id),"onClick"),onMouseDown:ue(D=>D.stopPropagation(),"onMouseDown"),title:"Unpin",type:"button",children:n(te,{size:11,src:Ot})})]}),n("div",{class:"p-3",children:n(B,{helpers:f.current})})]})},"PinnedTooltipCard");var Ut=Object.defineProperty,le=R((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"p");const Re="__v_dt__pinned_tooltips",Qt=le((e,t,r,i,o)=>{const a=t*i/100,c=r*o/100,p=i/4;switch(e){case"bottom":return a<p?"bottom-left":a>i-p?"bottom-right":"bottom-center";case"left":return c<o/2?"top-left":"bottom-left";case"right":return c<o/2?"top-right":"bottom-right";case"top":return a<p?"top-left":a>i-p?"top-right":"top-center";default:return"bottom-center"}},"computePlacement"),qt=le(({activeAppId:e,apps:t,customAppsToShow:r=3,onClearNotification:i,onRegisterApp:o,onSetNotification:a,onToggleApp:c,onUnregisterApp:p})=>{const f=l(b(null),"anchorRef"),L=l(b(null),"panelRef"),y=l(b(null),"leaveTimerRef"),{resolvedTheme:B}=Ve(),{state:P,updateState:D}=Ce(),{closePanel:M,panelVisible:F,togglePanelVisible:j}=dt(),{anchorStyle:N,bringUp:G,isDragging:w,isHidden:O,isVertical:U,onPointerDown:Y,panelStyle:C}=ft(L),[x,H]=l($(null),"hoveredApp"),[de,Q]=l($(null),"hoveredAppRect"),q=l(b(new Map),"pinPositionsRef"),g=ce(v=>{try{const S=v.map(k=>{const Z=q.current.get(k.id);return{appId:k.app.id,x:Z?.x??k.initialX,y:Z?.y??k.initialY}});localStorage.setItem(Re,JSON.stringify(S))}catch{}},[]),[T,E]=l($([]),"pinnedTooltips"),s=l(b([]),"pinnedTooltipsRef");s.current=T;const d=ce((v,S,k)=>{const Z=`${v.id}-${Date.now()}`;E(se=>{const be=[...se,{app:v,id:Z,initialX:S,initialY:k}];return g(be),be})},[g]),u=ce(v=>{E(S=>{const k=S.filter(Z=>Z.id!==v);return q.current.delete(v),g(k),k})},[g]),A=ce((v,S,k)=>{q.current.set(v,{x:S,y:k}),g(s.current)},[g]),z=l(b(null),"storedPinsRef"),X=l(b(new Set),"restoredAppIdsRef");V(()=>{if(t.length===0)return;if(z.current===null)try{const k=localStorage.getItem(Re);z.current=k?JSON.parse(k):[]}catch{z.current=[]}const v=z.current;if(v.length===0)return;const S=[];for(const k of v){if(X.current.has(k.appId))continue;const Z=t.find(se=>se.id===k.appId&&se.tooltip);Z&&(X.current.add(k.appId),S.push({app:Z,id:`${Z.id}-restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,initialX:k.x,initialY:k.y}))}S.length>0&&E(k=>[...k,...S])},[t]),V(()=>()=>{y.current!==null&&clearTimeout(y.current)},[]);const K=ce((v,S)=>{y.current!==null&&(clearTimeout(y.current),y.current=null),v?(H(v),Q(S??null)):y.current=setTimeout(()=>{H(null),Q(null),y.current=null},180)},[]),I=l(b(t),"appsRef");I.current=t;const ae=l(b(F),"panelVisibleRef");ae.current=F;const ne=l(b(e),"activeAppIdRef");ne.current=e;const re=l(b(c),"onToggleAppRef");re.current=c;const oe=l(ee(()=>{const v=globalThis.window?.innerWidth??1920,S=globalThis.window?.innerHeight??1080;return Qt(P.position,P.left,P.top,v,S)},[P.left,P.position,P.top]),"placement"),J=ce(async v=>{const S=ae.current,k=ne.current,Z=I.current.find(se=>se.id===v);if(Z?.onClick??Z?.onDeactivate){await re.current(v);return}if(v===k&&S){await re.current(v),D({open:!1,viewMode:"default"});return}v!==k&&await re.current(v),S||D({open:!0})},[D]),pe={activeAppId:e,apps:t,clearNotification:i,hoveredApp:x,hoveredAppRect:de,isDragging:w,isVisible:F,pinnedTooltips:T,pinTooltip:d,placement:oe,registerApp:o,setDragging:le(()=>{},"setDragging"),setHoveredApp:K,setNotification:a,setPlacement:le(()=>{},"setPlacement"),setVisible:le(v=>D({open:v}),"setVisible"),toggleApp:J,unpinTooltip:u,unregisterApp:p};return!P.preferShowFloatingPanel&&!F?null:n($e.Provider,{value:pe,children:m("div",{class:h(B==="dark"&&"dark"),style:{display:"contents"},children:[m("div",{class:h("fixed z-[2147483647]","pointer-events-auto","origin-center","transition-[left_0.3s_cubic-bezier(0.4,0,0.2,1),top_0.3s_cubic-bezier(0.4,0,0.2,1)]","data-[dragging]:transition-none!","group","toolbar-font text-[13px]! leading-[1.6]! antialiased box-border [&_*]:box-border print:hidden",P.reduceMotion&&"transition-none! animate-none! [&_*]:transition-none! [&_*]:animate-none!"),"data-dragging":w?"":void 0,"data-placement":oe,id:"__v_dt__root",onMouseMove:G,ref:f,style:N,children:[m("div",{class:h("group/panel","absolute left-0 top-0","flex flex-row justify-start items-center","gap-1 p-1","box-border","overflow-hidden","rounded-none","text-foreground select-none",w?"cursor-grabbing":"cursor-grab","bg-background border-0",U?"shadow-pill-vertical!":"shadow-pill",O?"max-w-12!":"","transition-pill"),"data-vertical":U||void 0,onPointerDown:le(v=>{P.isFirstVisit&&D({isFirstVisit:!1}),Y(v)},"onPointerDown"),ref:L,style:C,children:[n("button",{"aria-label":"Toggle devtools panel",class:h("size-8 flex justify-center items-center shrink-0","cursor-pointer p-0 m-0 border-0","bg-transparent","transition-all duration-150","hover:bg-primary/8 active:scale-[0.95]","group-data-[vertical]/panel:rotate-[-90deg]",F?"opacity-100":"opacity-60"),onClick:le(v=>{v.stopPropagation(),P.isFirstVisit&&D({isFirstVisit:!1}),j()},"onClick"),title:"Toggle devtools panel",type:"button",children:n("img",{alt:"Visulima",class:"size-6",src:Nt})}),n("div",{"aria-hidden":"true",class:h("w-px h-5 bg-primary/20 shrink-0",O&&"hidden")}),n("div",{class:h("px-0.5",O&&"hidden"),children:n(_t,{customAppsToShow:r})})]}),P.isFirstVisit&&n(Yt,{onDismiss:le(()=>D({isFirstVisit:!1}),"onDismiss"),position:P.position})]}),n(zt,{activeAppId:e,apps:t,onClose:M,onToggleApp:c,panelVisible:F,position:P.position}),n(Wt,{position:P.position}),T.map(v=>n(Jt,{onMove:A,onUnpin:u,pinned:v},v.id))]})})},"ToolbarContainer");var Kt=Object.defineProperty,Be=R((e,t)=>Kt(e,"name",{value:t,configurable:!0}),"r");const er=Be((e,t)=>{const r=_e(),i=Xe();if(!i)throw new Error("Global hook not initialized");return{clearNotification(o){e.clearNotification(o)},async closeApp(){const o=e.getActiveApp();o&&await e.toggleApp(o.id)},getActiveApp(){return e.getActiveApp()?.id||null},getApps(){return e.getApps()},getSettings(){return Ne()},hide(){t.hide()},hook:i,notify(o,a){e.setNotification(o,!0,a)},async openApp(o){await e.toggleApp(o)},registerApp(o){e.registerApp(o)},rpc:new Proxy({},{get(o,a){return(...c)=>r.callServer(a,...c)}}),setAppActive(o,a){e.setAppActive(o,a)},show(){t.show()},toggle(){t.toggle()},unregisterApp(o){e.unregisterApp(o)},updateSettings(o){Oe(o)},version:"0.0.0"}},"createGlobalAPI"),tr=Be(e=>{globalThis.window!==void 0&&(globalThis.__VISULIMA_DEVTOOLS__=e)},"setupGlobalAPI");var rr=Object.defineProperty,W=R((e,t)=>rr(e,"name",{value:t,configurable:!0}),"i");class je extends HTMLElement{static{R(this,"DevToolbar")}static{W(this,"DevToolbar")}appManager;hasBeenInitialized=!1;customAppsToShow=3;renderRoot=null;constructor(){super(),this.attachShadow({mode:"open"}),this.appManager=new nt}connectedCallback(){this.hasBeenInitialized&&this.shadowRoot&&!this.renderRoot&&this.render()}disconnectedCallback(){this.renderRoot&&(ke(null,this.renderRoot),this.renderRoot=null)}init(){if(this.hasBeenInitialized)return;this.hasBeenInitialized=!0,je.injectFont();const t=Je(a=>{this.appManager.registerApp(a),this.render()},(a,c)=>{Ue().addEvent(a,c)}),r=er({clearNotification:W(a=>{this.appManager.clearNotification(a),this.render()},"clearNotification"),getActiveApp:W(()=>this.appManager.getActiveApp(),"getActiveApp"),getApps:W(()=>this.appManager.getAllApps(),"getApps"),registerApp:W(a=>{this.appManager.registerApp(a),this.render()},"registerApp"),setAppActive:W((a,c)=>{this.appManager.setAppActive(a,c),this.render()},"setAppActive"),setNotification:W((a,c,p)=>{this.appManager.setNotification(a,c,p),this.render()},"setNotification"),toggleApp:W(a=>this.appManager.toggleApp(a),"toggleApp"),unregisterApp:W(a=>{this.appManager.unregisterApp(a),this.render()},"unregisterApp")},{hide:W(()=>this.setToolbarVisible(!1),"hide"),show:W(()=>this.setToolbarVisible(!0),"show"),toggle:W(()=>{const a=this.isHidden();this.setToolbarVisible(!a)},"toggle")});tr(r),t.emit("devtools:init");const i=Ne(),o=this.appManager.getAllApps().find(a=>a.defaultOpen);o&&!this.appManager.getActiveApp()&&this.appManager.openApp(o.id).catch(a=>{console.error(`[dev-toolbar] Failed to auto-open defaultOpen app ${o.id}:`,a)}),this.render(),this.setupEventListeners(),i.defaultVisible&&this.setToolbarVisible(!0)}isHidden(){return this.shadowRoot.querySelector("#__v_dt__root")?.hasAttribute("data-hidden")??!0}setToolbarVisible(t){const r=this.shadowRoot.querySelector("#__v_dt__root");r&&(t?delete r.dataset.hidden:r.dataset.hidden=""),this.render()}registerApp(t,r=!1){this.appManager.registerApp(t,r),this.render()}getAppManager(){return this.appManager}static injectFont(){const t="__v_dt__font";if(document.getElementById(t))return;const r=document.createElement("link");r.rel="preconnect",r.href="https://fonts.googleapis.com",document.head.append(r);const i=document.createElement("link");i.rel="preconnect",i.href="https://fonts.gstatic.com",i.crossOrigin="anonymous",document.head.append(i);const o=document.createElement("link");o.id=t,o.rel="stylesheet",o.href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap",document.head.append(o)}render(){const t=this.appManager.getAllApps(),r=this.shadowRoot;he&&(r.adoptedStyleSheets=[he]);let i=r.querySelector("style");i||(i=document.createElement("style"),i.textContent=`
4
3
  :host {
5
4
  all: initial;
6
5
  /* Cover the full viewport so the host establishes a stacking context
@@ -19,4 +18,4 @@ var Wr=Object.defineProperty;var S=(r,e)=>Wr(r,"name",{value:e,configurable:!0})
19
18
  display: none;
20
19
  }
21
20
  }
22
- `,t.appendChild(i)),this.renderRoot||(this.renderRoot=document.createElement("div"),t.appendChild(this.renderRoot));const o=this.appManager.getActiveApp()?.id||null;Ar(a(tt,{activeAppId:o,apps:e,customAppsToShow:this.customAppsToShow,onClearNotification:H(n=>{this.appManager.clearNotification(n),this.render()},"onClearNotification"),onRegisterApp:H(n=>{this.render()},"onRegisterApp"),onSetNotification:H((n,c,g)=>{this.appManager.setNotification(n,c,g),this.render()},"onSetNotification"),onToggleApp:H(async n=>{await this.appManager.toggleApp(n),this.render()},"onToggleApp"),onUnregisterApp:H(n=>{this.appManager.unregisterApp(n),this.render()},"onUnregisterApp")}),this.renderRoot)}setupEventListeners(){document.addEventListener("keyup",e=>{if(e.key!=="Escape"||this.isHidden())return;const t=this.appManager.getActiveApp();t?this.appManager.toggleApp(t.id).then(()=>{this.render()}):this.setToolbarVisible(!1)})}}if(globalThis.window!==void 0&&(customElements.get("dev-toolbar")||customElements.define("dev-toolbar",Sr),!customElements.get("dev-toolbar-app-canvas"))){class r extends HTMLElement{static{S(this,"p")}static{H(this,"DevToolbarAppCanvas")}constructor(){super(),this.attachShadow({mode:"open"})}}customElements.define("dev-toolbar-app-canvas",r)}export{Sr as DevToolbar,gr as sharedToolbarStylesheet};
21
+ `,r.append(i)),this.renderRoot||(this.renderRoot=document.createElement("div"),r.append(this.renderRoot));const o=this.appManager.getActiveApp()?.id||null;ke(n(qt,{activeAppId:o,apps:t,customAppsToShow:this.customAppsToShow,onClearNotification:W(a=>{this.appManager.clearNotification(a),this.render()},"onClearNotification"),onRegisterApp:W(a=>{this.render()},"onRegisterApp"),onSetNotification:W((a,c,p)=>{this.appManager.setNotification(a,c,p),this.render()},"onSetNotification"),onToggleApp:W(async a=>{await this.appManager.toggleApp(a),this.render()},"onToggleApp"),onUnregisterApp:W(a=>{this.appManager.unregisterApp(a),this.render()},"onUnregisterApp")}),this.renderRoot)}setupEventListeners(){document.addEventListener("keyup",t=>{if(t.key!=="Escape"||this.isHidden())return;const r=this.appManager.getActiveApp();r?this.appManager.toggleApp(r.id).then(()=>{this.render()}):this.setToolbarVisible(!1)})}}if(globalThis.window!==void 0&&(customElements.get("dev-toolbar")||customElements.define("dev-toolbar",je),!customElements.get("dev-toolbar-app-canvas"))){class e extends HTMLElement{static{R(this,"p")}static{W(this,"DevToolbarAppCanvas")}constructor(){super(),this.attachShadow({mode:"open"})}}customElements.define("dev-toolbar-app-canvas",e)}export{je as DevToolbar,he as sharedToolbarStylesheet};
@@ -73,11 +73,10 @@ export interface DevToolbarApp {
73
73
  */
74
74
  beforeTogglingOff?: (canvas: ShadowRoot) => boolean | Promise<boolean>;
75
75
  /**
76
- * Called when the app is unregistered / removed from the toolbar.
77
- * Use this for final cleanup (event listeners, timers, subscriptions).
78
- * @param canvas Shadow root of the app
76
+ * Preact component for rendering (alternative to init)
77
+ * If provided, this will be used instead of init
79
78
  */
80
- destroy?: (canvas: ShadowRoot) => Promise<void> | void;
79
+ component?: ComponentType<AppComponentProps>;
81
80
  /**
82
81
  * When true, this app is automatically activated when the toolbar opens for
83
82
  * the first time (or when no other app has been activated yet).
@@ -86,17 +85,11 @@ export interface DevToolbarApp {
86
85
  */
87
86
  defaultOpen?: boolean;
88
87
  /**
89
- * Preact component for rendering (alternative to init)
90
- * If provided, this will be used instead of init
91
- */
92
- component?: ComponentType<AppComponentProps>;
93
- /**
94
- * Optional hover tooltip component — renders a compact live preview when the
95
- * user hovers over this app's button in the toolbar pill.
96
- * The component should be small (≤280px wide) and self-contained.
97
- * If omitted, hovering shows the native title tooltip only.
88
+ * Called when the app is unregistered / removed from the toolbar.
89
+ * Use this for final cleanup (event listeners, timers, subscriptions).
90
+ * @param canvas Shadow root of the app
98
91
  */
99
- tooltip?: ComponentType<AppTooltipProps>;
92
+ destroy?: (canvas: ShadowRoot) => Promise<void> | void;
100
93
  /**
101
94
  * Icon HTML string (SVG)
102
95
  */
@@ -116,6 +109,25 @@ export interface DevToolbarApp {
116
109
  * Display name of the app
117
110
  */
118
111
  name: string;
112
+ /**
113
+ * Action button callback — called when the button is activated (active: false → true).
114
+ * When present, clicking the toolbar button will NOT open a panel.
115
+ * Instead the button toggles its active state and calls onClick (activate)
116
+ * or onDeactivate (deactivate).
117
+ */
118
+ onClick?: () => Promise<void> | void;
119
+ /**
120
+ * Called when the action button is deactivated (active: true → false).
121
+ * Only meaningful when onClick is also provided.
122
+ */
123
+ onDeactivate?: () => Promise<void> | void;
124
+ /**
125
+ * Optional hover tooltip component — renders a compact live preview when the
126
+ * user hovers over this app's button in the toolbar pill.
127
+ * The component should be small (≤280px wide) and self-contained.
128
+ * If omitted, hovering shows the native title tooltip only.
129
+ */
130
+ tooltip?: ComponentType<AppTooltipProps>;
119
131
  /**
120
132
  * App rendering mode
121
133
  */
@@ -1,7 +1,7 @@
1
1
  import type { DevToolbarApp } from "./app.d.ts";
2
- import type { ToolbarSettings } from "./toolbar.d.ts";
3
2
  import type { DevToolbarHook } from "./hooks.d.ts";
4
3
  import type { ServerFunctions } from "./rpc.d.ts";
4
+ import type { ToolbarSettings } from "./toolbar.d.ts";
5
5
  /**
6
6
  * Global DevTools API interface
7
7
  * Exposed as window.__VISULIMA_DEVTOOLS__
@@ -59,6 +59,13 @@ export interface VisulimaDevTools {
59
59
  * RPC client for calling server functions
60
60
  */
61
61
  rpc: ServerFunctions;
62
+ /**
63
+ * Directly set the active state of an action button without invoking callbacks.
64
+ * Useful for deactivating a button from async work running outside the toolbar.
65
+ * @param appId App ID
66
+ * @param active New active state
67
+ */
68
+ setAppActive: (appId: string, active: boolean) => void;
62
69
  /**
63
70
  * Show the toolbar
64
71
  */
@@ -1,5 +1,6 @@
1
1
  import type { ViteDevServer } from "vite";
2
2
  import type { SerializableModuleNode } from "../rpc/functions/module-graph.d.ts";
3
+ import type { TailwindConfigResult } from "../rpc/functions/tailwind-config.d.ts";
3
4
  /**
4
5
  * Server-side RPC functions
5
6
  * These can be called from the client
@@ -13,6 +14,10 @@ export interface ServerFunctions {
13
14
  * Get module dependency graph
14
15
  */
15
16
  getModuleGraph: () => Promise<SerializableModuleNode[]>;
17
+ /**
18
+ * Get full Tailwind CSS theme (default + user overrides)
19
+ */
20
+ getTailwindConfig: () => Promise<TailwindConfigResult>;
16
21
  /**
17
22
  * Get Vite configuration
18
23
  */