import{a as c,j as o}from"./vendor-react-YMhRUmcb.js";import{d as b}from"./index-D2uzyr9g.js";function j({trigger:p,children:x,align:h="left",className:k,open:f,defaultOpen:v=!1,onOpenChange:d}){const[E,g]=c.useState(v),l=f!==void 0,r=l?f:E,i=c.useRef(null),u=c.useRef(null),m=c.useRef(null),t=c.useRef(-1),a=c.useCallback(e=>{l||g(e),d?.(e),e||(t.current=-1)},[d,l]);c.useEffect(()=>{if(!r)return;const e=s=>{i.current&&!i.current.contains(s.target)&&a(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[r,a]),c.useEffect(()=>{if(!r)return;const e=s=>{if(!u.current)return;const D=u.current.querySelectorAll('button, [href], input, select, textarea, [role="menuitem"], [tabindex]:not([tabindex="-1"])'),n=Array.from(D);switch(s.key){case"Escape":s.preventDefault(),a(!1),m.current?.focus();break;case"ArrowDown":s.preventDefault(),t.current=t.current0?t.current-1:n.length-1,n[t.current]?.focus();break;case"Enter":case" ":s.preventDefault(),t.current>=0&&n[t.current]&&n[t.current].click();break;case"Home":s.preventDefault(),t.current=0,n[0]?.focus();break;case"End":s.preventDefault(),t.current=n.length-1,n[n.length-1]?.focus();break}};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[r,a]),c.useEffect(()=>{if(r&&u.current){const e=u.current.querySelectorAll('button, [href], input, select, textarea, [role="menuitem"], [tabindex]:not([tabindex="-1"])');e.length>0&&(t.current=0,setTimeout(()=>{e[0]?.focus()},0))}},[r]);const w={left:"left-0",right:"right-0",center:"left-1/2 -translate-x-1/2"};return o.jsxs("div",{ref:i,className:b("relative",k),children:[o.jsx("div",{ref:m,onClick:()=>a(!r),role:"button","aria-haspopup":"true","aria-expanded":r,tabIndex:0,onKeyDown:e=>{e.key==="Enter"||e.key===" "?(e.preventDefault(),a(!r)):e.key==="ArrowDown"&&(e.preventDefault(),a(!0))},style:{display:"inline-block"},children:p}),r&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"fixed inset-0 z-40",onClick:()=>a(!1),"aria-hidden":"true"}),o.jsx("div",{ref:u,className:b("absolute z-50 mt-2 min-w-[8rem] bg-card border border-border rounded-xl shadow-lg","overflow-hidden",w[h]),role:"menu","aria-orientation":"vertical",children:x})]})]})}export{j as D};