contentrain 0.7.5 → 0.7.7

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.
Files changed (61) hide show
  1. package/dist/index.mjs +2 -2
  2. package/dist/{serve-BZVPdM0_.mjs → serve-BmBWp_3O.mjs} +1 -1
  3. package/dist/serve-ui/assets/{AgentPromptGroup.vue_vue_type_script_setup_true_lang-Bftt9tx_.js → AgentPromptGroup.vue_vue_type_script_setup_true_lang-BUgcmCel.js} +1 -1
  4. package/dist/serve-ui/assets/AppLayout-Do2_5NzN.js +21 -0
  5. package/dist/serve-ui/assets/{BranchDetailPage-B3PL9PGp.js → BranchDetailPage-CSChmKRm.js} +1 -1
  6. package/dist/serve-ui/assets/{BranchesPage-4YpE_szf.js → BranchesPage-CKmUQGvC.js} +1 -1
  7. package/dist/serve-ui/assets/{CardContent.vue_vue_type_script_setup_true_lang-D1L2MnBU.js → CardContent.vue_vue_type_script_setup_true_lang-C-ErmW5E.js} +1 -1
  8. package/dist/serve-ui/assets/{CollapsibleTrigger.vue_vue_type_script_setup_true_lang-B4uDtllm.js → CollapsibleTrigger.vue_vue_type_script_setup_true_lang-BkgPlJ2I.js} +1 -1
  9. package/dist/serve-ui/assets/{Collection-9URFko-Y.js → Collection-BIp9PGUk.js} +1 -1
  10. package/dist/serve-ui/assets/ConfigProvider-DQspbvIG.js +1 -0
  11. package/dist/serve-ui/assets/{ContentListPage-BMfSfg8x.js → ContentListPage-DlhJ486k.js} +1 -1
  12. package/dist/serve-ui/assets/{ContentPage-BXUnNJlB.js → ContentPage-DxCgrLef.js} +1 -1
  13. package/dist/serve-ui/assets/{DashboardPage-1UyYgg5J.js → DashboardPage-ZED85wnk.js} +1 -1
  14. package/dist/serve-ui/assets/{DialogTitle.vue_vue_type_script_setup_true_lang-M4LOzTva.js → DialogTitle.vue_vue_type_script_setup_true_lang-CK0rHwJz.js} +1 -1
  15. package/dist/serve-ui/assets/{DoctorPage-WnQ8xYWy.js → DoctorPage-PSdw7-NX.js} +1 -1
  16. package/dist/serve-ui/assets/{FormatReferencePage-DoKEaawl.js → FormatReferencePage-Dt8ImU06.js} +1 -1
  17. package/dist/serve-ui/assets/{Input.vue_vue_type_script_setup_true_lang-tW0hgReH.js → Input.vue_vue_type_script_setup_true_lang-C3VgSy5x.js} +1 -1
  18. package/dist/serve-ui/assets/{ModelDetailPage-BysqN8IL.js → ModelDetailPage-kA0Lz3j8.js} +1 -1
  19. package/dist/serve-ui/assets/{ModelsPage-DFZrdBIi.js → ModelsPage-ChrvonG7.js} +1 -1
  20. package/dist/serve-ui/assets/{NormalizePage-4f5Ib_ES.js → NormalizePage-BeV0fXxR.js} +1 -1
  21. package/dist/serve-ui/assets/{PageHeader.vue_vue_type_script_setup_true_lang-Bln1czg7.js → PageHeader.vue_vue_type_script_setup_true_lang-l8rY5aKw.js} +1 -1
  22. package/dist/serve-ui/assets/{Presence-CA3xTrht.js → Presence-CJ45TUKi.js} +1 -1
  23. package/dist/serve-ui/assets/{Separator.vue_vue_type_script_setup_true_lang-PECBq3nc.js → Separator.vue_vue_type_script_setup_true_lang-Dm_SeSXH.js} +1 -1
  24. package/dist/serve-ui/assets/{StudioHint.vue_vue_type_script_setup_true_lang-DYTEoyjw.js → StudioHint.vue_vue_type_script_setup_true_lang-D8gajE42.js} +1 -1
  25. package/dist/serve-ui/assets/{TrustBadge.vue_vue_type_script_setup_true_lang-BRXWvOYU.js → TrustBadge.vue_vue_type_script_setup_true_lang-BFsW1BeB.js} +1 -1
  26. package/dist/serve-ui/assets/{ValidatePage-BMTpV2KL.js → ValidatePage-CefzPKQt.js} +1 -1
  27. package/dist/serve-ui/assets/{arrow-down-IJu6H7Es.js → arrow-down-2eFyUX-7.js} +1 -1
  28. package/dist/serve-ui/assets/{arrow-left-D8ZjVYAI.js → arrow-left-Cm9qLVJZ.js} +1 -1
  29. package/dist/serve-ui/assets/{book-marked-BNyyZrq3.js → book-marked-DOVEt8op.js} +1 -1
  30. package/dist/serve-ui/assets/{book-open-Dw1fQtSI.js → book-open-D7FZ9DjL.js} +1 -1
  31. package/dist/serve-ui/assets/{box-BoGMZDZR.js → box-6034TScP.js} +1 -1
  32. package/dist/serve-ui/assets/{chevron-down-UcXxhyyY.js → chevron-down-1YnRxEyi.js} +1 -1
  33. package/dist/serve-ui/assets/{chevron-right-SpdM5LBc.js → chevron-right-ChclIXq1.js} +1 -1
  34. package/dist/serve-ui/assets/{circle-alert-CEwKJpYl.js → circle-alert-CsDw3E63.js} +1 -1
  35. package/dist/serve-ui/assets/{content-BQEzysvq.js → content-Dk9oS4p9.js} +1 -1
  36. package/dist/serve-ui/assets/{database-U6JU8oc9.js → database-Bxh_he7Y.js} +1 -1
  37. package/dist/serve-ui/assets/{file-code-_sq1QHQo.js → file-code-CmLEXWG_.js} +1 -1
  38. package/dist/serve-ui/assets/{file-text-BiMGJckO.js → file-text-aeYUaj6Z.js} +1 -1
  39. package/dist/serve-ui/assets/{git-branch-CdZMOuSP.js → git-branch-B9O3fl9q.js} +1 -1
  40. package/dist/serve-ui/assets/{git-merge-D8Y-BwIh.js → git-merge-BV3-DZtx.js} +1 -1
  41. package/dist/serve-ui/assets/{hash-CrXakbCy.js → hash-Cbo1MDOa.js} +1 -1
  42. package/dist/serve-ui/assets/{index-DL_dw3XX.js → index-BOn9xpBS.js} +2 -2
  43. package/dist/serve-ui/assets/{languages-DvyMGPwy.js → languages-UFW2WzqJ.js} +1 -1
  44. package/dist/serve-ui/assets/{plus-Ddujj7Qx.js → plus-D27DSXed.js} +1 -1
  45. package/dist/serve-ui/assets/{project-Dg2BVay_.js → project-Bivz_zhf.js} +1 -1
  46. package/dist/serve-ui/assets/{scan-search-CsPYGmEs.js → scan-search-DcqzKN0r.js} +1 -1
  47. package/dist/serve-ui/assets/{settings-IQvevsKM.js → settings-pl-VrPIa.js} +1 -1
  48. package/dist/serve-ui/assets/{shield-check-BmSBU8Ai.js → shield-check-DXmIgtuh.js} +1 -1
  49. package/dist/serve-ui/assets/{stethoscope-DgCa_7BL.js → stethoscope-DeR62yPK.js} +1 -1
  50. package/dist/serve-ui/assets/{trash-2-CNTkluuz.js → trash-2-Cobh5bGF.js} +1 -1
  51. package/dist/serve-ui/assets/useDirection-CKzliOt2.js +1 -0
  52. package/dist/serve-ui/assets/{useId-B-RTM02R.js → useId-BLtQdZRI.js} +1 -1
  53. package/dist/serve-ui/assets/{useNonce-DR6M3tLq.js → useNonce-CJZRkJkf.js} +1 -1
  54. package/dist/serve-ui/assets/useWatch-CxmSSJCk.js +1 -0
  55. package/dist/serve-ui/index.html +1 -1
  56. package/dist/{server-CPBQIj9B.mjs → server-Dn-zy9bv.mjs} +1 -1
  57. package/package.json +4 -4
  58. package/dist/serve-ui/assets/AppLayout-B-fbrfMk.js +0 -21
  59. package/dist/serve-ui/assets/ConfigProvider-CwkmRpT5.js +0 -1
  60. package/dist/serve-ui/assets/useDirection-DfPL7a9d.js +0 -1
  61. package/dist/serve-ui/assets/useWatch-D4Y-epQR.js +0 -1
