@htmlos-next/ui 0.0.8 → 0.0.9

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.
@@ -1,10 +1,10 @@
1
1
  import { default as React } from 'react';
2
2
  interface ContextMenuProps {
3
3
  open: boolean;
4
- x: number;
5
- y: number;
4
+ x?: number;
5
+ y?: number;
6
6
  children: React.ReactNode;
7
7
  }
8
- export declare function ContextMenu({ open, x, y, children }: ContextMenuProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function ContextMenu({ open, x, y, children, }: ContextMenuProps): import("react/jsx-runtime").JSX.Element;
9
9
  export {};
10
10
  //# sourceMappingURL=ContextMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAIjE,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAmDrE"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAIjE,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,CAAM,EACN,CAAM,EACN,QAAQ,GACT,EAAE,gBAAgB,2CA8DlB"}
@@ -3,8 +3,8 @@
3
3
  ${d.sidebar}
4
4
  ${t?"":d.sidebarCollapsed}
5
5
  ${s?d.sidebarMobile:""}
6
- ${!t&&s?d.sidebarMobileHidden:""}`,children:[n.jsx("div",{className:d.sidebarContent,children:o}),e&&n.jsx("div",{className:d.sidebarFooter,children:e})]})}const V="_sidebarTitle_azx8n_1",k={sidebarTitle:V};function L({children:t}){return n.jsx("h2",{className:k.sidebarTitle,children:t})}const q="_sidebarItem_1e3ru_1",W="_selected_1e3ru_22",v={sidebarItem:q,selected:W};function F({onClick:t,onContextMenu:e,selected:o=!1,children:s}){const i=a.useRef(null),c=r=>{i.current=setTimeout(()=>{e&&(r.preventDefault(),e(r))},500)},l=()=>{i.current&&clearTimeout(i.current)};return n.jsx("div",{className:`${v.sidebarItem} ${o?v.selected:""}`,onClick:t,onContextMenu:r=>{r.preventDefault(),e&&e(r)},onTouchStart:c,onTouchEnd:l,onTouchMove:l,children:s})}const K="_sidebarMainBtn_65l8c_1",G={sidebarMainBtn:K};function J({onClick:t,children:e}){return n.jsx("button",{className:G.sidebarMainBtn,onClick:t,children:e})}const Q="_popupContainer_vz8rg_1",U="_popupClosed_vz8rg_18",X="_popup_vz8rg_1",Y="_popupContent_vz8rg_44",x={popupContainer:Q,popupClosed:U,popup:X,popupContent:Y};function Z({open:t=!1,children:e}){return n.jsx("div",{className:`${x.popupContainer} ${t?"":x.popupClosed}`,children:n.jsx("div",{className:x.popup,children:n.jsx("div",{className:x.popupContent,children:e})})})}const tt="_popupTitle_4z5vb_1",et={popupTitle:tt};function ot({children:t}){return n.jsx("span",{className:et.popupTitle,children:t})}const nt="_popupDescription_4ewx1_1",st={popupDescription:nt};function rt({children:t}){return n.jsx("span",{className:st.popupDescription,children:t})}const it="_popupInput_1b42s_1",ct={popupInput:it},lt=a.forwardRef(({placeholder:t="Enter text...",value:e,onChange:o,onSubmit:s,autoFocus:i},c)=>{const l=a.useRef(null),r=c||l;return a.useEffect(()=>{i&&r.current&&r.current.focus()},[i,r]),n.jsx("input",{ref:r,type:"text",className:ct.popupInput,placeholder:t,value:e,onChange:p=>o?.(p.target.value),onKeyDown:p=>{p.key==="Enter"&&s&&s(e||"")}})}),at="_popupActions_84v2b_1",pt={popupActions:at};function ut({orientation:t="vertical",children:e}){return n.jsx("div",{className:pt.popupActions,style:{flexDirection:t=="vertical"?"column":"row"},children:e})}const dt="_popupBtn_ouvtc_1",bt="_secondary_ouvtc_27",h={popupBtn:dt,secondary:bt};function _t({type:t="primary",onClick:e,children:o}){return n.jsx("button",{className:`${h.popupBtn} ${t=="secondary"?h.secondary:""}`,onClick:e,children:o})}const ft="_toolbar_1rbls_1",xt="_toolbarCollapsed_1rbls_18",mt="_toolbarExpanded_1rbls_27",m={toolbar:ft,toolbarCollapsed:xt,toolbarExpanded:mt};function yt({expanded:t=!0,collapsed:e=!1,children:o}){const{isMobile:s}=b();return n.jsx("div",{className:`${m.toolbar} ${t||s?m.toolbarExpanded:""} ${s?m.toolbarMobile:""} ${e?m.toolbarCollapsed:""}`,children:o})}const $t="_toolbarTitle_14yia_1",vt={toolbarTitle:$t};function ht({children:t}){return n.jsx("h3",{className:vt.toolbarTitle,children:t})}const jt="_toolbarActions_l0jv2_1",Tt={toolbarActions:jt};function It({children:t}){return n.jsx("div",{className:Tt.toolbarActions,children:t})}const Mt="_toolbarBtn_8jy1b_1",Ct={toolbarBtn:Mt};function N({onClick:t,children:e}){return n.jsx("button",{onClick:o=>{o.preventDefault(),t&&t(o)},className:Ct.toolbarBtn,children:e})}const Nt="_sidebarIcon_1lib1_1",Bt="_sidebarIconExpanded_1lib1_6",j={sidebarIcon:Nt,sidebarIconExpanded:Bt};function Et({onToggleSidebar:t,expanded:e=!1}){const{isMobile:o}=b();return n.jsx(N,{onClick:t,children:n.jsx(S.Menu,{size:o?24:18,className:`${j.sidebarIcon} ${e?j.sidebarIconExpanded:""}`})})}const gt="_content_to68z_1",St="_contentExpanded_to68z_18",wt="_toolbarPresent_to68z_23",Pt="_contentNoMargin_to68z_33",y={content:gt,contentExpanded:St,toolbarPresent:wt,contentNoMargin:Pt};function zt({expanded:t=!0,toolbar:e=!0,margin:o="default",children:s}){return n.jsx("div",{className:`${y.content} ${t?y.contentExpanded:""} ${e?y.toolbarPresent:""} ${o==="none"?y.contentNoMargin:""}`,children:s})}const Rt="_contextMenu_vtnpl_1",Dt="_contextMenuOpen_vtnpl_22",$={contextMenu:Rt,contextMenuOpen:Dt};function At({open:t,x:e,y:o,children:s}){const{isMobile:i}=b(),c=a.useRef(null),[l,r]=a.useState({top:0,left:0});a.useLayoutEffect(()=>{if(t&&c.current){const u=c.current.getBoundingClientRect(),E=window.innerWidth,g=window.innerHeight;let _=e,f=o;e+u.width>E&&(_=e-u.width),o+u.height>g&&(f=o-u.height),_=Math.max(5,_),f=Math.max(5,f),r({top:f,left:_})}},[t,e,o]);const p={top:`${l.top}px`,left:`${l.left}px`,position:"fixed",visibility:t?"visible":"hidden",opacity:t?1:0};return n.jsx("div",{ref:c,className:`
6
+ ${!t&&s?d.sidebarMobileHidden:""}`,children:[n.jsx("div",{className:d.sidebarContent,children:o}),e&&n.jsx("div",{className:d.sidebarFooter,children:e})]})}const V="_sidebarTitle_azx8n_1",k={sidebarTitle:V};function L({children:t}){return n.jsx("h2",{className:k.sidebarTitle,children:t})}const q="_sidebarItem_1e3ru_1",W="_selected_1e3ru_22",v={sidebarItem:q,selected:W};function F({onClick:t,onContextMenu:e,selected:o=!1,children:s}){const i=a.useRef(null),c=r=>{i.current=setTimeout(()=>{e&&(r.preventDefault(),e(r))},500)},l=()=>{i.current&&clearTimeout(i.current)};return n.jsx("div",{className:`${v.sidebarItem} ${o?v.selected:""}`,onClick:t,onContextMenu:r=>{r.preventDefault(),e&&e(r)},onTouchStart:c,onTouchEnd:l,onTouchMove:l,children:s})}const K="_sidebarMainBtn_65l8c_1",G={sidebarMainBtn:K};function J({onClick:t,children:e}){return n.jsx("button",{className:G.sidebarMainBtn,onClick:t,children:e})}const Q="_popupContainer_vz8rg_1",U="_popupClosed_vz8rg_18",X="_popup_vz8rg_1",Y="_popupContent_vz8rg_44",x={popupContainer:Q,popupClosed:U,popup:X,popupContent:Y};function Z({open:t=!1,children:e}){return n.jsx("div",{className:`${x.popupContainer} ${t?"":x.popupClosed}`,children:n.jsx("div",{className:x.popup,children:n.jsx("div",{className:x.popupContent,children:e})})})}const tt="_popupTitle_4z5vb_1",et={popupTitle:tt};function ot({children:t}){return n.jsx("span",{className:et.popupTitle,children:t})}const nt="_popupDescription_4ewx1_1",st={popupDescription:nt};function rt({children:t}){return n.jsx("span",{className:st.popupDescription,children:t})}const it="_popupInput_1b42s_1",ct={popupInput:it},lt=a.forwardRef(({placeholder:t="Enter text...",value:e,onChange:o,onSubmit:s,autoFocus:i},c)=>{const l=a.useRef(null),r=c||l;return a.useEffect(()=>{i&&r.current&&r.current.focus()},[i,r]),n.jsx("input",{ref:r,type:"text",className:ct.popupInput,placeholder:t,value:e,onChange:p=>o?.(p.target.value),onKeyDown:p=>{p.key==="Enter"&&s&&s(e||"")}})}),at="_popupActions_84v2b_1",pt={popupActions:at};function ut({orientation:t="vertical",children:e}){return n.jsx("div",{className:pt.popupActions,style:{flexDirection:t=="vertical"?"column":"row"},children:e})}const dt="_popupBtn_ouvtc_1",bt="_secondary_ouvtc_27",h={popupBtn:dt,secondary:bt};function _t({type:t="primary",onClick:e,children:o}){return n.jsx("button",{className:`${h.popupBtn} ${t=="secondary"?h.secondary:""}`,onClick:e,children:o})}const ft="_toolbar_1rbls_1",xt="_toolbarCollapsed_1rbls_18",mt="_toolbarExpanded_1rbls_27",m={toolbar:ft,toolbarCollapsed:xt,toolbarExpanded:mt};function yt({expanded:t=!0,collapsed:e=!1,children:o}){const{isMobile:s}=b();return n.jsx("div",{className:`${m.toolbar} ${t||s?m.toolbarExpanded:""} ${s?m.toolbarMobile:""} ${e?m.toolbarCollapsed:""}`,children:o})}const $t="_toolbarTitle_14yia_1",vt={toolbarTitle:$t};function ht({children:t}){return n.jsx("h3",{className:vt.toolbarTitle,children:t})}const jt="_toolbarActions_l0jv2_1",Tt={toolbarActions:jt};function It({children:t}){return n.jsx("div",{className:Tt.toolbarActions,children:t})}const Mt="_toolbarBtn_8jy1b_1",Ct={toolbarBtn:Mt};function N({onClick:t,children:e}){return n.jsx("button",{onClick:o=>{o.preventDefault(),t&&t(o)},className:Ct.toolbarBtn,children:e})}const Nt="_sidebarIcon_1lib1_1",Et="_sidebarIconExpanded_1lib1_6",j={sidebarIcon:Nt,sidebarIconExpanded:Et};function gt({onToggleSidebar:t,expanded:e=!1}){const{isMobile:o}=b();return n.jsx(N,{onClick:t,children:n.jsx(S.Menu,{size:o?24:18,className:`${j.sidebarIcon} ${e?j.sidebarIconExpanded:""}`})})}const Bt="_content_to68z_1",St="_contentExpanded_to68z_18",wt="_toolbarPresent_to68z_23",Pt="_contentNoMargin_to68z_33",y={content:Bt,contentExpanded:St,toolbarPresent:wt,contentNoMargin:Pt};function zt({expanded:t=!0,toolbar:e=!0,margin:o="default",children:s}){return n.jsx("div",{className:`${y.content} ${t?y.contentExpanded:""} ${e?y.toolbarPresent:""} ${o==="none"?y.contentNoMargin:""}`,children:s})}const Rt="_contextMenu_vtnpl_1",Dt="_contextMenuOpen_vtnpl_22",$={contextMenu:Rt,contextMenuOpen:Dt};function At({open:t,x:e=20,y:o=20,children:s}){const{isMobile:i}=b(),c=a.useRef(null),[l,r]=a.useState({top:o,left:e});a.useLayoutEffect(()=>{if(t&&c.current){const u=c.current.getBoundingClientRect(),g=window.innerWidth,B=window.innerHeight;let _=e,f=o;e+u.width>g&&(_=e-u.width),o+u.height>B&&(f=o-u.height),_=Math.max(5,_),f=Math.max(5,f),r({top:f,left:_})}},[t,e,o]);const p={position:"fixed",top:`${l.top}px`,left:`${l.left}px`,bottom:"auto",right:"auto",visibility:t?"visible":"hidden",opacity:t?1:0,pointerEvents:t?"all":"none"};return n.jsx("div",{ref:c,className:`
7
7
  ${$.contextMenu}
8
8
  ${t?$.contextMenuOpen:""}
9
9
  ${i?$.contextMenuMobile:""}
10
- `,style:p,children:s})}const Ot="_listItem_7ga7e_1",Ht="_selected_7ga7e_23",T={listItem:Ot,selected:Ht};function Vt({onClick:t,onContextMenu:e,selected:o=!1,children:s}){const i=a.useRef(null),c=r=>{i.current=setTimeout(()=>{e&&(r.preventDefault(),e(r))},500)},l=()=>{i.current&&clearTimeout(i.current)};return n.jsx("div",{className:`${T.listItem} ${o?T.selected:""}`,onClick:t,onContextMenu:r=>{r.preventDefault(),e&&e(r)},onTouchStart:c,onTouchEnd:l,onTouchMove:l,children:s})}function B({icon:t,size:e="default",color:o="default",className:s}){const{isMobile:i}=b(),c=e==="default"?i?24:18:e,l=o==="selected"?"var(--icon-color)":o;return o==="default"?n.jsx(t,{size:c,className:s,strokeWidth:i?2.5:2}):n.jsx(t,{size:c,color:l,className:s,strokeWidth:i?2.5:2})}const kt="_emptyView_1synn_1",Lt={emptyView:kt};function qt({icon:t,label:e}){const{isMobile:o}=b(),s=o?64:48;return n.jsxs("div",{className:Lt.emptyView,children:[n.jsx(B,{icon:t,size:s,color:"var(--text-secondary)"}),n.jsx("h2",{children:e})]})}const Wt="_card_zjz9h_1",Ft={card:Wt};function Kt({children:t}){return n.jsx("div",{className:Ft.card,children:t})}const Gt="_textInput_on5q4_1",Jt={textInput:Gt},Qt=a.forwardRef(({placeholder:t,value:e,onChange:o,onFocus:s,onBlur:i,disabled:c=!1,type:l="text",className:r},p)=>n.jsx("input",{ref:p,type:l,className:`${Jt.textInput} ${r||""}`,placeholder:t,value:e,onChange:u=>o?.(u.target.value),onFocus:s,onBlur:i,disabled:c})),Ut="_selectInput_3f04b_1",Xt={selectInput:Ut},Yt=a.forwardRef(({className:t,children:e,...o},s)=>n.jsx("select",{ref:s,className:`${Xt.selectInput} ${t||""}`,...o,children:e})),Zt="_button_g5rur_1",te="_secondary_g5rur_27",I={button:Zt,secondary:te};function ee({disabled:t=!1,type:e="primary",onClick:o,children:s,style:i}){return n.jsx("button",{className:`${I.button} ${e=="secondary"?I.secondary:""}`,onClick:o,disabled:t,style:i,children:s})}const oe="_balloon_1jdjr_1",ne="_balloonOpen_1jdjr_22",M={balloon:oe,balloonOpen:ne};function se({open:t,x:e,y:o,children:s,className:i,style:c,...l}){const r={};typeof e=="number"&&(r.left=e),typeof o=="number"&&(r.top=o);const p=[M.balloon,t?M.balloonOpen:"",i??""].filter(Boolean).join(" ");return n.jsx("div",{...l,className:p,style:{...c,...r},children:s})}exports.AppShell=w;exports.Balloon=se;exports.Button=ee;exports.Card=Kt;exports.Content=zt;exports.ContextMenu=At;exports.EmptyView=qt;exports.Icon=B;exports.ListItem=Vt;exports.Popup=Z;exports.PopupActions=ut;exports.PopupButton=_t;exports.PopupDescription=rt;exports.PopupInput=lt;exports.PopupTitle=ot;exports.SelectInput=Yt;exports.Sidebar=H;exports.SidebarButton=J;exports.SidebarItem=F;exports.SidebarTitle=L;exports.TextInput=Qt;exports.Toolbar=yt;exports.ToolbarActions=It;exports.ToolbarButton=N;exports.ToolbarExpandSidebarButton=Et;exports.ToolbarTitle=ht;
10
+ `,style:p,children:s})}const Ot="_listItem_7ga7e_1",Ht="_selected_7ga7e_23",T={listItem:Ot,selected:Ht};function Vt({onClick:t,onContextMenu:e,selected:o=!1,children:s}){const i=a.useRef(null),c=r=>{i.current=setTimeout(()=>{e&&(r.preventDefault(),e(r))},500)},l=()=>{i.current&&clearTimeout(i.current)};return n.jsx("div",{className:`${T.listItem} ${o?T.selected:""}`,onClick:t,onContextMenu:r=>{r.preventDefault(),e&&e(r)},onTouchStart:c,onTouchEnd:l,onTouchMove:l,children:s})}function E({icon:t,size:e="default",color:o="default",className:s}){const{isMobile:i}=b(),c=e==="default"?i?24:18:e,l=o==="selected"?"var(--icon-color)":o;return o==="default"?n.jsx(t,{size:c,className:s,strokeWidth:i?2.5:2}):n.jsx(t,{size:c,color:l,className:s,strokeWidth:i?2.5:2})}const kt="_emptyView_1synn_1",Lt={emptyView:kt};function qt({icon:t,label:e}){const{isMobile:o}=b(),s=o?64:48;return n.jsxs("div",{className:Lt.emptyView,children:[n.jsx(E,{icon:t,size:s,color:"var(--text-secondary)"}),n.jsx("h2",{children:e})]})}const Wt="_card_zjz9h_1",Ft={card:Wt};function Kt({children:t}){return n.jsx("div",{className:Ft.card,children:t})}const Gt="_textInput_on5q4_1",Jt={textInput:Gt},Qt=a.forwardRef(({placeholder:t,value:e,onChange:o,onFocus:s,onBlur:i,disabled:c=!1,type:l="text",className:r},p)=>n.jsx("input",{ref:p,type:l,className:`${Jt.textInput} ${r||""}`,placeholder:t,value:e,onChange:u=>o?.(u.target.value),onFocus:s,onBlur:i,disabled:c})),Ut="_selectInput_3f04b_1",Xt={selectInput:Ut},Yt=a.forwardRef(({className:t,children:e,...o},s)=>n.jsx("select",{ref:s,className:`${Xt.selectInput} ${t||""}`,...o,children:e})),Zt="_button_g5rur_1",te="_secondary_g5rur_27",I={button:Zt,secondary:te};function ee({disabled:t=!1,type:e="primary",onClick:o,children:s,style:i}){return n.jsx("button",{className:`${I.button} ${e=="secondary"?I.secondary:""}`,onClick:o,disabled:t,style:i,children:s})}const oe="_balloon_1jdjr_1",ne="_balloonOpen_1jdjr_22",M={balloon:oe,balloonOpen:ne};function se({open:t,x:e,y:o,children:s,className:i,style:c,...l}){const r={};typeof e=="number"&&(r.left=e),typeof o=="number"&&(r.top=o);const p=[M.balloon,t?M.balloonOpen:"",i??""].filter(Boolean).join(" ");return n.jsx("div",{...l,className:p,style:{...c,...r},children:s})}exports.AppShell=w;exports.Balloon=se;exports.Button=ee;exports.Card=Kt;exports.Content=zt;exports.ContextMenu=At;exports.EmptyView=qt;exports.Icon=E;exports.ListItem=Vt;exports.Popup=Z;exports.PopupActions=ut;exports.PopupButton=_t;exports.PopupDescription=rt;exports.PopupInput=lt;exports.PopupTitle=ot;exports.SelectInput=Yt;exports.Sidebar=H;exports.SidebarButton=J;exports.SidebarItem=F;exports.SidebarTitle=L;exports.TextInput=Qt;exports.Toolbar=yt;exports.ToolbarActions=It;exports.ToolbarButton=N;exports.ToolbarExpandSidebarButton=gt;exports.ToolbarTitle=ht;
package/dist/htmlos-ui.js CHANGED
@@ -1,19 +1,19 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode(`:root{--accent: #0088ff;--button-primary-bg: var(--accent);--button-primary-bg-hover: color-mix(in srgb, var(--accent), black 15%);--button-primary-bg-active: color-mix(in srgb, var(--accent), black 30%);--button-secondary-bg-hover: color-mix(in srgb, var(--accent), white 90%);--button-secondary-bg-active: color-mix(in srgb, var(--accent), white 90%);--button-disabled-bg: color-mix(in srgb, var(--accent), white 60%);--text-disabled: color-mix(in srgb, var(--text-primary), white 40%);--icon-color: var(--accent);--border-color: #0000001a;--surface-bg: #ffffff7a;--surface-bg-hover: #ffffffa1;--surface-bg-active: #ffffffd5;--card-bg: #e5e5e5;--card-bg-secondary: #f5f5f5;--overlay-bg: rgba(0, 0, 0, .4);--muted-bg: rgba(0, 0, 0, .06);--text-primary: #000000;--text-secondary: #8b8b8b;--text-inverse: #ffffff;--sidebar-width: 200px}[data-theme=dark]{--button-secondary-bg-hover: #252628;--button-secondary-bg-active: #2b2f35;--button-disabled-bg: color-mix(in srgb, var(--accent), black 60%);--text-disabled: color-mix(in srgb, var(--text-primary), black 40%);--surface-bg: #1e1e1e7a;--surface-bg-hover: #2a2a2aa1;--surface-bg-active: #3a3a3ad5;--card-bg: #1d1d1d;--card-bg-secondary: #2a2a2a;--overlay-bg: rgba(255, 255, 255, .4);--muted-bg: rgba(255, 255, 255, .12);--text-primary: #ffffff;--text-inverse: #000000;--text-secondary: #b3b3b3}body{color:var(--text-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[device-type=mobile] body{background-color:var(--card-bg-secondary)!important}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0)}._sidebar_yoln4_1{width:var(--sidebar-width);background-color:var(--surface-bg);position:absolute;top:0;bottom:5px;height:auto;left:5px;border-radius:9px;transition:left .3s;display:flex;flex-direction:column;z-index:999;border:solid 1px var(--border-color);transform:translate(0)}._sidebarCollapsed_yoln4_18{left:calc(-1 * var(--sidebar-width) - 10px)}[device-type=mobile] ._sidebar_yoln4_1._sidebarMobile_yoln4_22{position:absolute;inset:0;width:auto;height:auto;border-radius:0;transition:transform .25s ease;background-color:var(--card-bg)}[device-type=mobile] ._sidebar_yoln4_1._sidebarMobile_yoln4_22._sidebarMobileHidden_yoln4_35{transform:translate(-105%)}._sidebarContent_yoln4_39{height:100%;padding:0 4px;display:flex;flex-direction:column;overflow-y:auto;gap:2px}._sidebarFooter_yoln4_48{padding:4px}._sidebarTitle_azx8n_1{font-size:.8rem;font-weight:600;margin:8px 8px 8px 4px;color:var(--text-secondary)}[device-type=mobile] ._sidebarTitle_azx8n_1{font-size:1.2rem}._sidebarItem_1e3ru_1{padding:6px;transition:background-color .1s;border-radius:8px;color:var(--text-primary);cursor:pointer;display:flex;flex-direction:row;justify-content:start;align-items:center;gap:8px}[device-type=mobile] ._sidebarItem_1e3ru_1{font-size:1.4rem}._sidebarItem_1e3ru_1:hover{background-color:var(--surface-bg-hover)}._sidebarItem_1e3ru_1._selected_1e3ru_22{background-color:var(--surface-bg-active);color:var(--icon-color)}._sidebarMainBtn_65l8c_1{width:calc(100% - 8px);background-color:var(--button-primary-bg);border:none;outline:none;color:var(--text-inverse);border-radius:5px;height:32px;margin:4px;font-weight:600;font-size:.9rem;transition:background-color .2s;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:8px;cursor:pointer}[device-type=mobile] ._sidebarMainBtn_65l8c_1{font-size:1.4rem;height:48px}._sidebarMainBtn_65l8c_1:hover{background-color:var(--button-primary-bg-hover)}._sidebarMainBtn_65l8c_1:active{background-color:var(--button-primary-bg-active)}._popupContainer_vz8rg_1{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--overlay-bg);z-index:9999;display:flex;justify-content:center;align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:1;transition:.2s;pointer-events:auto}._popupClosed_vz8rg_18{opacity:0;pointer-events:none}._popup_vz8rg_1{background-color:var(--card-bg);border-radius:8px;padding:12px;width:300px;height:auto;display:flex;flex-direction:column;justify-content:space-between;gap:12px}._popupIconContainer_vz8rg_35{display:flex;justify-content:center}._popupIcon_vz8rg_35{color:var(--icon-color)}._popupContent_vz8rg_44{display:flex;flex-direction:column;gap:8px}._popupTitle_4z5vb_1{margin:0;text-align:center;font-size:large;font-weight:700}[device-type=mobile] ._popupTitle_4z5vb_1{font-size:1.4rem}._popupDescription_4ewx1_1{text-align:center}[device-type=mobile] ._popupDescription_4ewx1_1{font-size:1.4rem}._popupInput_1b42s_1{width:100%;height:32px;background-color:var(--muted-bg);border:none;border-radius:5px;padding:4px 8px;font-size:1rem;color:var(--text-primary)}[device-type=mobile] ._popupInput_1b42s_1{font-size:1.4rem;height:48px}._popupActions_84v2b_1{display:flex;gap:8px}._popupBtn_ouvtc_1{width:100%;height:32px;border:none;border-radius:5px;font-weight:600;font-size:.9rem;background-color:var(--button-primary-bg);transition:background-color .2s;color:var(--text-inverse);cursor:pointer}[device-type=mobile] ._popupBtn_ouvtc_1{font-size:1.4rem;height:48px}._popupBtn_ouvtc_1:hover{background-color:var(--button-primary-bg-hover)}._popupBtn_ouvtc_1:active{background-color:var(--button-primary-bg-active)}._popupBtn_ouvtc_1._secondary_ouvtc_27{background-color:transparent;color:var(--text-primary);border:solid 1px var(--button-primary-bg);font-weight:400}._popupBtn_ouvtc_1._secondary_ouvtc_27:hover{background-color:var(--button-secondary-bg-hover)}._popupBtn_ouvtc_1._secondary_ouvtc_27:active{background-color:var(--button-secondary-bg-active)}._toolbar_1rbls_1{position:absolute;top:0;left:calc(var(--sidebar-width) + 10px);width:calc(100% - calc(var(--sidebar-width) + 15px));height:32px;display:flex;flex-direction:row;justify-content:space-between;align-items:center;z-index:9999;transition:top .3s,left .3s,width .3s}._toolbarCollapsed_1rbls_18{top:-100%}[device-type=mobile] ._toolbar_1rbls_1{top:5px;height:48px}._toolbarExpanded_1rbls_27{left:5px;width:calc(100% - 10px)}._toolbarTitle_1rbls_32{margin:0;font-size:1rem;font-weight:600}._toolbarActions_1rbls_38{background-color:var(--surface-bg);border-radius:16px;display:flex;flex-direction:row}._toolbarActions_1rbls_38 button{width:32px;height:32px;background-color:transparent;border:none;outline:none;color:var(--icon-color);cursor:pointer}._toolbarTitle_14yia_1{overflow-x:scroll;scrollbar-width:none;-ms-overflow-style:none}._toolbarTitle_14yia_1::-webkit-scrollbar{display:none}[device-type=mobile] ._toolbarTitle_14yia_1{font-size:1.4rem}._toolbarActions_l0jv2_1{background-color:var(--surface-bg);border-radius:16px;display:flex;flex-direction:row}[device-type=mobile] ._toolbarActions_l0jv2_1{border-radius:24px}._toolbarActions_l0jv2_1 button{background-color:transparent}._toolbarBtn_8jy1b_1{width:32px;height:32px;border:none;outline:none;padding:0;display:flex;justify-content:center;align-items:center;background-color:var(--surface-bg);border-radius:16px;color:var(--icon-color);transition:background-color .2s;cursor:pointer}._toolbarBtn_8jy1b_1:hover{background-color:var(--surface-bg-hover)}._toolbarBtn_8jy1b_1:active{background-color:var(--surface-bg-active)}[device-type=mobile] ._toolbarBtn_8jy1b_1{width:48px;height:48px;border-radius:24px}._sidebarIcon_1lib1_1{rotate:0deg;transition:rotate .3s}._sidebarIconExpanded_1lib1_6{rotate:180deg}._content_to68z_1{position:absolute;top:0;left:calc(var(--sidebar-width) + 10px);height:100%;width:calc(100% - calc(var(--sidebar-width) + 15px));transition:left .3s,width .3s;display:flex;flex-direction:column;justify-content:start;align-items:start;overflow:auto;padding-bottom:5px}._contentExpanded_to68z_18{left:5px;width:calc(100% - 10px)}._toolbarPresent_to68z_23{top:37px;height:calc(100% - 37px)}[device-type=mobile] ._content_to68z_1._toolbarPresent_to68z_23{top:58px;height:calc(100% - 58px)}._contentNoMargin_to68z_33{padding:0;left:calc(var(--sidebar-width))}._contentExpanded_to68z_18._contentNoMargin_to68z_33{left:0;width:100%}._contextMenu_vtnpl_1{background-color:var(--surface-bg-active);position:fixed;border-radius:9px;transition:opacity .1s,transform .1s;display:flex;flex-direction:column;z-index:9999;border:solid 1px var(--border-color);transform:scale(.7) translate(var(--tx-start)) translateY(var(--ty-start));opacity:0;visibility:hidden;pointer-events:none;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:4px}._contextMenuOpen_vtnpl_22{visibility:visible;pointer-events:auto;transform:scale(1) translate(0) translateY(0);opacity:1}._listItem_7ga7e_1{padding:10px;transition:background-color .1s;border-radius:8px;color:var(--text-primary);cursor:pointer;display:flex;flex-direction:row;justify-content:start;align-items:center;gap:8px;width:100%}[device-type=mobile] ._listItem_7ga7e_1{font-size:1.4rem}._listItem_7ga7e_1:hover{background-color:var(--surface-bg-hover)}._listItem_7ga7e_1._selected_7ga7e_23{background-color:var(--surface-bg-active)}._emptyView_1synn_1{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;color:var(--text-secondary)}._card_zjz9h_1{background-color:var(--surface-bg);border-radius:9px;display:flex;flex-direction:column;border:solid 1px var(--border-color);padding:14px;margin:0 8px;width:calc(100% - 16px);gap:8px}._textInput_on5q4_1{width:100%;height:32px;background-color:var(--muted-bg);border:none;border-radius:5px;padding:4px 8px;font-size:.9rem;color:var(--text-primary);transition:background-color .2s}._textInput_on5q4_1:focus{outline:none;background-color:var(--surface-bg)}._textInput_on5q4_1:disabled{opacity:.5;cursor:not-allowed}._textInput_on5q4_1::placeholder{color:var(--text-secondary)}[device-type=mobile] ._textInput_on5q4_1{font-size:1.4rem;height:48px}._selectInput_3f04b_1{height:32px;background-color:var(--muted-bg);border:none;border-radius:5px;padding:4px 32px 4px 8px;font-size:.9rem;color:var(--text-primary);cursor:pointer;transition:background-color .2s;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url('data:image/svg+xml;utf8,<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 6L8 10L12 6" stroke="%23666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>');background-repeat:no-repeat;background-position:right 8px center}._selectInput_3f04b_1:hover{background-color:var(--surface-bg-hover)}._selectInput_3f04b_1:focus{outline:none;background-color:var(--surface-bg)}._selectInput_3f04b_1:disabled{opacity:.5;cursor:not-allowed}[device-type=mobile] ._selectInput_3f04b_1{font-size:1.4rem;height:48px}._button_g5rur_1{width:100%;height:32px;border:none;border-radius:5px;font-weight:600;font-size:.9rem;background-color:var(--button-primary-bg);transition:background-color .2s;color:var(--text-inverse);cursor:pointer}[device-type=mobile] ._button_g5rur_1{font-size:1.4rem;height:48px}._button_g5rur_1:hover{background-color:var(--button-primary-bg-hover)}._button_g5rur_1:active{background-color:var(--button-primary-bg-active)}._button_g5rur_1._secondary_g5rur_27{background-color:transparent;color:var(--text-primary);border:solid 1px var(--button-primary-bg);font-weight:400}._button_g5rur_1._secondary_g5rur_27:hover{background-color:var(--button-secondary-bg-hover)}._button_g5rur_1._secondary_g5rur_27:active{background-color:var(--button-secondary-bg-active)}._button_g5rur_1:disabled{background-color:var(--button-disabled-bg);color:var(--text-disabled);cursor:not-allowed;opacity:.6}._balloon_1jdjr_1{position:fixed;z-index:1000;display:flex;flex-direction:column;width:256px;padding:14px;gap:8px;border-radius:9px;background-color:var(--surface-bg);border:solid 1px var(--border-color);align-items:center;box-sizing:border-box;transform-origin:50% calc(100% + 8px);transform:translate(-50%,calc(-100% - 8px)) scale(.1);filter:opacity(0);transition:.3s;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}._balloonOpen_1jdjr_22{transform:translate(-50%,calc(-100% - 8px)) scale(1);filter:opacity(1);pointer-events:auto}._balloon_1jdjr_1:after{content:"";position:absolute;bottom:-6px;left:50%;transform:translate(-50%) rotate(45deg);width:10px;height:10px;background-color:var(--surface-bg);border-right:solid 1px var(--border-color);border-bottom:solid 1px var(--border-color);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}[device-type=mobile] ._balloon_1jdjr_1{font-size:1.4rem}`)),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- import { jsx as o, jsxs as h } from "react/jsx-runtime";
2
+ import { jsx as n, jsxs as h } from "react/jsx-runtime";
3
3
  import { createContext as S, useContext as D, useLayoutEffect as E, useRef as $, forwardRef as x, useEffect as P, useState as j } from "react";
