從 local-tool 複製出獨立的「visionA Agent」桌面應用(A3 純橋樑: tunnel client + 配對 UI + 設定,不開 HTTP port、不做本機裝置/推論 UI)。 Bundle ID 與 local-tool 不同(com.innovedus.visiona-agent vs visiona-local), 雙 app 可共存。fork 後不主動 sync,需要時手動 cherry-pick。 Backend / Wails Go(AB1-AB13): - internal/tunnel:6 狀態機(Idle/Connecting/Connected/Reconnecting/Failed/Stopped) + Pair/Unpair/Reconnect/Disconnect binding + ClientHooks event - internal/auth:encrypted file token store(AES-GCM + scrypt + machineID fallback salt + 13 tests) - internal/config:YAML validation + atomic write + 11 tests - internal/log:ring buffer + ExportLog 升級 zip - visionA-backend /api/pairing/exchange:SessionTokenStore + 17 new tests - 三平台 build 驗證(macOS DMG 160 MB / Windows EXE / Linux AppImage) - end-to-end 5 milestone 全綠(pairing → tunnel → forward → reuse 防護 → tunnel drop failover) Frontend / Next.js(AF1-AF7,沿用 visionA-frontend 基礎): - AppShell + Header + TabNav(StatusView / PairView / SettingsView 三 tab) - ConnectionStatusBadge 5 種狀態 - TokenInput regex 驗證 + 7 種錯誤 + 0.5s auto-switch 到狀態頁 - 設定頁 4 區塊(含重新配對 AlertDialog) - agent-api.ts 封裝 Wails bindings(mock/real 雙實作)+ 90 tests Phase 0.7 review-driven fix(Round 2): - A1 Session fixation 防護(RotateSessionID) - A3 mock pairing 預設改 false(必須明確 opt-in)+ startup log - A4 Pair 失敗後 state 清理矩陣(exchange/Save/Start fail 各自終態) - A5 Pair/Unpair/Reconnect lifecycleMu + 50 goroutine race test - F1 重新配對次按鈕 / F2 PairView Esc cancel / F3 Wails BrowserOpenURL / F4 Settings draft 持久 + 未儲存 badge 驗證:agent backend go test -race -count=3 ./... 4 packages 全綠 / agent frontend pnpm test 119 tests 全綠 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 lines
122 KiB
JavaScript
11 lines
122 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,52683,e=>{"use strict";let t;var r,n,a,o,i,s,l,c=e.i(98134),d=e.i(75201),u=e.i(3790);let f=(0,u.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),p=(0,u.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),v=(0,u.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var h=e.i(42092),m=e.i(7284);let g=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,x=m.clsx,b=(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return x(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:a,defaultVariants:o}=t,i=Object.keys(a).map(e=>{let t=null==r?void 0:r[e],n=null==o?void 0:o[e];if(null===t)return null;let i=g(t)||g(n);return a[e][i]}),s=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return x(e,i,null==t||null==(n=t.compoundVariants)?void 0:n.reduce((e,t)=>{let{class:r,className:n,...a}=t;return Object.entries(a).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...s}[t]):({...o,...s})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)};var y=e.i(97245),y=y,w=e.i(75157);let j=b("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function S({className:e,variant:t="default",size:r="default",asChild:n=!1,...a}){let o=n?y.Root:"button";return(0,c.jsx)(o,{"data-slot":"button","data-variant":t,"data-size":r,className:(0,w.cn)(j({variant:t,size:r,className:e})),...a})}var C=e.i(46798),k=e.i(44674),E=e.i(6901),R=e.i(84344),R=R,N=e.i(84086),N=N;let T=(0,u.default)("power-off",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),A=(0,u.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]),P=(0,u.default)("unlink",[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]),I={online:{i18nKey:"connection.online",Icon:N.default,dotClass:"bg-status-online"},offline:{i18nKey:"connection.offline",Icon:T,dotClass:"bg-status-offline"},reconnecting:{i18nKey:"connection.reconnecting",Icon:A,dotClass:"bg-status-reconnecting motion-safe:animate-pulse",animate:!0,iconAnimate:!0},"not-paired":{i18nKey:"connection.notPaired",Icon:P,dotClass:"bg-status-idle"},error:{i18nKey:"connection.error",Icon:R.default,dotClass:"bg-status-error"}};function D({status:e="not-paired",className:t}){let r=(0,k.useT)(),n=I[e],a=r(n.i18nKey);return(0,c.jsxs)("span",{role:"status","aria-live":"polite","aria-label":a,"data-testid":"connection-status-badge","data-status":e,className:(0,w.cn)("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium","border-border bg-card text-foreground/80",t),children:[(0,c.jsx)("span",{"aria-hidden":"true",className:(0,w.cn)("inline-block size-2 shrink-0 rounded-full",n.dotClass)}),(0,c.jsx)(n.Icon,{"aria-hidden":"true",className:(0,w.cn)("size-3.5 shrink-0",n.iconAnimate&&"motion-safe:animate-spin")}),(0,c.jsx)("span",{children:a})]})}function L(){let e=(0,k.useT)();return(0,c.jsxs)("header",{"data-slot":"header",className:(0,w.cn)("flex h-14 shrink-0 items-center gap-3 border-b px-4","bg-sidebar text-sidebar-foreground border-sidebar-border"),children:[(0,c.jsxs)("div",{className:"flex items-center gap-2","aria-label":e("app.title"),children:[(0,c.jsx)("span",{"aria-hidden":"true",className:"bg-primary text-primary-foreground grid size-7 place-items-center rounded-md text-xs font-bold",children:"vA"}),(0,c.jsx)("span",{className:"text-sm font-semibold",children:e("app.title")})]}),(0,c.jsx)("div",{className:"flex-1"}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(D,{}),(0,c.jsx)(z,{}),(0,c.jsx)(_,{})]})]})}function z(){let{locale:e,setLocale:t}=(0,k.useLocale)(),r=(0,k.useT)();return(0,c.jsxs)(C.Tooltip,{children:[(0,c.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,c.jsx)(S,{variant:"ghost",size:"icon-sm","aria-label":r("header.toggleLocale"),onClick:function(){let r=E.SUPPORTED_LOCALES.indexOf(e);t(E.SUPPORTED_LOCALES[(r+1)%E.SUPPORTED_LOCALES.length])},"data-testid":"locale-toggle",children:(0,c.jsx)(f,{className:"size-4","aria-hidden":"true"})})}),(0,c.jsxs)(C.TooltipContent,{side:"bottom",children:[r("header.toggleLocale")," · ",e]})]})}function _(){let{theme:e,setTheme:t,resolvedTheme:r}=(0,h.useTheme)(),n=(0,k.useT)();return(0,c.jsxs)(C.Tooltip,{children:[(0,c.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,c.jsx)(S,{variant:"ghost",size:"icon-sm","aria-label":n("header.toggleTheme"),onClick:function(){"dark"===r?t("light"):t("dark")},"data-testid":"theme-toggle",children:"dark"===e||"dark"===r?(0,c.jsx)(p,{className:"size-4","aria-hidden":"true"}):(0,c.jsx)(v,{className:"size-4","aria-hidden":"true"})})}),(0,c.jsx)(C.TooltipContent,{side:"bottom",children:n("header.toggleTheme")})]})}function M({children:e}){return(0,c.jsxs)("div",{className:"flex min-h-dvh flex-col","data-testid":"agent-app-shell",children:[(0,c.jsx)(L,{}),(0,c.jsx)("main",{className:"flex-1 min-w-0 overflow-y-auto",children:e})]})}var O=e.i(91967),H=e.i(38082),F=e.i(50888),U=y;function K(e){let t=e+"CollectionProvider",[r,n]=(0,H.createContextScope)(t),[a,o]=r(t,{collectionRef:{current:null},itemMap:new Map}),i=e=>{let{scope:t,children:r}=e,n=d.default.useRef(null),o=d.default.useRef(new Map).current;return(0,c.jsx)(a,{scope:t,itemMap:o,collectionRef:n,children:r})};i.displayName=t;let s=e+"CollectionSlot",l=(0,U.createSlot)(s),u=d.default.forwardRef((e,t)=>{let{scope:r,children:n}=e,a=o(s,r),i=(0,F.useComposedRefs)(t,a.collectionRef);return(0,c.jsx)(l,{ref:i,children:n})});u.displayName=s;let f=e+"CollectionItemSlot",p="data-radix-collection-item",v=(0,U.createSlot)(f),h=d.default.forwardRef((e,t)=>{let{scope:r,children:n,...a}=e,i=d.default.useRef(null),s=(0,F.useComposedRefs)(t,i),l=o(f,r);return d.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...a}),()=>void l.itemMap.delete(i))),(0,c.jsx)(v,{...{[p]:""},ref:s,children:n})});return h.displayName=f,[{Provider:i,Slot:u,ItemSlot:h},function(t){let r=o(e+"CollectionConsumer",t);return d.default.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${p}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}var B=new WeakMap;function W(e,t){var r,n;let a,o,i;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let s=(r=e,n=t,a=r.length,(i=(o=V(n))>=0?o:a+o)<0||i>=a?-1:i);return -1===s?void 0:e[s]}function V(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],B.set(this,!0)}set(e,t){return B.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,r){let n,a=this.has(t),o=this.#e.length,i=V(e),s=i>=0?i:o+i,l=s<0||s>=o?-1:s;if(l===this.size||a&&l===this.size-1||-1===l)return this.set(t,r),this;let c=this.size+ +!a;i<0&&s++;let d=[...this.#e],u=!1;for(let e=s;e<c;e++)if(s===e){let o=d[e];d[e]===t&&(o=d[e+1]),a&&this.delete(t),n=this.get(o),this.set(t,r)}else{u||d[e-1]!==t||(u=!0);let r=d[u?e:e-1],a=n;n=this.get(r),this.delete(r),this.set(r,a)}return this}with(t,r,n){let a=new e(this);return a.insert(t,r,n),a}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n,t,r)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n+1,t,r)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=W(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=W(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return W(this.#e,e)}from(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.at(n)}keyFrom(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.keyAt(n)}find(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return n;r++}}findIndex(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return r;r++}return -1}filter(t,r){let n=[],a=0;for(let e of this)Reflect.apply(t,r,[e,a,this])&&n.push(e),a++;return new e(n)}map(t,r){let n=[],a=0;for(let e of this)n.push([e[0],Reflect.apply(t,r,[e,a,this])]),a++;return new e(n)}reduce(...e){let[t,r]=e,n=0,a=r??this.at(0);for(let r of this)a=0===n&&1===e.length?r:Reflect.apply(t,this,[a,r,n,this]),n++;return a}reduceRight(...e){let[t,r]=e,n=r??this.at(-1);for(let r=this.size-1;r>=0;r--){let a=this.at(r);n=r===this.size-1&&1===e.length?a:Reflect.apply(t,this,[n,a,r,this])}return n}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let r=this.keyAt(e),n=this.get(r);t.set(r,n)}return t}toSpliced(...t){let r=[...this.entries()];return r.splice(...t),new e(r)}slice(t,r){let n=new e,a=this.size-1;if(void 0===t)return n;t<0&&(t+=this.size),void 0!==r&&r>0&&(a=r-1);for(let e=t;e<=a;e++){let t=this.keyAt(e),r=this.get(t);n.set(t,r)}return n}every(e,t){let r=0;for(let n of this){if(!Reflect.apply(e,t,[n,r,this]))return!1;r++}return!0}some(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return!0;r++}return!1}});var $=e.i(54041),q=e.i(85381),Y=e.i(84080),X=e.i(38185),G=d.createContext(void 0);function Z(e){let t=d.useContext(G);return e||t||"ltr"}var J="rovingFocusGroup.onEntryFocus",Q={bubbles:!1,cancelable:!0},ee="RovingFocusGroup",[et,er,en]=K(ee),[ea,eo]=(0,H.createContextScope)(ee,[en]),[ei,es]=ea(ee),el=d.forwardRef((e,t)=>(0,c.jsx)(et.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,c.jsx)(et.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,c.jsx)(ec,{...e,ref:t})})}));el.displayName=ee;var ec=d.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:a=!1,dir:o,currentTabStopId:i,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:f=!1,...p}=e,v=d.useRef(null),h=(0,F.useComposedRefs)(t,v),m=Z(o),[g,x]=(0,X.useControllableState)({prop:i,defaultProp:s??null,onChange:l,caller:ee}),[b,y]=d.useState(!1),w=(0,Y.useCallbackRef)(u),j=er(r),S=d.useRef(!1),[C,k]=d.useState(0);return d.useEffect(()=>{let e=v.current;if(e)return e.addEventListener(J,w),()=>e.removeEventListener(J,w)},[w]),(0,c.jsx)(ei,{scope:r,orientation:n,dir:m,loop:a,currentTabStopId:g,onItemFocus:d.useCallback(e=>x(e),[x]),onItemShiftTab:d.useCallback(()=>y(!0),[]),onFocusableItemAdd:d.useCallback(()=>k(e=>e+1),[]),onFocusableItemRemove:d.useCallback(()=>k(e=>e-1),[]),children:(0,c.jsx)(q.Primitive.div,{tabIndex:b||0===C?-1:0,"data-orientation":n,...p,ref:h,style:{outline:"none",...e.style},onMouseDown:(0,O.composeEventHandlers)(e.onMouseDown,()=>{S.current=!0}),onFocus:(0,O.composeEventHandlers)(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!b){let t=new CustomEvent(J,Q);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=j().filter(e=>e.focusable);ep([e.find(e=>e.active),e.find(e=>e.id===g),...e].filter(Boolean).map(e=>e.ref.current),f)}}S.current=!1}),onBlur:(0,O.composeEventHandlers)(e.onBlur,()=>y(!1))})})}),ed="RovingFocusGroupItem",eu=d.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:a=!1,tabStopId:o,children:i,...s}=e,l=(0,$.useId)(),u=o||l,f=es(ed,r),p=f.currentTabStopId===u,v=er(r),{onFocusableItemAdd:h,onFocusableItemRemove:m,currentTabStopId:g}=f;return d.useEffect(()=>{if(n)return h(),()=>m()},[n,h,m]),(0,c.jsx)(et.ItemSlot,{scope:r,id:u,focusable:n,active:a,children:(0,c.jsx)(q.Primitive.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...s,ref:t,onMouseDown:(0,O.composeEventHandlers)(e.onMouseDown,e=>{n?f.onItemFocus(u):e.preventDefault()}),onFocus:(0,O.composeEventHandlers)(e.onFocus,()=>f.onItemFocus(u)),onKeyDown:(0,O.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void f.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let a=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(a))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(a)))return ef[a]}(e,f.orientation,f.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let a=v().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)a.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&a.reverse();let o=a.indexOf(e.currentTarget);a=f.loop?(r=a,n=o+1,r.map((e,t)=>r[(n+t)%r.length])):a.slice(o+1)}setTimeout(()=>ep(a))}}),children:"function"==typeof i?i({isCurrentTabStop:p,hasTabStop:null!=g}):i})})});eu.displayName=ed;var ef={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ep(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var ev=e.i(69060),eh="Tabs",[em,eg]=(0,H.createContextScope)(eh,[eo]),ex=eo(),[eb,ey]=em(eh),ew=d.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:a,defaultValue:o,orientation:i="horizontal",dir:s,activationMode:l="automatic",...d}=e,u=Z(s),[f,p]=(0,X.useControllableState)({prop:n,onChange:a,defaultProp:o??"",caller:eh});return(0,c.jsx)(eb,{scope:r,baseId:(0,$.useId)(),value:f,onValueChange:p,orientation:i,dir:u,activationMode:l,children:(0,c.jsx)(q.Primitive.div,{dir:u,"data-orientation":i,...d,ref:t})})});ew.displayName=eh;var ej="TabsList",eS=d.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...a}=e,o=ey(ej,r),i=ex(r);return(0,c.jsx)(el,{asChild:!0,...i,orientation:o.orientation,dir:o.dir,loop:n,children:(0,c.jsx)(q.Primitive.div,{role:"tablist","aria-orientation":o.orientation,...a,ref:t})})});eS.displayName=ej;var eC="TabsTrigger",ek=d.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:a=!1,...o}=e,i=ey(eC,r),s=ex(r),l=eN(i.baseId,n),d=eT(i.baseId,n),u=n===i.value;return(0,c.jsx)(eu,{asChild:!0,...s,focusable:!a,active:u,children:(0,c.jsx)(q.Primitive.button,{type:"button",role:"tab","aria-selected":u,"aria-controls":d,"data-state":u?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:l,...o,ref:t,onMouseDown:(0,O.composeEventHandlers)(e.onMouseDown,e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():i.onValueChange(n)}),onKeyDown:(0,O.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&i.onValueChange(n)}),onFocus:(0,O.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==i.activationMode;u||a||!e||i.onValueChange(n)})})})});ek.displayName=eC;var eE="TabsContent",eR=d.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,forceMount:a,children:o,...i}=e,s=ey(eE,r),l=eN(s.baseId,n),u=eT(s.baseId,n),f=n===s.value,p=d.useRef(f);return d.useEffect(()=>{let e=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,c.jsx)(ev.Presence,{present:a||f,children:({present:r})=>(0,c.jsx)(q.Primitive.div,{"data-state":f?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":l,hidden:!r,id:u,tabIndex:0,...i,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:r&&o})})});function eN(e,t){return`${e}-trigger-${t}`}function eT(e,t){return`${e}-content-${t}`}eR.displayName=eE,e.s(["Content",()=>eR,"List",()=>eS,"Root",()=>ew,"Tabs",()=>ew,"TabsContent",()=>eR,"TabsList",()=>eS,"TabsTrigger",()=>ek,"Trigger",()=>ek,"createTabsScope",()=>eg],26941);var eA=e.i(26941),eA=eA;function eP({className:e,orientation:t="horizontal",...r}){return(0,c.jsx)(eA.Root,{"data-slot":"tabs","data-orientation":t,orientation:t,className:(0,w.cn)("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",e),...r})}let eI=b("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function eD({className:e,variant:t="default",...r}){return(0,c.jsx)(eA.List,{"data-slot":"tabs-list","data-variant":t,className:(0,w.cn)(eI({variant:t}),e),...r})}function eL({className:e,...t}){return(0,c.jsx)(eA.Trigger,{"data-slot":"tabs-trigger",className:(0,w.cn)("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground","after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",e),...t})}function ez({className:e,...t}){return(0,c.jsx)(eA.Content,{"data-slot":"tabs-content",className:(0,w.cn)("flex-1 outline-none",e),...t})}let e_=[{value:"status",i18nKey:"nav.status"},{value:"pair",i18nKey:"nav.pair"},{value:"settings",i18nKey:"nav.settings"}];function eM(){let e=(0,k.useT)();return(0,c.jsx)(eD,{"data-testid":"agent-tab-list","aria-label":e("nav.status"),className:"w-full",children:e_.map(({value:t,i18nKey:r})=>(0,c.jsx)(eL,{value:t,"data-testid":`agent-tab-trigger-${t}`,children:e(r)},t))})}let eO=(0,u.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var eH=e.i(54219);let eF=(0,u.default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var N=N;function eU({className:e,type:t,...r}){return(0,c.jsx)("input",{type:t,"data-slot":"input",className:(0,w.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}var eK=d.forwardRef((e,t)=>(0,c.jsx)(q.Primitive.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));eK.displayName="Label",e.s(["Label",()=>eK,"Root",()=>eK],36763);var eB=e.i(36763),eB=eB;function eW({className:e,...t}){return(0,c.jsx)(eB.Root,{"data-slot":"label",className:(0,w.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}let eV=/^vAc_[a-f0-9]{32}$/i;function e$(e){let t=e.trim();return 0===t.length?"empty":eV.test(t)?"valid":"invalid"}function eq({id:e="pairing-token",value:t,onChange:r,onSubmit:n,disabled:a=!1,autoFocus:o=!1}){let i=(0,k.useT)(),s=e$(t),l=`${e}-hint`,d="invalid"===s?"border-destructive focus-visible:ring-destructive/30":"valid"===s?"border-status-online focus-visible:ring-status-online/30":"";return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(eW,{htmlFor:e,children:i("pair.input.label")}),(0,c.jsx)(eU,{id:e,type:"text",value:t,onChange:function(e){r(e.target.value.replace(/\s+/g,""))},onFocus:function(e){e.currentTarget.select()},onKeyDown:function(e){"Enter"===e.key&&"valid"===s&&n&&(e.preventDefault(),n())},disabled:a,autoFocus:o,spellCheck:!1,autoCapitalize:"none",autoComplete:"off",placeholder:i("pair.input.placeholder"),"aria-invalid":"invalid"===s,"aria-describedby":l,"data-testid":"token-input","data-validity":s,className:(0,w.cn)("font-mono text-sm",d)}),(0,c.jsx)(eY,{id:l,validity:s})]})}function eY({id:e,validity:t}){let r=(0,k.useT)();return"empty"===t?(0,c.jsx)("p",{id:e,className:"text-muted-foreground flex items-center gap-1.5 text-xs",children:r("pair.input.hintEmpty")}):"invalid"===t?(0,c.jsxs)("p",{id:e,"aria-live":"polite",className:"text-destructive flex items-center gap-1.5 text-xs",children:[(0,c.jsx)(eF,{"aria-hidden":"true",className:"size-3.5 shrink-0"}),(0,c.jsx)("span",{children:r("pair.input.errorFormat")})]}):(0,c.jsxs)("p",{id:e,"aria-live":"polite",className:"text-status-online flex items-center gap-1.5 text-xs",children:[(0,c.jsx)(N.default,{"aria-hidden":"true",className:"size-3.5 shrink-0"}),(0,c.jsx)("span",{children:r("pair.input.valid")})]})}let eX=b("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card border-destructive/40 [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",info:"border-blue-300/60 bg-blue-50 text-blue-900 dark:border-blue-500/30 dark:bg-blue-950/30 dark:text-blue-100 *:data-[slot=alert-description]:text-blue-800/90 dark:*:data-[slot=alert-description]:text-blue-200/80"}},defaultVariants:{variant:"default"}});function eG({className:e,variant:t,...r}){return(0,c.jsx)("div",{"data-slot":"alert","data-variant":t??"default",role:"alert",className:(0,w.cn)(eX({variant:t}),e),...r})}function eZ({className:e,...t}){return(0,c.jsx)("div",{"data-slot":"alert-description",className:(0,w.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}function eJ({className:e,...t}){return(0,c.jsx)("div",{"data-slot":"card",className:(0,w.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function eQ({className:e,...t}){return(0,c.jsx)("div",{"data-slot":"card-content",className:(0,w.cn)("px-6",e),...t})}var e0=e.i(462);let e1={sm:"size-4",md:"size-5",lg:"size-8"};function e2({size:e="md",label:t="Loading",className:r,...n}){return(0,c.jsxs)("span",{role:"status","aria-live":"polite","data-slot":"spinner",className:(0,w.cn)("inline-flex items-center justify-center",r),...n,children:[(0,c.jsx)(e0.Loader2Icon,{className:(0,w.cn)("animate-spin",e1[e]),"aria-hidden":!0}),(0,c.jsx)("span",{className:"sr-only",children:t})]})}function e4(){let e=window;return!!e.go?.main?.App}let e3=()=>{};function e5(){let e=window,t=e.go?.main?.App;if(!t)throw Error("agent-api: Wails binding not available (window.go.main.App missing)");return t}function e6(e){let t={state:function(e){switch(e){case"notPaired":case"connecting":case"online":case"reconnecting":case"offline":case"error":return e;default:return"error"}}(e.state),relayUrl:e.relayUrl??""};return e.error&&(t.error=e.error),e.attemptNo&&(t.attemptNo=e.attemptNo),e.account&&(t.account=e.account),e.connectedSince&&e.connectedSince>0&&(t.connectedSince=new Date(e.connectedSince).toISOString()),e.sessionTokenPreview&&(t.sessionTokenPreview=e.sessionTokenPreview),t}let e8={state:"notPaired",relayUrl:"wss://relay.visionA.cloud"},e9={relayUrl:"wss://relay.visionA.cloud",autoStart:!1,reconnectStrategy:"auto",logLevel:"info"},e7={...e9},te={getConnectionStatus:async()=>({...e8}),async pair(e){if(await tt(800),!/^vAc_[a-f0-9]{32}$/i.test(e))throw{code:"token_invalid"}},async unpair(){e7={...e9}},async reconnect(){},async disconnect(){},getAgentSettings:async()=>({...e7}),async saveAgentSettings(e){e7={...e}},testConnection:async e=>(await tt(500),/^wss?:\/\//i.test(e))?{ok:!0,latencyMs:42}:{ok:!1,reason:"URL must start with ws:// or wss://"},async resetAllSettings(){e7={...e9}},getRecentLogs:async()=>[],exportLog:async()=>(await tt(300),"~/Downloads/visionA-agent-log-mock.zip")};function tt(e){return new Promise(t=>setTimeout(t,e))}let tr={getConnectionStatus:async()=>e4()?e6(await e5().GetConnectionStatus()):te.getConnectionStatus(),async pair(e){if(!e4())return te.pair(e);try{await e5().Pair(e)}catch(t){let e;throw{code:(e=(t instanceof Error?t.message:String(t)).toLowerCase()).includes("token")&&e.includes("format")?"token_invalid":e.includes("token")&&e.includes("expired")?"token_expired":e.includes("token")&&e.includes("already used")?"token_used":e.includes("token")&&e.includes("revoked")?"token_revoked":e.includes("token")&&e.includes("invalid")?"token_invalid":e.includes("relay")||e.includes("websocket")||e.includes("dial")||e.includes("connection refused")?"relay_unreachable":e.includes("network")||e.includes("timeout")||e.includes("no such host")?"network_error":"unknown"}}},unpair:async()=>e4()?e5().Unpair():te.unpair(),reconnect:async()=>e4()?e5().Reconnect():te.reconnect(),disconnect:async()=>e4()?e5().Disconnect():te.disconnect(),async getAgentSettings(){if(!e4())return te.getAgentSettings();let e=await e5().GetAgentSettings();return{relayUrl:e.relayUrl,autoStart:e.autoStart,reconnectStrategy:e.reconnectStrategy,logLevel:e.logLevel}},saveAgentSettings:async e=>e4()?e5().SaveAgentSettings({relayUrl:e.relayUrl,autoStart:e.autoStart,reconnectStrategy:e.reconnectStrategy,logLevel:e.logLevel}):te.saveAgentSettings(e),async testConnection(e){if(!e4())return te.testConnection(e);let t=await e5().TestConnection(e);return{ok:t.ok,latencyMs:t.latencyMs,reason:t.reason}},resetAllSettings:async()=>e4()?e5().ResetAllSettings():te.resetAllSettings(),getRecentLogs:async e=>e4()?[]:te.getRecentLogs(),exportLog:async()=>e4()?e5().ExportLog():te.exportLog()};function tn({snapshot:e,className:t}){let r=(0,k.useT)(),n=function(e){if(!e)return null;let t=new Date(e);if(Number.isNaN(t.getTime()))return null;let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return`${r}-${n}-${a} ${o}:${i}`}(e.connectedSince),a=function(e){if(!e)return null;let t=e.match(/([a-zA-Z0-9]{2,})\s*$/);return t?t[1].slice(-4):null}(e.sessionTokenPreview),o=[{label:r("status.info.account"),value:e.account??"—"},{label:r("status.info.relayUrl"),value:e.relayUrl},{label:r("status.info.connectedAt"),value:n??"—"},{label:r("status.info.sessionToken"),value:e.sessionTokenPreview??"—","aria-label":a?r("status.info.sessionToken.aria").replace("{last4}",a):void 0}];return(0,c.jsx)("dl",{"data-testid":"info-card",className:(0,w.cn)("grid gap-3 text-sm",t),children:o.map(e=>(0,c.jsxs)("div",{className:"grid grid-cols-[120px_1fr] items-baseline gap-3",children:[(0,c.jsx)("dt",{className:"text-muted-foreground",children:e.label}),(0,c.jsx)("dd",{className:(0,w.cn)("font-mono break-all",e.valueClass),"aria-label":e["aria-label"],children:e.value})]},e.label))})}var N=N;let ta=(0,u.default)("power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]),to=(0,u.default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var ti=e.i(88577);function ts(e,[t,r]){return Math.min(r,Math.max(t,e))}var tl="ScrollArea",[tc,td]=(0,H.createContextScope)(tl),[tu,tf]=tc(tl),tp=d.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:n="hover",dir:a,scrollHideDelay:o=600,...i}=e,[s,l]=d.useState(null),[u,f]=d.useState(null),[p,v]=d.useState(null),[h,m]=d.useState(null),[g,x]=d.useState(null),[b,y]=d.useState(0),[w,j]=d.useState(0),[S,C]=d.useState(!1),[k,E]=d.useState(!1),R=(0,F.useComposedRefs)(t,e=>l(e)),N=Z(a);return(0,c.jsx)(tu,{scope:r,type:n,dir:N,scrollHideDelay:o,scrollArea:s,viewport:u,onViewportChange:f,content:p,onContentChange:v,scrollbarX:h,onScrollbarXChange:m,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:g,onScrollbarYChange:x,scrollbarYEnabled:k,onScrollbarYEnabledChange:E,onCornerWidthChange:y,onCornerHeightChange:j,children:(0,c.jsx)(q.Primitive.div,{dir:N,...i,ref:R,style:{position:"relative","--radix-scroll-area-corner-width":b+"px","--radix-scroll-area-corner-height":w+"px",...e.style}})})});tp.displayName=tl;var tv="ScrollAreaViewport",th=d.forwardRef((e,t)=>{let{__scopeScrollArea:r,children:n,nonce:a,...o}=e,i=tf(tv,r),s=d.useRef(null),l=(0,F.useComposedRefs)(t,s,i.onViewportChange);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,c.jsx)(q.Primitive.div,{"data-radix-scroll-area-viewport":"",...o,ref:l,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,c.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:n})})]})});th.displayName=tv;var tm="ScrollAreaScrollbar",tg=d.forwardRef((e,t)=>{let{forceMount:r,...n}=e,a=tf(tm,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:i}=a,s="horizontal"===e.orientation;return d.useEffect(()=>(s?o(!0):i(!0),()=>{s?o(!1):i(!1)}),[s,o,i]),"hover"===a.type?(0,c.jsx)(tx,{...n,ref:t,forceMount:r}):"scroll"===a.type?(0,c.jsx)(tb,{...n,ref:t,forceMount:r}):"auto"===a.type?(0,c.jsx)(ty,{...n,ref:t,forceMount:r}):"always"===a.type?(0,c.jsx)(tw,{...n,ref:t}):null});tg.displayName=tm;var tx=d.forwardRef((e,t)=>{let{forceMount:r,...n}=e,a=tf(tm,e.__scopeScrollArea),[o,i]=d.useState(!1);return d.useEffect(()=>{let e=a.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),i(!0)},n=()=>{t=window.setTimeout(()=>i(!1),a.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",n)}}},[a.scrollArea,a.scrollHideDelay]),(0,c.jsx)(ev.Presence,{present:r||o,children:(0,c.jsx)(ty,{"data-state":o?"visible":"hidden",...n,ref:t})})}),tb=d.forwardRef((e,t)=>{var r;let{forceMount:n,...a}=e,o=tf(tm,e.__scopeScrollArea),i="horizontal"===e.orientation,s=tH(()=>u("SCROLL_END"),100),[l,u]=(r={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},d.useReducer((e,t)=>r[e][t]??e,"hidden"));return d.useEffect(()=>{if("idle"===l){let e=window.setTimeout(()=>u("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[l,o.scrollHideDelay,u]),d.useEffect(()=>{let e=o.viewport,t=i?"scrollLeft":"scrollTop";if(e){let r=e[t],n=()=>{let n=e[t];r!==n&&(u("SCROLL"),s()),r=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[o.viewport,i,u,s]),(0,c.jsx)(ev.Presence,{present:n||"hidden"!==l,children:(0,c.jsx)(tw,{"data-state":"hidden"===l?"hidden":"visible",...a,ref:t,onPointerEnter:(0,O.composeEventHandlers)(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:(0,O.composeEventHandlers)(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),ty=d.forwardRef((e,t)=>{let r=tf(tm,e.__scopeScrollArea),{forceMount:n,...a}=e,[o,i]=d.useState(!1),s="horizontal"===e.orientation,l=tH(()=>{if(r.viewport){let e=r.viewport.offsetWidth<r.viewport.scrollWidth,t=r.viewport.offsetHeight<r.viewport.scrollHeight;i(s?e:t)}},10);return tF(r.viewport,l),tF(r.content,l),(0,c.jsx)(ev.Presence,{present:n||o,children:(0,c.jsx)(tw,{"data-state":o?"visible":"hidden",...a,ref:t})})}),tw=d.forwardRef((e,t)=>{let{orientation:r="vertical",...n}=e,a=tf(tm,e.__scopeScrollArea),o=d.useRef(null),i=d.useRef(0),[s,l]=d.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=tL(s.viewport,s.content),f={...n,sizes:s,onSizesChange:l,hasThumb:!!(u>0&&u<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function p(e,t){return function(e,t,r,n="ltr"){let a=tz(r),o=t||a/2,i=r.scrollbar.paddingStart+o,s=r.scrollbar.size-r.scrollbar.paddingEnd-(a-o),l=r.content-r.viewport;return tM([i,s],"ltr"===n?[0,l]:[-1*l,0])(e)}(e,i.current,s,t)}return"horizontal"===r?(0,c.jsx)(tj,{...f,ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){let e=t_(a.viewport.scrollLeft,s,a.dir);o.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollLeft=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollLeft=p(e,a.dir))}}):"vertical"===r?(0,c.jsx)(tS,{...f,ref:t,onThumbPositionChange:()=>{if(a.viewport&&o.current){let e=t_(a.viewport.scrollTop,s);o.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollTop=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollTop=p(e))}}):null}),tj=d.forwardRef((e,t)=>{let{sizes:r,onSizesChange:n,...a}=e,o=tf(tm,e.__scopeScrollArea),[i,s]=d.useState(),l=d.useRef(null),u=(0,F.useComposedRefs)(t,l,o.onScrollbarXChange);return d.useEffect(()=>{l.current&&s(getComputedStyle(l.current))},[l]),(0,c.jsx)(tE,{"data-orientation":"horizontal",...a,ref:u,sizes:r,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":tz(r)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(o.viewport){var n,a;let i=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(i),n=i,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&i&&n({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:tD(i.paddingLeft),paddingEnd:tD(i.paddingRight)}})}})}),tS=d.forwardRef((e,t)=>{let{sizes:r,onSizesChange:n,...a}=e,o=tf(tm,e.__scopeScrollArea),[i,s]=d.useState(),l=d.useRef(null),u=(0,F.useComposedRefs)(t,l,o.onScrollbarYChange);return d.useEffect(()=>{l.current&&s(getComputedStyle(l.current))},[l]),(0,c.jsx)(tE,{"data-orientation":"vertical",...a,ref:u,sizes:r,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":tz(r)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(o.viewport){var n,a;let i=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(i),n=i,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&i&&n({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:tD(i.paddingTop),paddingEnd:tD(i.paddingBottom)}})}})}),[tC,tk]=tc(tm),tE=d.forwardRef((e,t)=>{let{__scopeScrollArea:r,sizes:n,hasThumb:a,onThumbChange:o,onThumbPointerUp:i,onThumbPointerDown:s,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:f,onResize:p,...v}=e,h=tf(tm,r),[m,g]=d.useState(null),x=(0,F.useComposedRefs)(t,e=>g(e)),b=d.useRef(null),y=d.useRef(""),w=h.viewport,j=n.content-n.viewport,S=(0,Y.useCallbackRef)(f),C=(0,Y.useCallbackRef)(l),k=tH(p,10);function E(e){b.current&&u({x:e.clientX-b.current.left,y:e.clientY-b.current.top})}return d.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&S(e,j)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[w,m,j,S]),d.useEffect(C,[n,C]),tF(m,k),tF(h.content,k),(0,c.jsx)(tC,{scope:r,scrollbar:m,hasThumb:a,onThumbChange:(0,Y.useCallbackRef)(o),onThumbPointerUp:(0,Y.useCallbackRef)(i),onThumbPositionChange:C,onThumbPointerDown:(0,Y.useCallbackRef)(s),children:(0,c.jsx)(q.Primitive.div,{...v,ref:x,style:{position:"absolute",...v.style},onPointerDown:(0,O.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),b.current=m.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",h.viewport&&(h.viewport.style.scrollBehavior="auto"),E(e))}),onPointerMove:(0,O.composeEventHandlers)(e.onPointerMove,E),onPointerUp:(0,O.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,h.viewport&&(h.viewport.style.scrollBehavior=""),b.current=null})})})}),tR="ScrollAreaThumb",tN=d.forwardRef((e,t)=>{let{forceMount:r,...n}=e,a=tk(tR,e.__scopeScrollArea);return(0,c.jsx)(ev.Presence,{present:r||a.hasThumb,children:(0,c.jsx)(tT,{ref:t,...n})})}),tT=d.forwardRef((e,t)=>{let{__scopeScrollArea:r,style:n,...a}=e,o=tf(tR,r),i=tk(tR,r),{onThumbPositionChange:s}=i,l=(0,F.useComposedRefs)(t,e=>i.onThumbChange(e)),u=d.useRef(void 0),f=tH(()=>{u.current&&(u.current(),u.current=void 0)},100);return d.useEffect(()=>{let e=o.viewport;if(e){let t=()=>{f(),u.current||(u.current=tO(e,s),s())};return s(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[o.viewport,f,s]),(0,c.jsx)(q.Primitive.div,{"data-state":i.hasThumb?"visible":"hidden",...a,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...n},onPointerDownCapture:(0,O.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;i.onThumbPointerDown({x:r,y:n})}),onPointerUp:(0,O.composeEventHandlers)(e.onPointerUp,i.onThumbPointerUp)})});tN.displayName=tR;var tA="ScrollAreaCorner",tP=d.forwardRef((e,t)=>{let r=tf(tA,e.__scopeScrollArea),n=!!(r.scrollbarX&&r.scrollbarY);return"scroll"!==r.type&&n?(0,c.jsx)(tI,{...e,ref:t}):null});tP.displayName=tA;var tI=d.forwardRef((e,t)=>{let{__scopeScrollArea:r,...n}=e,a=tf(tA,r),[o,i]=d.useState(0),[s,l]=d.useState(0),u=!!(o&&s);return tF(a.scrollbarX,()=>{let e=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(e),l(e)}),tF(a.scrollbarY,()=>{let e=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(e),i(e)}),u?(0,c.jsx)(q.Primitive.div,{...n,ref:t,style:{width:o,height:s,position:"absolute",right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:0,...e.style}}):null});function tD(e){return e?parseInt(e,10):0}function tL(e,t){let r=e/t;return isNaN(r)?0:r}function tz(e){let t=tL(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function t_(e,t,r="ltr"){let n=tz(t),a=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,o=t.scrollbar.size-a,i=t.content-t.viewport,s=ts(e,"ltr"===r?[0,i]:[-1*i,0]);return tM([0,i],[0,o-n])(s)}function tM(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}var tO=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},n=0;return!function a(){let o={left:e.scrollLeft,top:e.scrollTop},i=r.left!==o.left,s=r.top!==o.top;(i||s)&&t(),r=o,n=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(n)};function tH(e,t){let r=(0,Y.useCallbackRef)(e),n=d.useRef(0);return d.useEffect(()=>()=>window.clearTimeout(n.current),[]),d.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(r,t)},[r,t])}function tF(e,t){let r=(0,Y.useCallbackRef)(t);(0,ti.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,r])}e.s(["Corner",()=>tP,"Root",()=>tp,"ScrollArea",()=>tp,"ScrollAreaCorner",()=>tP,"ScrollAreaScrollbar",()=>tg,"ScrollAreaThumb",()=>tN,"ScrollAreaViewport",()=>th,"Scrollbar",()=>tg,"Thumb",()=>tN,"Viewport",()=>th,"createScrollAreaScope",()=>td],95146);var tU=e.i(95146),tU=tU;function tK({className:e,children:t,...r}){return(0,c.jsxs)(tU.Root,{"data-slot":"scroll-area",className:(0,w.cn)("relative",e),...r,children:[(0,c.jsx)(tU.Viewport,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,c.jsx)(tB,{}),(0,c.jsx)(tU.Corner,{})]})}function tB({className:e,orientation:t="vertical",...r}){return(0,c.jsx)(tU.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,w.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...r,children:(0,c.jsx)(tU.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}let tW={connected:{Icon:N.default,colorClass:"text-status-online"},connecting:{Icon:A,colorClass:"text-status-reconnecting"},failed:{Icon:eF,colorClass:"text-destructive"},started:{Icon:ta,colorClass:"text-muted-foreground"},stopped:{Icon:T,colorClass:"text-muted-foreground"},settings:{Icon:to,colorClass:"text-muted-foreground"}};function tV({logs:e,max:t=10,className:r}){let n=(0,k.useT)(),a=e.slice(0,t);return(0,c.jsxs)("section",{"data-testid":"recent-log","aria-labelledby":"recent-log-heading",className:(0,w.cn)("space-y-2",r),children:[(0,c.jsx)("h3",{id:"recent-log-heading",className:"text-sm font-medium",children:n("status.log.title")}),0===a.length?(0,c.jsx)("p",{className:"text-muted-foreground text-xs",children:n("status.log.empty")}):(0,c.jsx)(tK,{className:"h-40 rounded-md border",children:(0,c.jsx)("ol",{className:"divide-border divide-y",children:a.map((e,t)=>{let r=tW[e.kind];return(0,c.jsxs)("li",{className:"flex items-center gap-3 px-3 py-1.5 font-mono text-xs",children:[(0,c.jsx)("span",{className:"text-muted-foreground",children:function(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"--:--";let r=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0");return`${r}:${n}`}(e.ts)}),(0,c.jsx)(r.Icon,{"aria-hidden":"true",className:(0,w.cn)("size-3.5 shrink-0",r.colorClass)}),(0,c.jsx)("span",{className:"flex-1 truncate",children:e.text})]},`${e.ts}-${t}`)})})})]})}var R=R,N=N;let t$={online:{i18nKey:"status.hero.online",Icon:N.default,dotClass:"bg-status-online",dotAnimate:!1,iconSpin:!1},offline:{i18nKey:"status.hero.offline",Icon:T,dotClass:"bg-status-offline",dotAnimate:!1,iconSpin:!1},reconnecting:{i18nKey:"status.hero.reconnecting",Icon:A,dotClass:"bg-status-reconnecting",dotAnimate:!0,iconSpin:!0},notPaired:{i18nKey:"status.hero.notPaired",Icon:P,dotClass:"bg-status-idle",dotAnimate:!1,iconSpin:!1},error:{i18nKey:"status.hero.error",Icon:R.default,dotClass:"bg-status-error",dotAnimate:!1,iconSpin:!1,labelClass:"text-destructive"}};function tq({state:e,attemptNo:t,errorMessage:r,className:n}){let a=(0,k.useT)(),o="connecting"===e?"reconnecting":e,i=t$[o],s=a(i.i18nKey),l="reconnecting"===o&&"number"==typeof t?a("status.hero.attemptNo").replace("{n}",String(t)):"error"===o&&r?r:null;return(0,c.jsxs)("div",{role:"status","aria-live":"polite","aria-label":l?`${s}, ${l}`:s,"data-testid":"status-hero","data-state":o,className:(0,w.cn)("flex flex-col items-center gap-3 py-4",n),children:[(0,c.jsx)("div",{"aria-hidden":"true",className:(0,w.cn)("flex size-20 items-center justify-center rounded-full text-white shadow-sm",i.dotClass,i.dotAnimate&&"motion-safe:animate-pulse"),children:(0,c.jsx)(i.Icon,{className:(0,w.cn)("size-8",i.iconSpin&&"motion-safe:animate-spin")})}),(0,c.jsxs)("div",{className:"flex flex-col items-center gap-1 text-center",children:[(0,c.jsx)("p",{className:(0,w.cn)("text-xl font-semibold",i.labelClass),children:s}),l&&(0,c.jsx)("p",{className:(0,w.cn)("text-xs","error"===o?"text-destructive":"text-muted-foreground"),children:l})]})]})}var tY=e.i(72416),tX="focusScope.autoFocusOnMount",tG="focusScope.autoFocusOnUnmount",tZ={bubbles:!1,cancelable:!0},tJ=d.forwardRef((e,t)=>{let{loop:r=!1,trapped:n=!1,onMountAutoFocus:a,onUnmountAutoFocus:o,...i}=e,[s,l]=d.useState(null),u=(0,Y.useCallbackRef)(a),f=(0,Y.useCallbackRef)(o),p=d.useRef(null),v=(0,F.useComposedRefs)(t,e=>l(e)),h=d.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;d.useEffect(()=>{if(n){let e=function(e){if(h.paused||!s)return;let t=e.target;s.contains(t)?p.current=t:t1(p.current,{select:!0})},t=function(e){if(h.paused||!s)return;let t=e.relatedTarget;null!==t&&(s.contains(t)||t1(p.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let r=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&t1(s)});return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}},[n,s,h.paused]),d.useEffect(()=>{if(s){t2.add(h);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(tX,tZ);s.addEventListener(tX,u),s.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let r=document.activeElement;for(let n of e)if(t1(n,{select:t}),document.activeElement!==r)return}(tQ(s).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&t1(s))}return()=>{s.removeEventListener(tX,u),setTimeout(()=>{let t=new CustomEvent(tG,tZ);s.addEventListener(tG,f),s.dispatchEvent(t),t.defaultPrevented||t1(e??document.body,{select:!0}),s.removeEventListener(tG,f),t2.remove(h)},0)}}},[s,u,f,h]);let m=d.useCallback(e=>{if(!r&&!n||h.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,a=document.activeElement;if(t&&a){var o;let t,n=e.currentTarget,[i,s]=[t0(t=tQ(o=n),o),t0(t.reverse(),o)];i&&s?e.shiftKey||a!==s?e.shiftKey&&a===i&&(e.preventDefault(),r&&t1(s,{select:!0})):(e.preventDefault(),r&&t1(i,{select:!0})):a===n&&e.preventDefault()}},[r,n,h.paused]);return(0,c.jsx)(q.Primitive.div,{tabIndex:-1,...i,ref:v,onKeyDown:m})});function tQ(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function t0(e,t){for(let r of e)if(!function(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===t||e!==t);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(r,{upTo:t}))return r}function t1(e,{select:t=!1}={}){if(e&&e.focus){var r;let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&(r=e)instanceof HTMLInputElement&&"select"in r&&t&&e.select()}}tJ.displayName="FocusScope";var t2=(t=[],{add(e){let r=t[0];e!==r&&r?.pause(),(t=t4(t,e)).unshift(e)},remove(e){t=t4(t,e),t[0]?.resume()}});function t4(e,t){let r=[...e],n=r.indexOf(t);return -1!==n&&r.splice(n,1),r}var t3=e.i(1404),t5=0;function t6(){d.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??t8()),document.body.insertAdjacentElement("beforeend",e[1]??t8()),t5++,()=>{1===t5&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),t5--}},[])}function t8(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var t9=function(){return(t9=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function t7(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);a<n.length;a++)0>t.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]]);return r}var re=("function"==typeof SuppressedError&&SuppressedError,"right-scroll-bar-position"),rt="width-before-scroll-bar";function rr(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var rn="u">typeof window?d.useLayoutEffect:d.useEffect,ra=new WeakMap,ro=(void 0===r&&(r={}),(void 0===n&&(n=function(e){return e}),a=[],o=!1,i={read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return a.length?a[a.length-1]:null},useMedium:function(e){var t=n(e,o);return a.push(t),function(){a=a.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(o=!0;a.length;){var t=a;a=[],t.forEach(e)}a={push:function(t){return e(t)},filter:function(){return a}}},assignMedium:function(e){o=!0;var t=[];if(a.length){var r=a;a=[],r.forEach(e),t=a}var n=function(){var r=t;t=[],r.forEach(e)},i=function(){return Promise.resolve().then(n)};i(),a={push:function(e){t.push(e),i()},filter:function(e){return t=t.filter(e),a}}}}).options=t9({async:!0,ssr:!1},r),i),ri=function(){},rs=d.forwardRef(function(e,t){var r,n,a,o,i=d.useRef(null),s=d.useState({onScrollCapture:ri,onWheelCapture:ri,onTouchMoveCapture:ri}),l=s[0],c=s[1],u=e.forwardProps,f=e.children,p=e.className,v=e.removeScrollBar,h=e.enabled,m=e.shards,g=e.sideCar,x=e.noRelative,b=e.noIsolation,y=e.inert,w=e.allowPinchZoom,j=e.as,S=e.gapMode,C=t7(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),k=(r=[i,t],n=function(e){return r.forEach(function(t){return rr(t,e)})},(a=(0,d.useState)(function(){return{value:null,callback:n,facade:{get current(){return a.value},set current(value){var e=a.value;e!==value&&(a.value=value,a.callback(value,e))}}}})[0]).callback=n,o=a.facade,rn(function(){var e=ra.get(o);if(e){var t=new Set(e),n=new Set(r),a=o.current;t.forEach(function(e){n.has(e)||rr(e,null)}),n.forEach(function(e){t.has(e)||rr(e,a)})}ra.set(o,r)},[r]),o),E=t9(t9({},C),l);return d.createElement(d.Fragment,null,h&&d.createElement(g,{sideCar:ro,removeScrollBar:v,shards:m,noRelative:x,noIsolation:b,inert:y,setCallbacks:c,allowPinchZoom:!!w,lockRef:i,gapMode:S}),u?d.cloneElement(d.Children.only(f),t9(t9({},E),{ref:k})):d.createElement(void 0===j?"div":j,t9({},E,{className:p,ref:k}),f))});rs.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},rs.classNames={fullWidth:rt,zeroRight:re};var rl=function(e){var t=e.sideCar,r=t7(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw Error("Sidecar medium not found");return d.createElement(n,t9({},r))};rl.isSideCarExport=!0;var rc=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=l||("u">typeof __webpack_nonce__?__webpack_nonce__:void 0);return t&&e.setAttribute("nonce",t),e}())){var n,a;(n=t).styleSheet?n.styleSheet.cssText=r:n.appendChild(document.createTextNode(r)),a=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(a)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},rd=function(){var e=rc();return function(t,r){d.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&r])}},ru=function(){var e=rd();return function(t){return e(t.styles,t.dynamic),null}},rf={left:0,top:0,right:0,gap:0},rp=function(e){return parseInt(e||"",10)||0},rv=function(e){var t=window.getComputedStyle(document.body),r=t["padding"===e?"paddingLeft":"marginLeft"],n=t["padding"===e?"paddingTop":"marginTop"],a=t["padding"===e?"paddingRight":"marginRight"];return[rp(r),rp(n),rp(a)]},rh=function(e){if(void 0===e&&(e="margin"),"u"<typeof window)return rf;var t=rv(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},rm=ru(),rg="data-scroll-locked",rx=function(e,t,r,n){var a=e.left,o=e.top,i=e.right,s=e.gap;return void 0===r&&(r="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(n,";\n padding-right: ").concat(s,"px ").concat(n,";\n }\n body[").concat(rg,"] {\n overflow: hidden ").concat(n,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(n,";"),"margin"===r&&"\n padding-left: ".concat(a,"px;\n padding-top: ").concat(o,"px;\n padding-right: ").concat(i,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(s,"px ").concat(n,";\n "),"padding"===r&&"padding-right: ".concat(s,"px ").concat(n,";")].filter(Boolean).join(""),"\n }\n \n .").concat(re," {\n right: ").concat(s,"px ").concat(n,";\n }\n \n .").concat(rt," {\n margin-right: ").concat(s,"px ").concat(n,";\n }\n \n .").concat(re," .").concat(re," {\n right: 0 ").concat(n,";\n }\n \n .").concat(rt," .").concat(rt," {\n margin-right: 0 ").concat(n,";\n }\n \n body[").concat(rg,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(s,"px;\n }\n")},rb=function(){var e=parseInt(document.body.getAttribute(rg)||"0",10);return isFinite(e)?e:0},ry=function(){d.useEffect(function(){return document.body.setAttribute(rg,(rb()+1).toString()),function(){var e=rb()-1;e<=0?document.body.removeAttribute(rg):document.body.setAttribute(rg,e.toString())}},[])},rw=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,a=void 0===n?"margin":n;ry();var o=d.useMemo(function(){return rh(a)},[a]);return d.createElement(rm,{styles:rx(o,!t,a,r?"":"!important")})},rj=!1;if("u">typeof window)try{var rS=Object.defineProperty({},"passive",{get:function(){return rj=!0,!0}});window.addEventListener("test",rS,rS),window.removeEventListener("test",rS,rS)}catch(e){rj=!1}var rC=!!rj&&{passive:!1},rk=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return"hidden"!==r[t]&&(r.overflowY!==r.overflowX||"TEXTAREA"===e.tagName||"visible"!==r[t])},rE=function(e,t){var r=t.ownerDocument,n=t;do{if("u">typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),rR(e,n)){var a=rN(e,n);if(a[1]>a[2])return!0}n=n.parentNode}while(n&&n!==r.body)return!1},rR=function(e,t){return"v"===e?rk(t,"overflowY"):rk(t,"overflowX")},rN=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},rT=function(e,t,r,n,a){var o,i=(o=window.getComputedStyle(t).direction,"h"===e&&"rtl"===o?-1:1),s=i*n,l=r.target,c=t.contains(l),d=!1,u=s>0,f=0,p=0;do{if(!l)break;var v=rN(e,l),h=v[0],m=v[1]-v[2]-i*h;(h||m)&&rR(e,l)&&(f+=m,p+=h);var g=l.parentNode;l=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&l!==document.body||c&&(t.contains(l)||t===l))return u&&(a&&1>Math.abs(f)||!a&&s>f)?d=!0:!u&&(a&&1>Math.abs(p)||!a&&-s>p)&&(d=!0),d},rA=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},rP=function(e){return[e.deltaX,e.deltaY]},rI=function(e){return e&&"current"in e?e.current:e},rD=0,rL=[];let rz=(s=function(e){var t=d.useRef([]),r=d.useRef([0,0]),n=d.useRef(),a=d.useState(rD++)[0],o=d.useState(ru)[0],i=d.useRef(e);d.useEffect(function(){i.current=e},[e]),d.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var t=(function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a<o;a++)!n&&a in t||(n||(n=Array.prototype.slice.call(t,0,a)),n[a]=t[a]);return e.concat(n||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(rI),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var s=d.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!i.current.allowPinchZoom;var a,o=rA(e),s=r.current,l="deltaX"in e?e.deltaX:s[0]-o[0],c="deltaY"in e?e.deltaY:s[1]-o[1],d=e.target,u=Math.abs(l)>Math.abs(c)?"h":"v";if("touches"in e&&"h"===u&&"range"===d.type)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===d||p.contains(d)))return!1;var v=rE(u,d);if(!v)return!0;if(v?a=u:(a="v"===u?"h":"v",v=rE(u,d)),!v)return!1;if(!n.current&&"changedTouches"in e&&(l||c)&&(n.current=a),!a)return!0;var h=n.current||a;return rT(h,t,e,"h"===h?l:c,!0)},[]),l=d.useCallback(function(e){if(rL.length&&rL[rL.length-1]===o){var r="deltaY"in e?rP(e):rA(e),n=t.current.filter(function(t){var n;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(n=t.delta,n[0]===r[0]&&n[1]===r[1])})[0];if(n&&n.should){e.cancelable&&e.preventDefault();return}if(!n){var a=(i.current.shards||[]).map(rI).filter(Boolean).filter(function(t){return t.contains(e.target)});(a.length>0?s(e,a[0]):!i.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),c=d.useCallback(function(e,r,n,a){var o={name:e,delta:r,target:n,should:a,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(n)};t.current.push(o),setTimeout(function(){t.current=t.current.filter(function(e){return e!==o})},1)},[]),u=d.useCallback(function(e){r.current=rA(e),n.current=void 0},[]),f=d.useCallback(function(t){c(t.type,rP(t),t.target,s(t,e.lockRef.current))},[]),p=d.useCallback(function(t){c(t.type,rA(t),t.target,s(t,e.lockRef.current))},[]);d.useEffect(function(){return rL.push(o),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",l,rC),document.addEventListener("touchmove",l,rC),document.addEventListener("touchstart",u,rC),function(){rL=rL.filter(function(e){return e!==o}),document.removeEventListener("wheel",l,rC),document.removeEventListener("touchmove",l,rC),document.removeEventListener("touchstart",u,rC)}},[]);var v=e.removeScrollBar,h=e.inert;return d.createElement(d.Fragment,null,h?d.createElement(o,{styles:"\n .block-interactivity-".concat(a," {pointer-events: none;}\n .allow-interactivity-").concat(a," {pointer-events: all;}\n")}):null,v?d.createElement(rw,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},ro.useMedium(s),rl);var r_=d.forwardRef(function(e,t){return d.createElement(rs,t9({},e,{ref:t,sideCar:rz}))});r_.classNames=rs.classNames;var rM=new WeakMap,rO=new WeakMap,rH={},rF=0,rU=function(e){return e&&(e.host||rU(e.parentNode))},rK=function(e,t,r,n){var a=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var r=rU(e);return r&&t.contains(r)?r:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});rH[r]||(rH[r]=new WeakMap);var o=rH[r],i=[],s=new Set,l=new Set(a),c=function(e){!e||s.has(e)||(s.add(e),c(e.parentNode))};a.forEach(c);var d=function(e){!e||l.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))d(e);else try{var t=e.getAttribute(n),a=null!==t&&"false"!==t,l=(rM.get(e)||0)+1,c=(o.get(e)||0)+1;rM.set(e,l),o.set(e,c),i.push(e),1===l&&a&&rO.set(e,!0),1===c&&e.setAttribute(r,"true"),a||e.setAttribute(n,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return d(t),s.clear(),rF++,function(){i.forEach(function(e){var t=rM.get(e)-1,a=o.get(e)-1;rM.set(e,t),o.set(e,a),t||(rO.has(e)||e.removeAttribute(n),rO.delete(e)),a||e.removeAttribute(r)}),--rF||(rM=new WeakMap,rM=new WeakMap,rO=new WeakMap,rH={})}},rB=function(e,t,r){void 0===r&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),a=t||("u"<typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return a?(n.push.apply(n,Array.from(a.querySelectorAll("[aria-live], script"))),rK(n,a,r,"aria-hidden")):function(){return null}},rW=y,rV="Dialog",[r$,rq]=(0,H.createContextScope)(rV),[rY,rX]=r$(rV),rG=e=>{let{__scopeDialog:t,children:r,open:n,defaultOpen:a,onOpenChange:o,modal:i=!0}=e,s=d.useRef(null),l=d.useRef(null),[u,f]=(0,X.useControllableState)({prop:n,defaultProp:a??!1,onChange:o,caller:rV});return(0,c.jsx)(rY,{scope:t,triggerRef:s,contentRef:l,contentId:(0,$.useId)(),titleId:(0,$.useId)(),descriptionId:(0,$.useId)(),open:u,onOpenChange:f,onOpenToggle:d.useCallback(()=>f(e=>!e),[f]),modal:i,children:r})};rG.displayName=rV;var rZ="DialogTrigger",rJ=d.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=rX(rZ,r),o=(0,F.useComposedRefs)(t,a.triggerRef);return(0,c.jsx)(q.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":nl(a.open),...n,ref:o,onClick:(0,O.composeEventHandlers)(e.onClick,a.onOpenToggle)})});rJ.displayName=rZ;var rQ="DialogPortal",[r0,r1]=r$(rQ,{forceMount:void 0}),r2=e=>{let{__scopeDialog:t,forceMount:r,children:n,container:a}=e,o=rX(rQ,t);return(0,c.jsx)(r0,{scope:t,forceMount:r,children:d.Children.map(n,e=>(0,c.jsx)(ev.Presence,{present:r||o.open,children:(0,c.jsx)(t3.Portal,{asChild:!0,container:a,children:e})}))})};r2.displayName=rQ;var r4="DialogOverlay",r3=d.forwardRef((e,t)=>{let r=r1(r4,e.__scopeDialog),{forceMount:n=r.forceMount,...a}=e,o=rX(r4,e.__scopeDialog);return o.modal?(0,c.jsx)(ev.Presence,{present:n||o.open,children:(0,c.jsx)(r6,{...a,ref:t})}):null});r3.displayName=r4;var r5=(0,rW.createSlot)("DialogOverlay.RemoveScroll"),r6=d.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=rX(r4,r);return(0,c.jsx)(r_,{as:r5,allowPinchZoom:!0,shards:[a.contentRef],children:(0,c.jsx)(q.Primitive.div,{"data-state":nl(a.open),...n,ref:t,style:{pointerEvents:"auto",...n.style}})})}),r8="DialogContent",r9=d.forwardRef((e,t)=>{let r=r1(r8,e.__scopeDialog),{forceMount:n=r.forceMount,...a}=e,o=rX(r8,e.__scopeDialog);return(0,c.jsx)(ev.Presence,{present:n||o.open,children:o.modal?(0,c.jsx)(r7,{...a,ref:t}):(0,c.jsx)(ne,{...a,ref:t})})});r9.displayName=r8;var r7=d.forwardRef((e,t)=>{let r=rX(r8,e.__scopeDialog),n=d.useRef(null),a=(0,F.useComposedRefs)(t,r.contentRef,n);return d.useEffect(()=>{let e=n.current;if(e)return rB(e)},[]),(0,c.jsx)(nt,{...e,ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,O.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),r.triggerRef.current?.focus()}),onPointerDownOutside:(0,O.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;(2===t.button||r)&&e.preventDefault()}),onFocusOutside:(0,O.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),ne=d.forwardRef((e,t)=>{let r=rX(r8,e.__scopeDialog),n=d.useRef(!1),a=d.useRef(!1);return(0,c.jsx)(nt,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||r.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,a.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(a.current=!0));let o=t.target;r.triggerRef.current?.contains(o)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&a.current&&t.preventDefault()}})}),nt=d.forwardRef((e,t)=>{let{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:a,onCloseAutoFocus:o,...i}=e,s=rX(r8,r),l=d.useRef(null),u=(0,F.useComposedRefs)(t,l);return t6(),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(tJ,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:a,onUnmountAutoFocus:o,children:(0,c.jsx)(tY.DismissableLayer,{role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":nl(s.open),...i,ref:u,onDismiss:()=>s.onOpenChange(!1)})}),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(nf,{titleId:s.titleId}),(0,c.jsx)(np,{contentRef:l,descriptionId:s.descriptionId})]})]})}),nr="DialogTitle",nn=d.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=rX(nr,r);return(0,c.jsx)(q.Primitive.h2,{id:a.titleId,...n,ref:t})});nn.displayName=nr;var na="DialogDescription",no=d.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=rX(na,r);return(0,c.jsx)(q.Primitive.p,{id:a.descriptionId,...n,ref:t})});no.displayName=na;var ni="DialogClose",ns=d.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=rX(ni,r);return(0,c.jsx)(q.Primitive.button,{type:"button",...n,ref:t,onClick:(0,O.composeEventHandlers)(e.onClick,()=>a.onOpenChange(!1))})});function nl(e){return e?"open":"closed"}ns.displayName=ni;var nc="DialogTitleWarning",[nd,nu]=(0,H.createContext)(nc,{contentName:r8,titleName:nr,docsSlug:"dialog"}),nf=({titleId:e})=>{let t=nu(nc),r=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
|
|
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
|
|
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return d.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},np=({contentRef:e,descriptionId:t})=>{let r=nu("DialogDescriptionWarning"),n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${r.contentName}}.`;return d.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},nv=y,nh="AlertDialog",[nm,ng]=(0,H.createContextScope)(nh,[rq]),nx=rq(),nb=e=>{let{__scopeAlertDialog:t,...r}=e,n=nx(t);return(0,c.jsx)(rG,{...n,...r,modal:!0})};nb.displayName=nh;var ny=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=nx(r);return(0,c.jsx)(rJ,{...a,...n,ref:t})});ny.displayName="AlertDialogTrigger";var nw=e=>{let{__scopeAlertDialog:t,...r}=e,n=nx(t);return(0,c.jsx)(r2,{...n,...r})};nw.displayName="AlertDialogPortal";var nj=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=nx(r);return(0,c.jsx)(r3,{...a,...n,ref:t})});nj.displayName="AlertDialogOverlay";var nS="AlertDialogContent",[nC,nk]=nm(nS),nE=(0,nv.createSlottable)("AlertDialogContent"),nR=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,children:n,...a}=e,o=nx(r),i=d.useRef(null),s=(0,F.useComposedRefs)(t,i),l=d.useRef(null);return(0,c.jsx)(nd,{contentName:nS,titleName:nN,docsSlug:"alert-dialog",children:(0,c.jsx)(nC,{scope:r,cancelRef:l,children:(0,c.jsxs)(r9,{role:"alertdialog",...o,...a,ref:s,onOpenAutoFocus:(0,O.composeEventHandlers)(a.onOpenAutoFocus,e=>{e.preventDefault(),l.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,c.jsx)(nE,{children:n}),(0,c.jsx)(nz,{contentRef:i})]})})})});nR.displayName=nS;var nN="AlertDialogTitle",nT=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=nx(r);return(0,c.jsx)(nn,{...a,...n,ref:t})});nT.displayName=nN;var nA="AlertDialogDescription",nP=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=nx(r);return(0,c.jsx)(no,{...a,...n,ref:t})});nP.displayName=nA;var nI=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=nx(r);return(0,c.jsx)(ns,{...a,...n,ref:t})});nI.displayName="AlertDialogAction";var nD="AlertDialogCancel",nL=d.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,{cancelRef:a}=nk(nD,r),o=nx(r),i=(0,F.useComposedRefs)(t,a);return(0,c.jsx)(ns,{...o,...n,ref:i})});nL.displayName=nD;var nz=({contentRef:e})=>{let t=`\`${nS}\` requires a description for the component to be accessible for screen reader users.
|
|
|
|
You can add a description to the \`${nS}\` by passing a \`${nA}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
|
|
|
|
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${nS}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
|
|
|
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return d.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null};e.s(["Action",()=>nI,"AlertDialog",()=>nb,"AlertDialogAction",()=>nI,"AlertDialogCancel",()=>nL,"AlertDialogContent",()=>nR,"AlertDialogDescription",()=>nP,"AlertDialogOverlay",()=>nj,"AlertDialogPortal",()=>nw,"AlertDialogTitle",()=>nT,"AlertDialogTrigger",()=>ny,"Cancel",()=>nL,"Content",()=>nR,"Description",()=>nP,"Overlay",()=>nj,"Portal",()=>nw,"Root",()=>nb,"Title",()=>nT,"Trigger",()=>ny,"createAlertDialogScope",()=>ng],30239);var n_=e.i(30239),n_=n_;function nM({...e}){return(0,c.jsx)(n_.Root,{"data-slot":"alert-dialog",...e})}function nO({...e}){return(0,c.jsx)(n_.Trigger,{"data-slot":"alert-dialog-trigger",...e})}function nH({...e}){return(0,c.jsx)(n_.Portal,{"data-slot":"alert-dialog-portal",...e})}function nF({className:e,...t}){return(0,c.jsx)(n_.Overlay,{"data-slot":"alert-dialog-overlay",className:(0,w.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function nU({className:e,size:t="default",...r}){return(0,c.jsxs)(nH,{children:[(0,c.jsx)(nF,{}),(0,c.jsx)(n_.Content,{"data-slot":"alert-dialog-content","data-size":t,className:(0,w.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg",e),...r})]})}function nK({className:e,...t}){return(0,c.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,w.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function nB({className:e,...t}){return(0,c.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,w.cn)("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function nW({className:e,...t}){return(0,c.jsx)(n_.Title,{"data-slot":"alert-dialog-title",className:(0,w.cn)("text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function nV({className:e,...t}){return(0,c.jsx)(n_.Description,{"data-slot":"alert-dialog-description",className:(0,w.cn)("text-muted-foreground text-sm",e),...t})}function n$({className:e,variant:t="default",size:r="default",...n}){return(0,c.jsx)(S,{variant:t,size:r,asChild:!0,children:(0,c.jsx)(n_.Action,{"data-slot":"alert-dialog-action",className:(0,w.cn)(e),...n})})}function nq({className:e,variant:t="outline",size:r="default",...n}){return(0,c.jsx)(S,{variant:t,size:r,asChild:!0,children:(0,c.jsx)(n_.Cancel,{"data-slot":"alert-dialog-cancel",className:(0,w.cn)(e),...n})})}function nY({icon:e,title:t,description:r,action:n,secondaryAction:a}){return(0,c.jsxs)("div",{className:"flex h-64 flex-col items-center justify-center gap-4 text-center",children:[(0,c.jsx)("div",{className:"bg-muted rounded-full p-4",children:(0,c.jsx)(e,{className:"text-muted-foreground h-8 w-8"})}),(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("h3",{className:"text-base font-medium",children:t}),(0,c.jsx)("p",{className:"text-muted-foreground max-w-sm text-sm",children:r})]}),(n||a)&&(0,c.jsxs)("div",{className:"flex gap-2",children:[n&&(0,c.jsx)(S,{onClick:n.onClick,size:"sm",children:n.label}),a&&(0,c.jsx)(S,{onClick:a.onClick,size:"sm",variant:"outline",children:a.label})]})]})}let nX="agent:switch-tab";function nG(){let e=(0,k.useT)(),{snapshot:t,loading:r}=function(){let[e,t]=(0,d.useState)(null),[r,n]=(0,d.useState)(!0),[a,o]=(0,d.useState)(null),i=(0,d.useRef)(!0),s=(0,d.useCallback)(()=>tr.getConnectionStatus().then(e=>{i.current&&(t(e),o(null))}).catch(e=>{i.current&&o(e instanceof Error?e.message:String(e))}).finally(()=>{i.current&&n(!1)}),[]);return(0,d.useEffect)(()=>{i.current=!0,s();let e=function(e){if(!e4())return e3;let t=window.runtime;return t?t.EventsOn("connection:status",(...t)=>{let r=t[0];r&&e(e6(r))}):e3}(e=>{i.current&&(t(e),o(null))});return()=>{i.current=!1,e()}},[s]),{snapshot:e,loading:r,error:a,refresh:s}}(),{logs:n}=function(e=10){let[t,r]=(0,d.useState)([]),[n,a]=(0,d.useState)(!0),o=(0,d.useRef)(!0);return(0,d.useEffect)(()=>{o.current=!0,tr.getRecentLogs(e).then(t=>{o.current&&r(t.slice(-e))}).finally(()=>{o.current&&a(!1)});let t=function(e){if(!e4())return e3;let t=window.runtime;return t?t.EventsOn("connection:log",(...t)=>{let r=t[0];r&&e(r)}):e3}(t=>{o.current&&r(r=>{let n=[...r,t];return n.length>e?n.slice(-e):n})});return()=>{o.current=!1,t()}},[e]),{logs:t,loading:n}}(10);return r||!t?(0,c.jsxs)("section",{"data-testid":"status-view","aria-labelledby":"status-view-heading",className:"flex flex-col items-center gap-3 py-12",children:[(0,c.jsx)("h2",{id:"status-view-heading",className:"sr-only",children:e("nav.status")}),(0,c.jsx)(e2,{size:"lg",label:e("common.loading")})]}):"notPaired"===t.state?(0,c.jsxs)("section",{"data-testid":"status-view","aria-labelledby":"status-view-heading",className:"py-6",children:[(0,c.jsx)("h2",{id:"status-view-heading",className:"sr-only",children:e("nav.status")}),(0,c.jsx)(nY,{icon:P,title:e("status.empty.title"),description:e("status.empty.description"),action:{label:e("status.action.goPair"),onClick:()=>{window.dispatchEvent(new CustomEvent(nX,{detail:{value:"pair"}}))}}})]}):(0,c.jsxs)("section",{"data-testid":"status-view","aria-labelledby":"status-view-heading",className:"flex flex-col gap-6 py-4",children:[(0,c.jsx)("h2",{id:"status-view-heading",className:"sr-only",children:e("nav.status")}),(0,c.jsx)(tq,{state:t.state,attemptNo:t.attemptNo,errorMessage:t.error}),(0,c.jsx)(eJ,{children:(0,c.jsxs)(eQ,{className:"space-y-4",children:[(0,c.jsx)(tn,{snapshot:t}),(0,c.jsx)(nZ,{state:t.state})]})}),(0,c.jsx)(tV,{logs:n,max:10})]})}function nZ({state:e}){let t=(0,k.useT)();switch(e){case"online":return(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,c.jsx)(nJ,{})});case"offline":return(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,c.jsx)(S,{"data-testid":"status-action-reconnect",variant:"default",onClick:()=>{tr.reconnect().catch(e=>{eH.toast.error(e instanceof Error?e.message:String(e))})},children:t("status.action.reconnect")})});case"reconnecting":case"connecting":return(0,c.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,c.jsxs)(S,{"data-testid":"status-action-reconnect",variant:"outline",disabled:!0,children:[(0,c.jsx)(e2,{size:"sm",label:t("common.loading")}),(0,c.jsx)("span",{children:t("connection.reconnecting")})]})});case"error":return(0,c.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,c.jsx)(S,{"data-testid":"status-action-retry",variant:"default",onClick:()=>{tr.reconnect().catch(e=>{eH.toast.error(e instanceof Error?e.message:String(e))})},children:t("status.action.retry")})});default:return null}}function nJ(){let e=(0,k.useT)();return(0,c.jsxs)(nM,{children:[(0,c.jsx)(nO,{asChild:!0,children:(0,c.jsx)(S,{variant:"destructive","data-testid":"status-action-disconnect",children:e("status.action.disconnect")})}),(0,c.jsxs)(nU,{children:[(0,c.jsxs)(nK,{children:[(0,c.jsx)(nW,{children:e("status.confirm.disconnect.title")}),(0,c.jsx)(nV,{children:e("status.confirm.disconnect.description")})]}),(0,c.jsxs)(nB,{children:[(0,c.jsx)(nq,{children:e("common.cancel")}),(0,c.jsx)(n$,{variant:"destructive","data-testid":"status-action-disconnect-confirm",onClick:()=>{tr.disconnect().catch(e=>{eH.toast.error(e instanceof Error?e.message:String(e))})},children:e("status.action.disconnect")})]})]})]})}let nQ={token_expired:"pair.error.tokenExpired",token_used:"pair.error.tokenUsed",token_invalid:"pair.error.tokenInvalid",token_revoked:"pair.error.tokenRevoked",network_error:"pair.error.network",relay_unreachable:"pair.error.relayUnreachable",unknown:"pair.error.unknown"};function n0(){window.dispatchEvent(new CustomEvent(nX,{detail:{value:"status"}}))}function n1(){let e,t=(0,k.useT)(),{pair:r,submitting:n,lastError:a,reset:o}=function(){let[e,t]=(0,d.useState)(!1),[r,n]=(0,d.useState)(null);return{pair:(0,d.useCallback)(async e=>{t(!0),n(null);try{await tr.pair(e)}catch(t){let e="object"==typeof t&&null!==t&&"code"in t&&"string"==typeof t.code?t:{code:"unknown"};throw n(e),e}finally{t(!1)}},[]),submitting:e,lastError:r,reset:(0,d.useCallback)(()=>n(null),[])}}(),[i,s]=(0,d.useState)(""),l="valid"===e$(i)&&!n;async function u(){if(l)try{await r(i),eH.toast.success(t("pair.success")),window.setTimeout(n0,500)}catch{}}return(0,c.jsxs)("section",{"data-testid":"pair-view","aria-labelledby":"pair-view-heading",className:"flex flex-col gap-6 py-4",children:[(0,c.jsxs)("div",{className:"space-y-1 text-center",children:[(0,c.jsx)("h2",{id:"pair-view-heading",className:"text-2xl font-semibold",children:t("pair.title")}),(0,c.jsx)("p",{className:"text-muted-foreground text-sm",children:t("pair.description")})]}),(0,c.jsx)(eJ,{children:(0,c.jsxs)(eQ,{className:"space-y-4",children:[(0,c.jsx)(eq,{value:i,onChange:function(e){s(e),a&&o()},onSubmit:u,disabled:n,autoFocus:!0}),a&&(0,c.jsx)(eG,{variant:"destructive","data-testid":"pair-error",children:(0,c.jsx)(eZ,{children:(e=t(nQ[a.code]),"relay_unreachable"===a.code&&a.relayUrl?e.replace("{url}",a.relayUrl):e)})}),(0,c.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,c.jsxs)(S,{type:"button",variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:function(){window.open("https://visionA.cloud/devices/pair","_blank","noopener,noreferrer")},"data-testid":"pair-link-cloud",children:[t("pair.linkCloud"),(0,c.jsx)(eO,{"aria-hidden":"true",className:"ml-0.5 size-3"})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(S,{type:"button",variant:"ghost",onClick:function(){s(""),o(),n0()},disabled:n,"data-testid":"pair-button-cancel",children:t("pair.button.cancel")}),(0,c.jsx)(S,{type:"button",variant:"default",onClick:u,disabled:!l,"aria-busy":n,"data-testid":"pair-button-submit",children:n?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e2,{size:"sm",label:t("pair.button.submitting")}),(0,c.jsx)("span",{children:t("pair.button.submitting")})]}):t("pair.button.submit")})]})]})]})}),(0,c.jsx)(eG,{variant:"info","data-testid":"pair-alert-security",children:(0,c.jsx)(eZ,{children:t("pair.alert.security")})})]})}let n2=(0,u.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);function n4(e){let t=d.useRef({value:e,previous:e});return d.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var n3=e.i(65048),n5="Checkbox",[n6,n8]=(0,H.createContextScope)(n5),[n9,n7]=n6(n5);function ae(e){let{__scopeCheckbox:t,checked:r,children:n,defaultChecked:a,disabled:o,form:i,name:s,onCheckedChange:l,required:u,value:f="on",internal_do_not_use_render:p}=e,[v,h]=(0,X.useControllableState)({prop:r,defaultProp:a??!1,onChange:l,caller:n5}),[m,g]=d.useState(null),[x,b]=d.useState(null),y=d.useRef(!1),w=!m||!!i||!!m.closest("form"),j={checked:v,disabled:o,setChecked:h,control:m,setControl:g,name:s,form:i,value:f,hasConsumerStoppedPropagationRef:y,required:u,defaultChecked:!al(a)&&a,isFormControl:w,bubbleInput:x,setBubbleInput:b};return(0,c.jsx)(n9,{scope:t,...j,children:"function"==typeof p?p(j):n})}var at="CheckboxTrigger",ar=d.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:r,...n},a)=>{let{control:o,value:i,disabled:s,checked:l,required:u,setControl:f,setChecked:p,hasConsumerStoppedPropagationRef:v,isFormControl:h,bubbleInput:m}=n7(at,e),g=(0,F.useComposedRefs)(a,f),x=d.useRef(l);return d.useEffect(()=>{let e=o?.form;if(e){let t=()=>p(x.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[o,p]),(0,c.jsx)(q.Primitive.button,{type:"button",role:"checkbox","aria-checked":al(l)?"mixed":l,"aria-required":u,"data-state":ac(l),"data-disabled":s?"":void 0,disabled:s,value:i,...n,ref:g,onKeyDown:(0,O.composeEventHandlers)(t,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,O.composeEventHandlers)(r,e=>{p(e=>!!al(e)||!e),m&&h&&(v.current=e.isPropagationStopped(),v.current||e.stopPropagation())})})});ar.displayName=at;var an=d.forwardRef((e,t)=>{let{__scopeCheckbox:r,name:n,checked:a,defaultChecked:o,required:i,disabled:s,value:l,onCheckedChange:d,form:u,...f}=e;return(0,c.jsx)(ae,{__scopeCheckbox:r,checked:a,defaultChecked:o,disabled:s,required:i,onCheckedChange:d,name:n,form:u,value:l,internal_do_not_use_render:({isFormControl:e})=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ar,{...f,ref:t,__scopeCheckbox:r}),e&&(0,c.jsx)(as,{__scopeCheckbox:r})]})})});an.displayName=n5;var aa="CheckboxIndicator",ao=d.forwardRef((e,t)=>{let{__scopeCheckbox:r,forceMount:n,...a}=e,o=n7(aa,r);return(0,c.jsx)(ev.Presence,{present:n||al(o.checked)||!0===o.checked,children:(0,c.jsx)(q.Primitive.span,{"data-state":ac(o.checked),"data-disabled":o.disabled?"":void 0,...a,ref:t,style:{pointerEvents:"none",...e.style}})})});ao.displayName=aa;var ai="CheckboxBubbleInput",as=d.forwardRef(({__scopeCheckbox:e,...t},r)=>{let{control:n,hasConsumerStoppedPropagationRef:a,checked:o,defaultChecked:i,required:s,disabled:l,name:u,value:f,form:p,bubbleInput:v,setBubbleInput:h}=n7(ai,e),m=(0,F.useComposedRefs)(r,h),g=n4(o),x=(0,n3.useSize)(n);d.useEffect(()=>{if(!v)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!a.current;if(g!==o&&e){let r=new Event("click",{bubbles:t});v.indeterminate=al(o),e.call(v,!al(o)&&o),v.dispatchEvent(r)}},[v,g,o,a]);let b=d.useRef(!al(o)&&o);return(0,c.jsx)(q.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:i??b.current,required:s,disabled:l,name:u,value:f,form:p,...t,tabIndex:-1,ref:m,style:{...t.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function al(e){return"indeterminate"===e}function ac(e){return al(e)?"indeterminate":e?"checked":"unchecked"}as.displayName=ai,e.s(["Checkbox",()=>an,"CheckboxIndicator",()=>ao,"Indicator",()=>ao,"Root",()=>an,"createCheckboxScope",()=>n8,"unstable_BubbleInput",()=>as,"unstable_CheckboxBubbleInput",()=>as,"unstable_CheckboxProvider",()=>ae,"unstable_CheckboxTrigger",()=>ar,"unstable_Provider",()=>ae,"unstable_Trigger",()=>ar],70615);var ad=e.i(70615),ad=ad;function au({className:e,...t}){return(0,c.jsx)(ad.Root,{"data-slot":"checkbox",className:(0,w.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:(0,c.jsx)(ad.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:(0,c.jsx)(n2,{className:"size-3.5"})})})}let af=(0,u.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var ap="Radio",[av,ah]=(0,H.createContextScope)(ap),[am,ag]=av(ap),ax=d.forwardRef((e,t)=>{let{__scopeRadio:r,name:n,checked:a=!1,required:o,disabled:i,value:s="on",onCheck:l,form:u,...f}=e,[p,v]=d.useState(null),h=(0,F.useComposedRefs)(t,e=>v(e)),m=d.useRef(!1),g=!p||u||!!p.closest("form");return(0,c.jsxs)(am,{scope:r,checked:a,disabled:i,children:[(0,c.jsx)(q.Primitive.button,{type:"button",role:"radio","aria-checked":a,"data-state":aj(a),"data-disabled":i?"":void 0,disabled:i,value:s,...f,ref:h,onClick:(0,O.composeEventHandlers)(e.onClick,e=>{a||l?.(),g&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})}),g&&(0,c.jsx)(aw,{control:p,bubbles:!m.current,name:n,value:s,checked:a,required:o,disabled:i,form:u,style:{transform:"translateX(-100%)"}})]})});ax.displayName=ap;var ab="RadioIndicator",ay=d.forwardRef((e,t)=>{let{__scopeRadio:r,forceMount:n,...a}=e,o=ag(ab,r);return(0,c.jsx)(ev.Presence,{present:n||o.checked,children:(0,c.jsx)(q.Primitive.span,{"data-state":aj(o.checked),"data-disabled":o.disabled?"":void 0,...a,ref:t})})});ay.displayName=ab;var aw=d.forwardRef(({__scopeRadio:e,control:t,checked:r,bubbles:n=!0,...a},o)=>{let i=d.useRef(null),s=(0,F.useComposedRefs)(i,o),l=n4(r),u=(0,n3.useSize)(t);return d.useEffect(()=>{let e=i.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(l!==r&&t){let a=new Event("click",{bubbles:n});t.call(e,r),e.dispatchEvent(a)}},[l,r,n]),(0,c.jsx)(q.Primitive.input,{type:"radio","aria-hidden":!0,defaultChecked:r,...a,tabIndex:-1,ref:s,style:{...a.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function aj(e){return e?"checked":"unchecked"}aw.displayName="RadioBubbleInput";var aS=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],aC="RadioGroup",[ak,aE]=(0,H.createContextScope)(aC,[eo,ah]),aR=eo(),aN=ah(),[aT,aA]=ak(aC),aP=d.forwardRef((e,t)=>{let{__scopeRadioGroup:r,name:n,defaultValue:a,value:o,required:i=!1,disabled:s=!1,orientation:l,dir:d,loop:u=!0,onValueChange:f,...p}=e,v=aR(r),h=Z(d),[m,g]=(0,X.useControllableState)({prop:o,defaultProp:a??null,onChange:f,caller:aC});return(0,c.jsx)(aT,{scope:r,name:n,required:i,disabled:s,value:m,onValueChange:g,children:(0,c.jsx)(el,{asChild:!0,...v,orientation:l,dir:h,loop:u,children:(0,c.jsx)(q.Primitive.div,{role:"radiogroup","aria-required":i,"aria-orientation":l,"data-disabled":s?"":void 0,dir:h,...p,ref:t})})})});aP.displayName=aC;var aI="RadioGroupItem",aD=d.forwardRef((e,t)=>{let{__scopeRadioGroup:r,disabled:n,...a}=e,o=aA(aI,r),i=o.disabled||n,s=aR(r),l=aN(r),u=d.useRef(null),f=(0,F.useComposedRefs)(t,u),p=o.value===a.value,v=d.useRef(!1);return d.useEffect(()=>{let e=e=>{aS.includes(e.key)&&(v.current=!0)},t=()=>v.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}},[]),(0,c.jsx)(eu,{asChild:!0,...s,focusable:!i,active:p,children:(0,c.jsx)(ax,{disabled:i,required:o.required,checked:p,...l,...a,name:o.name,ref:f,onCheck:()=>o.onValueChange(a.value),onKeyDown:(0,O.composeEventHandlers)(e=>{"Enter"===e.key&&e.preventDefault()}),onFocus:(0,O.composeEventHandlers)(a.onFocus,()=>{v.current&&u.current?.click()})})})});aD.displayName=aI;var aL=d.forwardRef((e,t)=>{let{__scopeRadioGroup:r,...n}=e,a=aN(r);return(0,c.jsx)(ay,{...a,...n,ref:t})});aL.displayName="RadioGroupIndicator",e.s(["Indicator",()=>aL,"Item",()=>aD,"RadioGroup",()=>aP,"RadioGroupIndicator",()=>aL,"RadioGroupItem",()=>aD,"Root",()=>aP,"createRadioGroupScope",()=>aE],51843);var az=e.i(51843),az=az;function a_({className:e,...t}){return(0,c.jsx)(az.Root,{"data-slot":"radio-group",className:(0,w.cn)("grid gap-3",e),...t})}function aM({className:e,...t}){return(0,c.jsx)(az.Item,{"data-slot":"radio-group-item",className:(0,w.cn)("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive","dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs outline-none","transition-[color,box-shadow] focus-visible:ring-[3px]","disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:(0,c.jsx)(az.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:(0,c.jsx)(af,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}let aO=(0,u.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),aH=(0,u.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var aF=e.i(29080),aU=e.i(70253),aK=y,aB=e.i(36765),aW=[" ","Enter","ArrowUp","ArrowDown"],aV=[" ","Enter"],a$="Select",[aq,aY,aX]=K(a$),[aG,aZ]=(0,H.createContextScope)(a$,[aX,aU.createPopperScope]),aJ=(0,aU.createPopperScope)(),[aQ,a0]=aG(a$),[a1,a2]=aG(a$),a4=e=>{let{__scopeSelect:t,children:r,open:n,defaultOpen:a,onOpenChange:o,value:i,defaultValue:s,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:v,required:h,form:m}=e,g=aJ(t),[x,b]=d.useState(null),[y,w]=d.useState(null),[j,S]=d.useState(!1),C=Z(u),[k,E]=(0,X.useControllableState)({prop:n,defaultProp:a??!1,onChange:o,caller:a$}),[R,N]=(0,X.useControllableState)({prop:i,defaultProp:s,onChange:l,caller:a$}),T=d.useRef(null),A=!x||m||!!x.closest("form"),[P,I]=d.useState(new Set),D=Array.from(P).map(e=>e.props.value).join(";");return(0,c.jsx)(aU.Root,{...g,children:(0,c.jsxs)(aQ,{required:h,scope:t,trigger:x,onTriggerChange:b,valueNode:y,onValueNodeChange:w,valueNodeHasChildren:j,onValueNodeHasChildrenChange:S,contentId:(0,$.useId)(),value:R,onValueChange:N,open:k,onOpenChange:E,dir:C,triggerPointerDownPosRef:T,disabled:v,children:[(0,c.jsx)(aq.Provider,{scope:t,children:(0,c.jsx)(a1,{scope:e.__scopeSelect,onNativeOptionAdd:d.useCallback(e=>{I(t=>new Set(t).add(e))},[]),onNativeOptionRemove:d.useCallback(e=>{I(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),A?(0,c.jsxs)(oL,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:R,onChange:e=>N(e.target.value),disabled:v,form:m,children:[void 0===R?(0,c.jsx)("option",{value:""}):null,Array.from(P)]},D):null]})})};a4.displayName=a$;var a3="SelectTrigger",a5=d.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:n=!1,...a}=e,o=aJ(r),i=a0(a3,r),s=i.disabled||n,l=(0,F.useComposedRefs)(t,i.onTriggerChange),u=aY(r),f=d.useRef("touch"),[p,v,h]=o_(e=>{let t=u().filter(e=>!e.disabled),r=t.find(e=>e.value===i.value),n=oM(t,e,r);void 0!==n&&i.onValueChange(n.value)}),m=e=>{s||(i.onOpenChange(!0),h()),e&&(i.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,c.jsx)(aU.Anchor,{asChild:!0,...o,children:(0,c.jsx)(q.Primitive.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":oz(i.value)?"":void 0,...a,ref:l,onClick:(0,O.composeEventHandlers)(a.onClick,e=>{e.currentTarget.focus(),"mouse"!==f.current&&m(e)}),onPointerDown:(0,O.composeEventHandlers)(a.onPointerDown,e=>{f.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(m(e),e.preventDefault())}),onKeyDown:(0,O.composeEventHandlers)(a.onKeyDown,e=>{let t=""!==p.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||v(e.key),(!t||" "!==e.key)&&aW.includes(e.key)&&(m(),e.preventDefault())})})})});a5.displayName=a3;var a6="SelectValue",a8=d.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:a,children:o,placeholder:i="",...s}=e,l=a0(a6,r),{onValueNodeHasChildrenChange:d}=l,u=void 0!==o,f=(0,F.useComposedRefs)(t,l.onValueNodeChange);return(0,ti.useLayoutEffect)(()=>{d(u)},[d,u]),(0,c.jsx)(q.Primitive.span,{...s,ref:f,style:{pointerEvents:"none"},children:oz(l.value)?(0,c.jsx)(c.Fragment,{children:i}):o})});a8.displayName=a6;var a9=d.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...a}=e;return(0,c.jsx)(q.Primitive.span,{"aria-hidden":!0,...a,ref:t,children:n||"▼"})});a9.displayName="SelectIcon";var a7=e=>(0,c.jsx)(t3.Portal,{asChild:!0,...e});a7.displayName="SelectPortal";var oe="SelectContent",ot=d.forwardRef((e,t)=>{let r=a0(oe,e.__scopeSelect),[n,a]=d.useState();return((0,ti.useLayoutEffect)(()=>{a(new DocumentFragment)},[]),r.open)?(0,c.jsx)(oo,{...e,ref:t}):n?aF.createPortal((0,c.jsx)(or,{scope:e.__scopeSelect,children:(0,c.jsx)(aq.Slot,{scope:e.__scopeSelect,children:(0,c.jsx)("div",{children:e.children})})}),n):null});ot.displayName=oe;var[or,on]=aG(oe),oa=(0,aK.createSlot)("SelectContent.RemoveScroll"),oo=d.forwardRef((e,t)=>{let{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:o,onPointerDownOutside:i,side:s,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:v,collisionPadding:h,sticky:m,hideWhenDetached:g,avoidCollisions:x,...b}=e,y=a0(oe,r),[w,j]=d.useState(null),[S,C]=d.useState(null),k=(0,F.useComposedRefs)(t,e=>j(e)),[E,R]=d.useState(null),[N,T]=d.useState(null),A=aY(r),[P,I]=d.useState(!1),D=d.useRef(!1);d.useEffect(()=>{if(w)return rB(w)},[w]),t6();let L=d.useCallback(e=>{let[t,...r]=A().map(e=>e.ref.current),[n]=r.slice(-1),a=document.activeElement;for(let r of e)if(r===a||(r?.scrollIntoView({block:"nearest"}),r===t&&S&&(S.scrollTop=0),r===n&&S&&(S.scrollTop=S.scrollHeight),r?.focus(),document.activeElement!==a))return},[A,S]),z=d.useCallback(()=>L([E,w]),[L,E,w]);d.useEffect(()=>{P&&z()},[P,z]);let{onOpenChange:_,triggerPointerDownPosRef:M}=y;d.useEffect(()=>{if(w){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(M.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(M.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():w.contains(r.target)||_(!1),document.removeEventListener("pointermove",t),M.current=null};return null!==M.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[w,_,M]),d.useEffect(()=>{let e=()=>_(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[_]);let[H,U]=o_(e=>{let t=A().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=oM(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),K=d.useCallback((e,t,r)=>{let n=!D.current&&!r;(void 0!==y.value&&y.value===t||n)&&(R(e),n&&(D.current=!0))},[y.value]),B=d.useCallback(()=>w?.focus(),[w]),W=d.useCallback((e,t,r)=>{let n=!D.current&&!r;(void 0!==y.value&&y.value===t||n)&&T(e)},[y.value]),V="popper"===n?os:oi,$=V===os?{side:s,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:v,collisionPadding:h,sticky:m,hideWhenDetached:g,avoidCollisions:x}:{};return(0,c.jsx)(or,{scope:r,content:w,viewport:S,onViewportChange:C,itemRefCallback:K,selectedItem:E,onItemLeave:B,itemTextRefCallback:W,focusSelectedItem:z,selectedItemText:N,position:n,isPositioned:P,searchRef:H,children:(0,c.jsx)(r_,{as:oa,allowPinchZoom:!0,children:(0,c.jsx)(tJ,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,O.composeEventHandlers)(a,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,c.jsx)(tY.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,c.jsx)(V,{role:"listbox",id:y.contentId,"data-state":y.open?"open":"closed",dir:y.dir,onContextMenu:e=>e.preventDefault(),...b,...$,onPlaced:()=>I(!0),ref:k,style:{display:"flex",flexDirection:"column",outline:"none",...b.style},onKeyDown:(0,O.composeEventHandlers)(b.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||U(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=A().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>L(t)),e.preventDefault()}})})})})})})});oo.displayName="SelectContentImpl";var oi=d.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:n,...a}=e,o=a0(oe,r),i=on(oe,r),[s,l]=d.useState(null),[u,f]=d.useState(null),p=(0,F.useComposedRefs)(t,e=>f(e)),v=aY(r),h=d.useRef(!1),m=d.useRef(!0),{viewport:g,selectedItem:x,selectedItemText:b,focusSelectedItem:y}=i,w=d.useCallback(()=>{if(o.trigger&&o.valueNode&&s&&u&&g&&x&&b){let e=o.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),r=o.valueNode.getBoundingClientRect(),a=b.getBoundingClientRect();if("rtl"!==o.dir){let n=a.left-t.left,o=r.left-n,i=e.left-o,l=e.width+i,c=Math.max(l,t.width),d=ts(o,[10,Math.max(10,window.innerWidth-10-c)]);s.style.minWidth=l+"px",s.style.left=d+"px"}else{let n=t.right-a.right,o=window.innerWidth-r.right-n,i=window.innerWidth-e.right-o,l=e.width+i,c=Math.max(l,t.width),d=ts(o,[10,Math.max(10,window.innerWidth-10-c)]);s.style.minWidth=l+"px",s.style.right=d+"px"}let i=v(),l=window.innerHeight-20,c=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),p=parseInt(d.paddingTop,10),m=parseInt(d.borderBottomWidth,10),y=f+p+c+parseInt(d.paddingBottom,10)+m,w=Math.min(5*x.offsetHeight,y),j=window.getComputedStyle(g),S=parseInt(j.paddingTop,10),C=parseInt(j.paddingBottom,10),k=e.top+e.height/2-10,E=x.offsetHeight/2,R=f+p+(x.offsetTop+E);if(R<=k){let e=i.length>0&&x===i[i.length-1].ref.current;s.style.bottom="0px";let t=Math.max(l-k,E+(e?C:0)+(u.clientHeight-g.offsetTop-g.offsetHeight)+m);s.style.height=R+t+"px"}else{let e=i.length>0&&x===i[0].ref.current;s.style.top="0px";let t=Math.max(k,f+g.offsetTop+(e?S:0)+E);s.style.height=t+(y-R)+"px",g.scrollTop=R-k+g.offsetTop}s.style.margin="10px 0",s.style.minHeight=w+"px",s.style.maxHeight=l+"px",n?.(),requestAnimationFrame(()=>h.current=!0)}},[v,o.trigger,o.valueNode,s,u,g,x,b,o.dir,n]);(0,ti.useLayoutEffect)(()=>w(),[w]);let[j,S]=d.useState();(0,ti.useLayoutEffect)(()=>{u&&S(window.getComputedStyle(u).zIndex)},[u]);let C=d.useCallback(e=>{e&&!0===m.current&&(w(),y?.(),m.current=!1)},[w,y]);return(0,c.jsx)(ol,{scope:r,contentWrapper:s,shouldExpandOnScrollRef:h,onScrollButtonChange:C,children:(0,c.jsx)("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:j},children:(0,c.jsx)(q.Primitive.div,{...a,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});oi.displayName="SelectItemAlignedPosition";var os=d.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:a=10,...o}=e,i=aJ(r);return(0,c.jsx)(aU.Content,{...i,...o,ref:t,align:n,collisionPadding:a,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});os.displayName="SelectPopperPosition";var[ol,oc]=aG(oe,{}),od="SelectViewport",ou=d.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:n,...a}=e,o=on(od,r),i=oc(od,r),s=(0,F.useComposedRefs)(t,o.onViewportChange),l=d.useRef(0);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),(0,c.jsx)(aq.Slot,{scope:r,children:(0,c.jsx)(q.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:(0,O.composeEventHandlers)(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=i;if(n?.current&&r){let e=Math.abs(l.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,a=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(a<n){let o=a+e,i=Math.min(n,o),s=o-i;r.style.height=i+"px","0px"===r.style.bottom&&(t.scrollTop=s>0?s:0,r.style.justifyContent="flex-end")}}}l.current=t.scrollTop})})})]})});ou.displayName=od;var of="SelectGroup",[op,ov]=aG(of),oh=d.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,a=(0,$.useId)();return(0,c.jsx)(op,{scope:r,id:a,children:(0,c.jsx)(q.Primitive.div,{role:"group","aria-labelledby":a,...n,ref:t})})});oh.displayName=of;var om="SelectLabel",og=d.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,a=ov(om,r);return(0,c.jsx)(q.Primitive.div,{id:a.id,...n,ref:t})});og.displayName=om;var ox="SelectItem",[ob,oy]=aG(ox),ow=d.forwardRef((e,t)=>{let{__scopeSelect:r,value:n,disabled:a=!1,textValue:o,...i}=e,s=a0(ox,r),l=on(ox,r),u=s.value===n,[f,p]=d.useState(o??""),[v,h]=d.useState(!1),m=(0,F.useComposedRefs)(t,e=>l.itemRefCallback?.(e,n,a)),g=(0,$.useId)(),x=d.useRef("touch"),b=()=>{a||(s.onValueChange(n),s.onOpenChange(!1))};if(""===n)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,c.jsx)(ob,{scope:r,value:n,disabled:a,textId:g,isSelected:u,onItemTextChange:d.useCallback(e=>{p(t=>t||(e?.textContent??"").trim())},[]),children:(0,c.jsx)(aq.ItemSlot,{scope:r,value:n,disabled:a,textValue:f,children:(0,c.jsx)(q.Primitive.div,{role:"option","aria-labelledby":g,"data-highlighted":v?"":void 0,"aria-selected":u&&v,"data-state":u?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...i,ref:m,onFocus:(0,O.composeEventHandlers)(i.onFocus,()=>h(!0)),onBlur:(0,O.composeEventHandlers)(i.onBlur,()=>h(!1)),onClick:(0,O.composeEventHandlers)(i.onClick,()=>{"mouse"!==x.current&&b()}),onPointerUp:(0,O.composeEventHandlers)(i.onPointerUp,()=>{"mouse"===x.current&&b()}),onPointerDown:(0,O.composeEventHandlers)(i.onPointerDown,e=>{x.current=e.pointerType}),onPointerMove:(0,O.composeEventHandlers)(i.onPointerMove,e=>{x.current=e.pointerType,a?l.onItemLeave?.():"mouse"===x.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,O.composeEventHandlers)(i.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:(0,O.composeEventHandlers)(i.onKeyDown,e=>{(l.searchRef?.current===""||" "!==e.key)&&(aV.includes(e.key)&&b()," "===e.key&&e.preventDefault())})})})})});ow.displayName=ox;var oj="SelectItemText",oS=d.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:a,...o}=e,i=a0(oj,r),s=on(oj,r),l=oy(oj,r),u=a2(oj,r),[f,p]=d.useState(null),v=(0,F.useComposedRefs)(t,e=>p(e),l.onItemTextChange,e=>s.itemTextRefCallback?.(e,l.value,l.disabled)),h=f?.textContent,m=d.useMemo(()=>(0,c.jsx)("option",{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:g,onNativeOptionRemove:x}=u;return(0,ti.useLayoutEffect)(()=>(g(m),()=>x(m)),[g,x,m]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(q.Primitive.span,{id:l.textId,...o,ref:v}),l.isSelected&&i.valueNode&&!i.valueNodeHasChildren?aF.createPortal(o.children,i.valueNode):null]})});oS.displayName=oj;var oC="SelectItemIndicator",ok=d.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return oy(oC,r).isSelected?(0,c.jsx)(q.Primitive.span,{"aria-hidden":!0,...n,ref:t}):null});ok.displayName=oC;var oE="SelectScrollUpButton",oR=d.forwardRef((e,t)=>{let r=on(oE,e.__scopeSelect),n=oc(oE,e.__scopeSelect),[a,o]=d.useState(!1),i=(0,F.useComposedRefs)(t,n.onScrollButtonChange);return(0,ti.useLayoutEffect)(()=>{if(r.viewport&&r.isPositioned){let e=function(){o(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),a?(0,c.jsx)(oA,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});oR.displayName=oE;var oN="SelectScrollDownButton",oT=d.forwardRef((e,t)=>{let r=on(oN,e.__scopeSelect),n=oc(oN,e.__scopeSelect),[a,o]=d.useState(!1),i=(0,F.useComposedRefs)(t,n.onScrollButtonChange);return(0,ti.useLayoutEffect)(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;o(Math.ceil(t.scrollTop)<e)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),a?(0,c.jsx)(oA,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});oT.displayName=oN;var oA=d.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:n,...a}=e,o=on("SelectScrollButton",r),i=d.useRef(null),s=aY(r),l=d.useCallback(()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)},[]);return d.useEffect(()=>()=>l(),[l]),(0,ti.useLayoutEffect)(()=>{let e=s().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[s]),(0,c.jsx)(q.Primitive.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:(0,O.composeEventHandlers)(a.onPointerDown,()=>{null===i.current&&(i.current=window.setInterval(n,50))}),onPointerMove:(0,O.composeEventHandlers)(a.onPointerMove,()=>{o.onItemLeave?.(),null===i.current&&(i.current=window.setInterval(n,50))}),onPointerLeave:(0,O.composeEventHandlers)(a.onPointerLeave,()=>{l()})})}),oP=d.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,c.jsx)(q.Primitive.div,{"aria-hidden":!0,...n,ref:t})});oP.displayName="SelectSeparator";var oI="SelectArrow",oD=d.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,a=aJ(r),o=a0(oI,r),i=on(oI,r);return o.open&&"popper"===i.position?(0,c.jsx)(aU.Arrow,{...a,...n,ref:t}):null});oD.displayName=oI;var oL=d.forwardRef(({__scopeSelect:e,value:t,...r},n)=>{let a=d.useRef(null),o=(0,F.useComposedRefs)(n,a),i=n4(t);return d.useEffect(()=>{let e=a.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==t&&r){let n=new Event("change",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[i,t]),(0,c.jsx)(q.Primitive.select,{...r,style:{...aB.VISUALLY_HIDDEN_STYLES,...r.style},ref:o,defaultValue:t})});function oz(e){return""===e||void 0===e}function o_(e){let t=(0,Y.useCallbackRef)(e),r=d.useRef(""),n=d.useRef(0),a=d.useCallback(e=>{let a=r.current+e;t(a),function e(t){r.current=t,window.clearTimeout(n.current),""!==t&&(n.current=window.setTimeout(()=>e(""),1e3))}(a)},[t]),o=d.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return d.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,a,o]}function oM(e,t,r){var n,a;let o=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=r?e.indexOf(r):-1,s=(n=e,a=Math.max(i,0),n.map((e,t)=>n[(a+t)%n.length]));1===o.length&&(s=s.filter(e=>e!==r));let l=s.find(e=>e.textValue.toLowerCase().startsWith(o.toLowerCase()));return l!==r?l:void 0}oL.displayName="SelectBubbleInput",e.s(["Arrow",()=>oD,"Content",()=>ot,"Group",()=>oh,"Icon",()=>a9,"Item",()=>ow,"ItemIndicator",()=>ok,"ItemText",()=>oS,"Label",()=>og,"Portal",()=>a7,"Root",()=>a4,"ScrollDownButton",()=>oT,"ScrollUpButton",()=>oR,"Select",()=>a4,"SelectArrow",()=>oD,"SelectContent",()=>ot,"SelectGroup",()=>oh,"SelectIcon",()=>a9,"SelectItem",()=>ow,"SelectItemIndicator",()=>ok,"SelectItemText",()=>oS,"SelectLabel",()=>og,"SelectPortal",()=>a7,"SelectScrollDownButton",()=>oT,"SelectScrollUpButton",()=>oR,"SelectSeparator",()=>oP,"SelectTrigger",()=>a5,"SelectValue",()=>a8,"SelectViewport",()=>ou,"Separator",()=>oP,"Trigger",()=>a5,"Value",()=>a8,"Viewport",()=>ou,"createSelectScope",()=>aZ],65347);var oO=e.i(65347),oO=oO;function oH({...e}){return(0,c.jsx)(oO.Root,{"data-slot":"select",...e})}function oF({...e}){return(0,c.jsx)(oO.Value,{"data-slot":"select-value",...e})}function oU({className:e,size:t="default",children:r,...n}){return(0,c.jsxs)(oO.Trigger,{"data-slot":"select-trigger","data-size":t,className:(0,w.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...n,children:[r,(0,c.jsx)(oO.Icon,{asChild:!0,children:(0,c.jsx)(aO,{className:"size-4 opacity-50"})})]})}function oK({className:e,children:t,position:r="item-aligned",align:n="center",...a}){return(0,c.jsx)(oO.Portal,{children:(0,c.jsxs)(oO.Content,{"data-slot":"select-content",className:(0,w.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,align:n,...a,children:[(0,c.jsx)(oW,{}),(0,c.jsx)(oO.Viewport,{className:(0,w.cn)("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,c.jsx)(oV,{})]})})}function oB({className:e,children:t,...r}){return(0,c.jsxs)(oO.Item,{"data-slot":"select-item",className:(0,w.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,c.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,c.jsx)(oO.ItemIndicator,{children:(0,c.jsx)(n2,{className:"size-4"})})}),(0,c.jsx)(oO.ItemText,{children:t})]})}function oW({className:e,...t}){return(0,c.jsx)(oO.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:(0,w.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,c.jsx)(aH,{className:"size-4"})})}function oV({className:e,...t}){return(0,c.jsx)(oO.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:(0,w.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,c.jsx)(aO,{className:"size-4"})})}var o$="horizontal",oq=["horizontal","vertical"],oY=d.forwardRef((e,t)=>{var r;let{decorative:n,orientation:a=o$,...o}=e,i=(r=a,oq.includes(r))?a:o$;return(0,c.jsx)(q.Primitive.div,{"data-orientation":i,...n?{role:"none"}:{"aria-orientation":"vertical"===i?i:void 0,role:"separator"},...o,ref:t})});oY.displayName="Separator",e.s(["Root",()=>oY,"Separator",()=>oY],63082);var oX=e.i(63082),oX=oX;function oG({className:e,orientation:t="horizontal",decorative:r=!0,...n}){return(0,c.jsx)(oX.Root,{"data-slot":"separator",decorative:r,orientation:t,className:(0,w.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...n})}let oZ={relayUrl:"wss://relay.visionA.cloud",autoStart:!1,reconnectStrategy:"auto",logLevel:"info"};function oJ(){let[e,t]=(0,d.useState)(oZ),[r,n]=(0,d.useState)(!0),[a,o]=(0,d.useState)(null),i=(0,d.useRef)(!0);(0,d.useEffect)(()=>(i.current=!0,tr.getAgentSettings().then(e=>{i.current&&(t(e),o(null))}).catch(e=>{i.current&&o(e instanceof Error?e.message:String(e))}).finally(()=>{i.current&&n(!1)}),()=>{i.current=!1}),[]);let s=(0,d.useCallback)(async r=>{let n={...e,...r};t(n);try{await tr.saveAgentSettings(n),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}},[e]);return{settings:e,loading:r,lastError:a,save:s,resetAll:(0,d.useCallback)(async()=>{try{await tr.resetAllSettings(),t(oZ),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}},[])}}let oQ={macos:"~/Library/Application Support/visionA Agent/logs/",windows:"%APPDATA%\\visionA Agent\\logs\\",linux:"~/.config/visionA-agent/logs/"};function o0(){let e=(0,k.useT)();return(0,c.jsxs)("section",{"data-testid":"settings-view","aria-labelledby":"settings-view-heading",className:"flex flex-col gap-8 py-4",children:[(0,c.jsx)("h2",{id:"settings-view-heading",className:"sr-only",children:e("nav.settings")}),(0,c.jsx)(o1,{}),(0,c.jsx)(oG,{}),(0,c.jsx)(o2,{}),(0,c.jsx)(oG,{}),(0,c.jsx)(o4,{}),(0,c.jsx)(oG,{}),(0,c.jsx)(o3,{}),(0,c.jsx)(oG,{}),(0,c.jsx)(o5,{})]})}function o1(){let e=(0,k.useT)(),{settings:t,save:r}=oJ(),{test:n,testing:a}=function(){let[e,t]=(0,d.useState)(!1);return{test:(0,d.useCallback)(async e=>{t(!0);try{return await tr.testConnection(e)}catch(e){return{ok:!1,reason:e instanceof Error?e.message:String(e)}}finally{t(!1)}},[]),testing:e}}(),[o,i]=(0,d.useState)(t.relayUrl),s=/^wss?:\/\/.+/i.test(o),l=o!==t.relayUrl;async function u(){let t=await n(o);t.ok?eH.toast.success(e("settings.testConnection.success").replace("{latency}",String(t.latencyMs??0))):eH.toast.error(e("settings.testConnection.failed").replace("{url}",o).replace("{reason}",t.reason??""))}return(0,c.jsx)(o6,{titleKey:"settings.section.connection",t:e,children:(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(eW,{htmlFor:"settings-relay-url",children:e("settings.relayUrl.label")}),(0,c.jsxs)("div",{className:"flex gap-2",children:[(0,c.jsx)(eU,{id:"settings-relay-url",type:"text",value:o,onChange:e=>i(e.target.value),onBlur:function(){l&&s&&r({relayUrl:o})},"aria-invalid":!s,"data-testid":"settings-relay-url",className:"font-mono text-sm"}),(0,c.jsx)(S,{type:"button",variant:"outline",size:"sm",onClick:u,disabled:!s||a,"data-testid":"settings-test-connection",children:a?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e2,{size:"sm",label:e("common.loading")}),(0,c.jsx)("span",{children:e("settings.testConnection.testing")})]}):e("settings.testConnection.button")})]}),(0,c.jsx)("p",{className:(0,w.cn)("text-xs",s?"text-muted-foreground":"text-destructive"),children:s?e("settings.relayUrl.hint"):e("settings.relayUrl.invalidProtocol")})]})})}function o2(){let e=(0,k.useT)(),{settings:t,save:r}=oJ();return(0,c.jsxs)(o6,{titleKey:"settings.section.behavior",t:e,children:[(0,c.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,c.jsx)(au,{checked:t.autoStart,onCheckedChange:e=>r({autoStart:!0===e}),"data-testid":"settings-autostart"}),(0,c.jsx)("span",{children:e("settings.autoStart.label")})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(eW,{children:e("settings.reconnect.label")}),(0,c.jsxs)(a_,{value:t.reconnectStrategy,onValueChange:e=>r({reconnectStrategy:e}),"data-testid":"settings-reconnect-strategy",children:[(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(aM,{value:"auto",id:"reconnect-auto"}),(0,c.jsx)(eW,{htmlFor:"reconnect-auto",className:"font-normal",children:e("settings.reconnect.auto")})]}),(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(aM,{value:"manual",id:"reconnect-manual"}),(0,c.jsx)(eW,{htmlFor:"reconnect-manual",className:"font-normal",children:e("settings.reconnect.manual")})]})]})]})]})}function o4(){let e=(0,k.useT)(),{settings:t,save:r}=oJ(),{exportLog:n,exporting:a}=function(){let[e,t]=(0,d.useState)(!1),[r,n]=(0,d.useState)(null);return{exportLog:(0,d.useCallback)(async()=>{t(!0),n(null);try{return await tr.exportLog()||null}catch(e){return n(e instanceof Error?e.message:String(e)),null}finally{t(!1)}},[]),exporting:e,lastError:r}}(),[o]=(0,d.useState)(()=>(function(){if("u"<typeof navigator)return"macos";let e=navigator.platform.toLowerCase();return e.includes("mac")?"macos":e.includes("win")?"windows":"linux"})());async function i(){let t=await n();t&&eH.toast.success(e("settings.log.exported").replace("{path}",t))}return(0,c.jsxs)(o6,{titleKey:"settings.section.log",t:e,children:[(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(eW,{htmlFor:"settings-log-level",children:e("settings.log.level")}),(0,c.jsxs)(oH,{value:t.logLevel,onValueChange:e=>r({logLevel:e}),children:[(0,c.jsx)(oU,{id:"settings-log-level","data-testid":"settings-log-level",className:"w-40",children:(0,c.jsx)(oF,{})}),(0,c.jsxs)(oK,{children:[(0,c.jsx)(oB,{value:"debug",children:e("settings.log.level.debug")}),(0,c.jsx)(oB,{value:"info",children:e("settings.log.level.info")}),(0,c.jsx)(oB,{value:"warn",children:e("settings.log.level.warn")}),(0,c.jsx)(oB,{value:"error",children:e("settings.log.level.error")})]})]})]}),(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)(eW,{children:e("settings.log.location")}),(0,c.jsx)("p",{className:"text-muted-foreground break-all font-mono text-xs","data-testid":"settings-log-location",children:oQ[o]})]}),(0,c.jsx)("div",{children:(0,c.jsx)(S,{type:"button",variant:"outline",size:"sm",onClick:i,disabled:a,"data-testid":"settings-export-log",children:a?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e2,{size:"sm",label:e("common.loading")}),(0,c.jsx)("span",{children:e("settings.log.exporting")})]}):e("settings.log.export")})})]})}function o3(){let e=(0,k.useT)();function t(e){window.open(e,"_blank","noopener,noreferrer")}return(0,c.jsxs)(o6,{titleKey:"settings.section.about",t:e,children:[(0,c.jsxs)("div",{className:"grid grid-cols-[120px_1fr] items-center gap-3 text-sm",children:[(0,c.jsx)("span",{className:"text-muted-foreground",children:e("settings.about.version")}),(0,c.jsxs)("span",{className:"font-mono","data-testid":"settings-version",children:["visionA Agent ","0.1.0"]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,c.jsx)(S,{type:"button",variant:"outline",size:"sm",disabled:!0,title:e("settings.about.checkUpdate.phase1"),"aria-describedby":"check-update-phase-hint","data-testid":"settings-check-update",children:e("settings.about.checkUpdate")}),(0,c.jsx)("span",{id:"check-update-phase-hint",className:"sr-only",children:e("settings.about.checkUpdate.phase1")}),(0,c.jsx)(S,{type:"button",variant:"outline",size:"sm",onClick:()=>t("https://docs.visionA.cloud/agent"),children:e("settings.about.docs")}),(0,c.jsx)(S,{type:"button",variant:"outline",size:"sm",onClick:()=>t("https://github.com/innovedus/visionA-agent"),children:e("settings.about.github")})]})]})}function o5(){let e=(0,k.useT)(),{resetAll:t}=oJ();return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsx)("h3",{className:"text-destructive text-sm font-medium",children:e("settings.section.danger")}),(0,c.jsxs)(nM,{children:[(0,c.jsx)(nO,{asChild:!0,children:(0,c.jsx)(S,{type:"button",variant:"destructive",size:"sm","data-testid":"settings-reset",children:e("settings.reset.button")})}),(0,c.jsxs)(nU,{children:[(0,c.jsxs)(nK,{children:[(0,c.jsx)(nW,{children:e("settings.reset.confirm.title")}),(0,c.jsx)(nV,{children:e("settings.reset.confirm.description")})]}),(0,c.jsxs)(nB,{children:[(0,c.jsx)(nq,{children:e("common.cancel")}),(0,c.jsx)(n$,{variant:"destructive",onClick:function(){t(),eH.toast.success(e("settings.reset.done"))},"data-testid":"settings-reset-confirm",children:e("settings.reset.confirm.ok")})]})]})]})]})}function o6({titleKey:e,t,children:r}){return(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsx)("h3",{className:"text-sm font-medium",children:t(e)}),(0,c.jsx)("div",{className:"space-y-4",children:r})]})}function o8(){let[e,t]=(0,d.useState)("status");return(0,d.useEffect)(()=>{function e(e){let r=e.detail;r?.value&&("status"===r.value||"pair"===r.value||"settings"===r.value)&&t(r.value)}return window.addEventListener(nX,e),()=>window.removeEventListener(nX,e)},[]),(0,c.jsx)(M,{children:(0,c.jsxs)(eP,{value:e,onValueChange:e=>t(e),className:"mx-auto w-full max-w-2xl px-4 py-3","data-testid":"agent-tabs",children:[(0,c.jsx)(eM,{}),(0,c.jsx)(ez,{value:"status",children:(0,c.jsx)(nG,{})}),(0,c.jsx)(ez,{value:"pair",children:(0,c.jsx)(n1,{})}),(0,c.jsx)(ez,{value:"settings",children:(0,c.jsx)(o0,{})})]})})}e.s(["default",()=>o8],52683)}]); |