@@ -1,21 +0,0 @@
1
- import{c as K,d as Le,r as w,w as G,a as E,t as se,o as f,b as y,e as g,f as k,n as J,u as t,m as $,g as B,h as C,i as N,j as S,k as X,l as Y,p as L,q as m,s as O,F as Z,v as Q,x as ne,R as he,y as z,z as H,A as be,B as A,C as me,D as pe,E as Pe,G as le}from"./index-DL_dw3XX.js";import{P as W,d as j,_ as ae,r as ge,u as _e}from"./useWatch-D4Y-epQR.js";import{u as Re,S as Te,_ as De}from"./Input.vue_vue_type_script_setup_true_lang-tW0hgReH.js";import{u as ee}from"./project-Dg2BVay_.js";import{B as ye}from"./box-BoGMZDZR.js";import{F as Se}from"./file-text-BiMGJckO.js";import{S as xe}from"./shield-check-BmSBU8Ai.js";import{G as we}from"./git-branch-CdZMOuSP.js";import{S as Ie}from"./scan-search-CsPYGmEs.js";import{S as ze}from"./stethoscope-DgCa_7BL.js";import{F as He}from"./file-code-_sq1QHQo.js";import{B as Oe}from"./book-open-Dw1fQtSI.js";import{u as R,c as ie,a as q,P as te,b as ce,d as Ce,w as Be}from"./Presence-CA3xTrht.js";import{u as Ne}from"./useDirection-DfPL7a9d.js";import{c as Me,u as Ve}from"./useNonce-DR6M3tLq.js";import"./ConfigProvider-CwkmRpT5.js";/**
2
- * @license lucide-vue-next v0.474.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const We=K("GithubIcon",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/**
7
- * @license lucide-vue-next v0.474.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const ke=K("LayoutDashboardIcon",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/**
12
- * @license lucide-vue-next v0.474.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const qe=K("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/**
17
- * @license lucide-vue-next v0.474.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const Xe=K("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),Ye="/icon-color.svg",je="/logo/color-icon-black-text.svg",Fe="/logo/color-icon-white-text.svg",Ue=Le("ui",()=>{const d=Re({attribute:"class"}),e=w(!1),l=w(JSON.parse(localStorage.getItem("cr-dismissed-hints")??"{}"));function n(){d.value=d.value==="dark"?"light":"dark"}function r(a){l.value[a]=Date.now(),localStorage.setItem("cr-dismissed-hints",JSON.stringify(l.value))}function i(a){const o=l.value[a];if(!o)return!1;const s=10080*60*1e3;return Date.now()-o<s}return G(e,a=>{localStorage.setItem("cr-sidebar-collapsed",String(a))}),localStorage.getItem("cr-sidebar-collapsed")==="true"&&(e.value=!0),{colorMode:d,sidebarCollapsed:e,toggleTheme:n,dismissHint:r,isHintDismissed:i}}),[T,Ge]=ie("ScrollAreaRoot");var Ke=E({__name:"ScrollAreaRoot",props:{type:{type:String,required:!1,default:"hover"},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1,default:600},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d,{expose:e}){const l=d,n=w(0),r=w(0),i=w(),c=w(),a=w(),o=w(),s=w(!1),u=w(!1),{type:h,dir:v,scrollHideDelay:x}=se(l),P=Ne(v);function D(){var b;(b=i.value)==null||b.scrollTo({top:0})}function I(){var b;(b=i.value)==null||b.scrollTo({top:0,left:0})}e({viewport:i,scrollTop:D,scrollTopLeft:I});const{forwardRef:p,currentElement:_}=R();return Ge({type:h,dir:P,scrollHideDelay:x,scrollArea:_,viewport:i,onViewportChange:b=>{i.value=b||void 0},content:c,onContentChange:b=>{c.value=b},scrollbarX:a,scrollbarXEnabled:s,scrollbarY:o,scrollbarYEnabled:u,onScrollbarXChange:b=>{a.value=b||void 0},onScrollbarYChange:b=>{o.value=b||void 0},onScrollbarXEnabledChange:b=>{s.value=b},onScrollbarYEnabledChange:b=>{u.value=b},onCornerWidthChange:b=>{n.value=b},onCornerHeightChange:b=>{r.value=b}}),(b,M)=>(f(),y(t(W),{ref:t(p),"as-child":l.asChild,as:b.as,dir:t(P),style:J({position:"relative","--reka-scroll-area-corner-width":`${n.value}px`,"--reka-scroll-area-corner-height":`${r.value}px`})},{default:g(()=>[k(b.$slots,"default")]),_:3},8,["as-child","as","dir","style"]))}}),Je=Ke,Ze=E({__name:"ScrollAreaCornerImpl",setup(d){const e=T(),l=w(0),n=w(0),r=C(()=>!!l.value&&!!n.value);function i(){var o;const a=((o=e.scrollbarX.value)==null?void 0:o.offsetHeight)||0;e.onCornerHeightChange(a),n.value=a}function c(){var o;const a=((o=e.scrollbarY.value)==null?void 0:o.offsetWidth)||0;e.onCornerWidthChange(a),l.value=a}return q(e.scrollbarX.value,i),q(e.scrollbarY.value,c),G(()=>e.scrollbarX.value,i),G(()=>e.scrollbarY.value,c),(a,o)=>{var s;return r.value?(f(),y(t(W),$({key:0,style:{width:`${l.value}px`,height:`${n.value}px`,position:"absolute",right:t(e).dir.value==="ltr"?0:void 0,left:t(e).dir.value==="rtl"?0:void 0,bottom:0}},(s=a.$parent)==null?void 0:s.$props),{default:g(()=>[k(a.$slots,"default")]),_:3},16,["style"])):B("v-if",!0)}}}),Qe=Ze,et=E({__name:"ScrollAreaCorner",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const e=d,{forwardRef:l}=R(),n=T(),r=C(()=>!!n.scrollbarX.value&&!!n.scrollbarY.value),i=C(()=>n.type.value!=="scroll"&&r.value);return(c,a)=>i.value?(f(),y(Qe,$({key:0},e,{ref:t(l)}),{default:g(()=>[k(c.$slots,"default")]),_:3},16)):B("v-if",!0)}}),tt=et;function Ee(d,e){return l=>{if(d[0]===d[1]||e[0]===e[1])return e[0];const n=(e[1]-e[0])/(d[1]-d[0]);return e[0]+n*(l-d[0])}}function oe(d){const e=Ae(d.viewport,d.content),l=d.scrollbar.paddingStart+d.scrollbar.paddingEnd,n=(d.scrollbar.size-l)*e;return Math.max(n,18)}function Ae(d,e){const l=d/e;return Number.isNaN(l)?0:l}function ot(d,e=()=>{}){let l={left:d.scrollLeft,top:d.scrollTop},n=0;return(function r(){const i={left:d.scrollLeft,top:d.scrollTop},c=l.left!==i.left,a=l.top!==i.top;(c||a)&&e(),l=i,n=window.requestAnimationFrame(r)})(),()=>window.cancelAnimationFrame(n)}function fe(d,e,l="ltr"){const n=oe(e),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-r,c=e.content-e.viewport,a=i-n,o=l==="ltr"?[0,c]:[c*-1,0],s=Me(d,o[0],o[1]);return Ee([0,c],[0,a])(s)}function U(d){return d?Number.parseInt(d,10):0}function rt(d,e,l,n="ltr"){const r=oe(l),i=r/2,c=e||i,a=r-c,o=l.scrollbar.paddingStart+c,s=l.scrollbar.size-l.scrollbar.paddingEnd-a,u=l.content-l.viewport,h=n==="ltr"?[0,u]:[u*-1,0];return Ee([o,s],h)(d)}function ve(d,e){return d>0&&d<e}var lt=E({__name:"ScrollAreaScrollbarX",setup(d){const e=T(),l=re(),{forwardRef:n,currentElement:r}=R();N(()=>{r.value&&e.onScrollbarXChange(r.value)});const i=C(()=>l.sizes.value);return(c,a)=>(f(),y($e,{ref:t(n),"is-horizontal":!0,"data-orientation":"horizontal",style:J({bottom:0,left:t(e).dir.value==="rtl"?"var(--reka-scroll-area-corner-width)":0,right:t(e).dir.value==="ltr"?"var(--reka-scroll-area-corner-width)":0,"--reka-scroll-area-thumb-width":i.value?`${t(oe)(i.value)}px`:void 0}),onOnDragScroll:a[0]||(a[0]=o=>t(l).onDragScroll(o.x))},{default:g(()=>[k(c.$slots,"default")]),_:3},8,["style"]))}}),at=lt,st=E({__name:"ScrollAreaScrollbarY",setup(d){const e=T(),l=re(),{forwardRef:n,currentElement:r}=R();N(()=>{r.value&&e.onScrollbarYChange(r.value)});const i=C(()=>l.sizes.value);return(c,a)=>(f(),y($e,{ref:t(n),"is-horizontal":!1,"data-orientation":"vertical",style:J({top:0,right:t(e).dir.value==="ltr"?0:void 0,left:t(e).dir.value==="rtl"?0:void 0,bottom:"var(--reka-scroll-area-corner-height)","--reka-scroll-area-thumb-height":i.value?`${t(oe)(i.value)}px`:void 0}),onOnDragScroll:a[0]||(a[0]=o=>t(l).onDragScroll(o.y))},{default:g(()=>[k(c.$slots,"default")]),_:3},8,["style"]))}}),nt=st,it=E({__name:"ScrollAreaScrollbarAuto",props:{forceMount:{type:Boolean,required:!1}},setup(d){const e=T(),l=F(),{forwardRef:n}=R(),r=w(!1),i=ce(()=>{if(e.viewport.value){const c=e.viewport.value.offsetWidth<e.viewport.value.scrollWidth,a=e.viewport.value.offsetHeight<e.viewport.value.scrollHeight;r.value=l.isHorizontal.value?c:a}},10);return N(()=>i()),q(e.viewport,i),q(e.content,i),(c,a)=>(f(),y(t(te),{present:c.forceMount||r.value},{default:g(()=>[S(de,$(c.$attrs,{ref:t(n),"data-state":r.value?"visible":"hidden"}),{default:g(()=>[k(c.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),ue=it,ct=E({inheritAttrs:!1,__name:"ScrollAreaScrollbarGlimpse",props:{forceMount:{type:Boolean,required:!1}},setup(d){const e=T(),l=F(),{forwardRef:n}=R(),{state:r,dispatch:i}=Ce("hidden",{hidden:{POINTER_ENTER:"glimpse",SCROLL:"scrolling"},glimpse:{HIDE:"hidden",POINTER_LEAVE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"glimpse"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),c=C(()=>r.value!=="hidden");function a(){i("POINTER_ENTER")}function o(){i("POINTER_LEAVE")}const s=ce(()=>i("SCROLL_END"),100);return X(u=>{if(r.value==="glimpse"){const h=window.setTimeout(()=>i("HIDE"),e.scrollHideDelay.value);u(()=>{window.clearTimeout(h)})}}),X(u=>{if(r.value==="idle"){const h=window.setTimeout(()=>i("HIDE"),e.scrollHideDelay.value);u(()=>{window.clearTimeout(h)})}}),X(u=>{const h=e.viewport.value,v=l.isHorizontal.value?"scrollLeft":"scrollTop";if(h){let x=h[v];const P=()=>{const D=h[v];x!==D&&(i("SCROLL"),s()),x=D};h.addEventListener("scroll",P),u(()=>{h.removeEventListener("scroll",P)})}}),N(()=>{const u=e.scrollArea.value;u&&(u.addEventListener("pointerenter",a),u.addEventListener("pointerleave",o))}),Y(()=>{const u=e.scrollArea.value;u&&(u.removeEventListener("pointerenter",a),u.removeEventListener("pointerleave",o))}),(u,h)=>(f(),y(t(te),{present:u.forceMount||c.value},{default:g(()=>[S(ue,$(u.$attrs,{ref:t(n),"data-state":c.value?"visible":"hidden"}),{default:g(()=>[k(u.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),ut=ct,dt=E({inheritAttrs:!1,__name:"ScrollAreaScrollbarHover",props:{forceMount:{type:Boolean,required:!1}},setup(d){const e=T(),{forwardRef:l}=R();let n;const r=w(!1);function i(){window.clearTimeout(n),r.value=!0}function c(){n=window.setTimeout(()=>{r.value=!1},e.scrollHideDelay.value)}return N(()=>{const a=e.scrollArea.value;a&&(a.addEventListener("pointerenter",i),a.addEventListener("pointerleave",c))}),Y(()=>{const a=e.scrollArea.value;a&&(window.clearTimeout(n),a.removeEventListener("pointerenter",i),a.removeEventListener("pointerleave",c))}),(a,o)=>(f(),y(t(te),{present:a.forceMount||r.value},{default:g(()=>[S(ue,$(a.$attrs,{ref:t(l),"data-state":r.value?"visible":"hidden"}),{default:g(()=>[k(a.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),pt=dt,ft=E({__name:"ScrollAreaScrollbarScroll",props:{forceMount:{type:Boolean,required:!1}},setup(d){const e=T(),l=F(),{forwardRef:n}=R(),{state:r,dispatch:i}=Ce("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),c=C(()=>r.value!=="hidden");X(o=>{if(r.value==="idle"){const s=window.setTimeout(()=>i("HIDE"),e.scrollHideDelay.value);o(()=>{window.clearTimeout(s)})}});const a=ce(()=>i("SCROLL_END"),100);return X(o=>{const s=e.viewport.value,u=l.isHorizontal.value?"scrollLeft":"scrollTop";if(s){let h=s[u];const v=()=>{const x=s[u];h!==x&&(i("SCROLL"),a()),h=x};s.addEventListener("scroll",v),o(()=>{s.removeEventListener("scroll",v)})}}),(o,s)=>(f(),y(t(te),{present:o.forceMount||c.value},{default:g(()=>[S(de,$(o.$attrs,{ref:t(n),"data-state":c.value?"visible":"hidden"}),{default:g(()=>[k(o.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),vt=ft;const[F,ht]=ie("ScrollAreaScrollbar");var bt=E({inheritAttrs:!1,__name:"ScrollAreaScrollbar",props:{orientation:{type:String,required:!1,default:"vertical"},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(d){const e=d,{forwardRef:l}=R(),n=T(),r=C(()=>e.orientation==="horizontal");G(r,()=>{r.value?n.onScrollbarXEnabledChange(!0):n.onScrollbarYEnabledChange(!0)},{immediate:!0}),Y(()=>{n.onScrollbarXEnabledChange(!1),n.onScrollbarYEnabledChange(!1)});const{orientation:i,forceMount:c,asChild:a,as:o}=se(e);return ht({orientation:i,forceMount:c,isHorizontal:r,as:o,asChild:a}),(s,u)=>t(n).type.value==="hover"?(f(),y(pt,$({key:0},s.$attrs,{ref:t(l),"force-mount":t(c)}),{default:g(()=>[k(s.$slots,"default")]),_:3},16,["force-mount"])):t(n).type.value==="scroll"?(f(),y(vt,$({key:1},s.$attrs,{ref:t(l),"force-mount":t(c)}),{default:g(()=>[k(s.$slots,"default")]),_:3},16,["force-mount"])):t(n).type.value==="glimpse"?(f(),y(ut,$({key:2},s.$attrs,{ref:t(l),"force-mount":t(c)}),{default:g(()=>[k(s.$slots,"default")]),_:3},16,["force-mount"])):t(n).type.value==="auto"?(f(),y(ue,$({key:3},s.$attrs,{ref:t(l),"force-mount":t(c)}),{default:g(()=>[k(s.$slots,"default")]),_:3},16,["force-mount"])):t(n).type.value==="always"?(f(),y(de,$({key:4},s.$attrs,{ref:t(l),"data-state":"visible"}),{default:g(()=>[k(s.$slots,"default")]),_:3},16)):B("v-if",!0)}}),mt=bt;const[re,gt]=ie("ScrollAreaScrollbarVisible");var _t=E({__name:"ScrollAreaScrollbarVisible",setup(d){const e=T(),l=F(),{forwardRef:n}=R(),r=w({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),i=C(()=>{const p=Ae(r.value.viewport,r.value.content);return p>0&&p<1}),c=w(),a=w(0);function o(p,_){if(x.value){const b=e.viewport.value.scrollLeft+p.deltaY;e.viewport.value.scrollLeft=b,ve(b,_)&&p.preventDefault()}else{const b=e.viewport.value.scrollTop+p.deltaY;e.viewport.value.scrollTop=b,ve(b,_)&&p.preventDefault()}}function s(p,_){x.value?a.value=_.x:a.value=_.y}function u(p){a.value=0}function h(p){r.value=p}function v(p,_){return rt(p,a.value,r.value,_)}const x=C(()=>l.isHorizontal.value);function P(p){x.value?e.viewport.value.scrollLeft=v(p,e.dir.value):e.viewport.value.scrollTop=v(p)}function D(){if(x.value){if(e.viewport.value&&c.value){const p=e.viewport.value.scrollLeft,_=fe(p,r.value,e.dir.value);c.value.style.transform=`translate3d(${_}px, 0, 0)`}}else if(e.viewport.value&&c.value){const p=e.viewport.value.scrollTop,_=fe(p,r.value);c.value.style.transform=`translate3d(0, ${_}px, 0)`}}function I(p){c.value=p}return gt({sizes:r,hasThumb:i,handleWheelScroll:o,handleThumbDown:s,handleThumbUp:u,handleSizeChange:h,onThumbPositionChange:D,onThumbChange:I,onDragScroll:P}),(p,_)=>x.value?(f(),y(at,$({key:0},p.$attrs,{ref:t(n)}),{default:g(()=>[k(p.$slots,"default")]),_:3},16)):(f(),y(nt,$({key:1},p.$attrs,{ref:t(n)}),{default:g(()=>[k(p.$slots,"default")]),_:3},16))}}),de=_t,yt=E({__name:"ScrollAreaScrollbarImpl",props:{isHorizontal:{type:Boolean,required:!0}},emits:["onDragScroll","onWheelScroll","onThumbPointerDown"],setup(d,{emit:e}){const l=d,n=e,r=T(),i=re(),c=F(),{forwardRef:a,currentElement:o}=R(),s=w(""),u=w();function h(p){var _,b;if(u.value){const M=p.clientX-((_=u.value)==null?void 0:_.left),V=p.clientY-((b=u.value)==null?void 0:b.top);n("onDragScroll",{x:M,y:V})}}function v(p){p.button===0&&(p.target.setPointerCapture(p.pointerId),u.value=o.value.getBoundingClientRect(),s.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",r.viewport&&(r.viewport.value.style.scrollBehavior="auto"),h(p))}function x(p){h(p)}function P(p){const _=p.target;_.hasPointerCapture(p.pointerId)&&_.releasePointerCapture(p.pointerId),document.body.style.webkitUserSelect=s.value,r.viewport&&(r.viewport.value.style.scrollBehavior=""),u.value=void 0}function D(p){var V;const _=p.target,b=(V=o.value)==null?void 0:V.contains(_),M=i.sizes.value.content-i.sizes.value.viewport;b&&i.handleWheelScroll(p,M)}N(()=>{document.addEventListener("wheel",D,{passive:!1})}),Y(()=>{document.removeEventListener("wheel",D)});function I(){var p,_,b,M,V;o.value&&(l.isHorizontal?i.handleSizeChange({content:((p=r.viewport.value)==null?void 0:p.scrollWidth)??0,viewport:((_=r.viewport.value)==null?void 0:_.offsetWidth)??0,scrollbar:{size:o.value.clientWidth??0,paddingStart:U(getComputedStyle(o.value).paddingLeft),paddingEnd:U(getComputedStyle(o.value).paddingRight)}}):i.handleSizeChange({content:((b=r.viewport.value)==null?void 0:b.scrollHeight)??0,viewport:((M=r.viewport.value)==null?void 0:M.offsetHeight)??0,scrollbar:{size:((V=o.value)==null?void 0:V.clientHeight)??0,paddingStart:U(getComputedStyle(o.value).paddingTop),paddingEnd:U(getComputedStyle(o.value).paddingBottom)}}),i.onThumbPositionChange())}return q(o,I),q(r.content,I),(p,_)=>(f(),y(t(W),{ref:t(a),style:{position:"absolute"},"data-scrollbarimpl":"",as:t(c).as.value,"as-child":t(c).asChild.value,onPointerdown:v,onPointermove:x,onPointerup:P},{default:g(()=>[k(p.$slots,"default")]),_:3},8,["as","as-child"]))}}),$e=yt,St=E({__name:"ScrollAreaThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const e=d,l=T(),n=re();function r(v){const P=v.target.getBoundingClientRect(),D=v.clientX-P.left,I=v.clientY-P.top;n.handleThumbDown(v,{x:D,y:I})}function i(v){n.handleThumbUp(v)}const{forwardRef:c,currentElement:a}=R(),o=w(),s=C(()=>l.viewport.value);function u(){if(!o.value){const v=ot(s.value,n.onThumbPositionChange);o.value=v,n.onThumbPositionChange()}}const h=C(()=>n.sizes.value);return Be(h,()=>{n.onThumbChange(a.value),s.value&&(n.onThumbPositionChange(),s.value.addEventListener("scroll",u))}),Y(()=>{var v;s.value.removeEventListener("scroll",u),(v=l.viewport.value)==null||v.removeEventListener("scroll",u)}),(v,x)=>(f(),y(t(W),{ref:t(c),"data-state":t(n).hasThumb?"visible":"hidden",style:{width:"var(--reka-scroll-area-thumb-width)",height:"var(--reka-scroll-area-thumb-height)"},"as-child":e.asChild,as:v.as,onPointerdown:r,onPointerup:i},{default:g(()=>[k(v.$slots,"default")]),_:3},8,["data-state","as-child","as"]))}}),xt=St,wt=E({inheritAttrs:!1,__name:"ScrollAreaViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d,{expose:e}){const l=d,{nonce:n}=se(l),r=Ve(n),i=T(),c=w();N(()=>{i.onViewportChange(c.value),i.onContentChange(o.value)}),e({viewportElement:c});const{forwardRef:a,currentElement:o}=R();return(s,u)=>(f(),L(Z,null,[m("div",$({ref_key:"viewportElement",ref:c,"data-reka-scroll-area-viewport":"",style:{overflowX:t(i).scrollbarXEnabled.value?"scroll":"hidden",overflowY:t(i).scrollbarYEnabled.value?"scroll":"hidden"}},s.$attrs,{tabindex:0}),[S(t(W),{ref:t(a),style:J({minWidth:t(i).scrollbarXEnabled.value?"fit-content":void 0}),"as-child":l.asChild,as:s.as},{default:g(()=>[k(s.$slots,"default")]),_:3},8,["style","as-child","as"])],16),S(t(W),{as:"style",nonce:t(r)},{default:g(()=>u[0]||(u[0]=[O(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),Ct=wt;const kt={class:"group flex h-screen w-18 min-w-18 flex-col overflow-hidden border-r border-border bg-card transition-all duration-200 ease-in-out hover:w-55 hover:min-w-55 xl:w-55 xl:min-w-55"},Et={class:"flex flex-1 flex-col gap-1 px-3 pt-4"},At={class:"truncate opacity-0 transition-opacity duration-200 group-hover:opacity-100 xl:opacity-100"},$t={class:"flex flex-col gap-1 px-3 mt-auto"},Lt={class:"flex items-center gap-3 px-3 pb-4"},Pt={class:"truncate opacity-0 transition-opacity duration-200 group-hover:opacity-100 xl:opacity-100"},Rt=E({__name:"PrimarySidebar",setup(d){const e=Q(),l=Ue(),n=ee(),r=j("serve-ui-texts").locale("en").get(),i=[{icon:ke,label:"Dashboard",to:"/",exact:!0},{icon:ye,label:"Models",to:"/models"},{icon:Se,label:"Content",to:"/content"},{icon:xe,label:"Validate",to:"/validate"},{icon:we,label:"Branches",to:"/branches"},{icon:Ie,label:"Normalize",to:"/normalize"},{icon:ze,label:r["primary-nav.doctor"],to:"/doctor"},{icon:He,label:r["primary-nav.format"],to:"/format"}];function c(s){return s.exact?e.path===s.to:e.path.startsWith(s.to)}const a=C(()=>{var s,u;return((u=(s=n.status)==null?void 0:s.branches)==null?void 0:u.unmerged)??0}),o=C(()=>{var u;const s=(u=n.status)==null?void 0:u.validation;return s?s.errors+s.warnings:0});return(s,u)=>(f(),L("aside",kt,[u[3]||(u[3]=m("div",{class:"flex h-14 items-center px-4 shrink-0"},[m("img",{src:Ye,alt:"Contentrain",class:"size-8 shrink-0 block group-hover:hidden xl:hidden"}),m("img",{src:je,alt:"Contentrain",class:"h-7 shrink-0 hidden group-hover:block xl:block dark:hidden"}),m("img",{src:Fe,alt:"Contentrain",class:"h-7 shrink-0 hidden dark:group-hover:block dark:xl:block"})],-1)),m("nav",Et,[(f(),L(Z,null,ne(i,h=>S(t(he),{key:h.to,to:h.to,class:z(t(H)("flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm transition-all duration-150",c(h)?"bg-background text-primary font-medium shadow-sm border border-border":"text-muted-foreground hover:bg-background/60 hover:text-foreground"))},{default:g(()=>[(f(),y(be(h.icon),{class:"size-5 shrink-0"})),m("span",At,A(h.label),1),h.to==="/branches"&&a.value>0?(f(),y(t(ae),{key:0,variant:"secondary",class:"ml-auto text-[10px] h-5 px-1.5 opacity-0 group-hover:opacity-100 xl:opacity-100 transition-opacity"},{default:g(()=>[O(A(a.value),1)]),_:1})):B("",!0),h.to==="/validate"&&o.value>0?(f(),y(t(ae),{key:1,class:"ml-auto text-[10px] h-5 px-1.5 bg-status-error/10 text-status-error border-0 opacity-0 group-hover:opacity-100 xl:opacity-100 transition-opacity"},{default:g(()=>[O(A(o.value),1)]),_:1})):B("",!0)]),_:2},1032,["to","class"])),64))]),m("div",$t,[m("a",{href:"https://ai.contentrain.io",target:"_blank",rel:"noopener",class:z(t(H)("flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-all duration-150","text-muted-foreground hover:bg-background/60 hover:text-foreground"))},[S(t(Oe),{class:"size-5 shrink-0"}),u[1]||(u[1]=m("span",{class:"truncate opacity-0 transition-opacity duration-200 group-hover:opacity-100 xl:opacity-100"}," Docs ",-1))],2),m("a",{href:"https://github.com/Contentrain/ai",target:"_blank",rel:"noopener",class:z(t(H)("flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-all duration-150","text-muted-foreground hover:bg-background/60 hover:text-foreground"))},[S(t(We),{class:"size-5 shrink-0"}),u[2]||(u[2]=m("span",{class:"truncate opacity-0 transition-opacity duration-200 group-hover:opacity-100 xl:opacity-100"}," GitHub ",-1))],2)]),m("div",Lt,[m("button",{class:z(t(H)("flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm w-full transition-all duration-150","text-muted-foreground hover:bg-background/60 hover:text-foreground")),onClick:u[0]||(u[0]=h=>t(l).toggleTheme())},[t(l).colorMode==="dark"?(f(),y(t(Xe),{key:0,class:"size-5 shrink-0"})):(f(),y(t(qe),{key:1,class:"size-5 shrink-0"})),m("span",Pt,A(t(l).colorMode==="dark"?"Light mode":"Dark mode"),1)],2)])]))}}),Tt=E({__name:"ScrollBar",props:{orientation:{default:"vertical"},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(d){const e=d,l=ge(e,"class");return(n,r)=>(f(),y(t(mt),$({"data-slot":"scroll-area-scrollbar"},t(l),{class:t(H)("flex touch-none p-px transition-colors select-none",d.orientation==="vertical"&&"h-full w-2.5 border-l border-l-transparent",d.orientation==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e.class)}),{default:g(()=>[S(t(xt),{"data-slot":"scroll-area-thumb",class:"bg-border relative flex-1 rounded-full"})]),_:1},16,["class"]))}}),Dt=E({__name:"ScrollArea",props:{type:{},dir:{},scrollHideDelay:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(d){const e=d,l=ge(e,"class");return(n,r)=>(f(),y(t(Je),$({"data-slot":"scroll-area"},t(l),{class:t(H)("relative",e.class)}),{default:g(()=>[S(t(Ct),{"data-slot":"scroll-area-viewport",class:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"},{default:g(()=>[k(n.$slots,"default")]),_:3}),S(Tt),S(t(tt))]),_:3},16,["class"]))}}),It={class:"flex h-full"},zt={class:"hidden w-55 shrink-0 flex-col border-r border-border sidebar-gradient lg:flex"},Ht={class:"p-3"},Ot={class:"relative"},Bt=["onClick"],Nt={class:"truncate flex-1"},Mt={key:0,class:"px-3 py-6 text-center text-xs text-muted-foreground"},Vt={class:"flex-1 min-w-0 overflow-y-auto custom-scrollbar"},Wt=E({__name:"SubSidebarLayout",props:{basePath:{},paramKey:{}},setup(d){const e=j("serve-ui-texts").locale("en").get(),l=d,n=Q(),r=me(),i=ee(),c=w(""),a=C(()=>{var v;const u=((v=i.status)==null?void 0:v.models)??[];if(!c.value)return u;const h=c.value.toLowerCase();return u.filter(x=>x.id.toLowerCase().includes(h)||x.domain.toLowerCase().includes(h))}),o=C(()=>n.params[l.paramKey]),s={collection:"bg-primary/10 text-primary",singleton:"bg-status-info/10 text-status-info",document:"bg-status-success/10 text-status-success",dictionary:"bg-status-warning/10 text-status-warning"};return(u,h)=>(f(),L("div",It,[m("aside",zt,[m("div",Ht,[m("div",Ot,[S(t(Te),{class:"absolute left-2.5 top-2.5 size-3.5 text-muted-foreground"}),S(t(De),{modelValue:c.value,"onUpdate:modelValue":h[0]||(h[0]=v=>c.value=v),placeholder:t(e)["sub-sidebar-layout.search"],class:"h-8 bg-background pl-8 text-xs"},null,8,["modelValue","placeholder"])])]),S(t(Dt),{class:"flex-1 px-1.5"},{default:g(()=>[(f(!0),L(Z,null,ne(a.value,v=>{var x;return f(),L("button",{key:v.id,class:z(t(H)("flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-colors",o.value===v.id?"bg-background font-medium text-primary shadow-sm border border-border":"text-muted-foreground hover:bg-background/60 hover:text-foreground")),onClick:P=>t(r).push(`${d.basePath}/${v.id}`)},[m("span",{class:z(t(H)("size-1.5 rounded-full shrink-0",((x=s[v.kind])==null?void 0:x.split(" ")[0])??"bg-muted"))},null,2),m("span",Nt,A(v.id),1),S(t(ae),{variant:"secondary",class:"text-[10px] shrink-0 h-4 px-1"},{default:g(()=>[O(A(v.kind==="singleton"?"1":v.fields),1)]),_:2},1024)],10,Bt)}),128)),a.value.length===0?(f(),L("div",Mt,A(t(e)["sub-sidebar-layout.no-models-found"]),1)):B("",!0)]),_:1})]),m("div",Vt,[k(u.$slots,"default")])]))}}),qt={class:"flex items-center gap-4 border-t border-border bg-background px-6 py-1.5 text-xs text-muted-foreground"},Xt={class:"flex items-center gap-1.5"},Yt={key:0,class:"ml-auto"},jt=E({__name:"StatusBar",setup(d){const e=j("serve-ui-texts").locale("en").get(),l=ee(),{connected:n,lastUpdate:r}=_e(),i=C(()=>{var o;return((o=l.status)==null?void 0:o.models.length)??0}),c=C(()=>{var o,s;return((s=(o=l.status)==null?void 0:o.config)==null?void 0:s.locales.supported.length)??0}),a=C(()=>{if(!r.value)return"";const o=Date.now()-r.value.getTime();return o<5e3?"just now":o<6e4?`${Math.floor(o/1e3)}s ago`:o<36e5?`${Math.floor(o/6e4)}m ago`:r.value.toLocaleTimeString()});return(o,s)=>(f(),L("footer",qt,[m("span",Xt,[m("span",{class:z(["size-1.5 rounded-full",t(n)?"bg-status-success":"bg-status-error"])},null,2),O(" "+A(t(n)?"watching":"disconnected"),1)]),s[0]||(s[0]=m("span",{class:"h-3 w-px bg-border"},null,-1)),m("span",null,A(i.value)+" "+A(t(e)["status-bar.models"]),1),s[1]||(s[1]=m("span",{class:"h-3 w-px bg-border"},null,-1)),m("span",null,A(c.value)+" "+A(t(e)["status-bar.locales"]),1),a.value?(f(),L("span",Yt,A(a.value),1)):B("",!0)]))}}),Ft={class:"fixed bottom-0 left-0 right-0 z-50 border-t border-border bg-background"},Ut={class:"flex items-center justify-around py-2"},Gt=E({__name:"MobileNav",setup(d){const e=j("serve-ui-texts").locale("en").get(),l=Q(),n=[{icon:ke,label:e["mobile-nav.dash"],to:"/",exact:!0},{icon:ye,label:e["mobile-nav.models"],to:"/models"},{icon:Se,label:e["mobile-nav.content"],to:"/content"},{icon:xe,label:e["mobile-nav.valid"],to:"/validate"},{icon:we,label:e["mobile-nav.branch"],to:"/branches"}];function r(i){return i.exact?l.path===i.to:l.path.startsWith(i.to)}return(i,c)=>(f(),L("nav",Ft,[m("div",Ut,[(f(),L(Z,null,ne(n,a=>S(t(he),{key:a.to,to:a.to,class:z(t(H)("flex flex-col items-center gap-0.5 px-3 py-1 text-[10px]",r(a)?"text-primary":"text-muted-foreground"))},{default:g(()=>[(f(),y(be(a.icon),{class:"size-5"})),O(" "+A(a.label),1)]),_:2},1032,["to","class"])),64))])]))}}),Kt={class:"flex h-screen max-h-screen w-full max-w-480 mx-auto"},Jt={class:"flex flex-1 flex-col min-w-0"},Zt={key:1,class:"px-4 py-2 text-sm font-medium border-b flex items-center justify-between gap-4 bg-destructive text-destructive-foreground border-destructive/50"},Qt={class:"opacity-80 ml-1 text-xs"},eo={class:"flex-1 overflow-hidden pb-16 md:pb-0"},to={key:1,class:"h-full overflow-y-auto custom-scrollbar"},_o=E({__name:"AppLayout",setup(d){const e=j("serve-ui-texts").locale("en").get(),l=Q(),n=me(),r=ee(),i=C(()=>l.meta.subSidebar===!0),c=C(()=>l.meta.basePath??""),a=C(()=>l.meta.paramKey??"");return _e(o=>{if((o.type==="config:changed"||o.type==="model:changed"||o.type==="context:changed")&&(r.fetchStatus(),r.fetchCapabilities()),(o.type==="branch:created"||o.type==="branch:merged"||o.type==="branch:rejected")&&r.fetchCapabilities(),o.type==="sync:warning"&&o.branch){const s=o.branch,u=o.skippedCount??0;le.warning(`${u} file(s) skipped during sync`,{description:`Uncommitted local changes blocked the selective sync for ${s}.`,action:{label:"View details",onClick:()=>n.push(`/branches/${s}`)}})}if(o.type==="branch:merge-conflict"&&o.branch&&le.error(`Merge conflict on ${o.branch}`,{description:o.message??"Merge failed — resolve manually and retry."}),o.type==="meta:changed"&&o.modelId){const s=o.entryId?`${o.modelId}/${o.entryId}`:o.modelId;le.message(e["layout.meta-changed-title"],{description:`${s}${o.locale?` (${o.locale})`:""}`})}o.type==="file-watch:error"&&r.setFileWatchError(o.message??"File watcher stopped unexpectedly.",o.timestamp??new Date().toISOString())}),N(()=>{r.fetchStatus(),r.fetchCapabilities()}),(o,s)=>{const u=Pe("RouterLink");return f(),L("div",Kt,[S(Rt,{class:"hidden md:flex"}),m("div",Jt,[t(r).branchHealthAlarm?(f(),L("div",{key:0,class:z(["px-4 py-2 text-sm font-medium border-b flex items-center justify-between gap-4",t(r).branchHealthAlarm.level==="blocked"?"bg-destructive text-destructive-foreground border-destructive/50":"bg-amber-50 text-amber-900 border-amber-200 dark:bg-amber-950 dark:text-amber-100 dark:border-amber-900"])},[m("span",null,[m("strong",null,A(t(r).branchHealthAlarm.level==="blocked"?"Blocked:":"Warning:"),1),O(" "+A(t(r).branchHealthAlarm.message),1)]),S(u,{to:"/branches",class:"underline"},{default:g(()=>[...s[1]||(s[1]=[O("Review branches",-1)])]),_:1})],2)):B("",!0),t(r).fileWatchError?(f(),L("div",Zt,[m("span",null,[m("strong",null,A(t(e)["layout.watcher-paused-label"]),1),O(" "+A(t(r).fileWatchError.message)+" ",1),m("span",Qt,"("+A(t(e)["layout.watcher-restart-hint"])+")",1)]),m("button",{class:"underline hover:no-underline shrink-0",onClick:s[0]||(s[0]=h=>t(r).dismissFileWatchError())},A(t(e)["layout.dismiss"]),1)])):B("",!0),m("main",eo,[i.value?(f(),y(Wt,{key:0,"base-path":c.value,"param-key":a.value},{default:g(()=>[S(t(pe))]),_:1},8,["base-path","param-key"])):(f(),L("div",to,[S(t(pe))]))]),S(jt,{class:"hidden md:flex"})]),S(Gt,{class:"md:hidden"})])}}});export{_o as default};
@@ -1 +0,0 @@
1
- import{c as o}from"./Presence-CA3xTrht.js";const[e]=o("ConfigProvider");export{e as i};
@@ -1 +0,0 @@
1
- import{i as r}from"./ConfigProvider-CwkmRpT5.js";import{r as n,h as i}from"./index-DL_dw3XX.js";function c(t){const e=r({dir:n("ltr")});return i(()=>{var o;return(t==null?void 0:t.value)||((o=e.dir)==null?void 0:o.value)||"ltr"})}export{c as u};
@@ -1 +0,0 @@
1
- import{Y as b,a2 as N,u as p,h as q,ac as L,af as O,ae as W,r as C,i as E,M as U,w as _,U as M,W as G,_ as Y,a4 as H,a5 as J,t as j,H as K,aj as Q,F as X,a as S,ak as Z,m as T,al as ee,$ as v,b as te,z as ae,e as ne,o as re,f as oe,l as ie}from"./index-DL_dw3XX.js";const se={"branch-detail.and-delete-the-source":"and delete the source branch.","branch-detail.approve-merge":"Approve & Merge","branch-detail.ask-your-agent":"Ask your agent","branch-detail.back":"Back","branch-detail.branch-merged-successfully":"Branch merged successfully.","branch-detail.branch-rejected-and-deleted":"Branch rejected and deleted.","branch-detail.branch-review-and-diff":"Branch review and diff","branch-detail.cancel":"Cancel","branch-detail.check-the-content-quality":"Check the content quality of the pending changes","branch-detail.confirm-merge":"Confirm merge","branch-detail.confirm-rejection":"Confirm rejection","branch-detail.continue-with-phase-2":"Continue with Phase 2 — patch source files with content references","branch-detail.delete-branch":"Delete Branch","branch-detail.failed-to-delete-branch":"Failed to delete branch. Please try again.","branch-detail.failed-to-merge-branch":"Failed to merge branch. Please try again.","branch-detail.file":"file","branch-detail.into":"into","branch-detail.merge":"Merge","branch-detail.no-diff-available-for":"No diff available for this branch.","branch-detail.reject":"Reject","branch-detail.review-the-changes-on":"Review the changes on this branch and recommend approval or rejection","branch-detail.this-will-merge":"This will merge","branch-detail.this-will-permanently-delete":"This will permanently delete the branch","branches.add-sample-content-to":"Add sample content to my models","branches.aigenerated-changes-from-your":"AI-generated changes from your IDE will appear here for review.","branches.branch":"Branch","branches.branches-history":"Branches & History","branches.content":"Content","branches.content-saved":"Content Saved","branches.contentrain-operations-will-appear":"Contentrain operations will appear here as a timeline.","branches.create-a-new-content":"Create a new content model for my project","branches.deleted":"Deleted","branches.get-started":"Get started","branches.initialize-my-contentrain-project":"Initialize my contentrain project","branches.merged":"Merged","branches.model":"Model","branches.model-created":"Model Created","branches.model-updated":"Model Updated","branches.no-history-yet":"No history yet","branches.no-pending-branches":"No pending branches","branches.normalize":"Normalize","branches.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","branches.operation":"Operation","branches.refresh":"Refresh","branches.review-pending-changes-and":"Review pending changes and track operations","branches.share-branch-reviews-with":"Share branch reviews with your team in Contentrain Studio.","branches.try-asking-your-ai":"Try asking your AI agent","branches.validate":"Validate","breadcrumb-ellipsis.more":"More","button.button":"button","content-list.add-a-new-entry":"Add a new entry to ${modelId}","content-list.all-locales":"All locales","content-list.ask-your-agent":"Ask your agent","content-list.columns":"Columns","content-list.content-mutations-are-agent":"Content mutations are agent actions — copy a prompt above and paste it in your AI agent.","content-list.create-content-using-ai":"Create content using AI in your IDE.","content-list.create-sample-content-for":"Create sample content for ${modelId}","content-list.delete-draft-entries-from":"Delete draft entries from ${modelId}","content-list.generate-5-entries-for":"Generate 5 entries for ${modelId}","content-list.missing":"missing","content-list.no-entries-matching":'No entries matching "',"content-list.no-entries-yet":"No entries yet","content-list.page":"Page","content-list.refresh":"Refresh","content-list.required":"required","content-list.reset":"Reset","content-list.search-entries":"Search entries...","content-list.show":"Show","content-list.show-all":"Show all","content-list.toggle-columns":"Toggle columns","content-list.translate-modelid-content-to":"Translate ${modelId} content to Turkish","content-list.update-the-content-of":"Update the content of ${modelId}","content.browse-and-inspect-content":"Browse and inspect content by collection","content.collection":"Collection","content.content":"Content","content.create-models-using-your":"Create models using your IDE with AI assistance. Once models are defined, their content will appear here.","content.dictionary":"Dictionary","content.document":"Document","content.fields":"fields","content.filter-models":"Filter models...","content.i18n":"i18n","content.no-models-matching":'No models matching "',"content.no-models-yet":"No models yet","content.singleton":"Singleton","dashboard.branches":"Branches","dashboard.content-models":"Content Models","dashboard.content-saved":"Content Saved","dashboard.contentrain-init":"contentrain init","dashboard.context-updated":"Context Updated","dashboard.create-a-blog-model":"Create a blog model with title, content, and author fields","dashboard.create-models-using-ai":"Create models using AI in your IDE to get started.","dashboard.dashboard":"Dashboard","dashboard.deleted":"Deleted","dashboard.entries":"Entries","dashboard.fields":"fields","dashboard.fix-issues":"Fix issues","dashboard.fix-validation-errors-in":"Fix validation errors in my content","dashboard.full-report":"Full report","dashboard.generate-sample-content-for":"Generate sample content for my models","dashboard.get-started":"Get started","dashboard.i18n":"i18n","dashboard.issues":"Issues","dashboard.locales":"Locales","dashboard.manage-content-with-ai":"Manage content with AI chat and team review in Contentrain Studio.","dashboard.merged":"Merged","dashboard.model-created":"Model Created","dashboard.model-updated":"Model Updated","dashboard.models":"Models","dashboard.no-content-models-yet":"No content models yet","dashboard.no-operations-yet-start":"No operations yet. Start by creating models or content.","dashboard.normalize-my-project-extract":"Normalize my project — extract hardcoded strings","dashboard.not-a-contentrain-project":"Not a Contentrain project","dashboard.operation":"Operation","dashboard.populate":"Populate","dashboard.recent-operations":"Recent Operations","dashboard.review-pending-content-changes":"Review pending content changes","dashboard.run":"Run","dashboard.terms":"terms","dashboard.to-initialize":"to initialize.","dashboard.total":"total","dashboard.try-with-your-ai":"Try with your AI agent","dashboard.validation-summary":"Validation Summary","dashboard.view-all":"View all","dashboard.your-project-at-a":"Your project at a glance","dialog-content.close":"Close","dialog-footer.close":"Close","dialog-scroll-content.close":"Close","extraction-review-panel.strings":"strings","header.open-in-studio":"Open in Studio","index.ts.bgdestructive-textwhite-hoverbgdestructive90-focusvisibleringdestructive20":"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.border-bgbackground-shadowxs-hoverbgaccent":"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50","index.ts.bordertransparent-bgdestructive-textwhite-ahoverbgdestructive90":"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60","index.ts.bordertransparent-bgprimary-textprimaryforeground-ahoverbgprimary90":"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90","index.ts.bordertransparent-bgsecondary-textsecondaryforeground-ahoverbgsecondary90":"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90","index.ts.h10-roundedmd-px6-hassvgpx4":"h-10 rounded-md px-6 has-[>svg]:px-4","index.ts.h8-roundedmd-gap15-px3":"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5","index.ts.h9-px4-py2-hassvgpx3":"h-9 px-4 py-2 has-[>svg]:px-3","index.ts.icon":"icon","index.ts.textdestructive-bgcard-svgtextcurrent-dataslotalertdescriptiontextdestructive90":"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90","index.ts.textforeground-ahoverbgaccent-ahovertextaccentforeground":"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground","index.ts.textprimary-underlineoffset4-hoverunderline":"text-primary underline-offset-4 hover:underline","mobile-nav.branch":"Branch","mobile-nav.content":"Content","mobile-nav.dash":"Dash","mobile-nav.models":"Models","mobile-nav.valid":"Valid.","model-detail.add-a-category-field":"Add a 'category' field to ${modelId}","model-detail.ask-your-agent":"Ask your agent","model-detail.delete-the-modelid-model":"Delete the ${modelId} model","model-detail.fields":"Fields","model-detail.generate-5-sample-entries":"Generate 5 sample entries for ${modelId}","model-detail.i18n":"i18n","model-detail.import-snippet":"Import Snippet","model-detail.models":"Models","model-detail.req":"req","model-detail.sample-data":"Sample Data","model-detail.system-fields":"System Fields","model-detail.update-modelid-to-support":"Update ${modelId} to support i18n","model-detail.view-content":"View Content","models.add-a-testimonials-collection":"Add a testimonials collection model","models.ask-your-agent":"Ask your agent","models.clear-search":"Clear search","models.close":"Close","models.content-model-definitions":"Content model definitions","models.create-a-blog-model":"Create a blog model with title, content, slug, and author fields","models.create-a-faq-model":"Create a FAQ model with question and answer fields","models.create-a-new-content":"Create a new content model","models.create-and-manage-models":"Create and manage models with AI chat in Contentrain Studio.","models.create-content-models-using":"Create content models using AI in your IDE, then come back to inspect them here.","models.fields":"fields","models.filtered-from":"filtered from","models.i18n":"i18n","models.model":"model","models.models":"Models","models.no-models-found":"No models found","models.no-models-match":'No models match "',"models.no-models-yet":"No models yet","models.scaffold-my-project-with":"Scaffold my project with a landing page template","models.search":"Search","models.search-models-by-name":"Search models by name, domain, or kind...","models.total":"total","models.try-a-different-search":'". Try a different search term.',"normalize.adjust-the-normalize-plan":"Adjust the normalize plan — also include strings from the footer component","normalize.approve-or-request-changes":"Approve or request changes","normalize.approve-to-write-extractions":"Approve to write extractions to content models on a review branch. Reject to discard, or ask the agent to adjust the plan.","normalize.ask-your-ai-agent":"Ask your AI agent to get started","normalize.candidates":"candidates","normalize.click-an-extraction-to":"Click an extraction to see its source trace","normalize.content-extraction-and-i18n":"Content extraction and i18n readiness","normalize.continue-to-phase-2":"Continue to Phase 2 — patch source files with content references","normalize.copy-a-prompt-above":"Copy a prompt above or describe what you want extracted. The agent scans your source files, classifies strings, and builds an extraction plan.","normalize.delete":"Delete","normalize.extract-hardcoded-strings":"Extract hardcoded strings","normalize.extract-hero-section-text":"Extract hero section text into a content model","normalize.extracted":"extracted","normalize.extractions":"Extractions","normalize.extractions-across":"extractions across","normalize.files-scanned":"files scanned","normalize.how-it-works":"How it works","normalize.make-my-landing-page":"Make my landing page i18n-ready","normalize.merge":"Merge","normalize.merge-and-continue":"Merge and continue","normalize.merge-review-branches-into":"Merge review branches into main, then ask the agent to start Phase 2 — patching source files with content references.","normalize.models":"models","normalize.normalize":"Normalize","normalize.normalize-my-vue-project":"Normalize my Vue project — extract hardcoded strings","normalize.normalize-plan":"Normalize Plan","normalize.normalize-scans-your-source":"Normalize scans your source files for hardcoded strings and extracts them into content models, making your project i18n-ready.","normalize.patches":"patches","normalize.pending-normalize-branches":"Pending normalize branches","normalize.prompt-your-ai-agent":"Prompt your AI agent","normalize.remove-navigation-labels-from":"Remove navigation labels from the extraction plan","normalize.request-changes-from-your":"Request changes from your agent","normalize.review-and-merge-normalize":"Review and merge normalize branches into your main branch.","normalize.review-the-plan-here":"Review the plan here","normalize.scan-srcpages-for-content":"Scan src/pages for content strings and create extraction plan","normalize.skipped":"skipped","normalize.source-patches":"Source Patches","normalize.source-trace":"Source Trace","normalize.start-reuse-for-the":"Start reuse for the extracted content models","normalize.strings-found":"strings found","normalize.the-agent-sends-the":"The agent sends the plan to this dashboard. You review every extraction, source trace, and patch before anything is applied.","normalize.track-normalize-history-and":"Track normalize history and manage extractions in Contentrain Studio.","normalize.whats-next-ask-your":"What's next — ask your agent","primary-sidebar.branches":"Branches","primary-sidebar.content":"Content","primary-sidebar.contentrain":"Contentrain","primary-sidebar.dashboard":"Dashboard","primary-sidebar.models":"Models","primary-sidebar.normalize":"Normalize","primary-sidebar.validate":"Validate","router.ts.branches":"branches","router.ts.content":"content","router.ts.dashboard":"dashboard","router.ts.models":"models","router.ts.normalize":"normalize","router.ts.validate":"validate","scroll-bar.vertical":"vertical","select-content.popper":"popper","separator.horizontal":"horizontal","source-trace-panel.content-entry":"Content Entry","source-trace-panel.reuse-patch":"Reuse Patch","source-trace-panel.source-file":"Source File","source-trace-panel.source-trace":"Source Trace","status-bar.locales":"locales","status-bar.models":"models","studio-hint.open-studio":"Open Studio","sub-sidebar-layout.no-models-found":"No models found","sub-sidebar-layout.search":"Search...","tree-select.no-scannable-files-found":"No scannable files found","trust-badge.blocked":"Blocked","trust-badge.partial":"Partial","trust-badge.pending-review":"Pending review","trust-badge.validated":"Validated","trust-badge.warnings":"warnings","use-api.ts.contenttype":"Content-Type","use-api.ts.delete":"DELETE","use-api.ts.post":"POST","use-formatters.ts.2digit":"2-digit","use-formatters.ts.short":"short","validate.all-checks-passed":"All checks passed","validate.all-issue-types-are":"All issue types are hidden. Adjust filters above to see issues.","validate.ask-your-agent":"Ask your agent","validate.by-model":"By Model","validate.by-severity":"By Severity","validate.check-content-quality-and":"Check content quality and i18n completeness","validate.content-quality-report":"Content quality report","validate.entries":"Entries","validate.errors":"Errors","validate.errors-2":"Errors (","validate.fix-all-validation-errors":"Fix all validation errors in my content","validate.fix-warnings":"fix warnings","validate.models":"Models","validate.notice":"notice","validate.notices":"Notices","validate.notices-2":"Notices (","validate.quality-check":"quality check","validate.refreshing-validation":"Refreshing validation...","validate.review-and-fix-validation":"Review and fix validation warnings","validate.updated":"Updated","validate.validate-my-content-models":"Validate my content models","validate.validation":"Validation","validate.validation-results-update-automatically":"Validation results update automatically when your agent runs validation tools.","validate.warnings":"Warnings","validate.warnings-2":"Warnings (","validate.your-content-and-models":"Your content and models are in great shape. No errors, warnings, or notices found."},de="en";class le{constructor(t,a){this._data=t,this._locale=null,this._defaultLocale=a||null}locale(t){return this._locale=t,this}get(t){let a;if(this._locale)a=this._data.get(this._locale)??{};else if(this._defaultLocale&&this._data.has(this._defaultLocale))a=this._data.get(this._defaultLocale);else{const n=this._data.keys().next().value;a=this._data.get(n)??{}}return t!==void 0?a[t]:a}}const ce={"serve-ui-texts":new Map([["en",se]])};function Ie(e){const t=ce[e];if(!t)throw new Error(`Unknown dictionary model: "${e}"`);return new le(t,de)}function Pe(e){return H()?(J(e),!0):!1}const y=new WeakMap,Oe=(...e)=>{var t;const a=e[0],n=(t=M())==null?void 0:t.proxy;if(n==null&&!G())throw new Error("injectLocal must be called in setup");return n&&y.has(n)&&a in y.get(n)?y.get(n)[a]:Y(...e)};function ue(e){if(!b(e))return N(e);const t=new Proxy({},{get(a,n,r){return p(Reflect.get(e.value,n,r))},set(a,n,r){return b(e.value[n])&&!b(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(a,n){return Reflect.deleteProperty(e.value,n)},has(a,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return N(t)}function me(e){return ue(q(e))}function he(e,...t){const a=t.flat(),n=a[0];return me(()=>Object.fromEntries(typeof n=="function"?Object.entries(j(e)).filter(([r,o])=>!n(K(o),r)):Object.entries(j(e)).filter(r=>!a.includes(r[0]))))}const Ee=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const _e=e=>typeof e<"u",pe=Object.prototype.toString,Me=e=>pe.call(e)==="[object Object]",ge=()=>{};function fe(e,t){function a(...n){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(o)})}return a}const D=e=>e();function be(e=D,t={}){const{initialState:a="active"}=t,n=ye(a==="active");function r(){n.value=!1}function o(){n.value=!0}const l=(...d)=>{n.value&&e(...d)};return{isActive:O(n),pause:r,resume:o,eventFilter:l}}function Te(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function ve(e){return M()}function De(e){return Array.isArray(e)?e:[e]}function ye(...e){if(e.length!==1)return L(...e);const t=e[0];return typeof t=="function"?O(W(()=>({get:t,set:ge}))):C(t)}function we(e,t,a={}){const{eventFilter:n=D,...r}=a;return _(e,fe(n,t),r)}function Fe(e,t,a={}){const{eventFilter:n,initialState:r="active",...o}=a,{eventFilter:l,pause:d,resume:u,isActive:i}=be(n,{initialState:r});return{stop:we(e,t,{...o,eventFilter:l}),pause:d,resume:u,isActive:i}}function Ve(e,t=!0,a){ve()?E(e,a):t?e():U(e)}function Be(e,t,a){return _(e,t,{...a,immediate:!0})}const xe="/api";async function w(e,t){const a=await fetch(`${xe}${e}`,{headers:{"Content-Type":"application/json"},...t});if(!a.ok){const n=await a.text();let r=`API ${a.status}`;try{const o=JSON.parse(n);o!=null&&o.error&&(r=o.error)}catch{n&&(r=n)}throw new Error(r)}return a.json()}function Re(){return{get:e=>w(e),post:(e,t)=>w(e,{method:"POST",body:t?JSON.stringify(t):void 0}),del:e=>w(e,{method:"DELETE"})}}const I=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,P=Q,ke=(e,t)=>a=>{var n;if((t==null?void 0:t.variants)==null)return P(e,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:r,defaultVariants:o}=t,l=Object.keys(r).map(i=>{const c=a==null?void 0:a[i],h=o==null?void 0:o[i];if(c===null)return null;const m=I(c)||I(h);return r[i][m]}),d=a&&Object.entries(a).reduce((i,c)=>{let[h,m]=c;return m===void 0||(i[h]=m),i},{}),u=t==null||(n=t.compoundVariants)===null||n===void 0?void 0:n.reduce((i,c)=>{let{class:h,className:m,...R}=c;return Object.entries(R).every($=>{let[A,f]=$;return Array.isArray(f)?f.includes({...o,...d}[A]):{...o,...d}[A]===f})?[...i,h,m]:i},[]);return P(e,l,u,a==null?void 0:a.class,a==null?void 0:a.className)};function F(e){return e?e.flatMap(t=>t.type===X?F(t.children):[t]):[]}const ze=S({name:"PrimitiveSlot",inheritAttrs:!1,setup(e,{attrs:t,slots:a}){return()=>{var u;if(!a.default)return null;const n=F(a.default()),r=n.findIndex(i=>i.type!==Z);if(r===-1)return n;const o=n[r];(u=o.props)==null||delete u.ref;const l=o.props?T(t,o.props):t,d=ee({...o,props:{}},l);return n.length===1?d:(n[r]=d,n)}}}),Ce=["area","img","input"],Se=S({name:"Primitive",inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:"div"}},setup(e,{attrs:t,slots:a}){const n=e.asChild?"template":e.as;return typeof n=="string"&&Ce.includes(n)?()=>v(n,t):n!=="template"?()=>v(e.as,t,{default:a.default}):()=>v(ze,t,{default:a.default})}}),$e=S({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){const t=e,a=he(t,"class");return(n,r)=>(re(),te(p(Se),T({"data-slot":"badge",class:p(ae)(p(Ae)({variant:e.variant}),t.class)},p(a)),{default:ne(()=>[oe(n.$slots,"default")]),_:3},16,["class"]))}}),Ae=ke("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}}),k=C(!1),V=C(null),z=new Set;let s=null,x=null,g=1e3;function B(){if(s&&(s.readyState===WebSocket.OPEN||s.readyState===WebSocket.CONNECTING))return;const e=window.location.protocol==="https:"?"wss:":"ws:";s=new WebSocket(`${e}//${window.location.host}/ws`),s.addEventListener("open",()=>{k.value=!0,g=1e3}),s.addEventListener("message",t=>{try{const a=JSON.parse(t.data);V.value=new Date;for(const n of z)n(a)}catch{}}),s.addEventListener("close",()=>{k.value=!1,Ne()}),s.addEventListener("error",()=>{s==null||s.close()})}function Ne(){x||(x=setTimeout(()=>{x=null,g=Math.min(g*2,3e4),B()},g))}function qe(e){return E(()=>{e&&z.add(e),B()}),ie(()=>{e&&z.delete(e)}),{connected:k,lastUpdate:V}}export{Se as P,ze as S,$e as _,Ve as a,Ee as b,Oe as c,Ie as d,Be as e,Pe as f,Me as g,De as h,_e as i,Re as j,F as k,ke as l,Te as p,he as r,ye as t,qe as u,Fe as w};