@openchambery/web 2.0.0-beta.34 → 2.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentAvatar-39ZQdUMb.js → AgentAvatar-C1MGZ7qC.js} +1 -1
- package/dist/assets/{AssistantView-ClCvt9pu.js → AssistantView-BKnFUgRh.js} +3 -3
- package/dist/assets/{DiagramView-NRDIf-NO.js → DiagramView-Cr5TV-NS.js} +1 -1
- package/dist/assets/{FadeInOnReveal-D8_HoWJW.js → FadeInOnReveal-BMSk_tY-.js} +1 -1
- package/dist/assets/{Icon-CE66hJdc.js → Icon-BdzPRCSy.js} +1 -1
- package/dist/assets/{MarkdownRenderer-DJ-O-M6C.js → MarkdownRenderer-CG9_rNLi.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-C3TQXSSZ.js → MarkdownRendererImpl-C1VOfbVp.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-DOWtMoIJ.js → MarkstreamRendererImpl-D3gH92YL.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-D7R5SJbS.js → MobileDetailNavigation-BgcsB7yg.js} +1 -1
- package/dist/assets/{MobileShareBridge-DU_FyiQD.js → MobileShareBridge-C_Ju_iYd.js} +1 -1
- package/dist/assets/{MobileSurface-D9_7c6Cn.js → MobileSurface-BVefleA5.js} +1 -1
- package/dist/assets/{MultiRunWindow-CpR2em-Q.js → MultiRunWindow-59umt4aL.js} +1 -1
- package/dist/assets/{OnboardingScreen-AVTF1Yzw.js → OnboardingScreen-yRdQTR1M.js} +1 -1
- package/dist/assets/{OverlayScrollbar-BpIZ26ys.js → OverlayScrollbar-BUjtqnxn.js} +1 -1
- package/dist/assets/SettingsView-lFcZNczX.js +25 -0
- package/dist/assets/{SettingsWindow-CPD77cLX.js → SettingsWindow-DyCotof2.js} +1 -1
- package/dist/assets/{TerminalView-BG-1CW4K.js → TerminalView-2or3pf8m.js} +1 -1
- package/dist/assets/{ToolOutputDialog-cAJocSiM.js → ToolOutputDialog-8cuS3S8r.js} +1 -1
- package/dist/assets/{appThemeRegistry-Yr9QxYQy.js → appThemeRegistry-DBN3cBJz.js} +1 -1
- package/dist/assets/{button-ChCnZLEt.js → button-CUwjpv-i.js} +1 -1
- package/dist/assets/{collapsible-BASDiUrS.js → collapsible-paItOH3A.js} +1 -1
- package/dist/assets/{context-menu-ZRX9X1ME.js → context-menu-K6zNumqN.js} +1 -1
- package/dist/assets/{diagram-Ces9ucuK.js → diagram-D6nY5hbD.js} +1 -1
- package/dist/assets/{dialog-ceLSQusF.js → dialog-PjKWayIU.js} +1 -1
- package/dist/assets/{es-C0ZcgPDN.js → es-BBbon7SL.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-CIOhB1P5.js → fileMentionTouchSelection-Basgzi-b.js} +1 -1
- package/dist/assets/{fr-BILFhfo6.js → fr-BsKj2CTi.js} +1 -1
- package/dist/assets/{gitApi-sTW95QwU.js → gitApi-CgrQrPVW.js} +1 -1
- package/dist/assets/{input-Dtqk4nzm.js → input-BeVw4D0W.js} +1 -1
- package/dist/assets/{insertionBoundaries-DEEn0bys.js → insertionBoundaries-BTSp06NL.js} +1 -1
- package/dist/assets/{ja-BP2JyAsN.js → ja-1mgxunoM.js} +1 -1
- package/dist/assets/{ko-DAAaN7rn.js → ko-Ra9znPcL.js} +1 -1
- package/dist/assets/{main-BJ08nweY.js → main-3g2Cz2xH.js} +4 -4
- package/dist/assets/{main-CgThlpB4.js → main-Bwq-Skqc.js} +2 -2
- package/dist/assets/{markdownHeightCache-CdSRADBK.js → markdownHeightCache-CGCWmHgq.js} +1 -1
- package/dist/assets/{mcpQueries-Dhk49pVS.js → mcpQueries-CTwCARbw.js} +1 -1
- package/dist/assets/{miniChat-BO47U_8_.js → miniChat-B4Ta8R-q.js} +2 -2
- package/dist/assets/{mobile-chV-DzPQ.js → mobile-D8uJUpOE.js} +2 -2
- package/dist/assets/{multirun-F73TTl9d.js → multirun-Wvh0ZyuC.js} +1 -1
- package/dist/assets/{pl-CFOOW0Ji.js → pl-B714sdql.js} +1 -1
- package/dist/assets/{projectMeta-5PY-PuWR.js → projectMeta-CqE63PAd.js} +1 -1
- package/dist/assets/{pt-BR-CwdlvB83.js → pt-BR-DVoT_I7_.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-9we9CFeV.js → renderElectronMiniChatApp-DzIQ-fbt.js} +2 -2
- package/dist/assets/{renderMobileApp-D0AO-nmX.js → renderMobileApp-BHYyPgy8.js} +4 -4
- package/dist/assets/{runtimeConfig-ZPmdzse-.js → runtimeConfig-BK1Ljkw4.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-DsjRfaID.js → runtimeEndpointReset-Y7SpEFt6.js} +1 -1
- package/dist/assets/{sessionChangeSummary-BdwNVcG2.js → sessionChangeSummary-CSsr5fCL.js} +1 -1
- package/dist/assets/{sessionLookup-BPK2yNTc.js → sessionLookup-Biu-S0oB.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-yfS8hmwd.js → sortable-tabs-strip-D611LPyd.js} +1 -1
- package/dist/assets/src-TBM7scxy.css +2 -0
- package/dist/assets/{store-DZyICLn6.js → store-l_X_jQNz.js} +2 -2
- package/dist/assets/{textarea-Cyj3BlDq.js → textarea-QtZjf4L8.js} +1 -1
- package/dist/assets/{tooltip-C-I1W_fN.js → tooltip-DDNnmcXI.js} +1 -1
- package/dist/assets/{uk-C-8fQjL5.js → uk-ChNnTgKP.js} +1 -1
- package/dist/assets/{useAppFontEffects-CUqVLYn5.js → useAppFontEffects-EhAd1HUV.js} +6 -6
- package/dist/assets/{useDesktopWindowControlsLayout-CXnrUYUp.js → useDesktopWindowControlsLayout-CLka_bUe.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-ChlCpeY2.js → useEffectiveDirectory-BDpuRwyR.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-Dj346HEs.js → useMobileNavigationStore-BeQSkvGH.js} +6 -6
- package/dist/assets/{useSessionAutoCleanup-CKZ4ko2R.js → useSessionAutoCleanup-CJcgkAQt.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-DXmWifj1.js → useWorkerHighlightedLines-BA84J2Gf.js} +1 -1
- package/dist/assets/{zh-CN-Brts9G8b.js → zh-CN-DHEFf4u1.js} +1 -1
- package/dist/assets/{zh-TW-B7ACkXT3.js → zh-TW-rdSa8atW.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/mini-chat.html +3 -3
- package/dist/mobile.html +3 -3
- package/package.json +1 -1
- package/dist/assets/SettingsView-CoSEUf9E.js +0 -25
- package/dist/assets/src-BsXLdO-L.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{nt as t,rt as n,tt as r}from"./vendor-base-ui-CnHfUmDN.js";import{n as i}from"./vendor-react-DLPElpoQ.js";import{f as a,r as o,t as s}from"./button-ChCnZLEt.js";import{n as c}from"./Icon-CE66hJdc.js";import{t as l}from"./OverlayScrollbar-BpIZ26ys.js";var u=e(n(),1),d=i(),f=t(),p=e(r(),1),m=0,h=()=>{m=Date.now()+800},g=()=>Date.now()<m,_=(e,t)=>{let n=`flex min-h-0 flex-col bg-background shadow-none`;if(e===`page`)return`${n} h-full w-full`;let r=`${n} pwa-overlay-panel`;return t===`top`?`${r} mx-auto mb-auto max-h-[calc(100dvh-0.75rem)] w-full max-w-lg rounded-b-xl border-x border-b border-border/50`:t===`left`?`${r} h-full w-[min(86vw,24rem)] rounded-r-xl border-r border-y border-border/50`:t===`right`?`${r} ml-auto h-full w-[min(86vw,24rem)] rounded-l-xl border-l border-y border-border/50`:`${r} mx-auto mt-auto max-h-[calc(100dvh-0.75rem)] w-full max-w-lg rounded-t-2xl border-x border-t border-border/50 pb-[max(0.5rem,var(--oc-app-bottom-safe,0px),var(--oc-safe-area-bottom,env(safe-area-inset-bottom,0px)))]`},v=e=>Math.min(1,Math.max(0,Number.isFinite(e)?e:0)),y=(e,t,n)=>{let r=Number.isFinite(t)&&t>0?t:1,i=Math.max(0,Number.isFinite(e)?e:0)/r,a=v(n[0]??1),o=Math.abs(i-a);for(let e=1;e<n.length;e+=1){let t=v(n[e]??a),r=Math.abs(i-t);r<o&&(a=t,o=r)}return a},b=(e,t)=>{let n=v(t),r=`${(1-n)*100}%`;return{progress:n,scrimOpacity:n,surfaceOpacity:n,surfaceTransform:e===`left`?`translate3d(-${r}, 0, 0)`:e===`right`?`translate3d(${r}, 0, 0)`:e===`top`?`translate3d(0, -${r}, 0)`:`translate3d(0, ${r}, 0)`}},x=(e,t)=>{let n=v(t);return e===`present`?n:1-n},S=(e,t)=>e===`present`?+(t===`commit`):t===`commit`?0:1,C=e=>+!!e,w=.72,T=.98,E=[w,T],D=180,O=`cubic-bezier(0.32, 0.72, 0, 1)`,k=64,A=()=>Math.max(1,window.innerHeight),j=(e,t,n=k,r)=>e<=N(t,r)-n,M=(e,t,n)=>Math.min(t*T,Math.max(n?0:t*w,e)),N=(e,t)=>{let n=Math.max(1,e)*w;return t==null||!Number.isFinite(t)?n:Math.min(n,Math.max(0,t))},P=(e,t,n)=>{let r=N(t,n),i=Math.max(1,t)*T;return Math.abs(e-r)<=Math.abs(e-i)?w:T},F=({initialSnapPoint:e=w,fitContent:t=!1,onDismiss:n,dismissThresholdPx:r=k}={})=>{let i=u.useRef(null),a=u.useRef(null),o=u.useRef(null),s=u.useRef(null),c=u.useRef(null),l=u.useRef(null),d=u.useRef(!1),[f,p]=u.useState(e),m=u.useRef(e),h=u.useRef(n);h.current=n;let g=u.useCallback(()=>{o.current!==null&&window.cancelAnimationFrame(o.current),o.current=null},[]),_=u.useCallback((e,n)=>{let r=i.current,a=m.current;if(m.current=e,p(e),g(),s.current=null,c.current?.cancel(),c.current=null,!r)return;let o=n??r.getBoundingClientRect().height;t&&a===.72&&l.current===null&&(l.current=N(A(),o));let u=e===.72?N(A(),t?l.current:void 0):A()*T;if(r.style.height=``,r.style.willChange=``,Math.abs(o-u)<1||typeof r.animate!=`function`||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let d=r.animate([{height:`${o}px`},{height:`${u}px`}],{duration:D,easing:O,fill:`both`});c.current=d,d.finished.catch(()=>void 0).then(()=>{c.current===d&&(c.current=null,d.cancel())})},[g,t]),v=u.useCallback(e=>{if(!e.isPrimary||e.pointerType===`mouse`&&e.button!==0)return;let n=i.current;if(!n)return;let r=n.getBoundingClientRect().height;t&&m.current===.72&&(l.current=N(A(),r)),c.current?.cancel(),c.current=null,n.style.height=`${r}px`,n.style.willChange=`height`,a.current={pointerId:e.pointerId,startY:e.clientY,startHeight:r,startSnapPoint:m.current,viewportHeight:A()},d.current=!1,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault()},[t]),b=u.useCallback(e=>{let t=a.current,n=i.current;if(!t||t.pointerId!==e.pointerId||!n)return;let r=t.startY-e.clientY;Math.abs(r)>3&&(d.current=!0),s.current=M(t.startHeight+r,t.viewportHeight,!!h.current),o.current===null&&(o.current=window.requestAnimationFrame(()=>{o.current=null,i.current&&s.current!==null&&(i.current.style.height=`${s.current}px`)})),e.preventDefault()},[]),x=u.useCallback((e,n)=>{let o=a.current,c=i.current;if(!o||o.pointerId!==e.pointerId||!c)return;a.current=null,g();let u=s.current??c.getBoundingClientRect().height;if(s.current=null,e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),!n&&h.current&&j(u,o.viewportHeight,r,t?l.current:void 0)){c.style.willChange=``,h.current(),e.preventDefault();return}let d=n?o.startSnapPoint:t?P(u,o.viewportHeight,l.current):y(u,o.viewportHeight,E);_(d,u),e.preventDefault()},[g,r,t,_]),S=u.useCallback(()=>{if(d.current){d.current=!1;return}_(m.current===.98?w:T)},[_]),C=u.useCallback(e=>{let t=null;(e.key===`ArrowUp`||e.key===`Home`)&&(t=T),(e.key===`ArrowDown`||e.key===`End`)&&(t=w),(e.key===`Enter`||e.key===` `)&&(t=m.current===.98?w:T),t!==null&&(e.preventDefault(),_(t))},[_]),F=u.useCallback(()=>{a.current=null,g(),s.current=null,c.current?.cancel(),c.current=null,l.current=null,m.current=e,p(e),i.current&&(i.current.style.height=``,i.current.style.willChange=``)},[g,e]);return u.useEffect(()=>()=>{g(),c.current?.cancel()},[g]),{surfaceRef:i,snapPoint:f,handlePointerDown:v,handlePointerMove:b,handlePointerUp:e=>x(e,!1),handlePointerCancel:e=>x(e,!0),handleClick:S,handleKeyDown:C,reset:F}},I=e=>{let t=(0,d.c)(12),{controller:n,ariaLabel:r}=e,i;t[0]===n.snapPoint?i=t[1]:(i=Math.round(n.snapPoint*100),t[0]=n.snapPoint,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,f.jsx)(`div`,{className:`h-1.5 w-11 rounded-full bg-[var(--interactive-border)]`}),t[2]=a):a=t[2];let o;return t[3]!==r||t[4]!==n.handleClick||t[5]!==n.handleKeyDown||t[6]!==n.handlePointerCancel||t[7]!==n.handlePointerDown||t[8]!==n.handlePointerMove||t[9]!==n.handlePointerUp||t[10]!==i?(o=(0,f.jsx)(`div`,{"data-mobile-sheet-snap-handle":!0,role:`separator`,tabIndex:0,"aria-label":r,"aria-orientation":`horizontal`,"aria-valuemin":w*100,"aria-valuemax":T*100,"aria-valuenow":i,className:`flex min-h-8 cursor-ns-resize touch-none justify-center pt-2.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--interactive-focus-ring)]`,onPointerDown:n.handlePointerDown,onPointerMove:n.handlePointerMove,onPointerUp:n.handlePointerUp,onPointerCancel:n.handlePointerCancel,onClick:n.handleClick,onKeyDown:n.handleKeyDown,children:a}),t[3]=r,t[4]=n.handleClick,t[5]=n.handleKeyDown,t[6]=n.handlePointerCancel,t[7]=n.handlePointerDown,t[8]=n.handlePointerMove,t[9]=n.handlePointerUp,t[10]=i,t[11]=o):o=t[11],o},L=new WeakMap;function R(e){L.set(e.currentTarget,!0)}function z(e){if(L.delete(e.currentTarget))return!0;if(e.detail!==0)return!1;if(typeof document>`u`)return!0;let t=document.activeElement,n=e.currentTarget;return n instanceof Node&&t instanceof Node&&n.contains(t)}function B(e){e.target===e.currentTarget&&R(e)}function V(e){return e.target===e.currentTarget&&z(e)}var H=new class{entries=[];listeners=new Set;previousOverflow=null;getSnapshot=()=>this.entries.at(-1)?.id??null;subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));add(e,t){return this.entries=[...this.entries.filter(t=>t.id!==e.id),e],this.entries.length===1&&t&&(this.previousOverflow=t.style.overflow,t.style.overflow=`hidden`),this.emit(),()=>this.remove(e.id,t)}remove(e,t){let n=this.entries.length;this.entries=this.entries.filter(t=>t.id!==e),n>0&&this.entries.length===0&&t&&this.previousOverflow!==null&&(t.style.overflow=this.previousOverflow,this.previousOverflow=null),this.emit()}closeTop(){this.entries.at(-1)?.onClose()}emit(){for(let e of this.listeners)e()}},U=`mobile-sessions`,W=new Map,G=e=>W.get(e)??null,ee=(e,t)=>(W.set(e,t),()=>{W.get(e)===t&&W.delete(e)}),K=`.overlay-scrollbar-container`,q=1,J=e=>e===`left`||e===`right`?`x`:`y`,te=e=>e===`bottom`||e===`right`?1:-1,Y=(e,t,n)=>{let r=J(e)===`x`?t:n;return Math.max(0,r*te(e))},ne=(e,t,n,r,i)=>{let a=Y(e,t,n),o=Math.abs(J(e)===`x`?n:t);return Math.hypot(t,n)>r&&a>0&&o<a*i},re=(e,t)=>Math.min(1,Math.max(0,e/Math.max(1,t))),ie=(e,t,n,r)=>Math.min(r,Math.max(n,e*t)),ae=(e,t,n,r,i)=>e>=n||e>=i&&t>=r,oe=(e,t,n,r,i)=>t!==0&&n>0?t*i/n:r>80?0:e,X=(e,t,n=q)=>{if(t===`bottom`)return e.scrollTop<=n;if(t===`top`)return e.scrollTop>=e.scrollHeight-e.clientHeight-n;if(e.matches?.(`:dir(rtl)`)){let r=e.scrollWidth-e.clientWidth;return t===`right`?Math.abs(e.scrollLeft)<=n:Math.abs(e.scrollLeft)>=r-n}return t===`right`?e.scrollLeft<=n:e.scrollLeft>=e.scrollWidth-e.clientWidth-n},se=(e,t)=>{for(let n=0;n<e.length;n+=1){let r=e.item(n);if(r?.identifier===t)return r}return null},Z=(e,t)=>{let n=window.getComputedStyle(e),r=J(t),i=r===`x`?n.overflowX:n.overflowY,a=r===`x`?e.scrollWidth:e.scrollHeight,o=r===`x`?e.clientWidth:e.clientHeight;return(i===`auto`||i===`scroll`||i===`overlay`)&&a>o},ce=(e,t,n,r)=>{let i=t instanceof Element?t:null,a=i instanceof HTMLElement?i:i?.parentElement??null;for(;a&&e.contains(a);){if(Z(a,n))return a;if(a===e)break;a=a.parentElement}let o=i?.closest(r)??null;return o&&e.contains(o)&&Z(o,n)?o:null},le=e=>{let t=u.useRef(e),n=u.useRef(null),r=u.useRef(null);return t.current=e,u.useCallback(e=>{if(n.current?.(),n.current=null,!e)return;let i=()=>{let e=r.current;r.current=null,e?.active&&e.controller?.finish(`cancel`)},a=(e,t,n)=>{let r=J(e.edge)===`x`?t.clientX:t.clientY,i=n-e.lastTime,a=r-e.lastPrimary;e.velocity=oe(e.velocity,a,i,n-e.lastVelocityTime,te(e.edge)),a!==0&&i>0&&(e.lastVelocityTime=n),e.lastPrimary=r,e.lastTime=n,e.distance=Y(e.edge,t.clientX-e.startX,t.clientY-e.startY)},o=n=>{i();let a=t.current;if(a.disabled||n.touches.length!==1)return;let o=n.target instanceof Element?n.target:null,s=a.reservedTargetSelector?o?.closest(a.reservedTargetSelector):null;if(s&&e.contains(s)||o?.closest(`input, textarea, select, [contenteditable=""], [contenteditable="true"], [data-mobile-sheet-no-dismiss]`))return;let c=n.touches[0],l=ce(e,n.target,a.edge,a.scrollContainerSelector??K);if(l&&!X(l,a.edge))return;let u=e.getBoundingClientRect(),d=J(a.edge)===`x`?u.width||window.innerWidth:u.height||window.innerHeight;r.current={edge:a.edge,motionId:a.motionId,touchId:c.identifier,startX:c.clientX,startY:c.clientY,lastPrimary:J(a.edge)===`x`?c.clientX:c.clientY,lastTime:n.timeStamp,lastVelocityTime:n.timeStamp,velocity:0,distance:0,commitDistance:ie(d,a.commitDistanceRatio??.1,a.minCommitDistance??40,a.maxCommitDistance??64),motionDistance:d,intentDistance:a.intentDistance??8,maxOffAxisRatio:a.maxOffAxisRatio??1,flingVelocity:a.flingVelocity??.65,flingMinDistance:a.flingMinDistance??12,controller:null,active:!1}},s=e=>{let n=r.current;if(!n)return;if(t.current.disabled||e.touches.length!==1){i();return}let o=se(e.touches,n.touchId);if(!o){i();return}if(a(n,o,e.timeStamp),!n.active){if(Math.hypot(o.clientX-n.startX,o.clientY-n.startY)<=n.intentDistance)return;if(!ne(n.edge,o.clientX-n.startX,o.clientY-n.startY,n.intentDistance,n.maxOffAxisRatio)){r.current=null;return}let e=G(n.motionId);if(!e){r.current=null;return}if(!e.begin(`dismiss`)){r.current=null;return}n.active=!0,n.controller=e}n.controller?.update(re(n.distance,n.motionDistance)),e.preventDefault()},c=e=>{let t=r.current;if(!t)return;let n=se(e.changedTouches,t.touchId);if(!n){i();return}if(r.current=null,!t.active)return;a(t,n,e.timeStamp),t.controller?.update(re(t.distance,t.motionDistance));let o=ae(t.distance,t.velocity,t.commitDistance,t.flingVelocity,t.flingMinDistance);t.controller?.finish(o?`commit`:`cancel`),e.preventDefault()},l=()=>i();e.addEventListener(`touchstart`,o,{passive:!0,capture:!0}),e.addEventListener(`touchmove`,s,{passive:!1,capture:!0}),e.addEventListener(`touchend`,c,{passive:!1,capture:!0}),e.addEventListener(`touchcancel`,l,{passive:!0,capture:!0}),n.current=()=>{i(),e.removeEventListener(`touchstart`,o,!0),e.removeEventListener(`touchmove`,s,!0),e.removeEventListener(`touchend`,c,!0),e.removeEventListener(`touchcancel`,l,!0)}},[])},ue=`mobile-overlay-root`,de=200,fe=80,pe=`cubic-bezier(0.32, 0.72, 0, 1)`,me=`a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])`,he=()=>{if(typeof document>`u`)return null;let e=document.getElementById(ue);return e||(e=document.createElement(`div`),e.id=ue,document.body.appendChild(e)),e},ge=()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,Q=({id:e,open:t,onOpenChange:n,keepMounted:r=!1,presentation:i=`sheet`,edge:a=`bottom`,children:s,className:c,scrimClassName:l,surfaceClassName:d,surfaceElementRef:m,dismissGesture:h=!1,onExitComplete:v,onPreviewChange:y,ariaLabel:w})=>{let T=u.useRef(null),E=u.useRef(null),D=u.useRef(null),O=u.useRef(t),k=u.useRef(n),A=u.useRef(v),j=u.useRef(y),M=u.useRef(0),N=u.useRef(0),P=u.useRef(null),F=u.useRef([]),I=u.useRef(null),L=u.useRef(`standard`),R=u.useRef(`present`),z=u.useRef(0),U=u.useRef(!1),W=u.useRef(t),G=u.useRef(!1),K=u.useRef(t),q=u.useRef(null),[J,te]=u.useState(t),[Y,ne]=u.useState(t),[re,ie]=u.useState(`standard`),[ae,oe]=u.useState(!1),X=re===`interactive-present`,se=u.useSyncExternalStore(H.subscribe,H.getSnapshot,H.getSnapshot),Z=Y&&!X&&se===e,ce=le({motionId:e,edge:a,disabled:!h,...typeof h==`object`?h:{}}),ue=u.useCallback(e=>{D.current=e,ce(e),typeof m==`function`?m(e):m&&typeof m==`object`&&(m.current=e)},[ce,m]),Q=u.useCallback(()=>{K.current&&(K.current=!1,ne(!1),r||te(!1),A.current?.())},[r]);O.current=t,k.current=n,A.current=v,j.current=y,u.useLayoutEffect(()=>{j.current?.(Y&&X)},[Y,X]),typeof document<`u`&&!T.current&&(T.current=he());let $=u.useCallback(e=>{let t=b(a,e);M.current=t.progress,!(!E.current||!D.current)&&(E.current.style.opacity=String(t.scrimOpacity),D.current.style.transform=t.surfaceTransform,D.current.style.opacity=String(t.surfaceOpacity))},[a]),_e=u.useCallback(()=>{P.current!==null&&window.cancelAnimationFrame(P.current),P.current=null},[]),ve=u.useCallback(()=>{E.current&&(E.current.style.willChange=``),D.current&&(D.current.style.willChange=``)},[]),ye=u.useCallback((e=F.current)=>{for(let t of e)t.cancel();F.current=[]},[]),be=u.useCallback(()=>{_e();let e=I.current;if(e){let t=e.animations[1]?.effect?.getComputedTiming().progress;$(typeof t==`number`&&Number.isFinite(t)?e.from+(e.target-e.from)*t:M.current),ye(e.animations),I.current=null}else ye();ve(),oe(!1)},[$,ye,_e,ve]),xe=u.useCallback((e,t)=>{if(I.current?.target===e)return;be();let n=M.current,r=E.current,i=D.current;if(oe(!0),!r||!i||ge()||n===e){$(e),ve(),oe(!1),t?.();return}let o=b(a,n),s=b(a,e);r.style.willChange=`opacity`,i.style.willChange=`transform, opacity`;let c=Math.max(fe,de*Math.abs(e-n)),l=[r.animate([{opacity:o.scrimOpacity},{opacity:s.scrimOpacity}],{duration:c,easing:pe,fill:`forwards`}),i.animate([{transform:o.surfaceTransform,opacity:o.surfaceOpacity},{transform:s.surfaceTransform,opacity:s.surfaceOpacity}],{duration:c,easing:pe,fill:`forwards`})];F.current=l;let u={from:n,target:e,animations:l};I.current=u,Promise.all(l.map(e=>e.finished.catch(()=>void 0))).then(()=>{I.current===u&&($(e),ye(l),I.current=null,ve(),oe(!1),t?.())})},[$,ye,ve,a,be]);if(u.useLayoutEffect(()=>{G.current=J,J&&$(N.current)},[$,J]),u.useLayoutEffect(()=>{K.current=Y},[Y]),u.useEffect(()=>{t&&!G.current&&(N.current=M.current,te(!0)),t&&!K.current&&(K.current=!0,ne(!0)),G.current&&L.current===`standard`&&xe(C(t),()=>{!O.current&&L.current===`standard`&&Q()})},[Q,t,xe]),u.useLayoutEffect(()=>{!J||L.current!==`standard`||xe(+!!t,()=>{!O.current&&L.current===`standard`&&Q()})},[Q,J,t,xe]),u.useEffect(()=>{if(!(!Y||X))return window.dispatchEvent(new Event(`oc:mobile-overlay-opened`)),()=>{window.dispatchEvent(new Event(`oc:mobile-overlay-closed`))}},[Y,X]),u.useEffect(()=>{if(!(!Y||X))return H.add({id:e,onClose:()=>k.current(!1)},document.body)},[Y,e,X]),u.useEffect(()=>{if(!Y||X||!Z)return;let e=D.current,t=document.activeElement instanceof HTMLElement?document.activeElement:null;e?.focus({preventScroll:!0});let n=t=>{if(t.key===`Escape`&&H.closeTop(),t.key!==`Tab`||!e)return;let n=Array.from(e.querySelectorAll(me)).filter(e=>!e.closest(`[data-mobile-sheet-snap-handle]`)),r=n[0]??e,i=n.at(-1)??e;t.shiftKey&&document.activeElement===r&&(t.preventDefault(),i.focus({preventScroll:!0})),!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus({preventScroll:!0}))};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n),g()||t?.focus({preventScroll:!0})}},[Y,X,Z]),q.current={begin:e=>{if(e===`dismiss`&&(!K.current||L.current===`interactive-present`))return!1;be(),z.current+=1,U.current=!0,R.current=e;let t=e===`present`?`interactive-present`:`interactive-dismiss`;return L.current=t,ie(t),oe(!0),e===`present`&&(N.current=M.current,K.current=!0,ne(!0),te(!0)),!0},update:e=>{U.current&&(N.current=x(R.current,e),P.current===null&&(P.current=window.requestAnimationFrame(()=>{P.current=null,U.current&&$(N.current)})))},finish:e=>{if(!U.current)return;U.current=!1;let t=z.current,n=R.current,r=S(n,e);P.current!==null&&(_e(),$(N.current)),xe(r,()=>{t===z.current&&(e===`commit`&&k.current(n===`present`),n===`present`&&e===`cancel`&&!O.current&&Q(),L.current=`standard`,ie(`standard`),r===0&&Q())})},interrupt:()=>{z.current+=1,U.current=!1;let e=L.current===`interactive-present`&&!O.current;e||(L.current=`standard`,ie(`standard`)),be(),xe(C(O.current),()=>{O.current||Q(),e&&(L.current=`standard`,ie(`standard`))})}},u.useLayoutEffect(()=>{let e=W.current;W.current=t,e&&!t&&L.current!==`standard`&&q.current?.interrupt()},[t]),u.useEffect(()=>{let t=ee(e,{begin:e=>q.current?.begin(e)??!1,update:e=>q.current?.update(e),finish:e=>q.current?.finish(e),interrupt:()=>q.current?.interrupt()});return()=>{t(),_e(),ye(),I.current=null,ve(),q.current=null}},[ye,_e,ve,e]),!J||!T.current)return null;let Se=(0,f.jsx)(`div`,{ref:E,className:o(`oc-mobile-window-motion oc-keyboard-inset-surface fixed inset-0 z-[60] flex flex-col bg-[rgb(0_0_0_/_0.45)]`,ae&&`oc-mobile-window-motion-active`,!Y&&!X&&`pointer-events-none invisible`,l,c),"data-mobile-overlay-active":String(Y),role:X?void 0:`dialog`,"aria-label":X?void 0:w,"aria-modal":Y&&Z?`true`:void 0,"aria-hidden":X||!Y||!Z||void 0,inert:X||!Y||!Z||void 0,onPointerDown:B,onClick:e=>{!Y||X||!Z||V(e)&&k.current(!1)},children:(0,f.jsx)(`div`,{ref:ue,tabIndex:-1,className:o(`oc-mobile-floating-shell`,_(i,a),d),"data-oc-motion-id":e,style:{contain:`layout paint style`},onClick:e=>e.stopPropagation(),children:s})});return(0,p.createPortal)(Se,T.current)},$=u.createContext(null),_e=e=>{let t=(0,d.c)(5),{children:n}=e,r=u.useContext($);if(!r)return null;let i;t[0]===n?i=t[1]:(i=(0,f.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,p.createPortal)(i,r),t[2]=r,t[3]=i,t[4]=a):a=t[4],a},ve=e=>{let t=(0,d.c)(45),{id:n,open:r,onOpenChange:i,title:a,leading:l,trailing:p,ariaLabel:m,closeAriaLabel:h,resizeAriaLabel:g,initiallyExpanded:_,fitContent:v,bodyClassName:y,children:b}=e,x=_!==void 0&&_,S=v!==void 0&&v,C=x?T:void 0,w;t[0]===i?w=t[1]:(w=()=>i(!1),t[0]=i,t[1]=w);let E;t[2]!==S||t[3]!==C||t[4]!==w?(E={initialSnapPoint:C,fitContent:S,onDismiss:w},t[2]=S,t[3]=C,t[4]=w,t[5]=E):E=t[5];let D=F(E),[O,k]=u.useState(null),A=a!=null||l!=null||p!=null,j=D.snapPoint===T,M=j||!S,N;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(N={reservedTargetSelector:`[data-mobile-sheet-snap-handle]`},t[6]=N):N=t[6];let P=j?`h-[98dvh] max-h-[98dvh]`:S?`h-auto max-h-[72dvh]`:`h-[72dvh] max-h-[98dvh]`,L=D.surfaceRef,R=D.reset,z=M&&`flex-1`,B;t[7]===z?B=t[8]:(B=o(`flex min-h-0 flex-col`,z),t[7]=z,t[8]=B);let V;t[9]!==g||t[10]!==D?(V=(0,f.jsx)(I,{controller:D,ariaLabel:g}),t[9]=g,t[10]=D,t[11]=V):V=t[11];let H;t[12]!==h||t[13]!==S||t[14]!==A||t[15]!==l||t[16]!==i||t[17]!==a||t[18]!==p?(H=A?(0,f.jsxs)(`div`,{className:S?`flex min-h-9 items-center gap-2 px-4 pb-1`:`flex min-h-10 items-center gap-2 px-4 pb-2`,children:[l?(0,f.jsx)(`div`,{className:`flex shrink-0 items-center`,children:l}):null,(0,f.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),p?(0,f.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:p}):null,(0,f.jsx)(`div`,{ref:k,className:`contents`}),(0,f.jsx)(s,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i(!1),"aria-label":h,className:`shrink-0 text-muted-foreground`,style:{touchAction:`manipulation`},children:(0,f.jsx)(c,{name:`close`,className:`size-5`})})]}):null,t[12]=h,t[13]=S,t[14]=A,t[15]=l,t[16]=i,t[17]=a,t[18]=p,t[19]=H):H=t[19];let U;t[20]!==V||t[21]!==H?(U=(0,f.jsxs)(`div`,{className:`shrink-0`,children:[V,H]}),t[20]=V,t[21]=H,t[22]=U):U=t[22];let W=M&&`flex-1`,G;t[23]!==y||t[24]!==W?(G=o(`flex min-h-0 flex-col overflow-hidden`,W,y),t[23]=y,t[24]=W,t[25]=G):G=t[25];let ee;t[26]!==b||t[27]!==G?(ee=(0,f.jsx)(`div`,{className:G,"data-page-scroll-lock":`true`,children:b}),t[26]=b,t[27]=G,t[28]=ee):ee=t[28];let K;t[29]!==B||t[30]!==U||t[31]!==ee?(K=(0,f.jsxs)(`div`,{className:B,children:[U,ee]}),t[29]=B,t[30]=U,t[31]=ee,t[32]=K):K=t[32];let q;t[33]!==m||t[34]!==n||t[35]!==i||t[36]!==r||t[37]!==D.reset||t[38]!==D.surfaceRef||t[39]!==K||t[40]!==P?(q=(0,f.jsx)(Q,{id:n,open:r,onOpenChange:i,presentation:`sheet`,edge:`bottom`,dismissGesture:N,ariaLabel:m,surfaceClassName:P,surfaceElementRef:L,onExitComplete:R,children:K}),t[33]=m,t[34]=n,t[35]=i,t[36]=r,t[37]=D.reset,t[38]=D.surfaceRef,t[39]=K,t[40]=P,t[41]=q):q=t[41];let J;return t[42]!==O||t[43]!==q?(J=(0,f.jsx)($.Provider,{value:O,children:q}),t[42]=O,t[43]=q,t[44]=J):J=t[44],J};function ye(e,t){let n=(0,d.c)(3),r;return n[0]!==e||n[1]!==t?(r=n=>{[e,t].forEach(e=>{typeof e==`function`?e(n):e&&typeof e==`object`&&(e.current=n)})},n[0]=e,n[1]=t,n[2]=r):r=n[2],r}var be=u.forwardRef((e,t)=>{let n=(0,d.c)(28),{as:r,orientation:i,offset:a,size:o,isEnabled:s,hideTopShadow:c,hideBottomShadow:l,observeMutations:p,onVisibilityChange:m,style:h,className:g,children:_,...v}=e,y=r===void 0?`div`:r,b=i===void 0?`vertical`:i,x=a===void 0?0:a,S=o===void 0?48:o,C=s===void 0||s,w=c!==void 0&&c,T=l!==void 0&&l,E=p===void 0||p,D=u.useRef(null),O=u.useRef(`none`),k=v[`data-scroll-shadow`];delete v[`data-scroll-shadow`];let A=h,j;n[0]!==S||n[1]!==A?(j={...A},j[`--scroll-shadow-size`]=`${S}px`,n[0]=S,n[1]=A,n[2]=j):j=n[2];let M=j,N=xe,P=Se,F;n[3]!==T||n[4]!==w||n[5]!==C||n[6]!==x||n[7]!==m||n[8]!==b?(F=()=>{let e=D.current;if(!e)return;if(!C){P(e),O.current!==`none`&&(O.current=`none`,m?.(`none`));return}let t=b===`vertical`?e.scrollTop>x+1:e.scrollLeft>x+1,n=b===`vertical`?e.scrollHeight-(e.scrollTop+e.clientHeight)>x+1:e.scrollWidth-(e.scrollLeft+e.clientWidth)>x+1,r=w&&b===`vertical`?!1:t;T&&b===`vertical`&&(n=!1),N(e,r,n,b===`vertical`?`top`:`left`,b===`vertical`?`bottom`:`right`);let i=r&&n?`both`:r?b===`vertical`?`top`:`left`:n?b===`vertical`?`bottom`:`right`:`none`;i!==O.current&&(O.current=i,m?.(i))},n[3]=T,n[4]=w,n[5]=C,n[6]=x,n[7]=m,n[8]=b,n[9]=F):F=n[9];let I=F,L,R;n[10]!==I||n[11]!==C?(L=()=>{C||I()},R=[I,C],n[10]=I,n[11]=C,n[12]=L,n[13]=R):(L=n[12],R=n[13]),u.useLayoutEffect(L,R);let z,B;n[14]!==I||n[15]!==C||n[16]!==E?(z=()=>{let e=D.current;if(!e||!C)return;let t=null,n=()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,I()}))},r=n,i=typeof ResizeObserver<`u`?new ResizeObserver(n):null,a=E&&typeof MutationObserver<`u`?new MutationObserver(n):null;return I(),e.addEventListener(`scroll`,r,{passive:!0}),i?.observe(e),a?.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{t!==null&&cancelAnimationFrame(t),e.removeEventListener(`scroll`,r),i?.disconnect(),a?.disconnect()}},B=[I,C,E],n[14]=I,n[15]=C,n[16]=E,n[17]=z,n[18]=B):(z=n[17],B=n[18]),u.useEffect(z,B);let V=ye(D,t),H=k??!0,U;return n[19]!==y||n[20]!==_||n[21]!==g||n[22]!==V||n[23]!==M||n[24]!==b||n[25]!==v||n[26]!==H?(U=(0,f.jsx)(y,{...v,ref:V,className:g,"data-orientation":b,"data-scroll-shadow":H,style:M,children:_}),n[19]=y,n[20]=_,n[21]=g,n[22]=V,n[23]=M,n[24]=b,n[25]=v,n[26]=H,n[27]=U):U=n[27],U});be.displayName=`ScrollShadow`;function xe(e,t,n,r,i){let a=`${r}${i.charAt(0).toUpperCase()}${i.slice(1)}Scroll`;t&&n?(e.dataset[a]=`true`,e.removeAttribute(`data-${r}-scroll`),e.removeAttribute(`data-${i}-scroll`)):(e.dataset[`${r}Scroll`]=String(t),e.dataset[`${i}Scroll`]=String(n),e.removeAttribute(`data-${r}-${i}-scroll`))}function Se(e){[`top`,`bottom`,`top-bottom`,`left`,`right`,`left-right`].forEach(t=>{e.removeAttribute(`data-${t}-scroll`)})}var Ce=u.forwardRef((e,t)=>{let n=(0,d.c)(45),r,i,a,s,c,p,m,h,g,_,v,y,b,x,S,C;n[0]===e?(r=n[1],i=n[2],a=n[3],s=n[4],c=n[5],p=n[6],m=n[7],h=n[8],g=n[9],_=n[10],v=n[11],y=n[12],b=n[13],x=n[14],S=n[15],C=n[16]):({className:i,outerClassName:c,children:r,style:g,minThumbSize:s,hideDelayMs:a,as:_,scrollbarClassName:h,disableHorizontal:v,observeMutations:y,fillContainer:b,preventOverscroll:x,useScrollShadow:S,scrollShadowSize:m,userIntentOnly:C,...p}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=s,n[5]=c,n[6]=p,n[7]=m,n[8]=h,n[9]=g,n[10]=_,n[11]=v,n[12]=y,n[13]=b,n[14]=x,n[15]=S,n[16]=C);let w=_===void 0?`div`:_,T=v!==void 0&&v,E=y===void 0||y,D=b===void 0||b,O=x!==void 0&&x,k=S!==void 0&&S,A=C!==void 0&&C,j=u.useRef(null),M,N;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>j.current,N=[],n[17]=M,n[18]=N):(M=n[17],N=n[18]),u.useImperativeHandle(t,M,N);let P=O&&`overscroll-none`,F;n[19]!==c||n[20]!==P?(F=o(`relative flex flex-col min-h-0 w-full overflow-hidden`,P,c),n[19]=c,n[20]=P,n[21]=F):F=n[21];let I;n[22]!==w||n[23]!==r||n[24]!==i||n[25]!==T||n[26]!==D||n[27]!==E||n[28]!==O||n[29]!==p||n[30]!==m||n[31]!==g||n[32]!==k?(I=k?(0,f.jsx)(be,{as:w,ref:j,size:m,className:o(`overlay-scrollbar-target overlay-scrollbar-container`,O&&`overscroll-none`,D?`flex-1 min-h-0 w-full`:`flex-none w-full h-auto`,T?`overflow-y-auto overflow-x-hidden`:`overflow-auto`,i),style:g,observeMutations:E,...p,children:r}):(0,f.jsx)(w,{ref:j,className:o(`overlay-scrollbar-target overlay-scrollbar-container`,O&&`overscroll-none`,D?`flex-1 min-h-0 w-full`:`flex-none w-full h-auto`,T?`overflow-y-auto overflow-x-hidden`:`overflow-auto`,i),style:g,...p,children:r}),n[22]=w,n[23]=r,n[24]=i,n[25]=T,n[26]=D,n[27]=E,n[28]=O,n[29]=p,n[30]=m,n[31]=g,n[32]=k,n[33]=I):I=n[33];let L;n[34]!==T||n[35]!==a||n[36]!==s||n[37]!==E||n[38]!==h||n[39]!==A?(L=(0,f.jsx)(l,{containerRef:j,minThumbSize:s,hideDelayMs:a,className:h,disableHorizontal:T,observeMutations:E,userIntentOnly:A}),n[34]=T,n[35]=a,n[36]=s,n[37]=E,n[38]=h,n[39]=A,n[40]=L):L=n[40];let R;return n[41]!==F||n[42]!==I||n[43]!==L?(R=(0,f.jsxs)(`div`,{className:F,children:[I,L]}),n[41]=F,n[42]=I,n[43]=L,n[44]=R):R=n[44],R});Ce.displayName=`ScrollableOverlay`;function we(e){let t=(0,d.c)(4),{onResizeStart:n,ariaLabel:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 12 12`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,f.jsx)(`path`,{d:`M9.11111 2L2 9.11111M10 6.44444L6.44444 10`,className:`stroke-muted-foreground`,strokeLinecap:`round`})}),t[0]=i):i=t[0];let a;return t[1]!==r||t[2]!==n?(a=(0,f.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":r,onPointerDown:n,className:`pointer-events-auto -m-2 flex size-7 cursor-ns-resize items-end justify-end p-2 touch-none select-none`,children:i}),t[1]=r,t[2]=n,t[3]=a):a=t[3],a}var Te=u.forwardRef((e,t)=>{let n=(0,d.c)(64),r,i,s,c,l,p,m,h,g,_,v,y,b,x;n[0]===e?(r=n[1],i=n[2],s=n[3],c=n[4],l=n[5],p=n[6],m=n[7],h=n[8],g=n[9],_=n[10],v=n[11],y=n[12],b=n[13],x=n[14]):({className:r,outerClassName:m,scrollbarClassName:_,fillContainer:y,useScrollShadow:b,scrollShadowSize:g,hasError:l,resizedHeight:i,onResizeHeightChange:p,disabled:s,simple:v,embedded:x,endSlot:c,...h}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=s,n[4]=c,n[5]=l,n[6]=p,n[7]=m,n[8]=h,n[9]=g,n[10]=_,n[11]=v,n[12]=y,n[13]=b,n[14]=x);let S=y!==void 0&&y,C=b!==void 0&&b,w=x!==void 0&&x,{t:T}=a(),E=u.useRef(null),D=u.useRef(null),[O,k]=u.useState(null),A=i??O,j;n[15]===p?j=n[16]:(j=e=>{let t=E.current;if(!t)return;D.current={startY:e.clientY,startHeight:t.getBoundingClientRect().height};let n=e.currentTarget;n.setPointerCapture(e.pointerId);let r=e=>{let t=D.current;if(!t)return;let n=t.startHeight+(e.clientY-t.startY),r=Math.max(82,n);p?p(r):k(r)},i=()=>{D.current=null,n.removeEventListener(`pointermove`,r),n.removeEventListener(`pointerup`,i),n.removeEventListener(`pointercancel`,i)};n.addEventListener(`pointermove`,r),n.addEventListener(`pointerup`,i),n.addEventListener(`pointercancel`,i),e.preventDefault()},n[15]=p,n[16]=j);let M=j,N;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(N=e=>{if(e.target.closest(`textarea, button, [role="separator"]`))return;let t=E.current?.querySelector(`textarea`);t&&document.activeElement!==t&&(e.preventDefault(),t.focus())},n[17]=N):N=n[17];let P=N;if(v){let e=t,i=S?`[field-sizing:fixed]`:`field-sizing-content`,a;n[18]!==r||n[19]!==i?(a=o(`block w-full appearance-none resize-none bg-transparent text-foreground typography-markdown outline-none`,`px-3 py-2 md:typography-ui-label`,`placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,i,r),n[18]=r,n[19]=i,n[20]=a):a=n[20];let c;return n[21]!==s||n[22]!==S||n[23]!==m||n[24]!==h||n[25]!==g||n[26]!==_||n[27]!==e||n[28]!==a||n[29]!==C?(c=(0,f.jsx)(Ce,{as:`textarea`,ref:e,disableHorizontal:!0,fillContainer:S,useScrollShadow:C,scrollShadowSize:g,outerClassName:m,scrollbarClassName:_,className:a,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,disabled:s,...h}),n[21]=s,n[22]=S,n[23]=m,n[24]=h,n[25]=g,n[26]=_,n[27]=e,n[28]=a,n[29]=C,n[30]=c):c=n[30],c}let F;n[31]===A?F=n[32]:(F=A===null?void 0:{height:`${A}px`},n[31]=A,n[32]=F);let I;if(n[33]!==w||n[34]!==l||n[35]!==m){let e;n[37]===l?e=n[38]:(e=l&&[`ring-[var(--status-error)]`,`focus-within:ring-2 focus-within:ring-[var(--status-error)]`],n[37]=l,n[38]=e);let t;n[39]===w?t=n[40]:(t=w&&[`rounded-none bg-transparent ring-0`,`hover:[&:not(:focus-within)]:bg-transparent`,`has-[[disabled]]:bg-transparent`],n[39]=w,n[40]=t),I=o(`group/textarea relative flex w-full flex-col rounded-[var(--radius-xl)] bg-[var(--surface-elevated)] pb-2.5`,`ring-1 ring-inset ring-border/60 transition duration-200 ease-out`,`hover:[&:not(:focus-within)]:bg-[var(--surface-subtle)]`,`has-[[disabled]]:pointer-events-none has-[[disabled]]:bg-[var(--surface-subtle)] has-[[disabled]]:ring-transparent`,!l&&[`hover:[&:not(:focus-within)]:ring-transparent`,`focus-within:ring-2 focus-within:ring-[var(--interactive-focus-ring)]`],e,t,m),n[33]=w,n[34]=l,n[35]=m,n[36]=I}else I=n[36];let L;n[41]!==r||n[42]!==s?(L=o(`block w-full flex-1 min-h-0 appearance-none resize-none bg-transparent text-foreground typography-markdown outline-none`,`min-h-[82px] pl-3 pr-2.5 pt-2.5 md:typography-ui-label`,`focus-visible:outline-none disabled:cursor-not-allowed`,!s&&[`placeholder:select-none placeholder:text-muted-foreground placeholder:transition placeholder:duration-200 placeholder:ease-out`,`group-hover/textarea:placeholder:text-foreground/80`,`focus:placeholder:text-foreground/80`],s&&`text-muted-foreground/60 placeholder:text-muted-foreground/60`,r),n[41]=r,n[42]=s,n[43]=L):L=n[43];let R;n[44]!==s||n[45]!==h||n[46]!==t||n[47]!==L?(R=(0,f.jsx)(`textarea`,{ref:t,className:L,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,disabled:s,...h}),n[44]=s,n[45]=h,n[46]=t,n[47]=L,n[48]=R):R=n[48];let z;n[49]===T?z=n[50]:(z=T(`textarea.resizeHandleAria`),n[49]=T,n[50]=z);let B;n[51]!==M||n[52]!==z?(B=(0,f.jsx)(we,{onResizeStart:M,ariaLabel:z}),n[51]=M,n[52]=z,n[53]=B):B=n[53];let V;n[54]!==c||n[55]!==B?(V=(0,f.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5 pl-3 pr-2.5`,children:[c,B]}),n[54]=c,n[55]=B,n[56]=V):V=n[56];let H;n[57]!==V||n[58]!==R?(H=(0,f.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col gap-2`,children:[R,V]}),n[57]=V,n[58]=R,n[59]=H):H=n[59];let U;return n[60]!==H||n[61]!==F||n[62]!==I?(U=(0,f.jsx)(`div`,{ref:E,onPointerDown:P,style:F,className:I,children:H}),n[60]=H,n[61]=F,n[62]=I,n[63]=U):U=n[63],U});Te.displayName=`Textarea`;export{h as C,g as S,B as _,_e as a,T as b,Y as c,ne as d,ae as f,R as g,z as h,ve as i,re as l,G as m,Ce as n,Q as o,U as p,be as r,ie as s,Te as t,oe as u,V as v,F as x,I as y};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{nt as t,rt as n,tt as r}from"./vendor-base-ui-CnHfUmDN.js";import{n as i}from"./vendor-react-DLPElpoQ.js";import{f as a,r as o,t as s}from"./button-CUwjpv-i.js";import{n as c}from"./Icon-BdzPRCSy.js";import{t as l}from"./OverlayScrollbar-BUjtqnxn.js";var u=e(n(),1),d=i(),f=t(),p=e(r(),1),m=0,h=()=>{m=Date.now()+800},g=()=>Date.now()<m,_=(e,t)=>{let n=`flex min-h-0 flex-col bg-background shadow-none`;if(e===`page`)return`${n} h-full w-full`;let r=`${n} pwa-overlay-panel`;return t===`top`?`${r} mx-auto mb-auto max-h-[calc(100dvh-0.75rem)] w-full max-w-lg rounded-b-xl border-x border-b border-border/50`:t===`left`?`${r} h-full w-[min(86vw,24rem)] rounded-r-xl border-r border-y border-border/50`:t===`right`?`${r} ml-auto h-full w-[min(86vw,24rem)] rounded-l-xl border-l border-y border-border/50`:`${r} mx-auto mt-auto max-h-[calc(100dvh-0.75rem)] w-full max-w-lg rounded-t-2xl border-x border-t border-border/50 pb-[max(0.5rem,var(--oc-app-bottom-safe,0px),var(--oc-safe-area-bottom,env(safe-area-inset-bottom,0px)))]`},v=e=>Math.min(1,Math.max(0,Number.isFinite(e)?e:0)),y=(e,t,n)=>{let r=Number.isFinite(t)&&t>0?t:1,i=Math.max(0,Number.isFinite(e)?e:0)/r,a=v(n[0]??1),o=Math.abs(i-a);for(let e=1;e<n.length;e+=1){let t=v(n[e]??a),r=Math.abs(i-t);r<o&&(a=t,o=r)}return a},b=(e,t)=>{let n=v(t),r=`${(1-n)*100}%`;return{progress:n,scrimOpacity:n,surfaceOpacity:n,surfaceTransform:e===`left`?`translate3d(-${r}, 0, 0)`:e===`right`?`translate3d(${r}, 0, 0)`:e===`top`?`translate3d(0, -${r}, 0)`:`translate3d(0, ${r}, 0)`}},x=(e,t)=>{let n=v(t);return e===`present`?n:1-n},S=(e,t)=>e===`present`?+(t===`commit`):t===`commit`?0:1,C=e=>+!!e,w=.72,T=.98,E=[w,T],D=180,O=`cubic-bezier(0.32, 0.72, 0, 1)`,k=64,A=()=>Math.max(1,window.innerHeight),j=(e,t,n=k,r)=>e<=N(t,r)-n,M=(e,t,n)=>Math.min(t*T,Math.max(n?0:t*w,e)),N=(e,t)=>{let n=Math.max(1,e)*w;return t==null||!Number.isFinite(t)?n:Math.min(n,Math.max(0,t))},P=(e,t,n)=>{let r=N(t,n),i=Math.max(1,t)*T;return Math.abs(e-r)<=Math.abs(e-i)?w:T},F=({initialSnapPoint:e=w,fitContent:t=!1,onDismiss:n,dismissThresholdPx:r=k}={})=>{let i=u.useRef(null),a=u.useRef(null),o=u.useRef(null),s=u.useRef(null),c=u.useRef(null),l=u.useRef(null),d=u.useRef(!1),[f,p]=u.useState(e),m=u.useRef(e),h=u.useRef(n);h.current=n;let g=u.useCallback(()=>{o.current!==null&&window.cancelAnimationFrame(o.current),o.current=null},[]),_=u.useCallback((e,n)=>{let r=i.current,a=m.current;if(m.current=e,p(e),g(),s.current=null,c.current?.cancel(),c.current=null,!r)return;let o=n??r.getBoundingClientRect().height;t&&a===.72&&l.current===null&&(l.current=N(A(),o));let u=e===.72?N(A(),t?l.current:void 0):A()*T;if(r.style.height=``,r.style.willChange=``,Math.abs(o-u)<1||typeof r.animate!=`function`||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let d=r.animate([{height:`${o}px`},{height:`${u}px`}],{duration:D,easing:O,fill:`both`});c.current=d,d.finished.catch(()=>void 0).then(()=>{c.current===d&&(c.current=null,d.cancel())})},[g,t]),v=u.useCallback(e=>{if(!e.isPrimary||e.pointerType===`mouse`&&e.button!==0)return;let n=i.current;if(!n)return;let r=n.getBoundingClientRect().height;t&&m.current===.72&&(l.current=N(A(),r)),c.current?.cancel(),c.current=null,n.style.height=`${r}px`,n.style.willChange=`height`,a.current={pointerId:e.pointerId,startY:e.clientY,startHeight:r,startSnapPoint:m.current,viewportHeight:A()},d.current=!1,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault()},[t]),b=u.useCallback(e=>{let t=a.current,n=i.current;if(!t||t.pointerId!==e.pointerId||!n)return;let r=t.startY-e.clientY;Math.abs(r)>3&&(d.current=!0),s.current=M(t.startHeight+r,t.viewportHeight,!!h.current),o.current===null&&(o.current=window.requestAnimationFrame(()=>{o.current=null,i.current&&s.current!==null&&(i.current.style.height=`${s.current}px`)})),e.preventDefault()},[]),x=u.useCallback((e,n)=>{let o=a.current,c=i.current;if(!o||o.pointerId!==e.pointerId||!c)return;a.current=null,g();let u=s.current??c.getBoundingClientRect().height;if(s.current=null,e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),!n&&h.current&&j(u,o.viewportHeight,r,t?l.current:void 0)){c.style.willChange=``,h.current(),e.preventDefault();return}let d=n?o.startSnapPoint:t?P(u,o.viewportHeight,l.current):y(u,o.viewportHeight,E);_(d,u),e.preventDefault()},[g,r,t,_]),S=u.useCallback(()=>{if(d.current){d.current=!1;return}_(m.current===.98?w:T)},[_]),C=u.useCallback(e=>{let t=null;(e.key===`ArrowUp`||e.key===`Home`)&&(t=T),(e.key===`ArrowDown`||e.key===`End`)&&(t=w),(e.key===`Enter`||e.key===` `)&&(t=m.current===.98?w:T),t!==null&&(e.preventDefault(),_(t))},[_]),F=u.useCallback(()=>{a.current=null,g(),s.current=null,c.current?.cancel(),c.current=null,l.current=null,m.current=e,p(e),i.current&&(i.current.style.height=``,i.current.style.willChange=``)},[g,e]);return u.useEffect(()=>()=>{g(),c.current?.cancel()},[g]),{surfaceRef:i,snapPoint:f,handlePointerDown:v,handlePointerMove:b,handlePointerUp:e=>x(e,!1),handlePointerCancel:e=>x(e,!0),handleClick:S,handleKeyDown:C,reset:F}},I=e=>{let t=(0,d.c)(12),{controller:n,ariaLabel:r}=e,i;t[0]===n.snapPoint?i=t[1]:(i=Math.round(n.snapPoint*100),t[0]=n.snapPoint,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,f.jsx)(`div`,{className:`h-1.5 w-11 rounded-full bg-[var(--interactive-border)]`}),t[2]=a):a=t[2];let o;return t[3]!==r||t[4]!==n.handleClick||t[5]!==n.handleKeyDown||t[6]!==n.handlePointerCancel||t[7]!==n.handlePointerDown||t[8]!==n.handlePointerMove||t[9]!==n.handlePointerUp||t[10]!==i?(o=(0,f.jsx)(`div`,{"data-mobile-sheet-snap-handle":!0,role:`separator`,tabIndex:0,"aria-label":r,"aria-orientation":`horizontal`,"aria-valuemin":w*100,"aria-valuemax":T*100,"aria-valuenow":i,className:`flex min-h-8 cursor-ns-resize touch-none justify-center pt-2.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--interactive-focus-ring)]`,onPointerDown:n.handlePointerDown,onPointerMove:n.handlePointerMove,onPointerUp:n.handlePointerUp,onPointerCancel:n.handlePointerCancel,onClick:n.handleClick,onKeyDown:n.handleKeyDown,children:a}),t[3]=r,t[4]=n.handleClick,t[5]=n.handleKeyDown,t[6]=n.handlePointerCancel,t[7]=n.handlePointerDown,t[8]=n.handlePointerMove,t[9]=n.handlePointerUp,t[10]=i,t[11]=o):o=t[11],o},L=new WeakMap;function R(e){L.set(e.currentTarget,!0)}function z(e){if(L.delete(e.currentTarget))return!0;if(e.detail!==0)return!1;if(typeof document>`u`)return!0;let t=document.activeElement,n=e.currentTarget;return n instanceof Node&&t instanceof Node&&n.contains(t)}function B(e){e.target===e.currentTarget&&R(e)}function V(e){return e.target===e.currentTarget&&z(e)}var H=new class{entries=[];listeners=new Set;previousOverflow=null;getSnapshot=()=>this.entries.at(-1)?.id??null;subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));add(e,t){return this.entries=[...this.entries.filter(t=>t.id!==e.id),e],this.entries.length===1&&t&&(this.previousOverflow=t.style.overflow,t.style.overflow=`hidden`),this.emit(),()=>this.remove(e.id,t)}remove(e,t){let n=this.entries.length;this.entries=this.entries.filter(t=>t.id!==e),n>0&&this.entries.length===0&&t&&this.previousOverflow!==null&&(t.style.overflow=this.previousOverflow,this.previousOverflow=null),this.emit()}closeTop(){this.entries.at(-1)?.onClose()}emit(){for(let e of this.listeners)e()}},U=`mobile-sessions`,W=new Map,G=e=>W.get(e)??null,ee=(e,t)=>(W.set(e,t),()=>{W.get(e)===t&&W.delete(e)}),K=`.overlay-scrollbar-container`,q=1,J=e=>e===`left`||e===`right`?`x`:`y`,te=e=>e===`bottom`||e===`right`?1:-1,Y=(e,t,n)=>{let r=J(e)===`x`?t:n;return Math.max(0,r*te(e))},ne=(e,t,n,r,i)=>{let a=Y(e,t,n),o=Math.abs(J(e)===`x`?n:t);return Math.hypot(t,n)>r&&a>0&&o<a*i},re=(e,t)=>Math.min(1,Math.max(0,e/Math.max(1,t))),ie=(e,t,n,r)=>Math.min(r,Math.max(n,e*t)),ae=(e,t,n,r,i)=>e>=n||e>=i&&t>=r,oe=(e,t,n,r,i)=>t!==0&&n>0?t*i/n:r>80?0:e,X=(e,t,n=q)=>{if(t===`bottom`)return e.scrollTop<=n;if(t===`top`)return e.scrollTop>=e.scrollHeight-e.clientHeight-n;if(e.matches?.(`:dir(rtl)`)){let r=e.scrollWidth-e.clientWidth;return t===`right`?Math.abs(e.scrollLeft)<=n:Math.abs(e.scrollLeft)>=r-n}return t===`right`?e.scrollLeft<=n:e.scrollLeft>=e.scrollWidth-e.clientWidth-n},se=(e,t)=>{for(let n=0;n<e.length;n+=1){let r=e.item(n);if(r?.identifier===t)return r}return null},Z=(e,t)=>{let n=window.getComputedStyle(e),r=J(t),i=r===`x`?n.overflowX:n.overflowY,a=r===`x`?e.scrollWidth:e.scrollHeight,o=r===`x`?e.clientWidth:e.clientHeight;return(i===`auto`||i===`scroll`||i===`overlay`)&&a>o},ce=(e,t,n,r)=>{let i=t instanceof Element?t:null,a=i instanceof HTMLElement?i:i?.parentElement??null;for(;a&&e.contains(a);){if(Z(a,n))return a;if(a===e)break;a=a.parentElement}let o=i?.closest(r)??null;return o&&e.contains(o)&&Z(o,n)?o:null},le=e=>{let t=u.useRef(e),n=u.useRef(null),r=u.useRef(null);return t.current=e,u.useCallback(e=>{if(n.current?.(),n.current=null,!e)return;let i=()=>{let e=r.current;r.current=null,e?.active&&e.controller?.finish(`cancel`)},a=(e,t,n)=>{let r=J(e.edge)===`x`?t.clientX:t.clientY,i=n-e.lastTime,a=r-e.lastPrimary;e.velocity=oe(e.velocity,a,i,n-e.lastVelocityTime,te(e.edge)),a!==0&&i>0&&(e.lastVelocityTime=n),e.lastPrimary=r,e.lastTime=n,e.distance=Y(e.edge,t.clientX-e.startX,t.clientY-e.startY)},o=n=>{i();let a=t.current;if(a.disabled||n.touches.length!==1)return;let o=n.target instanceof Element?n.target:null,s=a.reservedTargetSelector?o?.closest(a.reservedTargetSelector):null;if(s&&e.contains(s)||o?.closest(`input, textarea, select, [contenteditable=""], [contenteditable="true"], [data-mobile-sheet-no-dismiss]`))return;let c=n.touches[0],l=ce(e,n.target,a.edge,a.scrollContainerSelector??K);if(l&&!X(l,a.edge))return;let u=e.getBoundingClientRect(),d=J(a.edge)===`x`?u.width||window.innerWidth:u.height||window.innerHeight;r.current={edge:a.edge,motionId:a.motionId,touchId:c.identifier,startX:c.clientX,startY:c.clientY,lastPrimary:J(a.edge)===`x`?c.clientX:c.clientY,lastTime:n.timeStamp,lastVelocityTime:n.timeStamp,velocity:0,distance:0,commitDistance:ie(d,a.commitDistanceRatio??.1,a.minCommitDistance??40,a.maxCommitDistance??64),motionDistance:d,intentDistance:a.intentDistance??8,maxOffAxisRatio:a.maxOffAxisRatio??1,flingVelocity:a.flingVelocity??.65,flingMinDistance:a.flingMinDistance??12,controller:null,active:!1}},s=e=>{let n=r.current;if(!n)return;if(t.current.disabled||e.touches.length!==1){i();return}let o=se(e.touches,n.touchId);if(!o){i();return}if(a(n,o,e.timeStamp),!n.active){if(Math.hypot(o.clientX-n.startX,o.clientY-n.startY)<=n.intentDistance)return;if(!ne(n.edge,o.clientX-n.startX,o.clientY-n.startY,n.intentDistance,n.maxOffAxisRatio)){r.current=null;return}let e=G(n.motionId);if(!e){r.current=null;return}if(!e.begin(`dismiss`)){r.current=null;return}n.active=!0,n.controller=e}n.controller?.update(re(n.distance,n.motionDistance)),e.preventDefault()},c=e=>{let t=r.current;if(!t)return;let n=se(e.changedTouches,t.touchId);if(!n){i();return}if(r.current=null,!t.active)return;a(t,n,e.timeStamp),t.controller?.update(re(t.distance,t.motionDistance));let o=ae(t.distance,t.velocity,t.commitDistance,t.flingVelocity,t.flingMinDistance);t.controller?.finish(o?`commit`:`cancel`),e.preventDefault()},l=()=>i();e.addEventListener(`touchstart`,o,{passive:!0,capture:!0}),e.addEventListener(`touchmove`,s,{passive:!1,capture:!0}),e.addEventListener(`touchend`,c,{passive:!1,capture:!0}),e.addEventListener(`touchcancel`,l,{passive:!0,capture:!0}),n.current=()=>{i(),e.removeEventListener(`touchstart`,o,!0),e.removeEventListener(`touchmove`,s,!0),e.removeEventListener(`touchend`,c,!0),e.removeEventListener(`touchcancel`,l,!0)}},[])},ue=`mobile-overlay-root`,de=200,fe=80,pe=`cubic-bezier(0.32, 0.72, 0, 1)`,me=`a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])`,he=()=>{if(typeof document>`u`)return null;let e=document.getElementById(ue);return e||(e=document.createElement(`div`),e.id=ue,document.body.appendChild(e)),e},ge=()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,Q=({id:e,open:t,onOpenChange:n,keepMounted:r=!1,presentation:i=`sheet`,edge:a=`bottom`,children:s,className:c,scrimClassName:l,surfaceClassName:d,surfaceElementRef:m,dismissGesture:h=!1,onExitComplete:v,onPreviewChange:y,ariaLabel:w})=>{let T=u.useRef(null),E=u.useRef(null),D=u.useRef(null),O=u.useRef(t),k=u.useRef(n),A=u.useRef(v),j=u.useRef(y),M=u.useRef(0),N=u.useRef(0),P=u.useRef(null),F=u.useRef([]),I=u.useRef(null),L=u.useRef(`standard`),R=u.useRef(`present`),z=u.useRef(0),U=u.useRef(!1),W=u.useRef(t),G=u.useRef(!1),K=u.useRef(t),q=u.useRef(null),[J,te]=u.useState(t),[Y,ne]=u.useState(t),[re,ie]=u.useState(`standard`),[ae,oe]=u.useState(!1),X=re===`interactive-present`,se=u.useSyncExternalStore(H.subscribe,H.getSnapshot,H.getSnapshot),Z=Y&&!X&&se===e,ce=le({motionId:e,edge:a,disabled:!h,...typeof h==`object`?h:{}}),ue=u.useCallback(e=>{D.current=e,ce(e),typeof m==`function`?m(e):m&&typeof m==`object`&&(m.current=e)},[ce,m]),Q=u.useCallback(()=>{K.current&&(K.current=!1,ne(!1),r||te(!1),A.current?.())},[r]);O.current=t,k.current=n,A.current=v,j.current=y,u.useLayoutEffect(()=>{j.current?.(Y&&X)},[Y,X]),typeof document<`u`&&!T.current&&(T.current=he());let $=u.useCallback(e=>{let t=b(a,e);M.current=t.progress,!(!E.current||!D.current)&&(E.current.style.opacity=String(t.scrimOpacity),D.current.style.transform=t.surfaceTransform,D.current.style.opacity=String(t.surfaceOpacity))},[a]),_e=u.useCallback(()=>{P.current!==null&&window.cancelAnimationFrame(P.current),P.current=null},[]),ve=u.useCallback(()=>{E.current&&(E.current.style.willChange=``),D.current&&(D.current.style.willChange=``)},[]),ye=u.useCallback((e=F.current)=>{for(let t of e)t.cancel();F.current=[]},[]),be=u.useCallback(()=>{_e();let e=I.current;if(e){let t=e.animations[1]?.effect?.getComputedTiming().progress;$(typeof t==`number`&&Number.isFinite(t)?e.from+(e.target-e.from)*t:M.current),ye(e.animations),I.current=null}else ye();ve(),oe(!1)},[$,ye,_e,ve]),xe=u.useCallback((e,t)=>{if(I.current?.target===e)return;be();let n=M.current,r=E.current,i=D.current;if(oe(!0),!r||!i||ge()||n===e){$(e),ve(),oe(!1),t?.();return}let o=b(a,n),s=b(a,e);r.style.willChange=`opacity`,i.style.willChange=`transform, opacity`;let c=Math.max(fe,de*Math.abs(e-n)),l=[r.animate([{opacity:o.scrimOpacity},{opacity:s.scrimOpacity}],{duration:c,easing:pe,fill:`forwards`}),i.animate([{transform:o.surfaceTransform,opacity:o.surfaceOpacity},{transform:s.surfaceTransform,opacity:s.surfaceOpacity}],{duration:c,easing:pe,fill:`forwards`})];F.current=l;let u={from:n,target:e,animations:l};I.current=u,Promise.all(l.map(e=>e.finished.catch(()=>void 0))).then(()=>{I.current===u&&($(e),ye(l),I.current=null,ve(),oe(!1),t?.())})},[$,ye,ve,a,be]);if(u.useLayoutEffect(()=>{G.current=J,J&&$(N.current)},[$,J]),u.useLayoutEffect(()=>{K.current=Y},[Y]),u.useEffect(()=>{t&&!G.current&&(N.current=M.current,te(!0)),t&&!K.current&&(K.current=!0,ne(!0)),G.current&&L.current===`standard`&&xe(C(t),()=>{!O.current&&L.current===`standard`&&Q()})},[Q,t,xe]),u.useLayoutEffect(()=>{!J||L.current!==`standard`||xe(+!!t,()=>{!O.current&&L.current===`standard`&&Q()})},[Q,J,t,xe]),u.useEffect(()=>{if(!(!Y||X))return window.dispatchEvent(new Event(`oc:mobile-overlay-opened`)),()=>{window.dispatchEvent(new Event(`oc:mobile-overlay-closed`))}},[Y,X]),u.useEffect(()=>{if(!(!Y||X))return H.add({id:e,onClose:()=>k.current(!1)},document.body)},[Y,e,X]),u.useEffect(()=>{if(!Y||X||!Z)return;let e=D.current,t=document.activeElement instanceof HTMLElement?document.activeElement:null;e?.focus({preventScroll:!0});let n=t=>{if(t.key===`Escape`&&H.closeTop(),t.key!==`Tab`||!e)return;let n=Array.from(e.querySelectorAll(me)).filter(e=>!e.closest(`[data-mobile-sheet-snap-handle]`)),r=n[0]??e,i=n.at(-1)??e;t.shiftKey&&document.activeElement===r&&(t.preventDefault(),i.focus({preventScroll:!0})),!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus({preventScroll:!0}))};return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n),g()||t?.focus({preventScroll:!0})}},[Y,X,Z]),q.current={begin:e=>{if(e===`dismiss`&&(!K.current||L.current===`interactive-present`))return!1;be(),z.current+=1,U.current=!0,R.current=e;let t=e===`present`?`interactive-present`:`interactive-dismiss`;return L.current=t,ie(t),oe(!0),e===`present`&&(N.current=M.current,K.current=!0,ne(!0),te(!0)),!0},update:e=>{U.current&&(N.current=x(R.current,e),P.current===null&&(P.current=window.requestAnimationFrame(()=>{P.current=null,U.current&&$(N.current)})))},finish:e=>{if(!U.current)return;U.current=!1;let t=z.current,n=R.current,r=S(n,e);P.current!==null&&(_e(),$(N.current)),xe(r,()=>{t===z.current&&(e===`commit`&&k.current(n===`present`),n===`present`&&e===`cancel`&&!O.current&&Q(),L.current=`standard`,ie(`standard`),r===0&&Q())})},interrupt:()=>{z.current+=1,U.current=!1;let e=L.current===`interactive-present`&&!O.current;e||(L.current=`standard`,ie(`standard`)),be(),xe(C(O.current),()=>{O.current||Q(),e&&(L.current=`standard`,ie(`standard`))})}},u.useLayoutEffect(()=>{let e=W.current;W.current=t,e&&!t&&L.current!==`standard`&&q.current?.interrupt()},[t]),u.useEffect(()=>{let t=ee(e,{begin:e=>q.current?.begin(e)??!1,update:e=>q.current?.update(e),finish:e=>q.current?.finish(e),interrupt:()=>q.current?.interrupt()});return()=>{t(),_e(),ye(),I.current=null,ve(),q.current=null}},[ye,_e,ve,e]),!J||!T.current)return null;let Se=(0,f.jsx)(`div`,{ref:E,className:o(`oc-mobile-window-motion oc-keyboard-inset-surface fixed inset-0 z-[60] flex flex-col bg-[rgb(0_0_0_/_0.45)]`,ae&&`oc-mobile-window-motion-active`,!Y&&!X&&`pointer-events-none invisible`,l,c),"data-mobile-overlay-active":String(Y),role:X?void 0:`dialog`,"aria-label":X?void 0:w,"aria-modal":Y&&Z?`true`:void 0,"aria-hidden":X||!Y||!Z||void 0,inert:X||!Y||!Z||void 0,onPointerDown:B,onClick:e=>{!Y||X||!Z||V(e)&&k.current(!1)},children:(0,f.jsx)(`div`,{ref:ue,tabIndex:-1,className:o(`oc-mobile-floating-shell`,_(i,a),d),"data-oc-motion-id":e,style:{contain:`layout paint style`},onClick:e=>e.stopPropagation(),children:s})});return(0,p.createPortal)(Se,T.current)},$=u.createContext(null),_e=e=>{let t=(0,d.c)(5),{children:n}=e,r=u.useContext($);if(!r)return null;let i;t[0]===n?i=t[1]:(i=(0,f.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,p.createPortal)(i,r),t[2]=r,t[3]=i,t[4]=a):a=t[4],a},ve=e=>{let t=(0,d.c)(45),{id:n,open:r,onOpenChange:i,title:a,leading:l,trailing:p,ariaLabel:m,closeAriaLabel:h,resizeAriaLabel:g,initiallyExpanded:_,fitContent:v,bodyClassName:y,children:b}=e,x=_!==void 0&&_,S=v!==void 0&&v,C=x?T:void 0,w;t[0]===i?w=t[1]:(w=()=>i(!1),t[0]=i,t[1]=w);let E;t[2]!==S||t[3]!==C||t[4]!==w?(E={initialSnapPoint:C,fitContent:S,onDismiss:w},t[2]=S,t[3]=C,t[4]=w,t[5]=E):E=t[5];let D=F(E),[O,k]=u.useState(null),A=a!=null||l!=null||p!=null,j=D.snapPoint===T,M=j||!S,N;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(N={reservedTargetSelector:`[data-mobile-sheet-snap-handle]`},t[6]=N):N=t[6];let P=j?`h-[98dvh] max-h-[98dvh]`:S?`h-auto max-h-[72dvh]`:`h-[72dvh] max-h-[98dvh]`,L=D.surfaceRef,R=D.reset,z=M&&`flex-1`,B;t[7]===z?B=t[8]:(B=o(`flex min-h-0 flex-col`,z),t[7]=z,t[8]=B);let V;t[9]!==g||t[10]!==D?(V=(0,f.jsx)(I,{controller:D,ariaLabel:g}),t[9]=g,t[10]=D,t[11]=V):V=t[11];let H;t[12]!==h||t[13]!==S||t[14]!==A||t[15]!==l||t[16]!==i||t[17]!==a||t[18]!==p?(H=A?(0,f.jsxs)(`div`,{className:S?`flex min-h-9 items-center gap-2 px-4 pb-1`:`flex min-h-10 items-center gap-2 px-4 pb-2`,children:[l?(0,f.jsx)(`div`,{className:`flex shrink-0 items-center`,children:l}):null,(0,f.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),p?(0,f.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:p}):null,(0,f.jsx)(`div`,{ref:k,className:`contents`}),(0,f.jsx)(s,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i(!1),"aria-label":h,className:`shrink-0 text-muted-foreground`,style:{touchAction:`manipulation`},children:(0,f.jsx)(c,{name:`close`,className:`size-5`})})]}):null,t[12]=h,t[13]=S,t[14]=A,t[15]=l,t[16]=i,t[17]=a,t[18]=p,t[19]=H):H=t[19];let U;t[20]!==V||t[21]!==H?(U=(0,f.jsxs)(`div`,{className:`shrink-0`,children:[V,H]}),t[20]=V,t[21]=H,t[22]=U):U=t[22];let W=M&&`flex-1`,G;t[23]!==y||t[24]!==W?(G=o(`flex min-h-0 flex-col overflow-hidden`,W,y),t[23]=y,t[24]=W,t[25]=G):G=t[25];let ee;t[26]!==b||t[27]!==G?(ee=(0,f.jsx)(`div`,{className:G,"data-page-scroll-lock":`true`,children:b}),t[26]=b,t[27]=G,t[28]=ee):ee=t[28];let K;t[29]!==B||t[30]!==U||t[31]!==ee?(K=(0,f.jsxs)(`div`,{className:B,children:[U,ee]}),t[29]=B,t[30]=U,t[31]=ee,t[32]=K):K=t[32];let q;t[33]!==m||t[34]!==n||t[35]!==i||t[36]!==r||t[37]!==D.reset||t[38]!==D.surfaceRef||t[39]!==K||t[40]!==P?(q=(0,f.jsx)(Q,{id:n,open:r,onOpenChange:i,presentation:`sheet`,edge:`bottom`,dismissGesture:N,ariaLabel:m,surfaceClassName:P,surfaceElementRef:L,onExitComplete:R,children:K}),t[33]=m,t[34]=n,t[35]=i,t[36]=r,t[37]=D.reset,t[38]=D.surfaceRef,t[39]=K,t[40]=P,t[41]=q):q=t[41];let J;return t[42]!==O||t[43]!==q?(J=(0,f.jsx)($.Provider,{value:O,children:q}),t[42]=O,t[43]=q,t[44]=J):J=t[44],J};function ye(e,t){let n=(0,d.c)(3),r;return n[0]!==e||n[1]!==t?(r=n=>{[e,t].forEach(e=>{typeof e==`function`?e(n):e&&typeof e==`object`&&(e.current=n)})},n[0]=e,n[1]=t,n[2]=r):r=n[2],r}var be=u.forwardRef((e,t)=>{let n=(0,d.c)(28),{as:r,orientation:i,offset:a,size:o,isEnabled:s,hideTopShadow:c,hideBottomShadow:l,observeMutations:p,onVisibilityChange:m,style:h,className:g,children:_,...v}=e,y=r===void 0?`div`:r,b=i===void 0?`vertical`:i,x=a===void 0?0:a,S=o===void 0?48:o,C=s===void 0||s,w=c!==void 0&&c,T=l!==void 0&&l,E=p===void 0||p,D=u.useRef(null),O=u.useRef(`none`),k=v[`data-scroll-shadow`];delete v[`data-scroll-shadow`];let A=h,j;n[0]!==S||n[1]!==A?(j={...A},j[`--scroll-shadow-size`]=`${S}px`,n[0]=S,n[1]=A,n[2]=j):j=n[2];let M=j,N=xe,P=Se,F;n[3]!==T||n[4]!==w||n[5]!==C||n[6]!==x||n[7]!==m||n[8]!==b?(F=()=>{let e=D.current;if(!e)return;if(!C){P(e),O.current!==`none`&&(O.current=`none`,m?.(`none`));return}let t=b===`vertical`?e.scrollTop>x+1:e.scrollLeft>x+1,n=b===`vertical`?e.scrollHeight-(e.scrollTop+e.clientHeight)>x+1:e.scrollWidth-(e.scrollLeft+e.clientWidth)>x+1,r=w&&b===`vertical`?!1:t;T&&b===`vertical`&&(n=!1),N(e,r,n,b===`vertical`?`top`:`left`,b===`vertical`?`bottom`:`right`);let i=r&&n?`both`:r?b===`vertical`?`top`:`left`:n?b===`vertical`?`bottom`:`right`:`none`;i!==O.current&&(O.current=i,m?.(i))},n[3]=T,n[4]=w,n[5]=C,n[6]=x,n[7]=m,n[8]=b,n[9]=F):F=n[9];let I=F,L,R;n[10]!==I||n[11]!==C?(L=()=>{C||I()},R=[I,C],n[10]=I,n[11]=C,n[12]=L,n[13]=R):(L=n[12],R=n[13]),u.useLayoutEffect(L,R);let z,B;n[14]!==I||n[15]!==C||n[16]!==E?(z=()=>{let e=D.current;if(!e||!C)return;let t=null,n=()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,I()}))},r=n,i=typeof ResizeObserver<`u`?new ResizeObserver(n):null,a=E&&typeof MutationObserver<`u`?new MutationObserver(n):null;return I(),e.addEventListener(`scroll`,r,{passive:!0}),i?.observe(e),a?.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{t!==null&&cancelAnimationFrame(t),e.removeEventListener(`scroll`,r),i?.disconnect(),a?.disconnect()}},B=[I,C,E],n[14]=I,n[15]=C,n[16]=E,n[17]=z,n[18]=B):(z=n[17],B=n[18]),u.useEffect(z,B);let V=ye(D,t),H=k??!0,U;return n[19]!==y||n[20]!==_||n[21]!==g||n[22]!==V||n[23]!==M||n[24]!==b||n[25]!==v||n[26]!==H?(U=(0,f.jsx)(y,{...v,ref:V,className:g,"data-orientation":b,"data-scroll-shadow":H,style:M,children:_}),n[19]=y,n[20]=_,n[21]=g,n[22]=V,n[23]=M,n[24]=b,n[25]=v,n[26]=H,n[27]=U):U=n[27],U});be.displayName=`ScrollShadow`;function xe(e,t,n,r,i){let a=`${r}${i.charAt(0).toUpperCase()}${i.slice(1)}Scroll`;t&&n?(e.dataset[a]=`true`,e.removeAttribute(`data-${r}-scroll`),e.removeAttribute(`data-${i}-scroll`)):(e.dataset[`${r}Scroll`]=String(t),e.dataset[`${i}Scroll`]=String(n),e.removeAttribute(`data-${r}-${i}-scroll`))}function Se(e){[`top`,`bottom`,`top-bottom`,`left`,`right`,`left-right`].forEach(t=>{e.removeAttribute(`data-${t}-scroll`)})}var Ce=u.forwardRef((e,t)=>{let n=(0,d.c)(45),r,i,a,s,c,p,m,h,g,_,v,y,b,x,S,C;n[0]===e?(r=n[1],i=n[2],a=n[3],s=n[4],c=n[5],p=n[6],m=n[7],h=n[8],g=n[9],_=n[10],v=n[11],y=n[12],b=n[13],x=n[14],S=n[15],C=n[16]):({className:i,outerClassName:c,children:r,style:g,minThumbSize:s,hideDelayMs:a,as:_,scrollbarClassName:h,disableHorizontal:v,observeMutations:y,fillContainer:b,preventOverscroll:x,useScrollShadow:S,scrollShadowSize:m,userIntentOnly:C,...p}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=s,n[5]=c,n[6]=p,n[7]=m,n[8]=h,n[9]=g,n[10]=_,n[11]=v,n[12]=y,n[13]=b,n[14]=x,n[15]=S,n[16]=C);let w=_===void 0?`div`:_,T=v!==void 0&&v,E=y===void 0||y,D=b===void 0||b,O=x!==void 0&&x,k=S!==void 0&&S,A=C!==void 0&&C,j=u.useRef(null),M,N;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>j.current,N=[],n[17]=M,n[18]=N):(M=n[17],N=n[18]),u.useImperativeHandle(t,M,N);let P=O&&`overscroll-none`,F;n[19]!==c||n[20]!==P?(F=o(`relative flex flex-col min-h-0 w-full overflow-hidden`,P,c),n[19]=c,n[20]=P,n[21]=F):F=n[21];let I;n[22]!==w||n[23]!==r||n[24]!==i||n[25]!==T||n[26]!==D||n[27]!==E||n[28]!==O||n[29]!==p||n[30]!==m||n[31]!==g||n[32]!==k?(I=k?(0,f.jsx)(be,{as:w,ref:j,size:m,className:o(`overlay-scrollbar-target overlay-scrollbar-container`,O&&`overscroll-none`,D?`flex-1 min-h-0 w-full`:`flex-none w-full h-auto`,T?`overflow-y-auto overflow-x-hidden`:`overflow-auto`,i),style:g,observeMutations:E,...p,children:r}):(0,f.jsx)(w,{ref:j,className:o(`overlay-scrollbar-target overlay-scrollbar-container`,O&&`overscroll-none`,D?`flex-1 min-h-0 w-full`:`flex-none w-full h-auto`,T?`overflow-y-auto overflow-x-hidden`:`overflow-auto`,i),style:g,...p,children:r}),n[22]=w,n[23]=r,n[24]=i,n[25]=T,n[26]=D,n[27]=E,n[28]=O,n[29]=p,n[30]=m,n[31]=g,n[32]=k,n[33]=I):I=n[33];let L;n[34]!==T||n[35]!==a||n[36]!==s||n[37]!==E||n[38]!==h||n[39]!==A?(L=(0,f.jsx)(l,{containerRef:j,minThumbSize:s,hideDelayMs:a,className:h,disableHorizontal:T,observeMutations:E,userIntentOnly:A}),n[34]=T,n[35]=a,n[36]=s,n[37]=E,n[38]=h,n[39]=A,n[40]=L):L=n[40];let R;return n[41]!==F||n[42]!==I||n[43]!==L?(R=(0,f.jsxs)(`div`,{className:F,children:[I,L]}),n[41]=F,n[42]=I,n[43]=L,n[44]=R):R=n[44],R});Ce.displayName=`ScrollableOverlay`;function we(e){let t=(0,d.c)(4),{onResizeStart:n,ariaLabel:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,f.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 12 12`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,children:(0,f.jsx)(`path`,{d:`M9.11111 2L2 9.11111M10 6.44444L6.44444 10`,className:`stroke-muted-foreground`,strokeLinecap:`round`})}),t[0]=i):i=t[0];let a;return t[1]!==r||t[2]!==n?(a=(0,f.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":r,onPointerDown:n,className:`pointer-events-auto -m-2 flex size-7 cursor-ns-resize items-end justify-end p-2 touch-none select-none`,children:i}),t[1]=r,t[2]=n,t[3]=a):a=t[3],a}var Te=u.forwardRef((e,t)=>{let n=(0,d.c)(64),r,i,s,c,l,p,m,h,g,_,v,y,b,x;n[0]===e?(r=n[1],i=n[2],s=n[3],c=n[4],l=n[5],p=n[6],m=n[7],h=n[8],g=n[9],_=n[10],v=n[11],y=n[12],b=n[13],x=n[14]):({className:r,outerClassName:m,scrollbarClassName:_,fillContainer:y,useScrollShadow:b,scrollShadowSize:g,hasError:l,resizedHeight:i,onResizeHeightChange:p,disabled:s,simple:v,embedded:x,endSlot:c,...h}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=s,n[4]=c,n[5]=l,n[6]=p,n[7]=m,n[8]=h,n[9]=g,n[10]=_,n[11]=v,n[12]=y,n[13]=b,n[14]=x);let S=y!==void 0&&y,C=b!==void 0&&b,w=x!==void 0&&x,{t:T}=a(),E=u.useRef(null),D=u.useRef(null),[O,k]=u.useState(null),A=i??O,j;n[15]===p?j=n[16]:(j=e=>{let t=E.current;if(!t)return;D.current={startY:e.clientY,startHeight:t.getBoundingClientRect().height};let n=e.currentTarget;n.setPointerCapture(e.pointerId);let r=e=>{let t=D.current;if(!t)return;let n=t.startHeight+(e.clientY-t.startY),r=Math.max(82,n);p?p(r):k(r)},i=()=>{D.current=null,n.removeEventListener(`pointermove`,r),n.removeEventListener(`pointerup`,i),n.removeEventListener(`pointercancel`,i)};n.addEventListener(`pointermove`,r),n.addEventListener(`pointerup`,i),n.addEventListener(`pointercancel`,i),e.preventDefault()},n[15]=p,n[16]=j);let M=j,N;n[17]===Symbol.for(`react.memo_cache_sentinel`)?(N=e=>{if(e.target.closest(`textarea, button, [role="separator"]`))return;let t=E.current?.querySelector(`textarea`);t&&document.activeElement!==t&&(e.preventDefault(),t.focus())},n[17]=N):N=n[17];let P=N;if(v){let e=t,i=S?`[field-sizing:fixed]`:`field-sizing-content`,a;n[18]!==r||n[19]!==i?(a=o(`block w-full appearance-none resize-none bg-transparent text-foreground typography-markdown outline-none`,`px-3 py-2 md:typography-ui-label`,`placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,i,r),n[18]=r,n[19]=i,n[20]=a):a=n[20];let c;return n[21]!==s||n[22]!==S||n[23]!==m||n[24]!==h||n[25]!==g||n[26]!==_||n[27]!==e||n[28]!==a||n[29]!==C?(c=(0,f.jsx)(Ce,{as:`textarea`,ref:e,disableHorizontal:!0,fillContainer:S,useScrollShadow:C,scrollShadowSize:g,outerClassName:m,scrollbarClassName:_,className:a,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,disabled:s,...h}),n[21]=s,n[22]=S,n[23]=m,n[24]=h,n[25]=g,n[26]=_,n[27]=e,n[28]=a,n[29]=C,n[30]=c):c=n[30],c}let F;n[31]===A?F=n[32]:(F=A===null?void 0:{height:`${A}px`},n[31]=A,n[32]=F);let I;if(n[33]!==w||n[34]!==l||n[35]!==m){let e;n[37]===l?e=n[38]:(e=l&&[`ring-[var(--status-error)]`,`focus-within:ring-2 focus-within:ring-[var(--status-error)]`],n[37]=l,n[38]=e);let t;n[39]===w?t=n[40]:(t=w&&[`rounded-none bg-transparent ring-0`,`hover:[&:not(:focus-within)]:bg-transparent`,`has-[[disabled]]:bg-transparent`],n[39]=w,n[40]=t),I=o(`group/textarea relative flex w-full flex-col rounded-[var(--radius-xl)] bg-[var(--surface-elevated)] pb-2.5`,`ring-1 ring-inset ring-border/60 transition duration-200 ease-out`,`hover:[&:not(:focus-within)]:bg-[var(--surface-subtle)]`,`has-[[disabled]]:pointer-events-none has-[[disabled]]:bg-[var(--surface-subtle)] has-[[disabled]]:ring-transparent`,!l&&[`hover:[&:not(:focus-within)]:ring-transparent`,`focus-within:ring-2 focus-within:ring-[var(--interactive-focus-ring)]`],e,t,m),n[33]=w,n[34]=l,n[35]=m,n[36]=I}else I=n[36];let L;n[41]!==r||n[42]!==s?(L=o(`block w-full flex-1 min-h-0 appearance-none resize-none bg-transparent text-foreground typography-markdown outline-none`,`min-h-[82px] pl-3 pr-2.5 pt-2.5 md:typography-ui-label`,`focus-visible:outline-none disabled:cursor-not-allowed`,!s&&[`placeholder:select-none placeholder:text-muted-foreground placeholder:transition placeholder:duration-200 placeholder:ease-out`,`group-hover/textarea:placeholder:text-foreground/80`,`focus:placeholder:text-foreground/80`],s&&`text-muted-foreground/60 placeholder:text-muted-foreground/60`,r),n[41]=r,n[42]=s,n[43]=L):L=n[43];let R;n[44]!==s||n[45]!==h||n[46]!==t||n[47]!==L?(R=(0,f.jsx)(`textarea`,{ref:t,className:L,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,disabled:s,...h}),n[44]=s,n[45]=h,n[46]=t,n[47]=L,n[48]=R):R=n[48];let z;n[49]===T?z=n[50]:(z=T(`textarea.resizeHandleAria`),n[49]=T,n[50]=z);let B;n[51]!==M||n[52]!==z?(B=(0,f.jsx)(we,{onResizeStart:M,ariaLabel:z}),n[51]=M,n[52]=z,n[53]=B):B=n[53];let V;n[54]!==c||n[55]!==B?(V=(0,f.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5 pl-3 pr-2.5`,children:[c,B]}),n[54]=c,n[55]=B,n[56]=V):V=n[56];let H;n[57]!==V||n[58]!==R?(H=(0,f.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col gap-2`,children:[R,V]}),n[57]=V,n[58]=R,n[59]=H):H=n[59];let U;return n[60]!==H||n[61]!==F||n[62]!==I?(U=(0,f.jsx)(`div`,{ref:E,onPointerDown:P,style:F,className:I,children:H}),n[60]=H,n[61]=F,n[62]=I,n[63]=U):U=n[63],U});Te.displayName=`Textarea`;export{h as C,g as S,B as _,_e as a,T as b,Y as c,ne as d,ae as f,R as g,z as h,ve as i,re as l,G as m,Ce as n,Q as o,U as p,be as r,ie as s,Te as t,oe as u,V as v,F as x,I as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{B as t,H as n,L as r,R as i,U as a,V as o,nt as s,rt as c,z as l}from"./vendor-base-ui-CnHfUmDN.js";import{n as u}from"./vendor-react-DLPElpoQ.js";import{r as d}from"./button-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{B as t,H as n,L as r,R as i,U as a,V as o,nt as s,rt as c,z as l}from"./vendor-base-ui-CnHfUmDN.js";import{n as u}from"./vendor-react-DLPElpoQ.js";import{r as d}from"./button-CUwjpv-i.js";var f=u(),p=e(c(),1),m=s(),h=600,g=1600,_=10,v=p.createContext(null),y=class extends p.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?this.props.fallback??null:this.props.children}};function b(e){let t=(0,f.c)(12),n,i,a,o,s,c;t[0]===e?(n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6]):({delayDuration:s,skipDelayDuration:o,delay:i,closeDelay:n,timeout:c,...a}=e,t[0]=e,t[1]=n,t[2]=i,t[3]=a,t[4]=o,t[5]=s,t[6]=c);let l=i??(s===void 0?0:s),u=n??o,d;return t[7]!==a||t[8]!==l||t[9]!==u||t[10]!==c?(d=(0,m.jsx)(r,{delay:l,closeDelay:u,timeout:c,...a}),t[7]=a,t[8]=l,t[9]=u,t[10]=c,t[11]=d):d=t[11],d}function x(e){let t=(0,f.c)(35),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({delayDuration:n,open:i,onOpenChange:r,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let[s,c]=p.useState(!1),l=p.useRef(null),u=p.useRef(null),d=p.useRef(null),y=p.useRef(!1),x=i!==void 0,S=x?i:s,C;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)},t[5]=C):C=t[5];let w=C,T;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>{u.current!==null&&(window.clearTimeout(u.current),u.current=null)},t[6]=T):T=t[6];let E=T,D;t[7]===x?D=t[8]:(D=e=>{x||c(e)},t[7]=x,t[8]=D);let O=D,k;t[9]!==x||t[10]!==O?(k=e=>{(e.pointerType===`touch`||e.pointerType===`pen`)&&(w(),E(),d.current={x:e.clientX,y:e.clientY},l.current=window.setTimeout(()=>{x||(y.current=!0,O(!0))},h))},t[9]=x,t[10]=O,t[11]=k):k=t[11];let A;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(A=e=>{let t=d.current;if(!t)return;let n=Math.abs(e.clientX-t.x),r=Math.abs(e.clientY-t.y);(n>_||r>_)&&(w(),d.current=null)},t[12]=A):A=t[12];let j;t[13]===O?j=t[14]:(j=()=>{w(),d.current=null,y.current&&(E(),u.current=window.setTimeout(()=>{y.current=!1,O(!1)},g))},t[13]=O,t[14]=j);let M,N;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(M=e=>{y.current&&(y.current=!1,e.preventDefault(),e.stopPropagation())},N=e=>{y.current&&e.preventDefault()},t[15]=M,t[16]=N):(M=t[15],N=t[16]);let P;t[17]!==k||t[18]!==j?(P={handlePointerDown:k,handlePointerMove:A,handlePointerEnd:j,handleClickCapture:M,handleContextMenu:N},t[17]=k,t[18]=j,t[19]=P):P=t[19];let F=P,I,L;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>()=>{w(),E()},L=[E,w],t[20]=I,t[21]=L):(I=t[20],L=t[21]),p.useEffect(I,L);let R;t[22]!==x||t[23]!==r?(R=(e,t)=>{x||c(e),r?.(e,t)},t[22]=x,t[23]=r,t[24]=R):R=t[24];let z=R,B;t[25]!==z||t[26]!==o||t[27]!==S?(B=(0,m.jsx)(a,{open:S,onOpenChange:z,...o}),t[25]=z,t[26]=o,t[27]=S,t[28]=B):B=t[28];let V;t[29]!==F||t[30]!==B?(V=(0,m.jsx)(v.Provider,{value:F,children:B}),t[29]=F,t[30]=B,t[31]=V):V=t[31];let H=V;if(n===void 0)return H;let U;return t[32]!==n||t[33]!==H?(U=(0,m.jsx)(b,{delayDuration:n,children:H}),t[32]=n,t[33]=H,t[34]=U):U=t[34],U}function S(e){let t=(0,f.c)(43),r,i,a,o,s,c,l,u,d;t[0]===e?(r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d=t[9]):({asChild:r,children:i,onPointerDown:c,onPointerMove:l,onPointerUp:u,onPointerCancel:s,onClickCapture:a,onContextMenu:o,...d}=e,t[0]=e,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d);let h=p.useContext(v),g;t[10]!==r||t[11]!==i?(g=r&&p.isValidElement(i)?{render:i}:{children:i},t[10]=r,t[11]=i,t[12]=g):g=t[12];let _=g,b;t[13]!==h||t[14]!==c?(b=e=>{c?.(e),h?.handlePointerDown(e)},t[13]=h,t[14]=c,t[15]=b):b=t[15];let x;t[16]!==h||t[17]!==l?(x=e=>{l?.(e),h?.handlePointerMove(e)},t[16]=h,t[17]=l,t[18]=x):x=t[18];let S;t[19]!==h||t[20]!==u?(S=e=>{u?.(e),h?.handlePointerEnd()},t[19]=h,t[20]=u,t[21]=S):S=t[21];let C;t[22]!==h||t[23]!==s?(C=e=>{s?.(e),h?.handlePointerEnd()},t[22]=h,t[23]=s,t[24]=C):C=t[24];let w;t[25]!==h||t[26]!==a?(w=e=>{h?.handleClickCapture(e),!e.defaultPrevented&&a?.(e)},t[25]=h,t[26]=a,t[27]=w):w=t[27];let T;t[28]!==h||t[29]!==o?(T=e=>{h?.handleContextMenu(e),!e.defaultPrevented&&o?.(e)},t[28]=h,t[29]=o,t[30]=T):T=t[30];let E;t[31]!==d||t[32]!==_||t[33]!==b||t[34]!==x||t[35]!==S||t[36]!==C||t[37]!==w||t[38]!==T?(E=(0,m.jsx)(n,{"data-slot":`tooltip-trigger`,onPointerDown:b,onPointerMove:x,onPointerUp:S,onPointerCancel:C,onClickCapture:w,onContextMenu:T,...d,..._}),t[31]=d,t[32]=_,t[33]=b,t[34]=x,t[35]=S,t[36]=C,t[37]=w,t[38]=T,t[39]=E):E=t[39];let D;return t[40]!==i||t[41]!==E?(D=(0,m.jsx)(y,{fallback:i,children:E}),t[40]=i,t[41]=E,t[42]=D):D=t[42],D}function C(e){let n=(0,f.c)(23),r,a,s,c,u,p,h;n[0]===e?(r=n[1],a=n[2],s=n[3],c=n[4],u=n[5],p=n[6],h=n[7]):({className:s,sideOffset:h,side:u,align:r,children:a,style:p,...c}=e,n[0]=e,n[1]=r,n[2]=a,n[3]=s,n[4]=c,n[5]=u,n[6]=p,n[7]=h);let g=h===void 0?0:h,_;n[8]===s?_=n[9]:(_=d(`bg-[var(--surface-elevated)] text-[var(--surface-elevated-foreground)] border border-border/60 transition-all duration-150 ease-out data-[starting-style]:opacity-0 data-[starting-style]:scale-95 data-[ending-style]:opacity-0 data-[ending-style]:scale-95 z-50 w-fit origin-[var(--transform-origin)] rounded-xl px-3 py-1.5 typography-meta text-balance overflow-hidden`,s),n[8]=s,n[9]=_);let v;n[10]===p?v=n[11]:(v={...p},n[10]=p,n[11]=v);let b;n[12]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,m.jsx)(i,{className:`fill-[var(--surface-elevated)] z-50 size-2`}),n[12]=b):b=n[12];let x;n[13]!==a||n[14]!==c||n[15]!==_||n[16]!==v?(x=(0,m.jsxs)(l,{"data-slot":`tooltip-content`,className:_,style:v,...c,children:[a,b]}),n[13]=a,n[14]=c,n[15]=_,n[16]=v,n[17]=x):x=n[17];let S;return n[18]!==r||n[19]!==u||n[20]!==g||n[21]!==x?(S=(0,m.jsx)(y,{children:(0,m.jsx)(o,{children:(0,m.jsx)(t,{sideOffset:g,side:u,align:r,className:`z-50`,children:x})})}),n[18]=r,n[19]=u,n[20]=g,n[21]=x,n[22]=S):S=n[22],S}export{S as i,C as n,b as r,x as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"chat.chatInput.stopUnconfirmed":`Зупинку ще не підтверджено. Спробуйте ще раз.`,"chat.response.rateLimit":`Досягнуто обмеження частоти запитів провайдера`,"chat.response.auth":`Помилка автентифікації провайдера. Увійдіть знову та повторіть спробу.`,"chat.response.quota":`Квоту провайдера вичерпано`,"chat.response.contentFilter":`Провайдер заблокував відповідь`,"chat.response.transport":`Не вдалося підключитися до провайдера`,"chat.response.internal":`Внутрішня помилка провайдера`,"chat.response.invalidOutput":`Некоректна відповідь провайдера`,"chat.response.invalidRequest":`Провайдер відхилив запит`,"chat.response.unsupportedOperation":`Провайдер не підтримує цю операцію`,"chat.response.noRoute":`Модель або конфігурація провайдера недоступна`,"chat.response.providerUnknown":`Помилка провайдера`,"chat.response.timeout":`Час очікування відповіді провайдера вичерпано`,"chat.response.permissionRejected":`У дозволі відмовлено`,"chat.response.toolExecution":`Не вдалося виконати інструмент`,"chat.response.compactionFailed":`Не вдалося стиснути контекст`,"chat.response.compactionUnavailable":`Ще немає вмісту для стиснення`,"chat.response.compactionInterrupted":`Стиснення контексту перервано`,"chat.response.compactionCancelled":`Стиснення контексту скасовано`,"chat.response.stopped":`Зупинено користувачем`,"chat.response.interrupted":`Відповідь перервано`,"chat.response.toolInterrupted":`Виконання інструмента перервано`,"chat.response.resumeExhausted":`Автоматичне відновлення зупинено після повторних переривань`,"chat.response.retrying":`Автоматична повторна спроба`,"chat.response.failed":`Помилка виконання`,"chat.response.continuingAfterRestart":`Продовження після перезапуску`,"chat.queuedMessage.inheritsSessionSelection":`Під час виконання успадковує модель, агента й варіант сеансу.`,"chat.sessionRecovery.awaitingConfirmation":`Службу перезапущено. Очікуємо підтвердження стану завдання.`,"chat.btw.title":`Side Chat`,"chat.btw.failed":`Помилка створення відповіді. Спробуйте ще раз.`,"chat.btw.description":`Запитайте про розмову, зберігаючи її історію без змін.`,"chat.btw.placeholder":`Запитайте в Side Chat…`,"chat.btw.removeQuoteAria":`Видалити цитату`,"chat.message.conversationQuotesLabel":`Цитата з розмови`,"chat.btw.sessionRequired":`Відкрийте наявну розмову, щоб відкрити Side Chat.`,"chat.btw.plainTextRequired":`Використовуйте звичайний текст. Посилання залишаються в полі введення.`,"chat.btw.pending":`Підготовка відповіді…`,"chat.btw.cancelled":`Відповідь скасовано. Спробуйте ще раз, щоб повторити запитання.`,"chat.btw.resize":`Змінити розмір панелі Side Chat`,"settings.remoteInstances.clientAuth.edit.action":`Редагувати`,"settings.remoteInstances.clientAuth.edit.name":`Назва пристрою`,"settings.openchamber.about.opencodeGuidance.manualGlobal":`Оновіть налаштований CLI OpenCode через його менеджер пакунків, а потім перезапустіть службу.`,"settings.openchamber.about.opencodeGuidance.manualExternal":`Зверніться до власника зовнішньої служби OpenCode для її оновлення та перезапуску.`,"settings.openchamber.about.opencodeGuidance.bundled":`Оновіть OpenChamber Desktop, щоб оновити вбудований OpenCode.`,"settings.permissions.saved.retry":`Повторити`,"settings.chat.questionDelegate.label":`Автоматично делегувати питання без відповіді`,"settings.chat.questionDelegate.description":`Через 30 секунд без відповіді попросити модель вирішити й продовжити. Взаємодія з питанням призупиняє його відлік.`,"settings.chat.questionDelegate.saveFailed":`Помилка збереження автоматичного делегування. Перевірте поточний стан перед повторною спробою.`,"settings.globalConfig.title":`Глобальна конфігурація`,"settings.globalConfig.description":`Редагуйте активні файли конфігурації в ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Перезавантажити файл`,"settings.globalConfig.restartHint":`Перезапустіть OpenCode після збереження, щоб застосувати зміни конфігурації.`,"settings.globalConfig.toast.loadFailed":`Не вдалося завантажити файл конфігурації`,"settings.globalConfig.toast.saveFailed":`Не вдалося зберегти файл конфігурації`,"settings.globalConfig.toast.saved":`Конфігурацію збережено.`,"settings.providers.page.openCodeGo.title":`Відстеження використання OpenCode Go`,"settings.providers.page.openCodeGo.description":`Підключіть панель OpenCode Go, щоб бачити ковзну, тижневу та місячну квоту.`,"settings.providers.page.openCodeGo.workspaceId":`ID робочого простору`,"settings.providers.page.openCodeGo.authCookie":`Cookie авторизації`,"settings.providers.page.openCodeGo.consoleSignIn":`Увійти через OpenCode Console`,"settings.providers.page.openCodeGo.consoleConnected":`OpenCode Console підключено. OpenCode Go може використовувати ці дані.`,"settings.providers.page.openCodeGo.consoleHint":`OpenCode Go входить через OpenCode Console. Ключі сервісного облікового запису нижче й далі доступні.`,"settings.providers.page.openCodeGo.help":`Скопіюйте ID робочого простору з URL панелі, а cookie auth з інструментів розробника браузера. OpenChamber ніколи не сканує сховище cookie браузера.`,"settings.providers.page.openCodeGo.save":`Зберегти й перевірити`,"settings.providers.page.openCodeGo.replace":`Замінити`,"settings.providers.page.openCodeGo.validate":`Перевірити`,"settings.providers.page.openCodeGo.delete":`Видалити`,"settings.providers.page.quotaCredentials.saved":`Облікові дані {provider} збережено.`,"settings.providers.page.openCodeGo.saveFailed":`Не вдалося перевірити дані OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Дані OpenCode Go дійсні.`,"settings.providers.page.openCodeGo.invalid":`Дані OpenCode Go недійсні або протерміновані.`,"settings.providers.page.openCodeGo.deleted":`Дані OpenCode Go видалено.`,"settings.providers.page.openCodeGo.deleteFailed":`Не вдалося видалити дані OpenCode Go.`,"settings.appearance.language.label":`Мова`,"settings.appearance.language.description":`Виберіть мову інтерфейсу.`,"settings.appearance.language.select":`Виберіть мову`,"settings.window.description":`Вікно налаштувань OpenChamber.`,"settings.view.home.title":`Налаштування`,"settings.view.home.description":`Перейдіть до основних сторінок налаштувань.`,"settings.view.home.cards.providers.title":`Провайдери`,"settings.view.home.cards.providers.description":`Підключення моделей і облікових даних`,"settings.view.home.cards.agents.title":`Налаштування агентів`,"settings.view.home.cards.agents.description":`Промпти, дозволи та обмеження виконання`,"settings.view.home.cards.skillsCatalog.title":`Каталог навичок`,"settings.view.home.cards.skillsCatalog.description":`Встановлення навичок із каталогів`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Налаштування MCP серверів і підключень`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Використання`,"settings.view.home.cards.usage.description":`Квота + видимість витрат`,"settings.view.unavailable.title":`Недоступно`,"settings.view.unavailable.description":`Ця сторінка налаштувань недоступна в цьому середовищі виконання.`,"settings.view.badge.beta":`бета-версія`,"settings.view.actions.reloadOpenCode":`Перезавантажити OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Перезавантажити конфігурацію середовища OpenCode без перезапуску служби.`,"settings.view.actions.backToSettings":`Назад до налаштувань`,"settings.view.actions.closeSettings":`Закрити налаштування`,"settings.view.actions.openSectionList":`Відкрити список розділів`,"settings.view.actions.closeSettingsWithShortcut":`Закрити налаштування ({shortcut}+,)`,"settings.view.actions.back":`Назад`,"settings.view.actions.resizeNavigation":`Змінити розмір навігації налаштувань`,"settings.view.navigation.groups.connection":`Підключення`,"settings.view.navigation.groups.personalization":`Персоналізація`,"settings.view.navigation.groups.workspace":`Робочий простір`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Вміст і автоматизація`,"settings.view.navigation.groups.system":`Система`,"settings.view.search.placeholder":`Пошук налаштувань`,"settings.view.search.aria":`Пошук налаштувань`,"settings.view.search.clear":`Очистити пошук налаштувань`,"settings.view.search.noResults":`Нічого не знайдено`,"settings.page.projects.title":`Проєкти`,"settings.page.remoteInstances.title":`Віддалені інстанси`,"settings.page.providers.title":`Провайдери`,"settings.page.usage.title":`Використання`,"settings.page.agents.title":`Налаштування агентів`,"settings.page.commands.title":`Команди`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Навички`,"settings.page.skillsCatalog.title":`Каталог навичок`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Зовнішній вигляд`,"settings.page.chat.title":`Чат`,"settings.page.shortcuts.title":`Гарячі клавіші`,"settings.page.sessions.title":`Сесії`,"settings.page.archivedSessions.title":`Архівовані сесії`,"settings.page.summaryAI.title":`Підсумки ШІ`,"settings.page.magicPrompts.title":`Магічні промпти`,"settings.page.notifications.title":`Сповіщення`,"settings.page.voice.title":`Голос`,"settings.page.about.title":`Про застосунок`,"settings.magicPrompts.sidebar.title":`Магічні промпти`,"settings.magicPrompts.sidebar.description":`Виберіть шаблон промпта для редагування.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.session":`Сесія`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Генерація комітів`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Генерація PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Вирішення конфліктів злиття/перебазування`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Вирішення конфліктів`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR огляд`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Огляд issue`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Перевірка перевірок PR`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Огляд коментарів PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Огляд єдиного PR коментаря`,"settings.magicPrompts.sidebar.item.sessionSummary":`Підсумок сесії`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Огляд робочого простору`,"settings.magicPrompts.sidebar.item.sessionExplore":`Огляд кодової бази`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Формування Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Формування Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Промпти для команди /craft-goal: видиме повідомлення користувача + приховані інструкції. Через кероване дослідження перетворює ідею або завдання на чіткий Goal, підтверджуваний доказами.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Повернення в контекст`,"settings.magicPrompts.sidebar.item.sessionDebug":`Дебаг`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Зважування варіантів`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Віддалені інстанси`,"settings.remoteInstances.sidebar.description":`Підключайтеся до інших серверів OpenChamber через імпорт посилання або SSH.`,"settings.remoteInstances.sidebar.empty":`Поки немає віддалених інстансів. Імпортуйте посилання або додайте SSH-з’єднання.`,"settings.remoteInstances.channel.link":`Посилання`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Усього {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Нове SSH-підключення`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Додати SSH-підключення`,"settings.remoteInstances.sidebar.actions.connect":`Підключитися`,"settings.remoteInstances.sidebar.actions.disconnect":`Відключити`,"settings.remoteInstances.sidebar.actions.retry":`Повторити спробу`,"settings.remoteInstances.sidebar.actions.remove":`Видалити`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Локальний порт уже використовується. Вибрати випадковий вільний локальний порт і повторити спробу?`,"settings.remoteInstances.sidebar.toast.createFailed":`Не вдалося створити SSH-підключення`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Повторна спроба з випадковим локальним портом`,"settings.remoteInstances.sidebar.toast.connectFailed":`Не вдалося підключити інстанс`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Не вдалося від’єднати інстанс`,"settings.remoteInstances.sidebar.toast.retryFailed":`Не вдалося повторити підключення`,"settings.remoteInstances.sidebar.toast.removeFailed":`Не вдалося видалити інстанс`,"settings.remoteInstances.direct.sidebarTitle":`Посилання на сервери`,"settings.remoteInstances.direct.sidebarDescription":`Підключення через посилання для спарювання`,"settings.remoteInstances.direct.title":`Інші сервери OpenChamber`,"settings.remoteInstances.direct.description":`Сервери, на які може перемикатися цей застосунок. Імпортуйте посилання для спарювання з іншого сервера.`,"settings.remoteInstances.direct.import.description":`Вставте посилання для підключення з іншого сервера OpenChamber.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Імпортувати посилання`,"settings.remoteInstances.direct.error.invalidConnectLink":`Недійсне посилання підключення OpenChamber.`,"settings.remoteInstances.direct.state.loading":`Завантаження серверів...`,"settings.remoteInstances.direct.state.empty":`Інші сервери ще не імпортовано.`,"settings.remoteInstances.clientAuth.title":`Підключення до цього сервера`,"settings.remoteInstances.clientAuth.description":`Створіть безпечне посилання або токен, щоб OpenChamber Desktop міг підключитися до цього сервера.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Назва екземпляра — напр. Домашній Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`Інший пристрій покаже цю назву для цього сервера.`,"settings.remoteInstances.clientAuth.actions.create":`Створити токен`,"settings.remoteInstances.clientAuth.actions.pair":`Створити посилання`,"settings.remoteInstances.clientAuth.actions.revoke":`Відкликати`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Очистити відкликані`,"settings.remoteInstances.clientAuth.qrAlt":`QR-код підключення OpenChamber`,"settings.remoteInstances.clientAuth.qrEnlarge":`Збільшити QR-код`,"settings.remoteInstances.clientAuth.qrScanHint":`Скануй це застосунком OpenChamber на іншому пристрої. Одноразовий і має термін дії.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Сканувати для підключення`,"settings.remoteInstances.clientAuth.actions.addDevice":`Додати пристрій`,"settings.remoteInstances.clientAuth.actions.copied":`Скопійовано`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`Де ви будете користуватись цим пристроєм?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Створіть одноразовий QR-код, який підключить інший пристрій до цього сервера.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`Лише цей компʼютер`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`Для застосунків на цій самій машині.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Лише домашня мережа`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Підключається напряму через ваш Wi-Fi. Поза цією мережею не працює.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`Будь-де`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Працює вдома і поза домом. Поза домом трафік іде через OpenChamber Private Relay — наскрізно зашифрований тунель. Нічого налаштовувати не треба.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Також дозволити зашифрований relay поза домом`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Віддавати перевагу прямому домашньому підключенню, коли доступне`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Сервер Relay`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Використовуйте офіційний Relay OpenChamber або введіть власну адресу ws:// чи wss://. Пристрій збереже адресу з QR-коду.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Розгорніть власний Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`На цьому сервері адресу Relay зафіксовано через OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlRemoteHostHint":`Визначається підключеним хостом. Пейринг використовує поточну адресу Relay цього хоста.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`Користувацька адреса…`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Введіть дійсну адресу Relay, що починається з ws:// або wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Створити QR-код`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`Цільовий екземпляр`,"settings.remoteInstances.clientAuth.addDevice.target.local":`Ця стільниця`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`Немає підключених SSH-екземплярів`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`Спочатку підключіть SSH-екземпляр`,"settings.remoteInstances.sidebar.actions.switchInstanceDisabled":`Підключіть цей SSH-екземпляр перед перемиканням`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`Підключіть цей екземпляр, щоб синхронізувати його конфігурацію`,"settings.remoteInstances.sidebar.actions.syncConfig":`Синхронізувати конфіг`,"settings.remoteInstances.clientAuth.addDevice.done":`Готово`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Пристрій підключено.`,"settings.remoteInstances.clientAuth.pairingUrl":`Посилання для підключення`,"settings.remoteInstances.clientAuth.createdToken":`Скопіюйте цей токен зараз. З міркувань безпеки він більше не показуватиметься.`,"settings.remoteInstances.clientAuth.state.loading":`Завантаження токенів...`,"settings.remoteInstances.clientAuth.state.empty":`Жоден пристрій ще не підключено.`,"settings.remoteInstances.clientAuth.state.revoked":`Відкликано`,"settings.remoteInstances.clientAuth.state.thisDevice":`Цей пристрій`,"settings.remoteInstances.clientAuth.state.pending":`Очікує підключення…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Підключено · Локальна мережа`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Підключено · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Останнє використання {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Ще не використовувався`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Вмикається автоматично, коли ти паруєш пристрій через relay.`,"settings.remoteInstances.relay.description":`Дозволяє вашим іншим пристроям підключатися звідки завгодно без відкриття портів. Трафік шифрується наскрізно — релей не може його прочитати.`,"settings.remoteInstances.relay.enableHint":`Нічого не передається, доки ви не увімкнете релей на цьому сервері.`,"settings.remoteInstances.relay.actions.enable":`Увімкнути Relay`,"settings.remoteInstances.relay.actions.disable":`Вимкнути`,"settings.remoteInstances.relay.confirm.disable":`Вимкнути релей? Пристрої, підключені через нього, будуть негайно відключені.`,"settings.remoteInstances.relay.state.loading":`Перевірка стану релею...`,"settings.remoteInstances.relay.state.disabled":`Вимкнено`,"settings.remoteInstances.relay.state.connecting":`Підключення`,"settings.remoteInstances.relay.state.connected":`Підключено`,"settings.remoteInstances.relay.state.reconnecting":`Повторне підключення`,"settings.remoteInstances.relay.state.error":`Помилка`,"settings.remoteInstances.relay.status.clientsOne":`Підключено пристроїв: {count}`,"settings.remoteInstances.relay.status.clientsMany":`Підключено пристроїв: {count}`,"settings.remoteInstances.relay.pair.title":`Спарувати пристрій`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Назва пристрою (необов'язково)`,"settings.remoteInstances.relay.pair.includeToken":`Додати токен доступу (спарювання одним скануванням)`,"settings.remoteInstances.relay.pair.noTokenHint":`Без токена пристрій після підключення входить за паролем інтерфейсу цього сервера.`,"settings.remoteInstances.relay.pair.generate":`Створити посилання для спарювання`,"settings.remoteInstances.relay.pair.requiresConnected":`Спарювання стане доступним після підключення релею.`,"settings.remoteInstances.relay.pair.linkLabel":`Посилання для спарювання`,"settings.remoteInstances.relay.pair.warning":`Це посилання надає доступ до цього сервера. Не діліться ним.`,"settings.remoteInstances.relay.pair.qrAlt":`QR-код спарювання релею`,"settings.remoteInstances.relay.pair.showQr":`Показати QR-код`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Скануйте для спарювання`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Відскануйте цей QR-код застосунком OpenChamber на іншому пристрої.`,"settings.remoteInstances.relay.pair.manageHint":`Керуйте спареними пристроями або відкликайте їх у списку «Підключення до цього сервера» вище.`,"settings.remoteInstances.relay.toast.enableFailed":`Не вдалося увімкнути релей`,"settings.remoteInstances.relay.toast.disableFailed":`Не вдалося вимкнути релей`,"settings.remoteInstances.relay.toast.offerFailed":`Не вдалося створити посилання для спарювання`,"settings.remoteInstances.relay.toast.linkCopied":`Посилання для спарювання скопійовано`,"settings.remoteInstances.sidebar.phase.ready":`Готово`,"settings.remoteInstances.sidebar.phase.error":`Помилка`,"settings.remoteInstances.sidebar.phase.reconnect":`Повторне підключення`,"settings.remoteInstances.sidebar.phase.installing":`Встановлення`,"settings.remoteInstances.sidebar.phase.updating":`Оновлення`,"settings.remoteInstances.sidebar.phase.forwarding":`Пересилання`,"settings.remoteInstances.sidebar.phase.starting":`Запуск`,"settings.remoteInstances.sidebar.phase.connecting":`Підключення`,"settings.remoteInstances.sidebar.phase.idle":`Очікує`,"settings.remoteInstances.page.section.instance":`Інстанс`,"settings.remoteInstances.page.section.instanceDescription":`Виберіть SSH-команду й назву для цього підключення.`,"settings.remoteInstances.page.field.mode":`Режим`,"settings.remoteInstances.page.field.modeHint":`Виберіть, чи OpenChamber має запустити сервер для вас, чи підключитися до вже запущеного.`,"settings.remoteInstances.page.field.modePlaceholder":`Виберіть режим`,"settings.remoteInstances.page.field.modeManaged":`Запустити для мене`,"settings.remoteInstances.page.field.modeExternal":`Уже запущено`,"settings.remoteInstances.page.field.preferredRemotePort":`Бажаний віддалений порт`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Порт на віддаленій машині. Залиште порожнім, щоб вибрати автоматично.`,"settings.remoteInstances.page.field.keepServerRunning":`Залишати сервер запущеним`,"settings.remoteInstances.page.field.keepServerRunningHint":`Залишати OpenChamber запущеним на віддаленій машині після відключення.`,"settings.remoteInstances.page.field.bindHost":`Прив’язати хост`,"settings.remoteInstances.page.field.bindHostHint":`Де має слухати локальне підключення. Використовуйте 127.0.0.1 або localhost, якщо вам не потрібен доступ з локальної мережі.`,"settings.remoteInstances.page.field.preferredLocalPort":`Бажаний локальний порт`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Локальний порт для цього підключення. Залиште порожнім, щоб вибрати автоматично.`,"settings.remoteInstances.page.field.forwardType":`Тип переадресації`,"settings.remoteInstances.page.field.localListen":`Локальне прослуховування`,"settings.remoteInstances.page.field.localTarget":`Локальна ціль`,"settings.remoteInstances.page.field.remoteListen":`Віддалене прослуховування`,"settings.remoteInstances.page.field.remoteTarget":`Віддалена ціль`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Авто`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Прив’язка до 0.0.0.0 відкриває переадресовані порти для вашої локальної мережі. Продовжити?`,"settings.remoteInstances.page.preview.localSocks5":`(локальний SOCKS5)`,"settings.remoteInstances.page.preview.local":`(локальний)`,"settings.remoteInstances.page.preview.remote":`(віддалений)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Не вдалося відкрити локальну адресу`,"settings.remoteInstances.page.toast.localUrlCopied":`Локальний URL скопійовано`,"settings.remoteInstances.page.actions.copyLocalUrl":`Скопіювати локальний URL`,"settings.remoteInstances.page.actions.open":`Відкрити`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Вибраний інстанс`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`Для {host} потрібно вказати конкретне призначення.`,"settings.remoteInstances.page.patternDialog.description":`Введіть призначення.`,"settings.common.actions.cancel":`Скасувати`,"settings.common.actions.create":`Створити`,"settings.common.actions.delete":`Видалити`,"settings.common.actions.reset":`Скинути`,"settings.common.actions.rename":`Перейменувати`,"settings.common.actions.duplicate":`Дублювати`,"settings.common.actions.import":`Імпортувати`,"settings.common.actions.copyAll":`Копіювати все`,"settings.common.actions.clear":`Очистити`,"settings.common.actions.saving":`Збереження...`,"settings.common.actions.saveChanges":`Зберегти зміни`,"settings.common.scope.global":`Глобальний`,"settings.common.scope.project":`Проєкт`,"settings.common.field.description":`Опис`,"settings.common.badge.new":`Новий`,"settings.common.badge.modified":`Змінено`,"settings.common.permission.allow":`Дозволити`,"settings.common.permission.ask":`Запитувати`,"settings.common.permission.deny":`Заборонити`,"settings.common.state.comingSoon":`Незабаром...`,"settings.projects.actions.title":`Дії`,"settings.projects.actions.description":`Команди для кожного проєкту відображаються в заголовку біля назви проєкту.`,"settings.projects.actions.validation.fillNameAndCommand":`Введіть назву дії та команду перед збереженням.`,"settings.projects.actions.state.loading":`Завантаження...`,"settings.projects.actions.state.empty":`Ще не налаштовано жодних дій.`,"settings.projects.actions.state.untitled":`Дія без назви`,"settings.projects.actions.state.noDesktopSshForwards":`Немає доступних увімкнених локальних переадресацій SSH.`,"settings.projects.actions.field.selectIconAria":`Вибрати значок`,"settings.projects.actions.field.iconAria":`Піктограма {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Назва дії`,"settings.projects.actions.field.command":`Команда`,"settings.projects.actions.field.commandPlaceholder":`напр. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Автоматичне відкриття URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Автоматичне відкриття URL для {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Відкрити URL із виведення або власний URL нижче`,"settings.projects.actions.field.overrideUrlPlaceholder":`Перевизначити URL (необов'язково)`,"settings.projects.actions.field.overrideUrlTooltip":`Якщо це поле заповнене, буде використано власний URL. Якщо воно порожнє, застосунок відкриє найкращий URL з виводу.`,"settings.projects.actions.field.desktopSshForward":`SSH-перенаправлення Desktop`,"settings.projects.actions.field.useOutputManualUrl":`Використовувати вихід/вручну URL`,"settings.projects.actions.actions.add":`Додати дію`,"settings.projects.actions.actions.save":`Зберегти дії`,"settings.projects.actions.toast.saveFailed":`Не вдалося зберегти дії`,"settings.projects.actions.toast.saved":`Дії проєкту збережено`,"settings.openchamber.about.title":`Про OpenChamber`,"settings.openchamber.about.field.version":`Версія`,"settings.openchamber.about.field.clientVersion":`Клієнт`,"settings.openchamber.about.field.webBundle":`Веб-пакет`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`Версія OpenCode`,"settings.openchamber.about.opencodeVersionWithManagement":`{version} ({management})`,"settings.openchamber.about.opencodeManagement.manual-global":`глобальний CLI — оновіть вручну`,"settings.openchamber.about.opencodeManagement.manual-external":`зовнішній serve — керуйте поза додатком`,"settings.openchamber.about.opencodeManagement.bundled":`вбудовано в застосунок`,"settings.openchamber.about.opencodeManagement.in-app":`керується OpenChamber`,"settings.openchamber.about.opencodeManagement.none":`власність невідома`,"settings.openchamber.about.state.checking":`Перевірка...`,"settings.openchamber.about.state.upToDate":`В актуальному стані`,"settings.openchamber.about.state.unknown":`невідомо`,"settings.openchamber.about.state.builtin":`вбудований`,"settings.openchamber.about.actions.checkUpdates":`Перевірити оновлення`,"settings.openchamber.about.actions.update":`Оновити`,"settings.openchamber.about.actions.updateToVersion":`Оновити до {version}`,"settings.openchamber.about.actions.applyOtaToVersion":`Оновити зараз до {version}`,"settings.openchamber.about.actions.installNativeToVersion":`Встановити {version}`,"settings.openchamber.about.actions.checkForUpdates":`Перевірити наявність оновлень`,"settings.openchamber.about.actions.submitFeedback":`Надіслати відгук`,"settings.openchamber.about.toast.latestVersion":`Ви використовуєте останню версію`,"settings.openchamber.about.toast.checkFailed":`Не вдалося перевірити наявність оновлень`,"settings.openchamber.about.betaUpdates.label":`Приєднатися до бета-оновлень`,"settings.openchamber.about.betaUpdates.description":`Отримуйте ранні оновлення застосунку на цьому пристрої.`,"settings.openchamber.about.betaUpdates.rollback.title":`Повернутися до стабільної версії?`,"settings.openchamber.about.betaUpdates.rollback.description":`Ви використовуєте бета-версію. Вимкнення бета-оновлень поверне OpenChamber до стабільної версії v{version}. Перезапустіть застосунок, щоб застосувати зміну.`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`Залишити бета-версію`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`Повернутися до стабільної`,"settings.openchamber.about.diagnostics.label":`Діагностичний журнал`,"settings.openchamber.about.diagnostics.description":`Експортує локальні діагностичні feat для аналізу проблем відображення та синхронізації. Не містить текстів повідомлень і токенів.`,"settings.openchamber.about.diagnostics.export":`Експортувати журнал`,"settings.openchamber.about.diagnostics.exporting":`Експортування…`,"settings.openchamber.about.diagnostics.enable":`Записувати діагностичні feat`,"settings.openchamber.about.diagnostics.enableHint":`Доступно в бета-збірках. Записує на цьому пристрої цикл синхронізації та відображення сеансу без тексту повідомлень.`,"settings.openchamber.about.diagnostics.toast.exported":`Діагностичний журнал експортовано`,"settings.openchamber.about.diagnostics.toast.failed":`Не вдалося експортувати діагностичний журнал`,"settings.openchamber.about.diagnostics.toast.empty":`Діагностичний журнал експортовано. Подій ще не записано.`,"settings.agents.sidebar.title":`Налаштування агентів`,"settings.agents.sidebar.total":`Усього {count}`,"settings.agents.sidebar.empty.title":`Агентів не налаштовано`,"settings.agents.sidebar.empty.description":`Скористайтеся кнопкою + вище, щоб створити його`,"settings.agents.sidebar.section.builtIn":`Вбудовані агенти`,"settings.agents.sidebar.section.custom":`Спеціальні агенти`,"settings.agents.sidebar.badge.system":`Системний`,"settings.agents.sidebar.badge.disabled":`Вимкнений`,"settings.agents.sidebar.dialog.deleteTitle":`Видалити агента`,"settings.agents.sidebar.dialog.resetTitle":`Скинути агента`,"settings.agents.sidebar.dialog.deleteDescription":`Ви впевнені, що хочете видалити агента "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`Ви впевнені, що бажаєте скинути агент «{name}» до конфігурації за замовчуванням?`,"settings.agents.sidebar.renameDialog.title":`Перейменувати агента`,"settings.agents.sidebar.renameDialog.description":`Введіть нову назву для агента "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Нове ім'я агента...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Вбудовані агенти не можна видалити`,"settings.agents.sidebar.toast.agentDeleted":`Агент "{name}" успішно видалено`,"settings.agents.sidebar.toast.agentReset":`Агента "{name}" скинуто до значень за замовчуванням`,"settings.agents.sidebar.toast.deleteFailed":`Не вдалося видалити агента`,"settings.agents.sidebar.toast.definitionNotFound":`Визначення агента не знайдено. Нічого не змінено.`,"settings.agents.sidebar.toast.resetFailed":`Не вдалося скинути агента`,"settings.agents.sidebar.toast.agentNameRequired":`Потрібно вказати ім’я агента`,"settings.agents.sidebar.toast.agentExists":`Агент із такою назвою вже існує`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Не вдалося видалити старого агента після перейменування`,"settings.agents.sidebar.toast.renameFailed":`Не вдалося перейменувати агента`,"settings.agents.sidebar.toast.agentRenamed":`Агента перейменовано на "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Потрібна назва дозволу`,"settings.agents.page.toast.created":`Агент створено успішно`,"settings.agents.page.toast.updated":`Агент успішно оновлено`,"settings.agents.page.toast.createFailed":`Не вдалося створити агента`,"settings.agents.page.toast.updateFailed":`Не вдалося оновити агента`,"settings.agents.page.toast.saveUnexpectedError":`Під час збереження сталася помилка`,"settings.agents.page.toast.savedManualRestart":`Збережено на диск. Перезапустіть підключений сервер OpenCode, щоб застосувати зміни.`,"settings.agents.page.empty.title":`Виберіть агента на бічній панелі`,"settings.agents.page.empty.description":`або створіть нового`,"settings.agents.page.title.new":`Новий агент`,"settings.agents.page.subtitle.new":`Налаштуйте нову роль помічника`,"settings.agents.page.subtitle.edit":`Редагувати налаштування агента`,"settings.agents.page.section.identityRole":`Ідентичність і роль`,"settings.agents.page.section.modelParameters":`Модель`,"settings.agents.page.section.runtime":`Виконання`,"settings.agents.page.field.steps":`Ліміт кроків`,"settings.agents.page.field.stepsHint":`Порожнє поле означає без ліміту. На ліміті наступний запит може відповісти лише текстом.`,"settings.agents.page.field.hidden":`Прихований`,"settings.agents.page.field.hiddenHint":`Ховає цього агента з основного перемикача та зі згадок @. Завдання все ще може його викликати, якщо дозволи це дозволяють.`,"settings.agents.page.field.disabled":`Вимкнений`,"settings.agents.page.field.disabledHint":`Прибирає цього агента з каталогу. Вимкніть і збережіть, щоб повернути його до списку.`,"settings.agents.page.field.color":`Колір`,"settings.agents.page.field.colorHint":`Шістнадцятковий колір, наприклад #FF6B6B.`,"settings.agents.page.field.colorInvalid":`Введіть шістнадцятковий колір, наприклад #FF6B6B.`,"settings.agents.page.field.clearColorAria":`Очистити колір`,"settings.agents.page.field.modelHint":`Залиште порожнім, щоб зберегти модель викликача. Варіант зберігається разом із моделлю.`,"settings.agents.page.system.inheritHint":`Порожнє поле лишає вбудований промпт. Текст тут його замінює. Інструкції проєкту все одно додаються після нього.`,"settings.agents.page.apply.hint":`Застосовується до наступного запиту і нових сесій. Сесія, що вже триває, зберігає поточну модель.`,"settings.agents.page.legacy.convertible":`Збереження перетворює цей файл агента на поточний формат.`,"settings.agents.page.legacy.dropped":`Ці поля не буде збережено: {fields}. Вони не змінюють наступний запит.`,"settings.agents.page.legacy.confirmDrop":`Перетворити й відкинути ці поля`,"settings.agents.page.toast.savedNextRequest":`Збережено. Наступний запит і нові сесії використовують цього агента. Сесія, що вже триває, зберігає поточну модель.`,"settings.agents.page.section.systemPrompt":`Системний промпт`,"settings.agents.page.section.toolPermissions":`Дозволи інструмента`,"settings.agents.page.field.agentName":`Ім'я агента`,"settings.agents.page.field.agentNamePlaceholder":`Ім’я агента`,"settings.agents.page.field.scope":`Область`,"settings.agents.page.field.scopePlaceholder":`Область`,"settings.agents.page.field.descriptionPlaceholder":`Що робить цей агент?`,"settings.agents.page.field.mode":`Режим`,"settings.agents.page.field.modeTooltip":`Видимість основного або субагента`,"settings.agents.page.field.overrideModel":`Перевизначити модель`,"settings.agents.page.field.variant":`Варіант мислення`,"settings.agents.page.field.variantTooltip":`Необов'язково. Якщо модель підтримує міркування, варіант контролює глибину міркування.`,"settings.agents.page.field.variantHint":`Специфічно для моделі (напр. варіант Anthropic)`,"settings.agents.page.field.variantPlaceholder":`напр. high, max, low, none`,"settings.agents.page.field.temperature":`Температура`,"settings.agents.page.field.temperatureTooltip":`Контролює випадковість. Вищий = творчий, нижчий = зосереджений.`,"settings.agents.page.field.temperatureRange":`0,0 до 2,0`,"settings.agents.page.field.clearTemperatureAria":`Очистити перевизначення температури`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Різноманітність nucleus sampling. Нижче значення = лише ймовірніші токени.`,"settings.agents.page.field.topPRange":`0,0 до 1,0`,"settings.agents.page.field.clearTopPAria":`Очистити перевизначення Top P`,"settings.agents.page.field.systemPromptPlaceholder":`Ви експерт із програмування...`,"settings.agents.page.mode.primary":`Основний`,"settings.agents.page.mode.subagent":`Субагент`,"settings.agents.page.mode.all":`Усі`,"settings.agents.page.permissions.defaultLabel":`За замовчуванням`,"settings.agents.page.permissions.shell":`Команди`,"settings.agents.page.permissions.subagent":`Субагент`,"settings.agents.page.permissions.edit":`Редагування`,"settings.agents.page.permissions.externalDirectory":`Зовнішній каталог`,"settings.agents.page.permissions.question":`Запитання`,"settings.agents.page.permissions.read":`Читання`,"settings.agents.page.permissions.glob":`Пошук файлів`,"settings.agents.page.permissions.grep":`Пошук`,"settings.agents.page.permissions.skill":`Навичка`,"settings.agents.page.permissions.webfetch":`Отримати URL`,"settings.agents.page.permissions.websearch":`Вебпошук`,"settings.agents.page.permissions.execute":`Виконати код`,"settings.agents.page.permissions.browser":`Браузер`,"settings.agents.page.permissions.hideEditor":`Приховати редактор`,"settings.agents.page.permissions.advancedEditor":`Розширений редактор`,"settings.agents.page.permissions.globalSummary":`Глобальний: {summary}`,"settings.agents.page.permissions.rulesSummary":`Правила: {summary}`,"settings.agents.page.permissions.globalDefault":`Глобальне значення за замовчуванням`,"settings.agents.page.permissions.pattern":`Шаблон`,"settings.agents.page.permissions.addCustomRule":`Додати спеціальне правило`,"settings.agents.page.permissions.permissionPlaceholder":`Дозвіл...`,"settings.agents.page.permissions.patternPlaceholder":`Шаблон (наприклад, *)`,"settings.permissions.saved.title":`Збережені дозволи проєкту`,"settings.permissions.saved.empty":`Для цього проєкту немає збережених дозволів`,"settings.permissions.saved.delete":`Видалити`,"settings.permissions.saved.deleteFailed":`Не вдалося видалити збережений дозвіл`,"settings.permissions.saved.loadFailed":`Не вдалося завантажити збережені дозволи`,"settings.agents.page.permissions.lastMatchHint":`Перемагає останнє відповідне правило`,"settings.page.behavior.title":`Поведінка`,"settings.behavior.page.title":`Поведінка`,"settings.behavior.page.warning.title":`Глобальні правила поєднуються з правилами проєкту`,"settings.behavior.page.warning.description":`Зміни тут оновлюють {path}. OpenCode також додає правила з AGENTS.md на рівні проєкту, якщо вони існують.`,"settings.behavior.page.section.systemPrompt":`Глобальний AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`Ви — корисний AI-асистент...
|
|
1
|
+
var e={"chat.chatInput.stopUnconfirmed":`Зупинку ще не підтверджено. Спробуйте ще раз.`,"chat.response.rateLimit":`Досягнуто обмеження частоти запитів провайдера`,"chat.response.auth":`Помилка автентифікації провайдера. Увійдіть знову та повторіть спробу.`,"chat.response.quota":`Квоту провайдера вичерпано`,"chat.response.contentFilter":`Провайдер заблокував відповідь`,"chat.response.transport":`Не вдалося підключитися до провайдера`,"chat.response.internal":`Внутрішня помилка провайдера`,"chat.response.invalidOutput":`Некоректна відповідь провайдера`,"chat.response.invalidRequest":`Провайдер відхилив запит`,"chat.response.unsupportedOperation":`Провайдер не підтримує цю операцію`,"chat.response.noRoute":`Модель або конфігурація провайдера недоступна`,"chat.response.providerUnknown":`Помилка провайдера`,"chat.response.timeout":`Час очікування відповіді провайдера вичерпано`,"chat.response.permissionRejected":`У дозволі відмовлено`,"chat.response.toolExecution":`Не вдалося виконати інструмент`,"chat.response.compactionFailed":`Не вдалося стиснути контекст`,"chat.response.compactionUnavailable":`Ще немає вмісту для стиснення`,"chat.response.compactionInterrupted":`Стиснення контексту перервано`,"chat.response.compactionCancelled":`Стиснення контексту скасовано`,"chat.response.stopped":`Зупинено користувачем`,"chat.response.interrupted":`Відповідь перервано`,"chat.response.toolInterrupted":`Виконання інструмента перервано`,"chat.response.resumeExhausted":`Автоматичне відновлення зупинено після повторних переривань`,"chat.response.retrying":`Автоматична повторна спроба`,"chat.response.failed":`Помилка виконання`,"chat.response.continuingAfterRestart":`Продовження після перезапуску`,"chat.queuedMessage.inheritsSessionSelection":`Під час виконання успадковує модель, агента й варіант сеансу.`,"chat.sessionRecovery.awaitingConfirmation":`Службу перезапущено. Очікуємо підтвердження стану завдання.`,"chat.btw.title":`Side Chat`,"chat.btw.failed":`Помилка створення відповіді. Спробуйте ще раз.`,"chat.btw.description":`Запитайте про розмову, зберігаючи її історію без змін.`,"chat.btw.placeholder":`Запитайте в Side Chat…`,"chat.btw.removeQuoteAria":`Видалити цитату`,"chat.message.conversationQuotesLabel":`Цитата з розмови`,"chat.btw.sessionRequired":`Відкрийте наявну розмову, щоб відкрити Side Chat.`,"chat.btw.plainTextRequired":`Використовуйте звичайний текст. Посилання залишаються в полі введення.`,"chat.btw.pending":`Підготовка відповіді…`,"chat.btw.cancelled":`Відповідь скасовано. Спробуйте ще раз, щоб повторити запитання.`,"chat.btw.resize":`Змінити розмір панелі Side Chat`,"settings.remoteInstances.clientAuth.edit.title":`Редагувати пристрій`,"settings.remoteInstances.clientAuth.edit.action":`Редагувати`,"settings.remoteInstances.clientAuth.edit.name":`Назва пристрою`,"settings.openchamber.about.opencodeGuidance.manualGlobal":`Оновіть налаштований CLI OpenCode через його менеджер пакунків, а потім перезапустіть службу.`,"settings.openchamber.about.opencodeGuidance.manualExternal":`Зверніться до власника зовнішньої служби OpenCode для її оновлення та перезапуску.`,"settings.openchamber.about.opencodeGuidance.bundled":`Оновіть OpenChamber Desktop, щоб оновити вбудований OpenCode.`,"settings.permissions.saved.retry":`Повторити`,"settings.chat.questionDelegate.label":`Автоматично делегувати питання без відповіді`,"settings.chat.questionDelegate.description":`Через 30 секунд без відповіді попросити модель вирішити й продовжити. Взаємодія з питанням призупиняє його відлік.`,"settings.chat.questionDelegate.saveFailed":`Помилка збереження автоматичного делегування. Перевірте поточний стан перед повторною спробою.`,"settings.globalConfig.title":`Глобальна конфігурація`,"settings.globalConfig.description":`Редагуйте активні файли конфігурації в ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Перезавантажити файл`,"settings.globalConfig.restartHint":`Перезапустіть OpenCode після збереження, щоб застосувати зміни конфігурації.`,"settings.globalConfig.toast.loadFailed":`Не вдалося завантажити файл конфігурації`,"settings.globalConfig.toast.saveFailed":`Не вдалося зберегти файл конфігурації`,"settings.globalConfig.toast.saved":`Конфігурацію збережено.`,"settings.providers.page.openCodeGo.title":`Відстеження використання OpenCode Go`,"settings.providers.page.openCodeGo.description":`Підключіть панель OpenCode Go, щоб бачити ковзну, тижневу та місячну квоту.`,"settings.providers.page.openCodeGo.workspaceId":`ID робочого простору`,"settings.providers.page.openCodeGo.authCookie":`Cookie авторизації`,"settings.providers.page.openCodeGo.consoleSignIn":`Увійти через OpenCode Console`,"settings.providers.page.openCodeGo.consoleConnected":`OpenCode Console підключено. OpenCode Go може використовувати ці дані.`,"settings.providers.page.openCodeGo.consoleHint":`OpenCode Go входить через OpenCode Console. Ключі сервісного облікового запису нижче й далі доступні.`,"settings.providers.page.openCodeGo.help":`Скопіюйте ID робочого простору з URL панелі, а cookie auth з інструментів розробника браузера. OpenChamber ніколи не сканує сховище cookie браузера.`,"settings.providers.page.openCodeGo.save":`Зберегти й перевірити`,"settings.providers.page.openCodeGo.replace":`Замінити`,"settings.providers.page.openCodeGo.validate":`Перевірити`,"settings.providers.page.openCodeGo.delete":`Видалити`,"settings.providers.page.quotaCredentials.saved":`Облікові дані {provider} збережено.`,"settings.providers.page.openCodeGo.saveFailed":`Не вдалося перевірити дані OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Дані OpenCode Go дійсні.`,"settings.providers.page.openCodeGo.invalid":`Дані OpenCode Go недійсні або протерміновані.`,"settings.providers.page.openCodeGo.deleted":`Дані OpenCode Go видалено.`,"settings.providers.page.openCodeGo.deleteFailed":`Не вдалося видалити дані OpenCode Go.`,"settings.appearance.language.label":`Мова`,"settings.appearance.language.description":`Виберіть мову інтерфейсу.`,"settings.appearance.language.select":`Виберіть мову`,"settings.window.description":`Вікно налаштувань OpenChamber.`,"settings.view.home.title":`Налаштування`,"settings.view.home.description":`Перейдіть до основних сторінок налаштувань.`,"settings.view.home.cards.providers.title":`Провайдери`,"settings.view.home.cards.providers.description":`Підключення моделей і облікових даних`,"settings.view.home.cards.agents.title":`Налаштування агентів`,"settings.view.home.cards.agents.description":`Промпти, дозволи та обмеження виконання`,"settings.view.home.cards.skillsCatalog.title":`Каталог навичок`,"settings.view.home.cards.skillsCatalog.description":`Встановлення навичок із каталогів`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Налаштування MCP серверів і підключень`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Використання`,"settings.view.home.cards.usage.description":`Квота + видимість витрат`,"settings.view.unavailable.title":`Недоступно`,"settings.view.unavailable.description":`Ця сторінка налаштувань недоступна в цьому середовищі виконання.`,"settings.view.badge.beta":`бета-версія`,"settings.view.actions.reloadOpenCode":`Перезавантажити OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Перезавантажити конфігурацію середовища OpenCode без перезапуску служби.`,"settings.view.actions.backToSettings":`Назад до налаштувань`,"settings.view.actions.closeSettings":`Закрити налаштування`,"settings.view.actions.openSectionList":`Відкрити список розділів`,"settings.view.actions.closeSettingsWithShortcut":`Закрити налаштування ({shortcut}+,)`,"settings.view.actions.back":`Назад`,"settings.view.actions.resizeNavigation":`Змінити розмір навігації налаштувань`,"settings.view.navigation.groups.connection":`Підключення`,"settings.view.navigation.groups.personalization":`Персоналізація`,"settings.view.navigation.groups.workspace":`Робочий простір`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Вміст і автоматизація`,"settings.view.navigation.groups.system":`Система`,"settings.view.search.placeholder":`Пошук налаштувань`,"settings.view.search.aria":`Пошук налаштувань`,"settings.view.search.clear":`Очистити пошук налаштувань`,"settings.view.search.noResults":`Нічого не знайдено`,"settings.page.projects.title":`Проєкти`,"settings.page.remoteInstances.title":`Віддалені інстанси`,"settings.page.providers.title":`Провайдери`,"settings.page.usage.title":`Використання`,"settings.page.agents.title":`Налаштування агентів`,"settings.page.commands.title":`Команди`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Навички`,"settings.page.skillsCatalog.title":`Каталог навичок`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Зовнішній вигляд`,"settings.page.chat.title":`Чат`,"settings.page.shortcuts.title":`Гарячі клавіші`,"settings.page.sessions.title":`Сесії`,"settings.page.archivedSessions.title":`Архівовані сесії`,"settings.page.summaryAI.title":`Підсумки ШІ`,"settings.page.magicPrompts.title":`Магічні промпти`,"settings.page.notifications.title":`Сповіщення`,"settings.page.voice.title":`Голос`,"settings.page.about.title":`Про застосунок`,"settings.magicPrompts.sidebar.title":`Магічні промпти`,"settings.magicPrompts.sidebar.description":`Виберіть шаблон промпта для редагування.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.session":`Сесія`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Генерація комітів`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Генерація PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Вирішення конфліктів злиття/перебазування`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Вирішення конфліктів`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR огляд`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Огляд issue`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Перевірка перевірок PR`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Огляд коментарів PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Огляд єдиного PR коментаря`,"settings.magicPrompts.sidebar.item.sessionSummary":`Підсумок сесії`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Огляд робочого простору`,"settings.magicPrompts.sidebar.item.sessionExplore":`Огляд кодової бази`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Формування Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Формування Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Промпти для команди /craft-goal: видиме повідомлення користувача + приховані інструкції. Через кероване дослідження перетворює ідею або завдання на чіткий Goal, підтверджуваний доказами.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Повернення в контекст`,"settings.magicPrompts.sidebar.item.sessionDebug":`Дебаг`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Зважування варіантів`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Віддалені інстанси`,"settings.remoteInstances.sidebar.description":`Підключайтеся до інших серверів OpenChamber через імпорт посилання або SSH.`,"settings.remoteInstances.sidebar.empty":`Поки немає віддалених інстансів. Імпортуйте посилання або додайте SSH-з’єднання.`,"settings.remoteInstances.channel.link":`Посилання`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Усього {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Нове SSH-підключення`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Додати SSH-підключення`,"settings.remoteInstances.sidebar.actions.connect":`Підключитися`,"settings.remoteInstances.sidebar.actions.disconnect":`Відключити`,"settings.remoteInstances.sidebar.actions.retry":`Повторити спробу`,"settings.remoteInstances.sidebar.actions.remove":`Видалити`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Локальний порт уже використовується. Вибрати випадковий вільний локальний порт і повторити спробу?`,"settings.remoteInstances.sidebar.toast.createFailed":`Не вдалося створити SSH-підключення`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Повторна спроба з випадковим локальним портом`,"settings.remoteInstances.sidebar.toast.connectFailed":`Не вдалося підключити інстанс`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Не вдалося від’єднати інстанс`,"settings.remoteInstances.sidebar.toast.retryFailed":`Не вдалося повторити підключення`,"settings.remoteInstances.sidebar.toast.removeFailed":`Не вдалося видалити інстанс`,"settings.remoteInstances.direct.sidebarTitle":`Посилання на сервери`,"settings.remoteInstances.direct.sidebarDescription":`Підключення через посилання для спарювання`,"settings.remoteInstances.direct.title":`Інші сервери OpenChamber`,"settings.remoteInstances.direct.description":`Сервери, на які може перемикатися цей застосунок. Імпортуйте посилання для спарювання з іншого сервера.`,"settings.remoteInstances.direct.import.description":`Вставте посилання для підключення з іншого сервера OpenChamber.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Імпортувати посилання`,"settings.remoteInstances.direct.error.invalidConnectLink":`Недійсне посилання підключення OpenChamber.`,"settings.remoteInstances.direct.state.loading":`Завантаження серверів...`,"settings.remoteInstances.direct.state.empty":`Інші сервери ще не імпортовано.`,"settings.remoteInstances.clientAuth.title":`Підключення до цього сервера`,"settings.remoteInstances.clientAuth.description":`Створіть безпечне посилання або токен, щоб OpenChamber Desktop міг підключитися до цього сервера.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Назва екземпляра — напр. Домашній Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`Інший пристрій покаже цю назву для цього сервера.`,"settings.remoteInstances.clientAuth.actions.create":`Створити токен`,"settings.remoteInstances.clientAuth.actions.pair":`Створити посилання`,"settings.remoteInstances.clientAuth.actions.revoke":`Відкликати`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Очистити відкликані`,"settings.remoteInstances.clientAuth.qrAlt":`QR-код підключення OpenChamber`,"settings.remoteInstances.clientAuth.qrEnlarge":`Збільшити QR-код`,"settings.remoteInstances.clientAuth.qrScanHint":`Скануй це застосунком OpenChamber на іншому пристрої. Одноразовий і має термін дії.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Сканувати для підключення`,"settings.remoteInstances.clientAuth.actions.addDevice":`Додати пристрій`,"settings.remoteInstances.clientAuth.actions.copied":`Скопійовано`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`Де ви будете користуватись цим пристроєм?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Створіть одноразовий QR-код, який підключить інший пристрій до цього сервера.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`Лише цей компʼютер`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`Для застосунків на цій самій машині.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Лише домашня мережа`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Підключається напряму через ваш Wi-Fi. Поза цією мережею не працює.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`Будь-де`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Працює вдома і поза домом. Поза домом трафік іде через OpenChamber Private Relay — наскрізно зашифрований тунель. Нічого налаштовувати не треба.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Також дозволити зашифрований relay поза домом`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Віддавати перевагу прямому домашньому підключенню, коли доступне`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Сервер Relay`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Використовуйте офіційний Relay OpenChamber або введіть власну адресу ws:// чи wss://. Пристрій збереже адресу з QR-коду.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Розгорніть власний Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`На цьому сервері адресу Relay зафіксовано через OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlRemoteHostHint":`Визначається підключеним хостом. Пейринг використовує поточну адресу Relay цього хоста.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`Користувацька адреса…`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Введіть дійсну адресу Relay, що починається з ws:// або wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Створити QR-код`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`Цільовий екземпляр`,"settings.remoteInstances.clientAuth.addDevice.target.local":`Ця стільниця`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`Немає підключених SSH-екземплярів`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`Спочатку підключіть SSH-екземпляр`,"settings.remoteInstances.sidebar.actions.switchInstanceDisabled":`Підключіть цей SSH-екземпляр перед перемиканням`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`Підключіть цей екземпляр, щоб синхронізувати його конфігурацію`,"settings.remoteInstances.sidebar.actions.syncConfig":`Синхронізувати конфіг`,"settings.remoteInstances.clientAuth.addDevice.done":`Готово`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Пристрій підключено.`,"settings.remoteInstances.clientAuth.pairingUrl":`Посилання для підключення`,"settings.remoteInstances.clientAuth.createdToken":`Скопіюйте цей токен зараз. З міркувань безпеки він більше не показуватиметься.`,"settings.remoteInstances.clientAuth.state.loading":`Завантаження токенів...`,"settings.remoteInstances.clientAuth.state.empty":`Жоден пристрій ще не підключено.`,"settings.remoteInstances.clientAuth.state.revoked":`Відкликано`,"settings.remoteInstances.clientAuth.state.thisDevice":`Цей пристрій`,"settings.remoteInstances.clientAuth.state.pending":`Очікує підключення…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Підключено · Локальна мережа`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Підключено · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Останнє використання {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Ще не використовувався`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Вмикається автоматично, коли ти паруєш пристрій через relay.`,"settings.remoteInstances.relay.description":`Дозволяє вашим іншим пристроям підключатися звідки завгодно без відкриття портів. Трафік шифрується наскрізно — релей не може його прочитати.`,"settings.remoteInstances.relay.enableHint":`Нічого не передається, доки ви не увімкнете релей на цьому сервері.`,"settings.remoteInstances.relay.actions.enable":`Увімкнути Relay`,"settings.remoteInstances.relay.actions.disable":`Вимкнути`,"settings.remoteInstances.relay.confirm.disable":`Вимкнути релей? Пристрої, підключені через нього, будуть негайно відключені.`,"settings.remoteInstances.relay.state.loading":`Перевірка стану релею...`,"settings.remoteInstances.relay.state.disabled":`Вимкнено`,"settings.remoteInstances.relay.state.connecting":`Підключення`,"settings.remoteInstances.relay.state.connected":`Підключено`,"settings.remoteInstances.relay.state.reconnecting":`Повторне підключення`,"settings.remoteInstances.relay.state.error":`Помилка`,"settings.remoteInstances.relay.status.clientsOne":`Підключено пристроїв: {count}`,"settings.remoteInstances.relay.status.clientsMany":`Підключено пристроїв: {count}`,"settings.remoteInstances.relay.pair.title":`Спарувати пристрій`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Назва пристрою (необов'язково)`,"settings.remoteInstances.relay.pair.includeToken":`Додати токен доступу (спарювання одним скануванням)`,"settings.remoteInstances.relay.pair.noTokenHint":`Без токена пристрій після підключення входить за паролем інтерфейсу цього сервера.`,"settings.remoteInstances.relay.pair.generate":`Створити посилання для спарювання`,"settings.remoteInstances.relay.pair.requiresConnected":`Спарювання стане доступним після підключення релею.`,"settings.remoteInstances.relay.pair.linkLabel":`Посилання для спарювання`,"settings.remoteInstances.relay.pair.warning":`Це посилання надає доступ до цього сервера. Не діліться ним.`,"settings.remoteInstances.relay.pair.qrAlt":`QR-код спарювання релею`,"settings.remoteInstances.relay.pair.showQr":`Показати QR-код`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Скануйте для спарювання`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Відскануйте цей QR-код застосунком OpenChamber на іншому пристрої.`,"settings.remoteInstances.relay.pair.manageHint":`Керуйте спареними пристроями або відкликайте їх у списку «Підключення до цього сервера» вище.`,"settings.remoteInstances.relay.toast.enableFailed":`Не вдалося увімкнути релей`,"settings.remoteInstances.relay.toast.disableFailed":`Не вдалося вимкнути релей`,"settings.remoteInstances.relay.toast.offerFailed":`Не вдалося створити посилання для спарювання`,"settings.remoteInstances.relay.toast.linkCopied":`Посилання для спарювання скопійовано`,"settings.remoteInstances.sidebar.phase.ready":`Готово`,"settings.remoteInstances.sidebar.phase.error":`Помилка`,"settings.remoteInstances.sidebar.phase.reconnect":`Повторне підключення`,"settings.remoteInstances.sidebar.phase.installing":`Встановлення`,"settings.remoteInstances.sidebar.phase.updating":`Оновлення`,"settings.remoteInstances.sidebar.phase.forwarding":`Пересилання`,"settings.remoteInstances.sidebar.phase.starting":`Запуск`,"settings.remoteInstances.sidebar.phase.connecting":`Підключення`,"settings.remoteInstances.sidebar.phase.idle":`Очікує`,"settings.remoteInstances.page.section.instance":`Інстанс`,"settings.remoteInstances.page.section.instanceDescription":`Виберіть SSH-команду й назву для цього підключення.`,"settings.remoteInstances.page.field.mode":`Режим`,"settings.remoteInstances.page.field.modeHint":`Виберіть, чи OpenChamber має запустити сервер для вас, чи підключитися до вже запущеного.`,"settings.remoteInstances.page.field.modePlaceholder":`Виберіть режим`,"settings.remoteInstances.page.field.modeManaged":`Запустити для мене`,"settings.remoteInstances.page.field.modeExternal":`Уже запущено`,"settings.remoteInstances.page.field.preferredRemotePort":`Бажаний віддалений порт`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Порт на віддаленій машині. Залиште порожнім, щоб вибрати автоматично.`,"settings.remoteInstances.page.field.keepServerRunning":`Залишати сервер запущеним`,"settings.remoteInstances.page.field.keepServerRunningHint":`Залишати OpenChamber запущеним на віддаленій машині після відключення.`,"settings.remoteInstances.page.field.bindHost":`Прив’язати хост`,"settings.remoteInstances.page.field.bindHostHint":`Де має слухати локальне підключення. Використовуйте 127.0.0.1 або localhost, якщо вам не потрібен доступ з локальної мережі.`,"settings.remoteInstances.page.field.preferredLocalPort":`Бажаний локальний порт`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Локальний порт для цього підключення. Залиште порожнім, щоб вибрати автоматично.`,"settings.remoteInstances.page.field.forwardType":`Тип переадресації`,"settings.remoteInstances.page.field.localListen":`Локальне прослуховування`,"settings.remoteInstances.page.field.localTarget":`Локальна ціль`,"settings.remoteInstances.page.field.remoteListen":`Віддалене прослуховування`,"settings.remoteInstances.page.field.remoteTarget":`Віддалена ціль`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Авто`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Прив’язка до 0.0.0.0 відкриває переадресовані порти для вашої локальної мережі. Продовжити?`,"settings.remoteInstances.page.preview.localSocks5":`(локальний SOCKS5)`,"settings.remoteInstances.page.preview.local":`(локальний)`,"settings.remoteInstances.page.preview.remote":`(віддалений)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Не вдалося відкрити локальну адресу`,"settings.remoteInstances.page.toast.localUrlCopied":`Локальний URL скопійовано`,"settings.remoteInstances.page.actions.copyLocalUrl":`Скопіювати локальний URL`,"settings.remoteInstances.page.actions.open":`Відкрити`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Вибраний інстанс`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`Для {host} потрібно вказати конкретне призначення.`,"settings.remoteInstances.page.patternDialog.description":`Введіть призначення.`,"settings.common.actions.cancel":`Скасувати`,"settings.common.actions.create":`Створити`,"settings.common.actions.delete":`Видалити`,"settings.common.actions.reset":`Скинути`,"settings.common.actions.rename":`Перейменувати`,"settings.common.actions.duplicate":`Дублювати`,"settings.common.actions.import":`Імпортувати`,"settings.common.actions.copyAll":`Копіювати все`,"settings.common.actions.clear":`Очистити`,"settings.common.actions.saving":`Збереження...`,"settings.common.actions.saveChanges":`Зберегти зміни`,"settings.common.scope.global":`Глобальний`,"settings.common.scope.project":`Проєкт`,"settings.common.field.description":`Опис`,"settings.common.badge.new":`Новий`,"settings.common.badge.modified":`Змінено`,"settings.common.permission.allow":`Дозволити`,"settings.common.permission.ask":`Запитувати`,"settings.common.permission.deny":`Заборонити`,"settings.common.state.comingSoon":`Незабаром...`,"settings.projects.actions.title":`Дії`,"settings.projects.actions.description":`Команди для кожного проєкту відображаються в заголовку біля назви проєкту.`,"settings.projects.actions.validation.fillNameAndCommand":`Введіть назву дії та команду перед збереженням.`,"settings.projects.actions.state.loading":`Завантаження...`,"settings.projects.actions.state.empty":`Ще не налаштовано жодних дій.`,"settings.projects.actions.state.untitled":`Дія без назви`,"settings.projects.actions.state.noDesktopSshForwards":`Немає доступних увімкнених локальних переадресацій SSH.`,"settings.projects.actions.field.selectIconAria":`Вибрати значок`,"settings.projects.actions.field.iconAria":`Піктограма {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Назва дії`,"settings.projects.actions.field.command":`Команда`,"settings.projects.actions.field.commandPlaceholder":`напр. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Автоматичне відкриття URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Автоматичне відкриття URL для {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Відкрити URL із виведення або власний URL нижче`,"settings.projects.actions.field.overrideUrlPlaceholder":`Перевизначити URL (необов'язково)`,"settings.projects.actions.field.overrideUrlTooltip":`Якщо це поле заповнене, буде використано власний URL. Якщо воно порожнє, застосунок відкриє найкращий URL з виводу.`,"settings.projects.actions.field.desktopSshForward":`SSH-перенаправлення Desktop`,"settings.projects.actions.field.useOutputManualUrl":`Використовувати вихід/вручну URL`,"settings.projects.actions.actions.add":`Додати дію`,"settings.projects.actions.actions.save":`Зберегти дії`,"settings.projects.actions.toast.saveFailed":`Не вдалося зберегти дії`,"settings.projects.actions.toast.saved":`Дії проєкту збережено`,"settings.openchamber.about.title":`Про OpenChamber`,"settings.openchamber.about.field.version":`Версія`,"settings.openchamber.about.field.clientVersion":`Клієнт`,"settings.openchamber.about.field.webBundle":`Веб-пакет`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`Версія OpenCode`,"settings.openchamber.about.opencodeVersionWithManagement":`{version} ({management})`,"settings.openchamber.about.opencodeManagement.manual-global":`глобальний CLI — оновіть вручну`,"settings.openchamber.about.opencodeManagement.manual-external":`зовнішній serve — керуйте поза додатком`,"settings.openchamber.about.opencodeManagement.bundled":`вбудовано в застосунок`,"settings.openchamber.about.opencodeManagement.in-app":`керується OpenChamber`,"settings.openchamber.about.opencodeManagement.none":`власність невідома`,"settings.openchamber.about.state.checking":`Перевірка...`,"settings.openchamber.about.state.upToDate":`В актуальному стані`,"settings.openchamber.about.state.unknown":`невідомо`,"settings.openchamber.about.state.builtin":`вбудований`,"settings.openchamber.about.actions.checkUpdates":`Перевірити оновлення`,"settings.openchamber.about.actions.update":`Оновити`,"settings.openchamber.about.actions.updateToVersion":`Оновити до {version}`,"settings.openchamber.about.actions.applyOtaToVersion":`Оновити зараз до {version}`,"settings.openchamber.about.actions.installNativeToVersion":`Встановити {version}`,"settings.openchamber.about.actions.checkForUpdates":`Перевірити наявність оновлень`,"settings.openchamber.about.actions.submitFeedback":`Надіслати відгук`,"settings.openchamber.about.toast.latestVersion":`Ви використовуєте останню версію`,"settings.openchamber.about.toast.checkFailed":`Не вдалося перевірити наявність оновлень`,"settings.openchamber.about.betaUpdates.label":`Приєднатися до бета-оновлень`,"settings.openchamber.about.betaUpdates.description":`Отримуйте ранні оновлення застосунку на цьому пристрої.`,"settings.openchamber.about.betaUpdates.rollback.title":`Повернутися до стабільної версії?`,"settings.openchamber.about.betaUpdates.rollback.description":`Ви використовуєте бета-версію. Вимкнення бета-оновлень поверне OpenChamber до стабільної версії v{version}. Перезапустіть застосунок, щоб застосувати зміну.`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`Залишити бета-версію`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`Повернутися до стабільної`,"settings.openchamber.about.diagnostics.label":`Діагностичний журнал`,"settings.openchamber.about.diagnostics.description":`Експортує локальні діагностичні feat для аналізу проблем відображення та синхронізації. Не містить текстів повідомлень і токенів.`,"settings.openchamber.about.diagnostics.export":`Експортувати журнал`,"settings.openchamber.about.diagnostics.exporting":`Експортування…`,"settings.openchamber.about.diagnostics.enable":`Записувати діагностичні feat`,"settings.openchamber.about.diagnostics.enableHint":`Доступно в бета-збірках. Записує на цьому пристрої цикл синхронізації та відображення сеансу без тексту повідомлень.`,"settings.openchamber.about.diagnostics.toast.exported":`Діагностичний журнал експортовано`,"settings.openchamber.about.diagnostics.toast.failed":`Не вдалося експортувати діагностичний журнал`,"settings.openchamber.about.diagnostics.toast.empty":`Діагностичний журнал експортовано. Подій ще не записано.`,"settings.agents.sidebar.title":`Налаштування агентів`,"settings.agents.sidebar.total":`Усього {count}`,"settings.agents.sidebar.empty.title":`Агентів не налаштовано`,"settings.agents.sidebar.empty.description":`Скористайтеся кнопкою + вище, щоб створити його`,"settings.agents.sidebar.section.builtIn":`Вбудовані агенти`,"settings.agents.sidebar.section.custom":`Спеціальні агенти`,"settings.agents.sidebar.badge.system":`Системний`,"settings.agents.sidebar.badge.disabled":`Вимкнений`,"settings.agents.sidebar.dialog.deleteTitle":`Видалити агента`,"settings.agents.sidebar.dialog.resetTitle":`Скинути агента`,"settings.agents.sidebar.dialog.deleteDescription":`Ви впевнені, що хочете видалити агента "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`Ви впевнені, що бажаєте скинути агент «{name}» до конфігурації за замовчуванням?`,"settings.agents.sidebar.renameDialog.title":`Перейменувати агента`,"settings.agents.sidebar.renameDialog.description":`Введіть нову назву для агента "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Нове ім'я агента...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Вбудовані агенти не можна видалити`,"settings.agents.sidebar.toast.agentDeleted":`Агент "{name}" успішно видалено`,"settings.agents.sidebar.toast.agentReset":`Агента "{name}" скинуто до значень за замовчуванням`,"settings.agents.sidebar.toast.deleteFailed":`Не вдалося видалити агента`,"settings.agents.sidebar.toast.definitionNotFound":`Визначення агента не знайдено. Нічого не змінено.`,"settings.agents.sidebar.toast.resetFailed":`Не вдалося скинути агента`,"settings.agents.sidebar.toast.agentNameRequired":`Потрібно вказати ім’я агента`,"settings.agents.sidebar.toast.agentExists":`Агент із такою назвою вже існує`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Не вдалося видалити старого агента після перейменування`,"settings.agents.sidebar.toast.renameFailed":`Не вдалося перейменувати агента`,"settings.agents.sidebar.toast.agentRenamed":`Агента перейменовано на "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Потрібна назва дозволу`,"settings.agents.page.toast.created":`Агент створено успішно`,"settings.agents.page.toast.updated":`Агент успішно оновлено`,"settings.agents.page.toast.createFailed":`Не вдалося створити агента`,"settings.agents.page.toast.updateFailed":`Не вдалося оновити агента`,"settings.agents.page.toast.saveUnexpectedError":`Під час збереження сталася помилка`,"settings.agents.page.toast.savedManualRestart":`Збережено на диск. Перезапустіть підключений сервер OpenCode, щоб застосувати зміни.`,"settings.agents.page.empty.title":`Виберіть агента на бічній панелі`,"settings.agents.page.empty.description":`або створіть нового`,"settings.agents.page.title.new":`Новий агент`,"settings.agents.page.subtitle.new":`Налаштуйте нову роль помічника`,"settings.agents.page.subtitle.edit":`Редагувати налаштування агента`,"settings.agents.page.section.identityRole":`Ідентичність і роль`,"settings.agents.page.section.modelParameters":`Модель`,"settings.agents.page.section.runtime":`Виконання`,"settings.agents.page.field.steps":`Ліміт кроків`,"settings.agents.page.field.stepsHint":`Порожнє поле означає без ліміту. На ліміті наступний запит може відповісти лише текстом.`,"settings.agents.page.field.hidden":`Прихований`,"settings.agents.page.field.hiddenHint":`Ховає цього агента з основного перемикача та зі згадок @. Завдання все ще може його викликати, якщо дозволи це дозволяють.`,"settings.agents.page.field.disabled":`Вимкнений`,"settings.agents.page.field.disabledHint":`Прибирає цього агента з каталогу. Вимкніть і збережіть, щоб повернути його до списку.`,"settings.agents.page.field.color":`Колір`,"settings.agents.page.field.colorHint":`Шістнадцятковий колір, наприклад #FF6B6B.`,"settings.agents.page.field.colorInvalid":`Введіть шістнадцятковий колір, наприклад #FF6B6B.`,"settings.agents.page.field.clearColorAria":`Очистити колір`,"settings.agents.page.field.modelHint":`Залиште порожнім, щоб зберегти модель викликача. Варіант зберігається разом із моделлю.`,"settings.agents.page.system.inheritHint":`Порожнє поле лишає вбудований промпт. Текст тут його замінює. Інструкції проєкту все одно додаються після нього.`,"settings.agents.page.apply.hint":`Застосовується до наступного запиту і нових сесій. Сесія, що вже триває, зберігає поточну модель.`,"settings.agents.page.legacy.convertible":`Збереження перетворює цей файл агента на поточний формат.`,"settings.agents.page.legacy.dropped":`Ці поля не буде збережено: {fields}. Вони не змінюють наступний запит.`,"settings.agents.page.legacy.confirmDrop":`Перетворити й відкинути ці поля`,"settings.agents.page.toast.savedNextRequest":`Збережено. Наступний запит і нові сесії використовують цього агента. Сесія, що вже триває, зберігає поточну модель.`,"settings.agents.page.section.systemPrompt":`Системний промпт`,"settings.agents.page.section.toolPermissions":`Дозволи інструмента`,"settings.agents.page.field.agentName":`Ім'я агента`,"settings.agents.page.field.agentNamePlaceholder":`Ім’я агента`,"settings.agents.page.field.scope":`Область`,"settings.agents.page.field.scopePlaceholder":`Область`,"settings.agents.page.field.descriptionPlaceholder":`Що робить цей агент?`,"settings.agents.page.field.mode":`Режим`,"settings.agents.page.field.modeTooltip":`Видимість основного або субагента`,"settings.agents.page.field.overrideModel":`Перевизначити модель`,"settings.agents.page.field.variant":`Варіант мислення`,"settings.agents.page.field.variantTooltip":`Необов'язково. Якщо модель підтримує міркування, варіант контролює глибину міркування.`,"settings.agents.page.field.variantHint":`Специфічно для моделі (напр. варіант Anthropic)`,"settings.agents.page.field.variantPlaceholder":`напр. high, max, low, none`,"settings.agents.page.field.temperature":`Температура`,"settings.agents.page.field.temperatureTooltip":`Контролює випадковість. Вищий = творчий, нижчий = зосереджений.`,"settings.agents.page.field.temperatureRange":`0,0 до 2,0`,"settings.agents.page.field.clearTemperatureAria":`Очистити перевизначення температури`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Різноманітність nucleus sampling. Нижче значення = лише ймовірніші токени.`,"settings.agents.page.field.topPRange":`0,0 до 1,0`,"settings.agents.page.field.clearTopPAria":`Очистити перевизначення Top P`,"settings.agents.page.field.systemPromptPlaceholder":`Ви експерт із програмування...`,"settings.agents.page.mode.primary":`Основний`,"settings.agents.page.mode.subagent":`Субагент`,"settings.agents.page.mode.all":`Усі`,"settings.agents.page.permissions.defaultLabel":`За замовчуванням`,"settings.agents.page.permissions.shell":`Команди`,"settings.agents.page.permissions.subagent":`Субагент`,"settings.agents.page.permissions.edit":`Редагування`,"settings.agents.page.permissions.externalDirectory":`Зовнішній каталог`,"settings.agents.page.permissions.question":`Запитання`,"settings.agents.page.permissions.read":`Читання`,"settings.agents.page.permissions.glob":`Пошук файлів`,"settings.agents.page.permissions.grep":`Пошук`,"settings.agents.page.permissions.skill":`Навичка`,"settings.agents.page.permissions.webfetch":`Отримати URL`,"settings.agents.page.permissions.websearch":`Вебпошук`,"settings.agents.page.permissions.execute":`Виконати код`,"settings.agents.page.permissions.browser":`Браузер`,"settings.agents.page.permissions.hideEditor":`Приховати редактор`,"settings.agents.page.permissions.advancedEditor":`Розширений редактор`,"settings.agents.page.permissions.globalSummary":`Глобальний: {summary}`,"settings.agents.page.permissions.rulesSummary":`Правила: {summary}`,"settings.agents.page.permissions.globalDefault":`Глобальне значення за замовчуванням`,"settings.agents.page.permissions.pattern":`Шаблон`,"settings.agents.page.permissions.addCustomRule":`Додати спеціальне правило`,"settings.agents.page.permissions.permissionPlaceholder":`Дозвіл...`,"settings.agents.page.permissions.patternPlaceholder":`Шаблон (наприклад, *)`,"settings.permissions.saved.title":`Збережені дозволи проєкту`,"settings.permissions.saved.empty":`Для цього проєкту немає збережених дозволів`,"settings.permissions.saved.delete":`Видалити`,"settings.permissions.saved.deleteFailed":`Не вдалося видалити збережений дозвіл`,"settings.permissions.saved.loadFailed":`Не вдалося завантажити збережені дозволи`,"settings.agents.page.permissions.lastMatchHint":`Перемагає останнє відповідне правило`,"settings.page.behavior.title":`Поведінка`,"settings.behavior.page.title":`Поведінка`,"settings.behavior.page.warning.title":`Глобальні правила поєднуються з правилами проєкту`,"settings.behavior.page.warning.description":`Зміни тут оновлюють {path}. OpenCode також додає правила з AGENTS.md на рівні проєкту, якщо вони існують.`,"settings.behavior.page.section.systemPrompt":`Глобальний AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`Ви — корисний AI-асистент...
|
|
2
2
|
|
|
3
3
|
Використовуйте цей простір для визначення абсолютних правил поведінки AI для всіх сесій та провайдерів.`,"settings.behavior.page.section.responseStyle":`Стиль відповіді`,"settings.behavior.page.responseStyle.tooltip":`Якщо увімкнено, ці інструкції задають стиль відповідей асистента в кожній новій розмові. Вони надсилаються разом із вашим першим повідомленням і не змінюють глобальні правила AGENTS.md.`,"settings.behavior.page.responseStyle.enableAria":`Увімкнути інструкції стилю відповіді`,"settings.behavior.page.responseStyle.enable":`Додавати інструкції стилю відповіді до нових розмов`,"settings.behavior.page.responseStyle.preset":`Пресет`,"settings.behavior.page.responseStyle.option.concise":`Коротко`,"settings.behavior.page.responseStyle.option.detailed":`Детально`,"settings.behavior.page.responseStyle.option.mentor":`Ментор`,"settings.behavior.page.responseStyle.option.pushback":`Опір`,"settings.behavior.page.responseStyle.option.noFiller":`Без води`,"settings.behavior.page.responseStyle.option.matchEnergy":`У тон мені`,"settings.behavior.page.responseStyle.option.warmPeer":`Близький колега`,"settings.behavior.page.responseStyle.option.custom":`Власний`,"settings.behavior.page.responseStyle.customPlaceholder":`Напишіть інструкцію, яку треба додати до першого повідомлення...`,"settings.behavior.page.toast.saved":`Поведінку збережено`,"settings.behavior.page.toast.saveFailed":`Не вдалося зберегти поведінку`,"settings.commands.sidebar.title":`Команди`,"settings.commands.sidebar.total":`Усього {count}`,"settings.commands.sidebar.empty.title":`Команди не налаштовано`,"settings.commands.sidebar.empty.description":`Скористайтеся кнопкою + вище, щоб створити його`,"settings.commands.sidebar.section.builtIn":`Вбудовані команди`,"settings.commands.sidebar.section.custom":`Спеціальні команди`,"settings.commands.sidebar.dialog.deleteTitle":`Видалити команду`,"settings.commands.sidebar.dialog.resetTitle":`Скинути команду`,"settings.commands.sidebar.dialog.deleteDescription":`Ви впевнені, що хочете видалити команду "{name}"?`,"settings.commands.sidebar.dialog.resetDescription":`Ви впевнені, що бажаєте повернути команду "{name}" до конфігурації за замовчуванням?`,"settings.commands.sidebar.renameDialog.title":`Перейменувати команду`,"settings.commands.sidebar.renameDialog.description":`Введіть нову назву для команди "/{name}"`,"settings.commands.sidebar.renameDialog.placeholder":`Нова назва команди...`,"settings.commands.sidebar.toast.builtInCannotDelete":`Вбудовані команди не можна видалити`,"settings.commands.sidebar.toast.commandDeleted":`Команду «{name}» успішно видалено`,"settings.commands.sidebar.toast.commandReset":`Команду "{name}" скинуто до значень за замовчуванням`,"settings.commands.sidebar.toast.deleteFailed":`Не вдалося видалити команду`,"settings.commands.sidebar.toast.resetFailed":`Не вдалося скинути команду`,"settings.commands.sidebar.toast.commandNameRequired":`Потрібно вказати назву команди`,"settings.commands.sidebar.toast.commandExists":`Команда з такою назвою вже існує`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`Не вдалося видалити стару команду після перейменування`,"settings.commands.sidebar.toast.renameFailed":`Не вдалося перейменувати команду`,"settings.commands.page.toast.templateRequired":`Необхідний шаблон команди`,"settings.commands.page.toast.created":`Команду створено успішно`,"settings.commands.page.toast.updated":`Команду успішно оновлено`,"settings.commands.page.toast.createFailed":`Не вдалося створити команду`,"settings.commands.page.toast.updateFailed":`Не вдалося оновити команду`,"settings.commands.page.toast.saveUnexpectedError":`Під час збереження сталася помилка`,"settings.commands.page.empty.title":`Виберіть команду на бічній панелі`,"settings.commands.page.empty.description":`або створіть нову`,"settings.commands.page.title.new":`Нова команда`,"settings.commands.page.subtitle.new":`Налаштувати нову slash-команду`,"settings.commands.page.subtitle.edit":`Редагувати параметри команди`,"settings.commands.page.section.identity":`Ідентичність`,"settings.commands.page.section.executionContext":`Контекст виконання`,"settings.commands.page.section.template":`Шаблон команди`,"settings.commands.page.field.commandName":`Назва команди`,"settings.commands.page.field.commandNamePlaceholder":`Назва команди`,"settings.commands.page.field.descriptionPlaceholder":`Що робить ця команда?`,"settings.commands.page.field.overrideAgent":`Перевизначити агента`,"settings.commands.page.field.templatePlaceholder":`Ваш шаблон команди...
|
|
4
4
|
|