4
4
  import { Menu as A } from "lucide-react";
5
5
  const B = S({ isMobile: !1 }), d = () => D(B);
6
6
  function qt({
7
7
  isMobile: t,
8
8
  sidebar: e,
9
- children: n,
9
+ children: o,
10
10
  accentColor: s = "#0088ff"
11
11
  }) {
12
12
  return E(() => {
13
13
  s && document.documentElement.style.setProperty("--accent", s);
14
- }, [s]), /* @__PURE__ */ o(B.Provider, { value: { isMobile: t }, children: /* @__PURE__ */ h("div", { children: [
15
- /* @__PURE__ */ o("aside", { children: e }),
16
- /* @__PURE__ */ o("main", { children: n })
14
+ }, [s]), /* @__PURE__ */ n(B.Provider, { value: { isMobile: t }, children: /* @__PURE__ */ h("div", { children: [
15
+ /* @__PURE__ */ n("aside", { children: e }),
16
+ /* @__PURE__ */ n("main", { children: o })
17
17
  ] }) });
18
18
  }
19
19
  const R = "_sidebar_yoln4_1", O = "_sidebarCollapsed_yoln4_18", H = "_sidebarMobile_yoln4_22", k = "_sidebarMobileHidden_yoln4_35", V = "_sidebarContent_yoln4_39", W = "_sidebarFooter_yoln4_48", u = {
@@ -24,7 +24,7 @@ const R = "_sidebar_yoln4_1", O = "_sidebarCollapsed_yoln4_18", H = "_sidebarMob
24
24
  sidebarContent: V,
25
25
  sidebarFooter: W
26
26
  };
27
- function Kt({ open: t, footer: e, children: n }) {
27
+ function Kt({ open: t, footer: e, children: o }) {
28
28
  const { isMobile: s } = d();
29
29
  return /* @__PURE__ */ h(
30
30
  "div",
@@ -35,8 +35,8 @@ function Kt({ open: t, footer: e, children: n }) {
35
35
  ${s ? u.sidebarMobile : ""}
36
36
  ${!t && s ? u.sidebarMobileHidden : ""}`,
37
37
  children: [
38
- /* @__PURE__ */ o("div", { className: u.sidebarContent, children: n }),
39
- e && /* @__PURE__ */ o("div", { className: u.sidebarFooter, children: e })
38
+ /* @__PURE__ */ n("div", { className: u.sidebarContent, children: o }),
39
+ e && /* @__PURE__ */ n("div", { className: u.sidebarFooter, children: e })
40
40
  ]
41
41
  }
42
42
  );
@@ -45,7 +45,7 @@ const F = "_sidebarTitle_azx8n_1", L = {
45
45
  sidebarTitle: F
46
46
  };
47
47
  function Gt({ children: t }) {
48
- return /* @__PURE__ */ o("h2", { className: L.sidebarTitle, children: t });
48
+ return /* @__PURE__ */ n("h2", { className: L.sidebarTitle, children: t });
49
49
  }
50
50
  const q = "_sidebarItem_1e3ru_1", K = "_selected_1e3ru_22", M = {
51
51
  sidebarItem: q,
@@ -54,7 +54,7 @@ const q = "_sidebarItem_1e3ru_1", K = "_selected_1e3ru_22", M = {
54
54
  function Jt({
55
55
  onClick: t,
56
56
  onContextMenu: e,
57
- selected: n = !1,
57
+ selected: o = !1,
58
58
  children: s
59
59
  }) {
60
60
  const c = $(null), i = (r) => {
@@ -64,10 +64,10 @@ function Jt({
64
64
  }, l = () => {
65
65
  c.current && clearTimeout(c.current);
66
66
  };
67
- return /* @__PURE__ */ o(
67
+ return /* @__PURE__ */ n(
68
68
  "div",
69
69
  {
70
- className: `${M.sidebarItem} ${n ? M.selected : ""}`,
70
+ className: `${M.sidebarItem} ${o ? M.selected : ""}`,
71
71
  onClick: t,
72
72
  onContextMenu: (r) => {
73
73
  r.preventDefault(), e && e(r);
@@ -83,7 +83,7 @@ const G = "_sidebarMainBtn_65l8c_1", J = {
83
83
  sidebarMainBtn: G
84
84
  };
85
85
  function Qt({ onClick: t, children: e }) {
86
- return /* @__PURE__ */ o("button", { className: J.sidebarMainBtn, onClick: t, children: e });
86
+ return /* @__PURE__ */ n("button", { className: J.sidebarMainBtn, onClick: t, children: e });
87
87
  }
88
88
  const Q = "_popupContainer_vz8rg_1", U = "_popupClosed_vz8rg_18", X = "_popup_vz8rg_1", Y = "_popupContent_vz8rg_44", f = {
89
89
  popupContainer: Q,
@@ -92,11 +92,11 @@ const Q = "_popupContainer_vz8rg_1", U = "_popupClosed_vz8rg_18", X = "_popup_vz
92
92
  popupContent: Y
93
93
  };
94
94
  function Ut({ open: t = !1, children: e }) {
95
- return /* @__PURE__ */ o(
95
+ return /* @__PURE__ */ n(
96
96
  "div",
97
97
  {
98
98
  className: `${f.popupContainer} ${t ? "" : f.popupClosed}`,
99
- children: /* @__PURE__ */ o("div", { className: f.popup, children: /* @__PURE__ */ o("div", { className: f.popupContent, children: e }) })
99
+ children: /* @__PURE__ */ n("div", { className: f.popup, children: /* @__PURE__ */ n("div", { className: f.popupContent, children: e }) })
100
100
  }
101
101
  );
102
102
  }
@@ -104,22 +104,22 @@ const Z = "_popupTitle_4z5vb_1", tt = {
104
104
  popupTitle: Z
105
105
  };
106
106
  function Xt({ children: t }) {
107
- return /* @__PURE__ */ o("span", { className: tt.popupTitle, children: t });
107
+ return /* @__PURE__ */ n("span", { className: tt.popupTitle, children: t });
108
108
  }
109
- const et = "_popupDescription_4ewx1_1", nt = {
109
+ const et = "_popupDescription_4ewx1_1", ot = {
110
110
  popupDescription: et
111
111
  };
112
112
  function Yt({ children: t }) {
113
- return /* @__PURE__ */ o("span", { className: nt.popupDescription, children: t });
113
+ return /* @__PURE__ */ n("span", { className: ot.popupDescription, children: t });
114
114
  }
115
- const ot = "_popupInput_1b42s_1", st = {
116
- popupInput: ot
115
+ const nt = "_popupInput_1b42s_1", st = {
116
+ popupInput: nt
117
117
  }, Zt = x(
118
- ({ placeholder: t = "Enter text...", value: e, onChange: n, onSubmit: s, autoFocus: c }, i) => {
118
+ ({ placeholder: t = "Enter text...", value: e, onChange: o, onSubmit: s, autoFocus: c }, i) => {
119
119
  const l = $(null), r = i || l;
120
120
  return P(() => {
121
121
  c && r.current && r.current.focus();
122
- }, [c, r]), /* @__PURE__ */ o(
122
+ }, [c, r]), /* @__PURE__ */ n(
123
123
  "input",
124
124
  {
125
125
  ref: r,
@@ -127,7 +127,7 @@ const ot = "_popupInput_1b42s_1", st = {
127
127
  className: st.popupInput,
128
128
  placeholder: t,
129
129
  value: e,
130
- onChange: (a) => n?.(a.target.value),
130
+ onChange: (a) => o?.(a.target.value),
131
131
  onKeyDown: (a) => {
132
132
  a.key === "Enter" && s && s(e || "");
133
133
  }
@@ -141,7 +141,7 @@ function te({
141
141
  orientation: t = "vertical",
142
142
  children: e
143
143
  }) {
144
- return /* @__PURE__ */ o(
144
+ return /* @__PURE__ */ n(
145
145
  "div",
146
146
  {
147
147
  className: ct.popupActions,
@@ -159,14 +159,14 @@ const it = "_popupBtn_ouvtc_1", lt = "_secondary_ouvtc_27", T = {
159
159
  function ee({
160
160
  type: t = "primary",
161
161
  onClick: e,
162
- children: n
162
+ children: o
163
163
  }) {
164
- return /* @__PURE__ */ o(
164
+ return /* @__PURE__ */ n(
165
165
  "button",
166
166
  {
167
167
  className: `${T.popupBtn} ${t == "secondary" ? T.secondary : ""}`,
168
168
  onClick: e,
169
- children: n
169
+ children: o
170
170
  }
171
171
  );
172
172
  }
@@ -175,41 +175,41 @@ const at = "_toolbar_1rbls_1", pt = "_toolbarCollapsed_1rbls_18", ut = "_toolbar
175
175
  toolbarCollapsed: pt,
176
176
  toolbarExpanded: ut
177
177
  };
178
- function ne({
178
+ function oe({
179
179
  expanded: t = !0,
180
180
  collapsed: e = !1,
181
- children: n
181
+ children: o
182
182
  }) {
183
183
  const { isMobile: s } = d();
184
- return /* @__PURE__ */ o(
184
+ return /* @__PURE__ */ n(
185
185
  "div",
186
186
  {
187
187
  className: `${m.toolbar} ${t || s ? m.toolbarExpanded : ""} ${s ? m.toolbarMobile : ""} ${e ? m.toolbarCollapsed : ""}`,
188
- children: n
188
+ children: o
189
189
  }
190
190
  );
191
191
  }
192
- const dt = "_toolbarTitle_14yia_1", _t = {
192
+ const dt = "_toolbarTitle_14yia_1", bt = {
193
193
  toolbarTitle: dt
194
194
  };
195
- function oe({ children: t }) {
196
- return /* @__PURE__ */ o("h3", { className: _t.toolbarTitle, children: t });
195
+ function ne({ children: t }) {
196
+ return /* @__PURE__ */ n("h3", { className: bt.toolbarTitle, children: t });
197
197
  }
198
- const bt = "_toolbarActions_l0jv2_1", ft = {
199
- toolbarActions: bt
198
+ const _t = "_toolbarActions_l0jv2_1", ft = {
199
+ toolbarActions: _t
200
200
  };
201
201
  function se({ children: t }) {
202
- return /* @__PURE__ */ o("div", { className: ft.toolbarActions, children: t });
202
+ return /* @__PURE__ */ n("div", { className: ft.toolbarActions, children: t });
203
203
  }
204
204
  const mt = "_toolbarBtn_8jy1b_1", yt = {
205
205
  toolbarBtn: mt
206
206
  };
207
207
  function $t({ onClick: t, children: e }) {
208
- return /* @__PURE__ */ o(
208
+ return /* @__PURE__ */ n(
209
209
  "button",
210
210
  {
211
- onClick: (n) => {
212
- n.preventDefault(), t && t(n);
211
+ onClick: (o) => {
212
+ o.preventDefault(), t && t(o);
213
213
  },
214
214
  className: yt.toolbarBtn,
215
215
  children: e
@@ -224,11 +224,11 @@ function re({
224
224
  onToggleSidebar: t,
225
225
  expanded: e = !1
226
226
  }) {
227
- const { isMobile: n } = d();
228
- return /* @__PURE__ */ o($t, { onClick: t, children: /* @__PURE__ */ o(
227
+ const { isMobile: o } = d();
228
+ return /* @__PURE__ */ n($t, { onClick: t, children: /* @__PURE__ */ n(
229
229
  A,
230
230
  {
231
- size: n ? 24 : 18,
231
+ size: o ? 24 : 18,
232
232
  className: `${I.sidebarIcon} ${e ? I.sidebarIconExpanded : ""}`
233
233
  }
234
234
  ) });
@@ -242,13 +242,13 @@ const xt = "_content_to68z_1", Mt = "_contentExpanded_to68z_18", Tt = "_toolbarP
242
242
  function ce({
243
243
  expanded: t = !0,
244
244
  toolbar: e = !0,
245
- margin: n = "default",
245
+ margin: o = "default",
246
246
  children: s
247
247
  }) {
248
- return /* @__PURE__ */ o(
248
+ return /* @__PURE__ */ n(
249
249
  "div",
250
250
  {
251
- className: `${y.content} ${t ? y.contentExpanded : ""} ${e ? y.toolbarPresent : ""} ${n === "none" ? y.contentNoMargin : ""}`,
251
+ className: `${y.content} ${t ? y.contentExpanded : ""} ${e ? y.toolbarPresent : ""} ${o === "none" ? y.contentNoMargin : ""}`,
252
252
  children: s
253
253
  }
254
254
  );
@@ -257,24 +257,35 @@ const Nt = "_contextMenu_vtnpl_1", Ct = "_contextMenuOpen_vtnpl_22", v = {
257
257
  contextMenu: Nt,
258
258
  contextMenuOpen: Ct
259
259
  };
260
- function ie({ open: t, x: e, y: n, children: s }) {
261
- const { isMobile: c } = d(), i = $(null), [l, r] = j({ top: 0, left: 0 });
260
+ function ie({
261
+ open: t,
262
+ x: e = 20,
263
+ y: o = 20,
264
+ children: s
265
+ }) {
266
+ const { isMobile: c } = d(), i = $(null), [l, r] = j({ top: o, left: e });
262
267
  E(() => {
263
268
  if (t && i.current) {
264
269
  const p = i.current.getBoundingClientRect(), w = window.innerWidth, z = window.innerHeight;
265
- let _ = e, b = n;
266
- e + p.width > w && (_ = e - p.width), n + p.height > z && (b = n - p.height), _ = Math.max(5, _), b = Math.max(5, b), r({ top: b, left: _ });
270
+ let b = e, _ = o;
271
+ e + p.width > w && (b = e - p.width), o + p.height > z && (_ = o - p.height), b = Math.max(5, b), _ = Math.max(5, _), r({ top: _, left: b });
267
272
  }
268
- }, [t, e, n]);
273
+ }, [t, e, o]);
269
274
  const a = {
275
+ // Using 'fixed' ensures that x/y relative to the viewport works
276
+ // regardless of parent positioning context.
277
+ position: "fixed",
270
278
  top: `${l.top}px`,
271
279
  left: `${l.left}px`,
272
- position: "fixed",
273
- // Fixed is usually safer for global context menus
280
+ // Resetting these to ensure they don't interfere if coming from CSS
281
+ bottom: "auto",
282
+ right: "auto",
283
+ // Use visibility to prevent layout shifts while measuring
274
284
  visibility: t ? "visible" : "hidden",
275
- opacity: t ? 1 : 0
285
+ opacity: t ? 1 : 0,
286
+ pointerEvents: t ? "all" : "none"
276
287
  };
277
- return /* @__PURE__ */ o(
288
+ return /* @__PURE__ */ n(
278
289
  "div",
279
290
  {
280
291
  ref: i,
@@ -295,7 +306,7 @@ const gt = "_listItem_7ga7e_1", Et = "_selected_7ga7e_23", N = {
295
306
  function le({
296
307
  onClick: t,
297
308
  onContextMenu: e,
298
- selected: n = !1,
309
+ selected: o = !1,
299
310
  children: s
300
311
  }) {
301
312
  const c = $(null), i = (r) => {
@@ -305,10 +316,10 @@ function le({
305
316
  }, l = () => {
306
317
  c.current && clearTimeout(c.current);
307
318
  };
308
- return /* @__PURE__ */ o(
319
+ return /* @__PURE__ */ n(
309
320
  "div",
310
321
  {
311
- className: `${N.listItem} ${n ? N.selected : ""}`,
322
+ className: `${N.listItem} ${o ? N.selected : ""}`,
312
323
  onClick: t,
313
324
  onContextMenu: (r) => {
314
325
  r.preventDefault(), e && e(r);
@@ -323,18 +334,18 @@ function le({
323
334
  function Bt({
324
335
  icon: t,
325
336
  size: e = "default",
326
- color: n = "default",
337
+ color: o = "default",
327
338
  className: s
328
339
  }) {
329
- const { isMobile: c } = d(), i = e === "default" ? c ? 24 : 18 : e, l = n === "selected" ? "var(--icon-color)" : n;
330
- return n === "default" ? /* @__PURE__ */ o(
340
+ const { isMobile: c } = d(), i = e === "default" ? c ? 24 : 18 : e, l = o === "selected" ? "var(--icon-color)" : o;
341
+ return o === "default" ? /* @__PURE__ */ n(
331
342
  t,
332
343
  {
333
344
  size: i,
334
345
  className: s,
335
346
  strokeWidth: c ? 2.5 : 2
336
347
  }
337
- ) : /* @__PURE__ */ o(
348
+ ) : /* @__PURE__ */ n(
338
349
  t,
339
350
  {
340
351
  size: i,
@@ -348,17 +359,17 @@ const wt = "_emptyView_1synn_1", zt = {
348
359
  emptyView: wt
349
360
  };
350
361
  function ae({ icon: t, label: e }) {
351
- const { isMobile: n } = d(), s = n ? 64 : 48;
362
+ const { isMobile: o } = d(), s = o ? 64 : 48;
352
363
  return /* @__PURE__ */ h("div", { className: zt.emptyView, children: [
353
- /* @__PURE__ */ o(Bt, { icon: t, size: s, color: "var(--text-secondary)" }),
354
- /* @__PURE__ */ o("h2", { children: e })
364
+ /* @__PURE__ */ n(Bt, { icon: t, size: s, color: "var(--text-secondary)" }),
365
+ /* @__PURE__ */ n("h2", { children: e })
355
366
  ] });
356
367
  }
357
368
  const St = "_card_zjz9h_1", Dt = {
358
369
  card: St
359
370
  };
360
371
  function pe({ children: t }) {
361
- return /* @__PURE__ */ o("div", { className: Dt.card, children: t });
372
+ return /* @__PURE__ */ n("div", { className: Dt.card, children: t });
362
373
  }
363
374
  const Pt = "_textInput_on5q4_1", jt = {
364
375
  textInput: Pt
@@ -366,13 +377,13 @@ const Pt = "_textInput_on5q4_1", jt = {
366
377
  ({
367
378
  placeholder: t,
368
379
  value: e,
369
- onChange: n,
380
+ onChange: o,
370
381
  onFocus: s,
371
382
  onBlur: c,
372
383
  disabled: i = !1,
373
384
  type: l = "text",
374
385
  className: r
375
- }, a) => /* @__PURE__ */ o(
386
+ }, a) => /* @__PURE__ */ n(
376
387
  "input",
377
388
  {
378
389
  ref: a,
@@ -380,7 +391,7 @@ const Pt = "_textInput_on5q4_1", jt = {
380
391
  className: `${jt.textInput} ${r || ""}`,
381
392
  placeholder: t,
382
393
  value: e,
383
- onChange: (p) => n?.(p.target.value),
394
+ onChange: (p) => o?.(p.target.value),
384
395
  onFocus: s,
385
396
  onBlur: c,
386
397
  disabled: i
@@ -389,12 +400,12 @@ const Pt = "_textInput_on5q4_1", jt = {
389
400
  ), At = "_selectInput_3f04b_1", Rt = {
390
401
  selectInput: At
391
402
  }, de = x(
392
- ({ className: t, children: e, ...n }, s) => /* @__PURE__ */ o(
403
+ ({ className: t, children: e, ...o }, s) => /* @__PURE__ */ n(
393
404
  "select",
394
405
  {
395
406
  ref: s,
396
407
  className: `${Rt.selectInput} ${t || ""}`,
397
- ...n,
408
+ ...o,
398
409
  children: e
399
410
  }
400
411
  )
@@ -402,18 +413,18 @@ const Pt = "_textInput_on5q4_1", jt = {
402
413
  button: Ot,
403
414
  secondary: Ht
404
415
  };
405
- function _e({
416
+ function be({
406
417
  disabled: t = !1,
407
418
  type: e = "primary",
408
- onClick: n,
419
+ onClick: o,
409
420
  children: s,
410
421
  style: c
411
422
  }) {
412
- return /* @__PURE__ */ o(
423
+ return /* @__PURE__ */ n(
413
424
  "button",
414
425
  {
415
426
  className: `${C.button} ${e == "secondary" ? C.secondary : ""}`,
416
- onClick: n,
427
+ onClick: o,
417
428
  disabled: t,
418
429
  style: c,
419
430
  children: s
@@ -424,23 +435,23 @@ const kt = "_balloon_1jdjr_1", Vt = "_balloonOpen_1jdjr_22", g = {
424
435
  balloon: kt,
425
436
  balloonOpen: Vt
426
437
  };
427
- function be({
438
+ function _e({
428
439
  open: t,
429
440
  x: e,
430
- y: n,
441
+ y: o,
431
442
  children: s,
432
443
  className: c,
433
444
  style: i,
434
445
  ...l
435
446
  }) {
436
447
  const r = {};
437
- typeof e == "number" && (r.left = e), typeof n == "number" && (r.top = n);
448
+ typeof e == "number" && (r.left = e), typeof o == "number" && (r.top = o);
438
449
  const a = [
439
450
  g.balloon,
440
451
  t ? g.balloonOpen : "",
441
452
  c ?? ""
442
453
  ].filter(Boolean).join(" ");
443
- return /* @__PURE__ */ o(
454
+ return /* @__PURE__ */ n(
444
455
  "div",
445
456
  {
446
457
  ...l,
@@ -452,8 +463,8 @@ function be({
452
463
  }
453
464
  export {
454
465
  qt as AppShell,
455
- be as Balloon,
456
- _e as Button,
466
+ _e as Balloon,
467
+ be as Button,
457
468
  pe as Card,
458
469
  ce as Content,
459
470
  ie as ContextMenu,
@@ -472,9 +483,9 @@ export {
472
483
  Jt as SidebarItem,
473
484
  Gt as SidebarTitle,
474
485
  ue as TextInput,
475
- ne as Toolbar,
486
+ oe as Toolbar,
476
487
  se as ToolbarActions,
477
488
  $t as ToolbarButton,
478
489
  re as ToolbarExpandSidebarButton,
479
- oe as ToolbarTitle
490
+ ne as ToolbarTitle
480
491
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htmlos-next/ui",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
5
  "main": "./dist/htmlos-ui.cjs",
6
6
  "module": "./dist/htmlos-ui.js",