@visulima/dev-toolbar 1.0.0-alpha.2 → 1.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/README.md +59 -42
- package/dist/apps/a11y/a11y-store.d.ts +12 -16
- package/dist/apps/a11y/a11y-tooltip.d.ts +1 -1
- package/dist/apps/a11y/index.js +2 -21
- package/dist/apps/inspector/index.d.ts +3 -0
- package/dist/apps/inspector/index.js +1 -0
- package/dist/apps/inspector/inspector-app.d.ts +12 -0
- package/dist/apps/module-graph/index.js +1 -20
- package/dist/apps/more/index.js +2 -19
- package/dist/apps/performance/index.js +1 -17
- package/dist/apps/seo/index.js +1 -17
- package/dist/apps/settings/index.js +1 -17
- package/dist/apps/settings/settings-app.d.ts +0 -1
- package/dist/apps/tailwind/index.d.ts +3 -0
- package/dist/apps/tailwind/index.js +7 -0
- package/dist/apps/tailwind/tailwind-app.d.ts +5 -0
- package/dist/apps/timeline/index.js +1 -18
- package/dist/apps/vite-config/index.js +1 -16
- package/dist/client/overlay.js +1 -1
- package/dist/hooks/create-hook.d.ts +7 -5
- package/dist/hooks/events.d.ts +4 -2
- package/dist/hooks/global-hook.d.ts +6 -6
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -1
- package/dist/packem_chunks/inject-source.js +1 -0
- package/dist/packem_shared/Alert-H-x1JuZ0.js +1 -0
- package/dist/packem_shared/Badge-C30mDKKG.js +1 -0
- package/dist/packem_shared/Button-DODNCTPZ.js +1 -0
- package/dist/packem_shared/Card-DdI7Wn3t.js +1 -0
- package/dist/packem_shared/Icon-DWFLZkwW.js +1 -0
- package/dist/packem_shared/Input-GfbOwAkK.js +1 -0
- package/dist/packem_shared/Label-Bzi47aUf.js +1 -0
- package/dist/packem_shared/Popover-CLt7YhUF.js +1 -0
- package/dist/packem_shared/Progress-vGfFpxRn.js +1 -0
- package/dist/packem_shared/Separator-DQGeJPQg.js +1 -0
- package/dist/packem_shared/Skeleton-BYXau6jM.js +1 -0
- package/dist/packem_shared/Switch-BeC78S_T.js +1 -0
- package/dist/packem_shared/Tabs-CXERaeAp.js +1 -0
- package/dist/packem_shared/Textarea-DvbSX13V.js +1 -0
- package/dist/packem_shared/Tooltip-tlBN-NdK.js +1 -0
- package/dist/packem_shared/cn-DWLJYh3h.js +1 -0
- package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +1 -0
- package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +1 -0
- package/dist/packem_shared/createServerRPCContext-CEm1Ymkn.js +1 -0
- package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +1 -0
- package/dist/packem_shared/{setupGlobalHook-CFuxsCyl.js → setupGlobalHook-CCf9Logv.js} +1 -1
- package/dist/packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js +2 -0
- package/dist/packem_shared/store-DaUtLjf3.js +1 -0
- package/dist/packem_shared/use-theme-BOw3dPpY.js +1 -0
- package/dist/performance/monitor.d.ts +27 -26
- package/dist/rpc/client.d.ts +6 -4
- package/dist/rpc/functions/module-graph.d.ts +2 -2
- package/dist/rpc/functions/open-in-editor.d.ts +13 -6
- package/dist/rpc/functions/tailwind-config.d.ts +15 -0
- package/dist/rpc/functions/vite-config.d.ts +6 -4
- package/dist/rpc/server.d.ts +11 -5
- package/dist/timeline/capture.d.ts +8 -0
- package/dist/timeline/index.d.ts +3 -1
- package/dist/timeline/store.d.ts +12 -22
- package/dist/toolbar/app-manager.d.ts +49 -40
- package/dist/toolbar/components/app-button.d.ts +2 -2
- package/dist/toolbar/components/app-canvas.d.ts +1 -2
- package/dist/toolbar/components/app-tooltip-overlay.d.ts +0 -1
- package/dist/toolbar/components/first-visit-hint.d.ts +3 -3
- package/dist/toolbar/components/pinned-tooltip-card.d.ts +0 -1
- package/dist/toolbar/components/toolbar-bar.d.ts +0 -1
- package/dist/toolbar/components/toolbar-container.d.ts +1 -1
- package/dist/toolbar/components/vite-overlay-button.d.ts +2 -3
- package/dist/toolbar/context/index.d.ts +1 -1
- package/dist/toolbar/context/toolbar-context.d.ts +43 -42
- package/dist/toolbar/global-api.d.ts +4 -3
- package/dist/toolbar/helpers.d.ts +5 -3
- package/dist/toolbar/hooks/index.d.ts +4 -4
- package/dist/toolbar/hooks/use-apps.d.ts +5 -3
- package/dist/toolbar/hooks/use-frame-state.d.ts +22 -16
- package/dist/toolbar/hooks/use-panel-visible.d.ts +9 -7
- package/dist/toolbar/hooks/use-position.d.ts +7 -5
- package/dist/toolbar/hooks/use-theme.d.ts +6 -4
- package/dist/toolbar/hooks/use-toolbar.d.ts +4 -2
- package/dist/toolbar/index.d.ts +9 -16
- package/dist/toolbar/index.js +3 -4
- package/dist/toolbar/settings.d.ts +7 -7
- package/dist/toolbar/stylesheet.d.ts +3 -1
- package/dist/toolbar/utils/index.d.ts +3 -3
- package/dist/types/app.d.ts +26 -14
- package/dist/types/global-api.d.ts +27 -31
- package/dist/types/hooks.d.ts +32 -34
- package/dist/types/messaging.d.ts +2 -2
- package/dist/types/rpc.d.ts +8 -6
- package/dist/types/timeline.d.ts +3 -3
- package/dist/types/toolbar.d.ts +1 -1
- package/dist/ui/components/alert.d.ts +20 -0
- package/dist/ui/components/badge.d.ts +10 -0
- package/dist/ui/components/button.d.ts +12 -0
- package/dist/ui/components/card.d.ts +17 -0
- package/dist/ui/components/icon.d.ts +5 -6
- package/dist/ui/components/input.d.ts +8 -0
- package/dist/ui/components/label.d.ts +8 -0
- package/dist/ui/components/popover.d.ts +27 -0
- package/dist/ui/components/progress.d.ts +8 -0
- package/dist/ui/components/separator.d.ts +9 -0
- package/dist/ui/components/skeleton.d.ts +7 -0
- package/dist/ui/components/switch.d.ts +12 -0
- package/dist/ui/components/tabs.d.ts +29 -0
- package/dist/ui/components/textarea.d.ts +8 -0
- package/dist/ui/components/tooltip.d.ts +19 -0
- package/dist/ui/index.d.ts +17 -0
- package/dist/ui/index.js +1 -0
- package/dist/utils/cn.d.ts +3 -3
- package/dist/vite/inject-source.d.ts +24 -0
- package/dist/vite/matcher.d.ts +6 -0
- package/dist/vite-plugin.d.ts +43 -5
- package/dist/vite-plugin.js +2 -2
- package/package.json +23 -5
- package/dist/packem_shared/TimelineStore-BgBrirKd.js +0 -1
- package/dist/packem_shared/cn-BEsR6GkP.js +0 -1
- package/dist/packem_shared/createClientRPCContext-DzKQpKTk.js +0 -1
- package/dist/packem_shared/createDevToolbarHook-DGNxqk8N.js +0 -1
- package/dist/packem_shared/createServerRPCContext-BVSesPXu.js +0 -1
- package/dist/packem_shared/icon-BUQ92HaT.js +0 -1
- package/dist/packem_shared/store-BxE0w51s.js +0 -1
- package/dist/rpc/index.d.ts +0 -8
package/dist/toolbar/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { DevToolbarApp } from "../types/index.d.ts";
|
|
2
2
|
import { AppManager } from "./app-manager.d.ts";
|
|
3
|
-
import { sharedToolbarStylesheet } from "./stylesheet.d.ts";
|
|
4
3
|
/**
|
|
5
|
-
* Dev Toolbar Web Component
|
|
4
|
+
* Dev Toolbar Web Component.
|
|
6
5
|
*/
|
|
7
6
|
export declare class DevToolbar extends HTMLElement {
|
|
8
7
|
private appManager;
|
|
@@ -11,13 +10,13 @@ export declare class DevToolbar extends HTMLElement {
|
|
|
11
10
|
private renderRoot;
|
|
12
11
|
constructor();
|
|
13
12
|
/**
|
|
14
|
-
* Called when element is inserted into the DOM
|
|
15
|
-
* According to Preact docs, rendering should happen here or after connection
|
|
13
|
+
* Called when element is inserted into the DOM.
|
|
14
|
+
* According to Preact docs, rendering should happen here or after connection.
|
|
16
15
|
*/
|
|
17
16
|
connectedCallback(): void;
|
|
18
17
|
/**
|
|
19
|
-
* Called when element is removed from the DOM
|
|
20
|
-
*
|
|
18
|
+
* Called when element is removed from the DOM.
|
|
19
|
+
* Cleans up the Preact component to prevent memory leaks.
|
|
21
20
|
*/
|
|
22
21
|
disconnectedCallback(): void;
|
|
23
22
|
/**
|
|
@@ -33,7 +32,7 @@ export declare class DevToolbar extends HTMLElement {
|
|
|
33
32
|
*/
|
|
34
33
|
setToolbarVisible(visible: boolean): void;
|
|
35
34
|
/**
|
|
36
|
-
*
|
|
35
|
+
* Adds an app to the toolbar and triggers a re-render.
|
|
37
36
|
*/
|
|
38
37
|
registerApp(app: DevToolbarApp, builtIn?: boolean): void;
|
|
39
38
|
/**
|
|
@@ -41,18 +40,12 @@ export declare class DevToolbar extends HTMLElement {
|
|
|
41
40
|
*/
|
|
42
41
|
getAppManager(): AppManager;
|
|
43
42
|
/**
|
|
44
|
-
*
|
|
45
|
-
* @font-face declared in the document is part of the global font registry and
|
|
46
|
-
* is accessible from within shadow DOM roots — no duplication needed.
|
|
47
|
-
*/
|
|
48
|
-
private static injectFont;
|
|
49
|
-
/**
|
|
50
|
-
* Render the toolbar UI using Preact
|
|
43
|
+
* Renders the toolbar UI using Preact.
|
|
51
44
|
*/
|
|
52
45
|
private render;
|
|
53
46
|
/**
|
|
54
|
-
*
|
|
47
|
+
* Attaches global keyboard shortcuts and other DOM event listeners.
|
|
55
48
|
*/
|
|
56
49
|
private setupEventListeners;
|
|
57
50
|
}
|
|
58
|
-
export { sharedToolbarStylesheet };
|
|
51
|
+
export { sharedToolbarStylesheet } from "./stylesheet.d.ts";
|
package/dist/toolbar/index.js
CHANGED
|
@@ -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 Xe=Object.defineProperty;var N=(e,t)=>Xe(e,"name",{value:t,configurable:!0});import{createContext as Fe,render as Pe}from"preact";import{createClientRPCContext as $e}from"../packem_shared/createClientRPCContext-DgRxrllw.js";import{updateSettings as Je,loadSettings as Ve}from"../packem_shared/loadSettings-hvjR4fcS.js";import{getGlobalHook as Ue,setupGlobalHook as Qe}from"../packem_shared/setupGlobalHook-CCf9Logv.js";import ue from"../packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js";import{jsx as i,jsxs as g,Fragment as ze}from"preact/jsx-runtime";import{m as qe}from"../packem_shared/store-DaUtLjf3.js";import{addHookName as l}from"preact/devtools";import{useContext as Ke,useEffect as L,useMemo as re,useState as E,useRef as m,useCallback as pe,useLayoutEffect as et}from"preact/hooks";import u from"../packem_shared/cn-DWLJYh3h.js";import Le from"lucide-static/icons/chevron-right.svg?data-uri&encoding=css";import tt from"lucide-static/icons/layers.svg?data-uri&encoding=css";import rt from"lucide-static/icons/maximize.svg?data-uri&encoding=css";import it from"lucide-static/icons/maximize-2.svg?data-uri&encoding=css";import nt from"lucide-static/icons/minimize.svg?data-uri&encoding=css";import ot from"lucide-static/icons/minimize-2.svg?data-uri&encoding=css";import at from"lucide-static/icons/picture-in-picture-2.svg?data-uri&encoding=css";import Ee from"lucide-static/icons/x.svg?data-uri&encoding=css";import te from"../packem_shared/Icon-DWFLZkwW.js";import{h as Te,_ as He}from"../packem_shared/use-theme-BOw3dPpY.js";import st from"lucide-static/icons/pin.svg?data-uri&encoding=css";import lt from"lucide-static/icons/pin-off.svg?data-uri&encoding=css";import ct from"lucide-static/icons/more-horizontal.svg?data-uri&encoding=css";import pt from"lucide-static/icons/alert-triangle.svg?data-uri&encoding=css";var dt=Object.defineProperty,ut=N((e,t)=>dt(e,"name",{value:t,configurable:!0}),"t$4");const be=ut(()=>{const e=$e();return{rpc:new Proxy({},{get(t,r){return(...o)=>e.callServer(r,...o)}})}},"createServerHelpers");var ht=Object.defineProperty,gt=N((e,t)=>ht(e,"name",{value:t,configurable:!0}),"n$3");let ft=class{static{N(this,"p")}static{gt(this,"AppManager")}apps=new Map;activeAppId=void 0;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=void 0));const o=new EventTarget,a={...t,active:!1,builtIn:r,eventTarget:o,notification:{state:!1},status:"ready"};this.apps.set(t.id,a)}async unregisterApp(t){const r=this.apps.get(t);if(r?.destroy&&this.initializedApps.has(t)){const o=this.appCanvases.get(t);if(o)try{await r.destroy(o.shadowRoot)}catch(a){console.error(`[dev-toolbar] destroy() failed for app ${t}:`,a)}}this.apps.delete(t),this.initializedApps.delete(t),this.appCanvases.delete(t),this.activeAppId===t&&(this.activeAppId=void 0)}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 o=r.active;return r.active=!o,!o&&r.onClick?await r.onClick():o&&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 o=this.apps.get(t);o&&(o.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 o=this.getAppCanvas(t);if(o){const a=be(),n=r.init(o.shadowRoot,r.eventTarget,a);n&&typeof n.then=="function"&&await n,this.markAppInitialized(t),r.status="ready"}else r.status="pending"}catch(o){return console.error(`[dev-toolbar] Failed to init app ${t}:`,o),r.status="error",r.active=!1,this.activeAppId=void 0,!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 o=this.getAppCanvas(t);if(o)try{const a=r.beforeTogglingOff(o.shadowRoot);if(!(a&&typeof a.then=="function"?await a:a))return!1}catch(a){console.error(`[dev-toolbar] beforeTogglingOff() threw for app ${t}:`,a)}}return r.active=!1,this.activeAppId===t&&(this.activeAppId=void 0),!0}setNotification(t,r,o){const a=this.apps.get(t);a&&(a.notification={level:o,state:r})}clearNotification(t){const r=this.apps.get(t);r&&(r.notification={state:!1})}getAppCanvas(t){return this.appCanvases.get(t)}setAppCanvas(t,r){this.appCanvases.set(t,r)}};var mt=Object.defineProperty,bt=N((e,t)=>mt(e,"name",{value:t,configurable:!0}),"t$3");const We=Fe(void 0),Re=bt(()=>{const e=Ke(We);if(!e)throw new Error("useToolbarContext must be used within ToolbarContext provider");return e},"useToolbarContext");var vt=Object.defineProperty,yt=N((e,t)=>vt(e,"name",{value:t,configurable:!0}),"t$2");const je=yt(()=>{const e=Re();return{activeAppId:e.activeAppId,apps:e.apps,clearNotification:e.clearNotification,registerApp:e.registerApp,setNotification:e.setNotification,toggleApp:e.toggleApp,unregisterApp:e.unregisterApp}},"useApps");var xt=Object.defineProperty,fe=N((e,t)=>xt(e,"name",{value:t,configurable:!0}),"s");const wt=fe((e,t)=>{const r=t.split("+"),o=r.at(-1)??"",a=r.includes("Alt"),n=r.includes("Shift"),c=r.includes("Control")||r.includes("Ctrl"),d=r.includes("Meta")||r.includes("Cmd");return(e.key===o||e.code===`Key${o.toUpperCase()}`)&&e.altKey===a&&e.shiftKey===n&&e.ctrlKey===c&&e.metaKey===d},"matchesBinding"),It=fe(()=>{const{state:e,updateState:t}=Te(),r=fe((n,c)=>{const d=c??!e.open;t({open:d,...d?{}:{viewMode:"default"}})},"togglePanelVisible"),o=fe(()=>{e.open&&t({open:!1,viewMode:"default"})},"closePanel");L(()=>{const n=e.keybindings?.toggle??"Alt+Shift+D",c=fe(d=>{wt(d,n)&&r()},"handleKeyDown");return globalThis.window?.addEventListener("keydown",c),()=>{globalThis.window?.removeEventListener("keydown",c)}},[e.open,e.keybindings?.toggle]);const a=l(re(()=>e.open,[e.open]),"panelVisibleValue: boolean");return{closePanel:o,panelVisible:a,togglePanelVisible:r}},"usePanelVisible");var At=Object.defineProperty,De=N((e,t)=>At(e,"name",{value:t,configurable:!0}),"e");const ve=De((e,t,r)=>Math.min(Math.max(e,t),r),"clamp");De(()=>navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),"checkIsSafari");const ye=De(e=>typeof e=="string"?e.endsWith("px")?Number(e.slice(0,-2)):Number(e):e,"pixelToNumber");var Mt=Object.defineProperty,ee=N((e,t)=>Mt(e,"name",{value:t,configurable:!0}),"h$1");const _e=ee(e=>e<5?0:e>95?100:Math.abs(e-50)<2?50:e,"snapToPoints"),Tt=ee(()=>{if(globalThis.window===void 0)return{bottom:0,left:0,right:0,top:0};const e=getComputedStyle(document.documentElement);return{bottom:ye(e.getPropertyValue("env(safe-area-inset-bottom)")||"0"),left:ye(e.getPropertyValue("env(safe-area-inset-left)")||"0"),right:ye(e.getPropertyValue("env(safe-area-inset-right)")||"0"),top:ye(e.getPropertyValue("env(safe-area-inset-top)")||"0")}},"getSafeAreaInsets"),kt=ee(()=>{const[e,t]=l(E(()=>({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})),"size");return L(()=>{const r=ee(()=>{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"),Ct=ee(e=>{const{state:t,updateState:r}=Te(),{height:o,width:a}=kt(),[n,c]=l(E(!1),"isHovering"),[d,h]=l(E(!1),"isDragging"),[W,I]=l(E(!1),"isViteOverlayOpen"),Y=l(m({x:0,y:0}),"draggingOffsetRef"),A=l(m({x:0,y:0}),"mousePositionRef"),P=l(m(void 0),"timerRef"),S=l(m(void 0),"capturedPointerIdRef"),$=l(m(!1),"isDraggingRef"),j=l(m(a),"windowWidthRef"),V=l(m(o),"windowHeightRef"),G=l(m(r),"updateStateRef");L(()=>{j.current=a,V.current=o},[a,o]),L(()=>{G.current=r},[r]);const[y,F]=l(E(()=>({bottom:10,left:10,right:10,top:10})),"panelMargins");L(()=>{const v=Tt();F({bottom:v.bottom+10,left:v.left+10,right:v.right+10,top:v.top+10})},[]),L(()=>{const v=ee(()=>{const D=globalThis.__v_o__current;if(D?.parentNode){const s=D.shadowRoot?.querySelector("#__v_o__root");I(!!s&&!s.classList.contains("hidden"))}else I(!1)},"check"),C=setInterval(v,300);return v(),()=>clearInterval(C)},[]);const Q=pe(v=>{v.preventDefault(),v.stopPropagation(),h(!0),$.current=!0;const C=e.current;if(C){const{height:D,left:s,top:p,width:f}=C.getBoundingClientRect();Y.current={x:v.clientX-s-f/2,y:v.clientY-p-D/2};const x=v.target;try{x&&x.setPointerCapture?(x.setPointerCapture(v.pointerId),S.current=v.pointerId):C.setPointerCapture&&(C.setPointerCapture(v.pointerId),S.current=v.pointerId)}catch(z){console.warn("Failed to capture pointer:",z)}document.body.style.cursor="grabbing",document.body.style.userSelect="none"}},[e]),O=pe(()=>{c(!0),!(t.minimizePanelInactive<0)&&(P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{c(!1)},t.minimizePanelInactive||5e3))},[t.minimizePanelInactive]);L(()=>{O()},[O]),L(()=>{const v=ee(()=>{if(S.current!==void 0){try{const x=e.current;x&&S.current!==void 0&&x.releasePointerCapture(S.current)}catch{}S.current=void 0}},"releaseCapture"),C=ee(()=>{$.current&&(h(!1),$.current=!1,document.body.style.cursor="",document.body.style.userSelect="",v())},"finishDrag"),D=ee(x=>{C()},"handlePointerUp"),s=ee(x=>{C()},"handlePointerCancel"),p=ee(()=>{$.current&&(h(!1),$.current=!1,S.current=void 0,document.body.style.cursor="",document.body.style.userSelect="")},"handleLostPointerCapture"),f=ee(x=>{if(!$.current)return;x.preventDefault();const z=j.current,U=V.current,X=z/2,w=U/2,ae=x.clientX,ne=x.clientY,K=ae-Y.current.x,oe=ne-Y.current.y;A.current={x:K,y:oe};const se=Math.max(0,Math.min(ae,z)),ke=Math.max(0,Math.min(ne,U)),b=Math.atan2(ke-w,se-X),R=70,k=Math.atan2(0-w+R,0-X),B=Math.atan2(0-w+R,z-X),le=Math.atan2(U-R-w,0-X),he=Math.atan2(U-R-w,z-X);let ge;b>=k&&b<=B?ge="top":b>=B&&b<=he?ge="right":b>=he&&b<=le?ge="bottom":ge="left";const Ye=Math.max(0,Math.min(100,K/z*100)),Oe=Math.max(0,Math.min(100,oe/U*100));G.current({left:_e(Ye),position:ge,top:_e(Oe)})},"handlePointerMove");return document.addEventListener("pointermove",f,{capture:!0,passive:!1}),document.addEventListener("pointerup",D,{capture:!0}),document.addEventListener("pointercancel",s,{capture:!0}),document.addEventListener("lostpointercapture",p,{capture:!0}),()=>{document.removeEventListener("pointermove",f,{capture:!0}),document.removeEventListener("pointerup",D,{capture:!0}),document.removeEventListener("pointercancel",s,{capture:!0}),document.removeEventListener("lostpointercapture",p,{capture:!0})}},[]);const T=l(re(()=>t.position==="left"||t.position==="right",[t.position]),"isVertical"),M=l(re(()=>{if(t.minimizePanelInactive<0)return!1;if(t.minimizePanelInactive===0)return!0;const v=globalThis.window!==void 0&&("ontouchstart"in globalThis.window||(globalThis.navigator?.maxTouchPoints??0)>0);return!d&&!t.open&&!n&&!v&&t.minimizePanelInactive>0&&!W},[d,t.open,t.minimizePanelInactive,n,W]),"isHidden"),Z=l(re(()=>{const v=e.current,C=(v?.clientWidth??0)/2,D=(v?.clientHeight??0)/2,s=T?D:C,p=T?C:D,f=t.left*a/100,x=t.top*o/100;switch(t.position){case"left":return{left:y.left+s-(M?30:0),top:ve(x,p+y.top,o-p-y.bottom)};case"right":return{left:a-y.right-s+(M?15:0)-(M?0:10),top:ve(x,p+y.top,o-p-y.bottom)};case"top":return{left:ve(f,s+y.left,a-s-y.right),top:y.top+p-(M?30:0)};default:return{left:ve(f,s+y.left,a-s-y.right),top:o-y.bottom-p+(M?30:0)}}},[t.left,t.open,t.position,t.top,o,a,y,e,M,T]),"anchorPos"),ie=l(re(()=>({left:`${Z.left}px`,top:`${Z.top}px`,transition:d?"none":"left 0.3s ease, top 0.3s ease"}),[Z,d]),"anchorStyle"),q=l(re(()=>{const v=e.current,C=(v?.clientWidth??0)/2,D=(v?.clientHeight??0)/2,s=T?D:C,p=T?C:D,f={bottom:y.bottom+p,left:y.left+s,right:y.right+s,top:y.top+p},x=f.left+f.right,z=f.top+f.bottom,U=a-x,X=o-z,w={height:`min(${t.height}vh, calc(100vh - ${z}px))`,pointerEvents:d?"none":"auto",width:`min(${t.width}vw, calc(100vw - ${x}px))`,zIndex:"-1"},ae=Z,ne=Math.min(U,t.width*a/100),K=Math.min(X,t.height*o/100),oe=ae?.left??0,se=ae?.top??0;switch(t.position){case"bottom":case"top":{w.left="0",w.transform="translate(-50%, 0)",oe-f.left<ne/2?w.left=`${ne/2-oe+f.left}px`:a-oe-f.right<ne/2&&(w.left=`${a-oe-ne/2-f.right}px`);break}default:{w.top="0",w.transform="translate(0, -50%)",se-f.top<K/2?w.top=`${K/2-se+f.top}px`:o-se-f.bottom<K/2&&(w.top=`${o-se-K/2-f.bottom}px`);break}}switch(t.position){case"left":{w.left="0";break}case"right":{w.right="0";break}case"top":{w.top="0";break}default:{w.bottom="0";break}}return w},[Z,d,y,t.height,t.position,t.width,o,a,e,T]),"iframeStyle"),J=l(re(()=>{const v={transform:T?"translate(-50%, -50%) rotate(90deg)":"translate(-50%, -50%)"};return d&&(v.transition="none !important"),v},[d,T]),"panelStyle");return{anchorStyle:ie,bringUp:O,iframeStyle:q,isDragging:d,isHidden:M,isVertical:T,onPointerDown:Q,panelStyle:J}},"usePosition");var Pt=Object.defineProperty,xe=N((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"t$1");const zt=xe(({app:e})=>{const{toggleApp:t}=je(),{isVisible:r,setHoveredApp:o}=Re(),a=l(m(null),"buttonRef"),n=xe(()=>{o(void 0),t(e.id).catch(h=>{console.error(`[dev-toolbar] Failed to toggle app ${e.id}:`,h)})},"handleClick"),c=xe(()=>{!e.tooltip||r||o(e,a.current?.getBoundingClientRect())},"handleMouseEnter"),d=xe(()=>{e.tooltip&&o(void 0)},"handleMouseLeave");return i("button",{"aria-label":e.name,class:u("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:n,onMouseEnter:c,onMouseLeave:d,ref:a,title:e.tooltip?void 0:e.name,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i("div",{class:"size-6 flex items-center justify-center [&_svg]:size-4.5",dangerouslySetInnerHTML:{__html:e.icon}}),e.notification.state&&i("span",{class:u("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");var St=Object.defineProperty,_=N((e,t)=>St(e,"name",{value:t,configurable:!0}),"a");const Ze=_(({app:e})=>{const t=l(m(null),"contentRef"),r=l(m(!1),"initializedRef"),o=l(m(be()),"helpersRef");return L(()=>{if(!t.current||r.current||e.component)return;const a=t.current;if(e.init){const n=document.createElement("div");n.style.cssText="width:100%;height:100%;",a.append(n);const c=n.attachShadow({mode:"open"});ue&&(c.adoptedStyleSheets=[ue]);const d=be(),h=e.init(c,e.eventTarget,d);return h&&typeof h.then=="function"?h.then(()=>{r.current=!0}).catch(W=>{console.error(`[dev-toolbar] Failed to init app ${e.id}:`,W)}):r.current=!0,()=>{for(;a.firstChild;)a.firstChild.remove();r.current=!1}}},[e]),e.component?i(e.component,{eventTarget:e.eventTarget,helpers:o.current}):i("div",{class:"w-full h-full",ref:t})},"AppContent"),Ge=_(e=>e==="error"?"bg-destructive":e==="warning"?"bg-warning":"bg-info","getNotificationColor"),Rt=_(({apps:e,initialActiveAppId:t,onClose:r})=>{const[o,a]=l(E(t),"activeAppId"),[n,c]=l(E(!1),"sidebarCollapsed"),d=l(re(()=>e.find(h=>h.id===o),[e,o]),"activeApp");return g("div",{class:"flex flex-row w-full h-full bg-background font-mono antialiased text-foreground",children:[g("nav",{"aria-label":"DevTools apps",class:u("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)]",n?"w-12.5":"w-62.5"),children:[i("div",{class:u("flex items-center shrink-0 border-b border-border/50 h-12",n?"justify-center px-2":"px-3"),children:n?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:e.filter(h=>h.component??h.init).map(h=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":h.name,"aria-pressed":o===h.id,class:u("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",n?"justify-center px-0":"gap-2.5 px-3",o===h.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:_(()=>a(h.id),"onClick"),type:"button",children:[h.icon?i("span",{class:u("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",o===h.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:h.icon}}):i("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:h.name.slice(0,2)}),!n&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:h.name})]}),h.notification.state&&i("span",{"aria-hidden":"true",class:u("pointer-events-none absolute top-1.5 rounded-full",n?"right-1.5":"right-2.5","size-1.5",Ge(h.notification.level))}),n&&i("div",{class:u("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:i("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:h.name})})]},h.id))})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":n?"Expand sidebar":"Collapse sidebar",class:u("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(h=>!h),"onClick"),type:"button",children:i(te,{class:u("size-3.5 transition-transform duration-300",!n&&"rotate-180"),size:14,src:Le})}),d?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:d.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),d?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),i("button",{"aria-label":"Close floating window",class:u("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:i(te,{size:12,src:Ee})})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:d?i(Ze,{app:d},d.id):i("div",{class:"flex flex-col items-center justify-center h-full gap-3 p-8 select-none text-muted-foreground",children:i("p",{class:"text-[0.8rem]",children:"Select a tool from the sidebar"})})})]})]})},"PipPanel"),we=20,Ie=95,Ae=_((e,t,r)=>Math.min(Math.max(e,t),r),"clamp"),jt=_(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"),Dt=_(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"),_t=_((e,t)=>t?"opacity-100 scale-100":u("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"),Nt=_(({activeAppId:e,apps:t,onClose:r,onToggleApp:o,panelVisible:a,position:n})=>{const[c,d]=l(E(!1),"isRendered"),[h,W]=l(E(!1),"isVisible"),[I,Y]=l(E(!1),"sidebarCollapsed"),[,A]=l(E(0),"rerender"),{state:P,updateState:S}=Te(),{resolvedTheme:$}=He(),j=l(m(null),"panelDivRef"),V=l(m(!1),"isResizingRef"),G=l(m({height:P.height,width:P.width}),"dimensionsRef"),y=l(m(void 0),"enteringFromRectRef"),F=l(m(void 0),"lastDockedRectRef"),Q=l(m(!1),"previousIsFullscreenRef"),O=l(m(!1),"isExitAnimatingRef"),T=l(m(void 0),"fsTimerRef"),M=P.viewMode==="fullscreen",Z=P.viewMode==="wide",ie=globalThis.window?.documentPictureInPicture!==void 0,q=l(m(void 0),"pipWindowRef"),J=l(re(()=>{if(M)return{};const s=globalThis.window?.innerWidth??1920,p=globalThis.window?.innerHeight??1080,f=`${G.current.height/100*p}px`;return n==="left"||n==="right"?{width:`${G.current.width/100*s}px`}:{height:f,left:"50%",transform:"translateX(-50%)",width:Z?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"}},[M,Z,n,A]),"panelSizeStyle");L(()=>{const s=_(f=>{if(!V.current||!j.current)return;const x=j.current.getBoundingClientRect(),z=window.innerWidth,U=window.innerHeight,X={...G.current};if(V.current.top){const w=Math.abs(x.bottom-f.clientY);X.height=Ae(w/U*100,we,Ie)}else if(V.current.bottom){const w=Math.abs(f.clientY-x.top);X.height=Ae(w/U*100,we,Ie)}else if(V.current.right){const w=Math.abs(f.clientX-x.left);X.width=Ae(w/z*100,we,Ie)}else if(V.current.left){const w=Math.abs(x.right-f.clientX);X.width=Ae(w/z*100,we,Ie)}G.current=X,A(w=>w+1)},"handleMouseMove"),p=_(()=>{V.current&&(S({height:G.current.height,width:G.current.width}),V.current=!1)},"handleMouseUp");return globalThis.addEventListener("mousemove",s),globalThis.addEventListener("mouseup",p),()=>{globalThis.removeEventListener("mousemove",s),globalThis.removeEventListener("mouseup",p)}},[S]),et(()=>{const s=Q.current;Q.current=M,T.current!==void 0&&(clearTimeout(T.current),T.current=void 0);const p=j.current;if(p)if(M&&!s&&y.current){const f=y.current;y.current=void 0;const x=globalThis.window?.innerWidth??0,z=globalThis.window?.innerHeight??0;p.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",p.style.clipPath=`inset(${f.top}px ${x-f.right}px ${z-f.bottom}px ${f.left}px)`,requestAnimationFrame(()=>{p.style.clipPath="inset(0px 0px 0px 0px)",T.current=setTimeout(()=>{p.style.clipPath="",p.style.transition="",T.current=void 0},380)})}else!M&&s&&!O.current&&(p.style.transition="none",p.style.clipPath="",requestAnimationFrame(()=>{p.style.transition=""}))},[M]),L(()=>{if(a){d(!0);const p=setTimeout(W,16,!0);return()=>clearTimeout(p)}W(!1);const s=setTimeout(d,220,!1);return()=>clearTimeout(s)},[a]);const v=_(async()=>{const s=globalThis.window?.documentPictureInPicture;if(s)try{const p=await s.requestWindow({height:600,width:900});if(q.current=p,ue){const x=p.document.createElement("style");x.textContent=Array.from(ue.cssRules,z=>z.cssText).join(`
|
|
2
|
+
`),p.document.head.append(x)}const f=p.document.createElement("div");f.style.cssText="width:100%;height:100%;display:flex;",$==="dark"&&(p.document.documentElement.classList.add("dark"),f.classList.add("dark")),p.document.body.style.cssText="margin:0;padding:0;height:100vh;",p.document.body.append(f),Pe(i(Rt,{apps:t,initialActiveAppId:e,onClose:_(()=>{p.close()},"onClose")}),f),S({isPip:!0}),p.addEventListener("pagehide",()=>{S({isPip:!1}),q.current=void 0})}catch(p){console.error("[dev-toolbar] PiP activation failed:",p)}},"activatePip");L(()=>{if(!a)return;const s=_(p=>{p.key==="Escape"&&r()},"handleKeyDown");return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[a,r]);const C=l(re(()=>t.find(s=>s.id===e),[t,e]),"activeApp");if(!c)return;const D=_(s=>p=>{p.preventDefault(),V.current=s},"startResize");return g(ze,{children:[i("div",{"aria-hidden":"true",class:u("fixed inset-0 z-[2147483646]","transition-opacity duration-200",h&&!M?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:P.closeOnOutsideClick?r:void 0,role:"presentation"}),g("div",{"aria-label":"DevTools panel","aria-modal":"true",class:u("fixed z-[2147483647] pointer-events-auto antialiased font-mono",M?"inset-0":jt(n),"bg-background overflow-hidden",M?"rounded-none border-0":"rounded-none border border-border","shadow-2xl","transition-panel",!M&&Dt(n),_t(n,h),"flex flex-row"),ref:j,role:"dialog",style:J,children:[!M&&g(ze,{children:[n!=="top"&&i("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:D({top:!0})}),n==="top"&&i("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:D({bottom:!0})}),n==="left"&&i("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:D({right:!0})}),n==="right"&&i("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:D({left:!0})})]}),g("nav",{"aria-label":"DevTools apps",class:u("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",I?"w-12.5":"w-62.5"),children:[i("div",{class:u("flex items-center shrink-0 border-b border-border/50 h-12",I?"justify-center px-2":"px-3"),children:I?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("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=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":s.name,"aria-pressed":e===s.id,class:u("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",I?"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&&o(s.id).catch(console.error)},"onClick"),type:"button",children:[s.icon?i("span",{class:u("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}}):i("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)}),!I&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:s.name})]}),s.notification.state&&i("span",{"aria-hidden":"true",class:u("pointer-events-none absolute top-1.5 rounded-full",I?"right-1.5":"right-2.5","size-1.5",Ge(s.notification.level))}),I&&i("div",{class:u("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:i("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))}),!I&&i("div",{class:"px-3 py-2.5 border-t border-border/40 shrink-0",children:g("span",{class:"text-[0.58rem] text-muted-foreground/50 leading-none select-none",children:[P.keybindings?.toggle??"Alt+Shift+D"," to toggle"]})})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":I?"Expand sidebar":"Collapse sidebar",class:u("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:_(()=>Y(s=>!s),"onClick"),type:"button",children:i(te,{class:u("size-3.5 transition-transform duration-300",!I&&"rotate-180"),size:14,src:Le})}),C?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:C.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),C?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),g("div",{class:"flex items-center gap-1 shrink-0",children:[(n==="bottom"||n==="top")&&!M&&i("button",{"aria-label":Z?"Switch to container width":"Expand to full width",class:u("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:_(()=>S({viewMode:Z?"default":"wide"}),"onClick"),title:Z?"Container width":"Full width",type:"button",children:i(te,{size:13,src:Z?ot:it})}),i("button",{"aria-label":M?"Exit fullscreen":"Enter fullscreen",class:u("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(M){const s=j.current,p=F.current;if(s&&p){const f=globalThis.window?.innerWidth??0,x=globalThis.window?.innerHeight??0,z=`inset(${p.top}px ${f-p.right}px ${x-p.bottom}px ${p.left}px)`;T.current!==void 0&&(clearTimeout(T.current),T.current=void 0),O.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,T.current=setTimeout(()=>{s.style.clipPath="",s.style.transition="",O.current=!1,T.current=void 0,S({viewMode:"default"})},380)})}else S({viewMode:"default"})}else{if(j.current){const s=j.current.getBoundingClientRect();y.current=s,F.current=s}S({viewMode:"fullscreen"})}},"onClick"),title:M?"Exit fullscreen":"Fullscreen",type:"button",children:i(te,{size:13,src:M?nt:rt})}),ie&&!M&&i("button",{"aria-label":"Open in Picture-in-Picture window",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent",P.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:_(()=>{v().then(()=>r()).catch(console.error)},"onClick"),title:"Open in floating window (PiP)",type:"button",children:i(te,{size:13,src:at})}),i("button",{"aria-label":"Close DevTools panel",class:u("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:i(te,{size:12,src:Ee})})]})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:C?i(Ze,{app:C},C.id):g("div",{class:"flex flex-col items-center justify-center h-full gap-7 p-8 select-none",children:[g("div",{class:"flex flex-col items-center gap-3",children:[i("div",{class:"size-14 border border-primary/25 bg-primary/5 flex items-center justify-center",children:i(te,{class:"text-primary/45",size:26,src:tt})}),g("div",{class:"text-center space-y-1",children:[i("p",{class:"text-[0.8rem] font-medium text-foreground/65",children:"No tool selected"}),i("p",{class:"text-[0.7rem] text-muted-foreground",children:"Choose a tool from the sidebar to get started"})]})]}),t.length>0&&g("div",{class:"w-full max-w-[220px]",children:[g("p",{class:"text-[0.58rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/60 mb-1.5",children:[i("span",{class:"text-primary/50",children:"// "}),"available"]}),i("div",{class:"flex flex-col gap-0.5",children:t.map(s=>g("button",{class:u("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:_(()=>o(s.id).catch(console.error),"onClick"),type:"button",children:[s.icon?i("span",{class:"size-3.5 shrink-0 flex items-center justify-center [&_svg]:size-3.5 text-muted-foreground",dangerouslySetInnerHTML:{__html:s.icon}}):i("span",{class:"size-3.5 text-[0.5rem] font-bold text-muted-foreground shrink-0 text-center",children:s.name.slice(0,2).toUpperCase()}),i("span",{class:"text-[0.75rem] font-medium text-muted-foreground",children:s.name})]},s.id))})]})]})})]})]})]})},"DevPanel");var $t=Object.defineProperty,Ce=N((e,t)=>$t(e,"name",{value:t,configurable:!0}),"n$1");const Vt=Ce(()=>{const[e,t]=l(E(0),"errorCount"),[r,o]=l(E(!1),"isOverlayOpen");if(L(()=>{const c=Ce(()=>{const h=globalThis.__v_o_error_history,W=Array.isArray(h)?h.length:0;t(W);const I=globalThis.__v_o__current;if(I?.parentNode){const Y=I.shadowRoot?.querySelector("#__v_o__root");o(!!Y&&!Y.classList.contains("hidden"))}else o(!1)},"sync"),d=setInterval(c,300);return c(),()=>clearInterval(d)},[]),e===0)return;const a=Ce(()=>{const c=globalThis.__v_o__current;if(!c?.parentNode)return;const d=c.shadowRoot?.querySelector("#__v_o__root");d?.classList.contains("hidden")?(d.classList.remove("hidden"),o(!0)):typeof c.close=="function"&&(c.close(),o(!1))},"handleClick"),n=`${e} error${e===1?"":"s"} – click to ${r?"hide":"show"} overlay`;return g(ze,{children:[i("div",{"aria-hidden":"true",class:"w-px h-5 bg-primary/20 shrink-0 mx-0.5"}),i("button",{"aria-label":n,class:u("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:a,title:n,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i(te,{size:16,src:pt}),i("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 Lt=Object.defineProperty,Se=N((e,t)=>Lt(e,"name",{value:t,configurable:!0}),"n");const Et=Se(()=>{const{toggleApp:e}=je();return i("button",{class:u("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:Se(()=>{e("dev-toolbar:more").catch(t=>{console.error("[dev-toolbar] Failed to toggle more app:",t)})},"onClick"),title:"More apps",type:"button",children:i("div",{class:"relative size-6 flex items-center justify-center select-none",children:i(te,{size:16,src:ct})})})},"MoreButton"),Ht=Se(({customAppsToShow:e=3})=>{const{apps:t}=je(),r=t.filter(c=>c.builtIn),o=t.filter(c=>!c.builtIn),a=[...r,...o.slice(0,e)],n=o.slice(e);return i("div",{class:"flex items-center pointer-events-auto",id:"__v_dt__bar",children:g("div",{class:"flex flex-row items-center justify-start gap-1",id:"__v_dt__bar_container",children:[a.map(c=>i(zt,{app:c},c.id)),n.length>0&&i(Et,{}),i(Vt,{})]})})},"ToolbarBar"),Wt="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQ4IDI5MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGRlZnM+IDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4gPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZWQiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9InJlZDtwdXJwbGU7Ymx1ZTtyZWQ7IiBkdXI9IjIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+IDwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InB1cnBsZSI+IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0b3AtY29sb3IiIHZhbHVlcz0icHVycGxlO2JsdWU7cmVkO3B1cnBsZTsiIGR1cj0iMjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9ImJsdWUiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9ImJsdWU7cmVkO3B1cnBsZTtibHVlOyIgZHVyPSIyMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPiA8L3N0b3A+IDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9ImdyYWRpZW50VHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgLjUgLjUiIHRvPSIzNjAgLjUgLjUiIGR1cj0iMTBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRBIiB4MT0iNjIiIHkxPSI0Mi4yMjUzIiB4Mj0iNjIiIHkyPSIyOTAuMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIG9mZnNldD0iMC4zNCIgc3RvcC1vcGFjaXR5PSIwLjUiIC8+IDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRCIiB4MT0iMTg2IiB5MT0iMCIgeDI9IjE4NiIgeTI9IjI0OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPiA8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIiAvPiA8c3RvcCBvZmZzZXQ9IjAuNjk1IiBzdG9wLW9wYWNpdHk9IjAuNSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiBNMjQ4IDEyNEMyNDggMTkyLjQ4MyAxOTIuNDgzIDI0OCAxMjQgMjQ4VjBDMTkyLjQ4MyAwIDI0OCA1NS41MTY3IDI0OCAxMjRaIiBmaWxsPSJ1cmwoI2EpIiAvPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRBKSIgLz4gPHBhdGggZD0iTTI0OCAxMjRDMjQ4IDE5Mi40ODMgMTkyLjQ4MyAyNDggMTI0IDI0OFYwQzE5Mi40ODMgMCAyNDggNTUuNTE2NyAyNDggMTI0WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRCKSIgLz4gPGNpcmNsZSBjeD0iMTI0IiBjeT0iMTQ3IiByPSI1MCIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPg==";var Zt=Object.defineProperty,me=N((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"o$1");const Gt=me((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"),Bt=me(({position:e})=>{const{hoveredApp:t,hoveredAppRect:r,pinTooltip:o,setHoveredApp:a}=Re(),n=l(m(null),"overlayRef"),c=l(m(be()),"helpersRef"),[d,h]=l(E(!1),"isRendered"),[W,I]=l(E(!1),"isVisible"),Y=!!(t?.tooltip&&r);if(L(()=>{if(Y){h(!0);const V=setTimeout(I,16,!0);return()=>clearTimeout(V)}I(!1);const j=setTimeout(h,200,!1);return()=>clearTimeout(j)},[Y]),!d||!t?.tooltip||!r)return;const A=t.tooltip,P=Gt(r,e),S=e==="left"||e==="right",$=me(()=>{const j=n.current?.getBoundingClientRect();j&&o(t,j.left,j.top),a(void 0)},"handlePin");return g("div",{"aria-label":`${t.name} quick preview`,class:u("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)]",W?"opacity-100 translate-y-0 scale-100":u("opacity-0 scale-[0.97]",e==="bottom"&&"translate-y-1",e==="top"&&"-translate-y-1",S&&"translate-x-[-2px]")),onMouseEnter:me(()=>a(t,r),"onMouseEnter"),onMouseLeave:me(()=>a(void 0),"onMouseLeave"),ref:n,role:"tooltip",style:P,children:[g("div",{class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-border/60 bg-foreground/3",children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-muted-foreground truncate",children:t.name})]}),i("button",{"aria-label":`Pin ${t.name} tooltip`,class:u("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:i(te,{size:11,src:st})})]}),i("div",{class:"p-3",children:i(A,{helpers:c.current})})]})},"AppTooltipOverlay");var Yt=Object.defineProperty,Me=N((e,t)=>Yt(e,"name",{value:t,configurable:!0}),"o");const Ot=Me(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"),Xt=Me(({position:e})=>{const t="absolute w-2.5 h-2.5 bg-card border-border";switch(e){case"left":return i("div",{"aria-hidden":"true",class:u(t,"left-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-b border-l")});case"right":return i("div",{"aria-hidden":"true",class:u(t,"right-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-t border-r")});case"top":return i("div",{"aria-hidden":"true",class:u(t,"top-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-t border-l")});default:return i("div",{"aria-hidden":"true",class:u(t,"bottom-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-b border-r")})}},"Arrow"),Ft=[{icon:"⊙",text:"Click logo to open panel"},{icon:"⠿",text:"Drag pill to reposition"},{icon:"⌨",text:"Alt+Shift+D to toggle"}],Jt=Me(({onDismiss:e,position:t})=>{const[r,o]=l(E(!1),"visible"),a=l(m(void 0),"dismissTimeoutRef");L(()=>{const c=setTimeout(o,600,!0);return()=>clearTimeout(c)},[]),L(()=>()=>{a.current!==void 0&&(clearTimeout(a.current),a.current=void 0)},[]);const n=Me(()=>{o(!1),a.current=setTimeout(e,180)},"handleDismiss");return g("div",{"aria-hidden":!r,"aria-label":"DevTools quick start",class:u("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:Ot(t),children:[i(Xt,{position:t}),g("p",{class:"flex items-center gap-1.5 mb-2.5",children:[i("span",{"aria-hidden":"true",class:"text-primary text-[0.6rem]",children:"▶"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.12em] text-foreground",children:"Quick start"})]}),i("ul",{class:"space-y-1.5 mb-3 list-none p-0 m-0",children:Ft.map(({icon:c,text:d})=>g("li",{class:"flex items-center gap-2 text-[0.7rem] text-muted-foreground",children:[i("span",{"aria-hidden":"true",class:"text-primary shrink-0 w-3 text-center leading-none",children:c}),d]},d))}),i("button",{class:u("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:r?void 0:-1,type:"button",children:"Got it"})]})},"FirstVisitHint");var Ut=Object.defineProperty,de=N((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"i");const Qt=de(({onMove:e,onUnpin:t,pinned:r})=>{const o=l(m(null),"cardRef"),a=l(m(null),"headerRef"),n=l(m({x:r.initialX,y:r.initialY}),"posRef"),c=l(m(void 0),"dragRef"),d=l(m(be()),"helpersRef"),h=l(m(e),"onMoveRef"),W=l(m(r.id),"pinnedIdRef");h.current=e,W.current=r.id,L(()=>{const A="transform 110ms cubic-bezier(0.25,0.46,0.45,0.94)",P=de($=>{if(!c.current||!o.current)return;const j=globalThis.window?.innerWidth??9999,V=globalThis.window?.innerHeight??9999,{cardH:G,cardW:y}=c.current,F=Math.min(80,y),Q=Math.min(36,G);let O=c.current.origX+($.clientX-c.current.startX),T=c.current.origY+($.clientY-c.current.startY);O=Math.max(F-y,Math.min(j-F,O)),T=Math.max(Q-G,Math.min(V-Q,T));const M=[0,j-y,F-y,j-F],Z=[0,V-G,Q-G,V-Q];let ie=O,q=T;for(const J of M)if(Math.abs(O-J)<28){ie=J;break}for(const J of Z)if(Math.abs(T-J)<28){q=J;break}o.current.style.transition=ie!==O||q!==T?A:"",o.current.style.transform=`translate(${ie}px, ${q}px)`,n.current={x:ie,y:q}},"handleMove"),S=de(()=>{c.current&&(c.current=void 0,o.current&&(o.current.style.transition=""),a.current&&(a.current.style.cursor=""),h.current(W.current,n.current.x,n.current.y))},"handleUp");return document.addEventListener("mousemove",P),document.addEventListener("mouseup",S),()=>{document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",S)}},[]);const I=r.app.tooltip;if(!I)return;const Y=de(A=>{A.button===0&&(c.current={cardH:o.current?.offsetHeight??200,cardW:o.current?.offsetWidth??300,origX:n.current.x,origY:n.current.y,startX:A.clientX,startY:A.clientY},a.current&&(a.current.style.cursor="grabbing"),A.preventDefault())},"handleDragStart");return g("div",{"aria-label":`${r.app.name} pinned tooltip`,class:u("fixed z-[2147483647] pointer-events-auto antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-primary/40 shadow-2xl"),ref:o,style:{left:0,top:0,transform:`translate(${n.current.x}px, ${n.current.y}px)`},children:[g("div",{class:u("flex items-center justify-between gap-2 px-3 py-2","border-b border-primary/20 bg-primary/4","select-none cursor-grab"),onMouseDown:Y,ref:a,children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-primary/70 truncate",children:r.app.name})]}),i("button",{"aria-label":`Unpin ${r.app.name}`,class:u("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:de(()=>t(r.id),"onClick"),onMouseDown:de(A=>A.stopPropagation(),"onMouseDown"),title:"Unpin",type:"button",children:i(te,{size:11,src:lt})})]}),i("div",{class:"p-3",children:i(I,{helpers:d.current})})]})},"PinnedTooltipCard");var qt=Object.defineProperty,ce=N((e,t)=>qt(e,"name",{value:t,configurable:!0}),"p");const Ne="__v_dt__pinned_tooltips",Kt=ce((e,t,r,o,a)=>{const n=t*o/100,c=r*a/100,d=o/4;switch(e){case"bottom":return n<d?"bottom-left":n>o-d?"bottom-right":"bottom-center";case"left":return c<a/2?"top-left":"bottom-left";case"right":return c<a/2?"top-right":"bottom-right";case"top":return n<d?"top-left":n>o-d?"top-right":"top-center";default:return"bottom-center"}},"computePlacement"),er=ce(({activeAppId:e,apps:t,customAppsToShow:r=3,onClearNotification:o,onRegisterApp:a,onSetNotification:n,onToggleApp:c,onUnregisterApp:d})=>{const h=l(m(null),"anchorRef"),W=l(m(null),"panelRef"),I=l(m(void 0),"leaveTimerRef"),{resolvedTheme:Y}=He(),{state:A,updateState:P}=Te(),{closePanel:S,panelVisible:$,togglePanelVisible:j}=It(),{anchorStyle:V,bringUp:G,isDragging:y,isHidden:F,isVertical:Q,onPointerDown:O,panelStyle:T}=Ct(W),[M,Z]=l(E(void 0),"hoveredApp"),[ie,q]=l(E(void 0),"hoveredAppRect"),J=l(m(new Map),"pinPositionsRef"),v=pe(b=>{try{const R=b.map(k=>{const B=J.current.get(k.id);return{appId:k.app.id,x:B?.x??k.initialX,y:B?.y??k.initialY}});localStorage.setItem(Ne,JSON.stringify(R))}catch{}},[]),[C,D]=l(E([]),"pinnedTooltips"),s=l(m([]),"pinnedTooltipsRef");s.current=C;const p=pe((b,R,k)=>{const B=`${b.id}-${Date.now()}`;D(le=>{const he=[...le,{app:b,id:B,initialX:R,initialY:k}];return v(he),he})},[v]),f=pe(b=>{D(R=>{const k=R.filter(B=>B.id!==b);return J.current.delete(b),v(k),k})},[v]),x=pe((b,R,k)=>{J.current.set(b,{x:R,y:k}),v(s.current)},[v]),z=l(m(void 0),"storedPinsRef"),U=l(m(new Set),"restoredAppIdsRef");L(()=>{if(t.length===0)return;if(z.current===void 0)try{const k=localStorage.getItem(Ne);z.current=k?JSON.parse(k):[]}catch{z.current=[]}const b=z.current;if(b.length===0)return;const R=[];for(const k of b){if(U.current.has(k.appId))continue;const B=t.find(le=>le.id===k.appId&&le.tooltip);B&&(U.current.add(k.appId),R.push({app:B,id:`${B.id}-restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,initialX:k.x,initialY:k.y}))}R.length>0&&D(k=>[...k,...R])},[t]),L(()=>()=>{I.current!==void 0&&clearTimeout(I.current)},[]);const X=pe((b,R)=>{I.current!==void 0&&(clearTimeout(I.current),I.current=void 0),b?(Z(b),q(R)):I.current=setTimeout(()=>{Z(void 0),q(void 0),I.current=void 0},180)},[]),w=l(m(t),"appsRef");w.current=t;const ae=l(m($),"panelVisibleRef");ae.current=$;const ne=l(m(e),"activeAppIdRef");ne.current=e;const K=l(m(c),"onToggleAppRef");K.current=c;const oe=l(re(()=>{const b=globalThis.window?.innerWidth??1920,R=globalThis.window?.innerHeight??1080;return Kt(A.position,A.left,A.top,b,R)},[A.left,A.position,A.top]),"placement"),se=pe(async b=>{const R=ae.current,k=ne.current,B=w.current.find(le=>le.id===b);if(B?.onClick??B?.onDeactivate){await K.current(b);return}if(b===k&&R){await K.current(b),P({open:!1,viewMode:"default"});return}b!==k&&await K.current(b),R||P({open:!0})},[P]),ke={activeAppId:e,apps:t,clearNotification:o,hoveredApp:M,hoveredAppRect:ie,isDragging:y,isVisible:$,pinnedTooltips:C,pinTooltip:p,placement:oe,registerApp:a,setDragging:ce(()=>{},"setDragging"),setHoveredApp:X,setNotification:n,setPlacement:ce(()=>{},"setPlacement"),setVisible:ce(b=>P({open:b}),"setVisible"),toggleApp:se,unpinTooltip:f,unregisterApp:d};if(!(!A.preferShowFloatingPanel&&!$))return i(We.Provider,{value:ke,children:g("div",{class:u(Y==="dark"&&"dark"),style:{display:"contents"},children:[g("div",{class:u("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",A.reduceMotion&&"transition-none! animate-none! [&_*]:transition-none! [&_*]:animate-none!"),"data-dragging":y?"":void 0,"data-placement":oe,id:"__v_dt__root",onMouseMove:G,ref:h,style:V,children:[g("div",{class:u("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",y?"cursor-grabbing":"cursor-grab","bg-background border-0",Q?"shadow-pill-vertical!":"shadow-pill",F?"max-w-12!":"","transition-pill"),"data-vertical":Q||void 0,onPointerDown:ce(b=>{A.isFirstVisit&&P({isFirstVisit:!1}),O(b)},"onPointerDown"),ref:W,style:T,children:[i("button",{"aria-label":"Toggle devtools panel",class:u("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]",$?"opacity-100":"opacity-60"),onClick:ce(b=>{b.stopPropagation(),A.isFirstVisit&&P({isFirstVisit:!1}),j()},"onClick"),title:"Toggle devtools panel",type:"button",children:i("img",{alt:"Visulima",class:"size-6",src:Wt})}),i("div",{"aria-hidden":"true",class:u("w-px h-5 bg-primary/20 shrink-0",F&&"hidden")}),i("div",{class:u("px-0.5",F&&"hidden"),children:i(Ht,{customAppsToShow:r})})]}),A.isFirstVisit&&i(Jt,{onDismiss:ce(()=>P({isFirstVisit:!1}),"onDismiss"),position:A.position})]}),i(Nt,{activeAppId:e,apps:t,onClose:S,onToggleApp:c,panelVisible:$,position:A.position}),i(Bt,{position:A.position}),C.map(b=>i(Qt,{onMove:x,onUnpin:f,pinned:b},b.id))]})})},"ToolbarContainer");var tr=Object.defineProperty,Be=N((e,t)=>tr(e,"name",{value:t,configurable:!0}),"r");const rr=Be((e,t)=>{const r=$e(),o=Ue();if(!o)throw new Error("Global hook not initialized");return{clearNotification(a){e.clearNotification(a)},async closeApp(){const a=e.getActiveApp();a&&await e.toggleApp(a.id)},getActiveApp(){return e.getActiveApp()?.id},getApps(){return e.getApps()},getSettings(){return Ve()},hide(){t.hide()},hook:o,notify(a,n){e.setNotification(a,!0,n)},async openApp(a){await e.toggleApp(a)},registerApp(a){e.registerApp(a)},rpc:new Proxy({},{get(a,n){return(...c)=>r.callServer(n,...c)}}),setAppActive(a,n){e.setAppActive(a,n)},show(){t.show()},toggle(){t.toggle()},unregisterApp(a){e.unregisterApp(a)},updateSettings(a){Je(a)},version:"0.0.0"}},"createGlobalAPI"),ir=Be(e=>{globalThis.window!==void 0&&(globalThis.__VISULIMA_DEVTOOLS__=e)},"setupGlobalAPI");var nr=Object.defineProperty,H=N((e,t)=>nr(e,"name",{value:t,configurable:!0}),"t");class or extends HTMLElement{static{N(this,"DevToolbar")}static{H(this,"DevToolbar")}appManager;hasBeenInitialized=!1;customAppsToShow=3;renderRoot=void 0;constructor(){super(),this.attachShadow({mode:"open"}),this.appManager=new ft}connectedCallback(){this.hasBeenInitialized&&this.shadowRoot&&!this.renderRoot&&this.render()}disconnectedCallback(){this.renderRoot&&(Pe(null,this.renderRoot),this.renderRoot=void 0)}init(){if(this.hasBeenInitialized)return;this.hasBeenInitialized=!0;const t=Qe(n=>{this.appManager.registerApp(n),this.render()},(n,c)=>{qe().addEvent(n,c)}),r=rr({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"),setAppActive:H((n,c)=>{this.appManager.setAppActive(n,c),this.render()},"setAppActive"),setNotification:H((n,c,d)=>{this.appManager.setNotification(n,c,d),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")});ir(r),t.emit("devtools:init");const o=Ve(),a=this.appManager.getAllApps().find(n=>n.defaultOpen);a&&!this.appManager.getActiveApp()&&this.appManager.openApp(a.id).catch(n=>{console.error(`[dev-toolbar] Failed to auto-open defaultOpen app ${a.id}:`,n)}),this.render(),this.setupEventListeners(),o.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}render(){const t=this.appManager.getAllApps(),r=this.shadowRoot;ue&&(r.adoptedStyleSheets=[ue]);let o=r.querySelector("style");o||(o=document.createElement("style"),o.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
|
-
`,
|
|
21
|
+
`,r.append(o)),this.renderRoot||(this.renderRoot=document.createElement("div"),r.append(this.renderRoot));const a=this.appManager.getActiveApp()?.id;Pe(i(er,{activeAppId:a,apps:t,customAppsToShow:this.customAppsToShow,onClearNotification:H(n=>{this.appManager.clearNotification(n),this.render()},"onClearNotification"),onRegisterApp:H(n=>{this.render()},"onRegisterApp"),onSetNotification:H((n,c,d)=>{this.appManager.setNotification(n,c,d),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",t=>{if(t.key!=="Escape"||this.isHidden())return;const r=this.appManager.getActiveApp();r?this.appManager.toggleApp(r.id).then(()=>{this.render()}).catch(o=>{console.error("[dev-toolbar] Error toggling app:",o)}):this.setToolbarVisible(!1)})}}if(globalThis.window!==void 0&&(customElements.get("dev-toolbar")||customElements.define("dev-toolbar",or),!customElements.get("dev-toolbar-app-canvas"))){class e extends HTMLElement{static{N(this,"a")}static{H(this,"DevToolbarAppCanvas")}constructor(){super(),this.attachShadow({mode:"open"})}}customElements.define("dev-toolbar-app-canvas",e)}export{or as DevToolbar,ue as sharedToolbarStylesheet};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { ToolbarSettings } from "../types/toolbar.d.ts";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @returns Toolbar settings
|
|
3
|
+
* Loads settings from localStorage, merging with defaults.
|
|
4
|
+
* @returns Toolbar settings.
|
|
5
5
|
*/
|
|
6
6
|
export declare const loadSettings: () => ToolbarSettings;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* @param settings Toolbar settings to save
|
|
8
|
+
* Saves settings to localStorage.
|
|
9
|
+
* @param settings Toolbar settings to save.
|
|
10
10
|
*/
|
|
11
11
|
export declare const saveSettings: (settings: ToolbarSettings) => void;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* @param updates Partial settings to update
|
|
15
|
-
* @returns Updated settings
|
|
13
|
+
* Merges partial updates into the current settings and persists them.
|
|
14
|
+
* @param updates Partial settings to update.
|
|
15
|
+
* @returns Updated settings.
|
|
16
16
|
*/
|
|
17
17
|
export declare const updateSettings: (updates: Partial<ToolbarSettings>) => ToolbarSettings;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Clamps a value between min and max.
|
|
3
3
|
*/
|
|
4
4
|
export declare const clamp: (value: number, min: number, max: number) => number;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Returns true when the current browser is Safari.
|
|
7
7
|
*/
|
|
8
8
|
export declare const checkIsSafari: () => boolean;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Converts a pixel string value to a number (e.g. "10px" becomes 10).
|
|
11
11
|
*/
|
|
12
12
|
export declare const pixelToNumber: (value: string | number) => number;
|