Files
nimbus/resources/dist/assets/Status.js
Mazen Touati c2aa6895d6 feat: initial alpha release
This commit represents the complete foundational codebase for Nimbus Alpha, a Laravel package that provides an integrated, in-browser API client with automatic schema discovery from validation rules.

IMPORTANT: This is a squashed commit representing the culmination of extensive development, refactoring, and architectural iterations. All previous commit history has been intentionally removed to provide a clean foundation for the public alpha release.

The development of Nimbus involved:
- Multiple architectural refactorings
- Significant structural changes
- Experimental approaches that were later abandoned
- Learning iterations on the core concept
- Migration between different design patterns

This messy history would:
- Make git blame confusing and unhelpful
- Obscure the actual intent behind current implementation
- Create noise when reviewing changes
- Reference deleted or refactored code

If git blame brought you to this commit, it means you're looking at code that was part of the initial alpha release. Here's what to do:

1. Check Current Documentation
   - See `/wiki/contribution-guide/README.md` for architecture details
   - Review the specific module's README if available
   - Look for inline comments explaining the reasoning

2. Look for Related Code
   - Check other files in the same module
   - Look for tests that demonstrate intended behavior
   - Review interfaces and contracts

3. Context Matters
   - This code may have been updated since alpha
   - Check git log for subsequent changes to this file
   - Look for related issues or PRs on GitHub

---

This commit marks the beginning of Nimbus's public journey. All future
commits will build upon this foundation with clear, traceable history.

Thank you for using or contributing to Nimbus!
2025-10-23 00:16:28 +02:00

17 lines
27 KiB
JavaScript

import{e as ae,c as ne,_ as xe,b as ye,d as we,u as ie,f as Ce,i as Re,g as oe,h as $e}from"./useResponsiveResizable.js";import{c as Ee,u as ke,_ as G}from"./index.js";import{d as y,g as w,t as Z,s as Ae,a as T,c as J,b as x,o as v,w as m,r as R,G as N,e as o,P as I,h as C,aZ as M,i as F,n as B,m as A,j as V,b0 as ce,l as b,p as Q,z as O,b1 as ze,aR as re,a9 as Te,$ as E,W as d,Y as q,a6 as ue,J as K,aE as de,I as fe,Z as k,aj as Le,b2 as Pe,ab as De,H as ee,as as He,ah as We,aC as Be,b3 as Ie,b4 as Me,b5 as qe}from"./app.js";import{R as pe,C as ve,a as he,_ as Ve}from"./PageLayout.vue_vue_type_script_setup_true_lang.js";/* empty css */const[L,Xe]=J("ScrollAreaRoot");var Ne=y({__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(a,{expose:e}){const t=a,r=w(0),l=w(0),n=w(),s=w(),i=w(),c=w(),f=w(!1),_=w(!1),{type:g,dir:p,scrollHideDelay:$}=Z(t),z=Ae(p);function P(){var h;(h=n.value)==null||h.scrollTo({top:0})}function D(){var h;(h=n.value)==null||h.scrollTo({top:0,left:0})}e({viewport:n,scrollTop:P,scrollTopLeft:D});const{forwardRef:u,currentElement:S}=T();return Xe({type:g,dir:z,scrollHideDelay:$,scrollArea:S,viewport:n,onViewportChange:h=>{n.value=h||void 0},content:s,onContentChange:h=>{s.value=h},scrollbarX:i,scrollbarXEnabled:f,scrollbarY:c,scrollbarYEnabled:_,onScrollbarXChange:h=>{i.value=h||void 0},onScrollbarYChange:h=>{c.value=h||void 0},onScrollbarXEnabledChange:h=>{f.value=h},onScrollbarYEnabledChange:h=>{_.value=h},onCornerWidthChange:h=>{r.value=h},onCornerHeightChange:h=>{l.value=h}}),(h,H)=>(v(),x(o(I),{ref:o(u),"as-child":t.asChild,as:h.as,dir:o(z),style:N({position:"relative","--reka-scroll-area-corner-width":`${r.value}px`,"--reka-scroll-area-corner-height":`${l.value}px`})},{default:m(()=>[R(h.$slots,"default")]),_:3},8,["as-child","as","dir","style"]))}}),Oe=Ne,Ye=y({__name:"ScrollAreaCornerImpl",setup(a){const e=L(),t=w(0),r=w(0),l=C(()=>!!t.value&&!!r.value);function n(){var c;const i=((c=e.scrollbarX.value)==null?void 0:c.offsetHeight)||0;e.onCornerHeightChange(i),r.value=i}function s(){var c;const i=((c=e.scrollbarY.value)==null?void 0:c.offsetWidth)||0;e.onCornerWidthChange(i),t.value=i}return M(e.scrollbarX.value,n),M(e.scrollbarY.value,s),F(()=>e.scrollbarX.value,n),F(()=>e.scrollbarY.value,s),(i,c)=>{var f;return l.value?(v(),x(o(I),A({key:0,style:{width:`${t.value}px`,height:`${r.value}px`,position:"absolute",right:o(e).dir.value==="ltr"?0:void 0,left:o(e).dir.value==="rtl"?0:void 0,bottom:0}},(f=i.$parent)==null?void 0:f.$props),{default:m(()=>[R(i.$slots,"default")]),_:3},16,["style"])):B("v-if",!0)}}}),je=Ye,Ue=y({__name:"ScrollAreaCorner",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const e=a,{forwardRef:t}=T(),r=L(),l=C(()=>!!r.scrollbarX.value&&!!r.scrollbarY.value),n=C(()=>r.type.value!=="scroll"&&l.value);return(s,i)=>n.value?(v(),x(je,A({key:0},e,{ref:o(t)}),{default:m(()=>[R(s.$slots,"default")]),_:3},16)):B("v-if",!0)}}),Fe=Ue;function me(a,e){return t=>{if(a[0]===a[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(a[1]-a[0]);return e[0]+r*(t-a[0])}}function Y(a){const e=_e(a.viewport,a.content),t=a.scrollbar.paddingStart+a.scrollbar.paddingEnd,r=(a.scrollbar.size-t)*e;return Math.max(r,18)}function _e(a,e){const t=a/e;return Number.isNaN(t)?0:t}function Ge(a,e=()=>{}){let t={left:a.scrollLeft,top:a.scrollTop},r=0;return(function l(){const n={left:a.scrollLeft,top:a.scrollTop},s=t.left!==n.left,i=t.top!==n.top;(s||i)&&e(),t=n,r=window.requestAnimationFrame(l)})(),()=>window.cancelAnimationFrame(r)}function le(a,e,t="ltr"){const r=Y(e),l=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=e.scrollbar.size-l,s=e.content-e.viewport,i=n-r,c=t==="ltr"?[0,s]:[s*-1,0],f=Ee(a,c[0],c[1]);return me([0,s],[0,i])(f)}function X(a){return a?Number.parseInt(a,10):0}function Ze(a,e,t,r="ltr"){const l=Y(t),n=l/2,s=e||n,i=l-s,c=t.scrollbar.paddingStart+s,f=t.scrollbar.size-t.scrollbar.paddingEnd-i,_=t.content-t.viewport,g=r==="ltr"?[0,_]:[_*-1,0];return me([c,f],g)(a)}function se(a,e){return a>0&&a<e}var Je=y({__name:"ScrollAreaScrollbarX",setup(a){const e=L(),t=U(),{forwardRef:r,currentElement:l}=T();V(()=>{l.value&&e.onScrollbarXChange(l.value)});const n=C(()=>t.sizes.value);return(s,i)=>(v(),x(ge,{ref:o(r),"is-horizontal":!0,"data-orientation":"horizontal",style:N({bottom:0,left:o(e).dir.value==="rtl"?"var(--reka-scroll-area-corner-width)":0,right:o(e).dir.value==="ltr"?"var(--reka-scroll-area-corner-width)":0,"--reka-scroll-area-thumb-width":n.value?`${o(Y)(n.value)}px`:void 0}),onOnDragScroll:i[0]||(i[0]=c=>o(t).onDragScroll(c.x))},{default:m(()=>[R(s.$slots,"default")]),_:3},8,["style"]))}}),Qe=Je,Ke=y({__name:"ScrollAreaScrollbarY",setup(a){const e=L(),t=U(),{forwardRef:r,currentElement:l}=T();V(()=>{l.value&&e.onScrollbarYChange(l.value)});const n=C(()=>t.sizes.value);return(s,i)=>(v(),x(ge,{ref:o(r),"is-horizontal":!1,"data-orientation":"vertical",style:N({top:0,right:o(e).dir.value==="ltr"?0:void 0,left:o(e).dir.value==="rtl"?0:void 0,bottom:"var(--reka-scroll-area-corner-height)","--reka-scroll-area-thumb-height":n.value?`${o(Y)(n.value)}px`:void 0}),onOnDragScroll:i[0]||(i[0]=c=>o(t).onDragScroll(c.y))},{default:m(()=>[R(s.$slots,"default")]),_:3},8,["style"]))}}),et=Ke,tt=y({__name:"ScrollAreaScrollbarAuto",props:{forceMount:{type:Boolean,required:!1}},setup(a){const e=L(),t=j(),{forwardRef:r}=T(),l=w(!1),n=ce(()=>{if(e.viewport.value){const s=e.viewport.value.offsetWidth<e.viewport.value.scrollWidth,i=e.viewport.value.offsetHeight<e.viewport.value.scrollHeight;l.value=t.isHorizontal.value?s:i}},10);return V(()=>n()),M(e.viewport,n),M(e.content,n),(s,i)=>(v(),x(o(Q),{present:s.forceMount||l.value},{default:m(()=>[b(te,A(s.$attrs,{ref:o(r),"data-state":l.value?"visible":"hidden"}),{default:m(()=>[R(s.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),be=tt,ot=y({inheritAttrs:!1,__name:"ScrollAreaScrollbarHover",props:{forceMount:{type:Boolean,required:!1}},setup(a){const e=L(),{forwardRef:t}=T();let r;const l=w(!1);function n(){window.clearTimeout(r),l.value=!0}function s(){r=window.setTimeout(()=>{l.value=!1},e.scrollHideDelay.value)}return V(()=>{const i=e.scrollArea.value;i&&(i.addEventListener("pointerenter",n),i.addEventListener("pointerleave",s))}),O(()=>{const i=e.scrollArea.value;i&&(window.clearTimeout(r),i.removeEventListener("pointerenter",n),i.removeEventListener("pointerleave",s))}),(i,c)=>(v(),x(o(Q),{present:i.forceMount||l.value},{default:m(()=>[b(be,A(i.$attrs,{ref:o(t),"data-state":l.value?"visible":"hidden"}),{default:m(()=>[R(i.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),rt=ot,lt=y({__name:"ScrollAreaScrollbarScroll",props:{forceMount:{type:Boolean,required:!1}},setup(a){const e=L(),t=j(),{forwardRef:r}=T(),{state:l,dispatch:n}=ze("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"}}),s=C(()=>l.value!=="hidden");re(c=>{if(l.value==="idle"){const f=window.setTimeout(()=>n("HIDE"),e.scrollHideDelay.value);c(()=>{window.clearTimeout(f)})}});const i=ce(()=>n("SCROLL_END"),100);return re(c=>{const f=e.viewport.value,_=t.isHorizontal.value?"scrollLeft":"scrollTop";if(f){let g=f[_];const p=()=>{const $=f[_];g!==$&&(n("SCROLL"),i()),g=$};f.addEventListener("scroll",p),c(()=>{f.removeEventListener("scroll",p)})}}),(c,f)=>(v(),x(o(Q),{present:c.forceMount||s.value},{default:m(()=>[b(te,A(c.$attrs,{ref:o(r),"data-state":s.value?"visible":"hidden"}),{default:m(()=>[R(c.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),st=lt;const[j,at]=J("ScrollAreaScrollbar");var nt=y({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(a){const e=a,{forwardRef:t}=T(),r=L(),l=C(()=>e.orientation==="horizontal");F(l,()=>{l.value?r.onScrollbarXEnabledChange(!0):r.onScrollbarYEnabledChange(!0)},{immediate:!0}),O(()=>{r.onScrollbarXEnabledChange(!1),r.onScrollbarYEnabledChange(!1)});const{orientation:n,forceMount:s,asChild:i,as:c}=Z(e);return at({orientation:n,forceMount:s,isHorizontal:l,as:c,asChild:i}),(f,_)=>o(r).type.value==="hover"?(v(),x(rt,A({key:0},f.$attrs,{ref:o(t),"force-mount":o(s)}),{default:m(()=>[R(f.$slots,"default")]),_:3},16,["force-mount"])):o(r).type.value==="scroll"?(v(),x(st,A({key:1},f.$attrs,{ref:o(t),"force-mount":o(s)}),{default:m(()=>[R(f.$slots,"default")]),_:3},16,["force-mount"])):o(r).type.value==="auto"?(v(),x(be,A({key:2},f.$attrs,{ref:o(t),"force-mount":o(s)}),{default:m(()=>[R(f.$slots,"default")]),_:3},16,["force-mount"])):o(r).type.value==="always"?(v(),x(te,A({key:3},f.$attrs,{ref:o(t),"data-state":"visible"}),{default:m(()=>[R(f.$slots,"default")]),_:3},16)):B("v-if",!0)}}),it=nt;const[U,ct]=J("ScrollAreaScrollbarVisible");var ut=y({__name:"ScrollAreaScrollbarVisible",setup(a){const e=L(),t=j(),{forwardRef:r}=T(),l=w({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),n=C(()=>{const u=_e(l.value.viewport,l.value.content);return u>0&&u<1}),s=w(),i=w(0);function c(u,S){if($.value){const h=e.viewport.value.scrollLeft+u.deltaY;e.viewport.value.scrollLeft=h,se(h,S)&&u.preventDefault()}else{const h=e.viewport.value.scrollTop+u.deltaY;e.viewport.value.scrollTop=h,se(h,S)&&u.preventDefault()}}function f(u,S){$.value?i.value=S.x:i.value=S.y}function _(u){i.value=0}function g(u){l.value=u}function p(u,S){return Ze(u,i.value,l.value,S)}const $=C(()=>t.isHorizontal.value);function z(u){$.value?e.viewport.value.scrollLeft=p(u,e.dir.value):e.viewport.value.scrollTop=p(u)}function P(){if($.value){if(e.viewport.value&&s.value){const u=e.viewport.value.scrollLeft,S=le(u,l.value,e.dir.value);s.value.style.transform=`translate3d(${S}px, 0, 0)`}}else if(e.viewport.value&&s.value){const u=e.viewport.value.scrollTop,S=le(u,l.value);s.value.style.transform=`translate3d(0, ${S}px, 0)`}}function D(u){s.value=u}return ct({sizes:l,hasThumb:n,handleWheelScroll:c,handleThumbDown:f,handleThumbUp:_,handleSizeChange:g,onThumbPositionChange:P,onThumbChange:D,onDragScroll:z}),(u,S)=>$.value?(v(),x(Qe,A({key:0},u.$attrs,{ref:o(r)}),{default:m(()=>[R(u.$slots,"default")]),_:3},16)):(v(),x(et,A({key:1},u.$attrs,{ref:o(r)}),{default:m(()=>[R(u.$slots,"default")]),_:3},16))}}),te=ut,dt=y({__name:"ScrollAreaScrollbarImpl",props:{isHorizontal:{type:Boolean,required:!0}},emits:["onDragScroll","onWheelScroll","onThumbPointerDown"],setup(a,{emit:e}){const t=a,r=e,l=L(),n=U(),s=j(),{forwardRef:i,currentElement:c}=T(),f=w(""),_=w();function g(u){var S,h;if(_.value){const H=u.clientX-((S=_.value)==null?void 0:S.left),W=u.clientY-((h=_.value)==null?void 0:h.top);r("onDragScroll",{x:H,y:W})}}function p(u){u.button===0&&(u.target.setPointerCapture(u.pointerId),_.value=c.value.getBoundingClientRect(),f.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",l.viewport&&(l.viewport.value.style.scrollBehavior="auto"),g(u))}function $(u){g(u)}function z(u){const S=u.target;S.hasPointerCapture(u.pointerId)&&S.releasePointerCapture(u.pointerId),document.body.style.webkitUserSelect=f.value,l.viewport&&(l.viewport.value.style.scrollBehavior=""),_.value=void 0}function P(u){var W;const S=u.target,h=(W=c.value)==null?void 0:W.contains(S),H=n.sizes.value.content-n.sizes.value.viewport;h&&n.handleWheelScroll(u,H)}V(()=>{document.addEventListener("wheel",P,{passive:!1})}),O(()=>{document.removeEventListener("wheel",P)});function D(){var u,S,h,H,W;c.value&&(t.isHorizontal?n.handleSizeChange({content:((u=l.viewport.value)==null?void 0:u.scrollWidth)??0,viewport:((S=l.viewport.value)==null?void 0:S.offsetWidth)??0,scrollbar:{size:c.value.clientWidth??0,paddingStart:X(getComputedStyle(c.value).paddingLeft),paddingEnd:X(getComputedStyle(c.value).paddingRight)}}):n.handleSizeChange({content:((h=l.viewport.value)==null?void 0:h.scrollHeight)??0,viewport:((H=l.viewport.value)==null?void 0:H.offsetHeight)??0,scrollbar:{size:((W=c.value)==null?void 0:W.clientHeight)??0,paddingStart:X(getComputedStyle(c.value).paddingLeft),paddingEnd:X(getComputedStyle(c.value).paddingRight)}}))}return M(c,D),M(l.content,D),(u,S)=>(v(),x(o(I),{ref:o(i),style:{position:"absolute"},"data-scrollbarimpl":"",as:o(s).as.value,"as-child":o(s).asChild.value,onPointerdown:p,onPointermove:$,onPointerup:z},{default:m(()=>[R(u.$slots,"default")]),_:3},8,["as","as-child"]))}}),ge=dt,ft=y({__name:"ScrollAreaThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const e=a,t=L(),r=U();function l(p){const z=p.target.getBoundingClientRect(),P=p.clientX-z.left,D=p.clientY-z.top;r.handleThumbDown(p,{x:P,y:D})}function n(p){r.handleThumbUp(p)}const{forwardRef:s,currentElement:i}=T(),c=w(),f=C(()=>t.viewport.value);function _(){if(!c.value){const p=Ge(f.value,r.onThumbPositionChange);c.value=p,r.onThumbPositionChange()}}const g=C(()=>r.sizes.value);return Te(g,()=>{r.onThumbChange(i.value),f.value&&(r.onThumbPositionChange(),f.value.addEventListener("scroll",_))}),O(()=>{var p;f.value.removeEventListener("scroll",_),(p=t.viewport.value)==null||p.removeEventListener("scroll",_)}),(p,$)=>(v(),x(o(I),{ref:o(s),"data-state":o(r).hasThumb?"visible":"hidden",style:{width:"var(--reka-scroll-area-thumb-width)",height:"var(--reka-scroll-area-thumb-height)"},"as-child":e.asChild,as:p.as,onPointerdown:l,onPointerup:n},{default:m(()=>[R(p.$slots,"default")]),_:3},8,["data-state","as-child","as"]))}}),pt=ft,vt=y({inheritAttrs:!1,__name:"ScrollAreaViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a,{expose:e}){const t=a,{nonce:r}=Z(t),l=ke(r),n=L(),s=w();V(()=>{n.onViewportChange(s.value),n.onContentChange(c.value)}),e({viewportElement:s});const{forwardRef:i,currentElement:c}=T();return(f,_)=>(v(),E(ue,null,[d("div",A({ref_key:"viewportElement",ref:s,"data-reka-scroll-area-viewport":"",style:{overflowX:o(n).scrollbarXEnabled.value?"scroll":"hidden",overflowY:o(n).scrollbarYEnabled.value?"scroll":"hidden"}},f.$attrs,{tabindex:0}),[b(o(I),{ref:o(i),style:N({minWidth:o(n).scrollbarXEnabled.value?"fit-content":void 0}),"as-child":t.asChild,as:f.as},{default:m(()=>[R(f.$slots,"default")]),_:3},8,["style","as-child","as"])],16),b(o(I),{as:"style",nonce:o(l)},{default:m(()=>_[0]||(_[0]=[q(" /* 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))}}),ht=vt;/**
* @license lucide-vue-next v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const mt=K("ChartAreaIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z",key:"q0gr47"}]]);/**
* @license lucide-vue-next v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const _t=K("CircleXIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/**
* @license lucide-vue-next v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const bt=K("SearchXIcon",[["path",{d:"m13.5 8.5-5 5",key:"1cs55j"}],["path",{d:"m8.5 8.5 5 5",key:"a8mexj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]),gt=y({__name:"AppScrollBar",props:{orientation:{default:"vertical"},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{default:void 0}},setup(a){const e=a,t=de(e,"class");return(r,l)=>(v(),x(o(it),A({"data-slot":"scroll-area-scrollbar"},o(t),{class:o(fe)("flex touch-none p-px transition-colors select-none",a.orientation==="vertical"&&"h-full w-2.5 border-l border-l-transparent",a.orientation==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e.class)}),{default:m(()=>[b(o(pt),{"data-slot":"scroll-area-thumb",class:"relative flex-1 rounded-full bg-gray-400 dark:bg-gray-600"})]),_:1},16,["class"]))}}),Se=y({__name:"AppScrollArea",props:{type:{},dir:{},scrollHideDelay:{},asChild:{type:Boolean},as:{},class:{}},setup(a){const e=a,t=de(e,"class");return(r,l)=>(v(),x(o(Oe),A({"data-slot":"scroll-area"},o(t),{class:o(fe)("relative",e.class)}),{default:m(()=>[b(o(ht),{"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 [&>div]:h-full"},{default:m(()=>[R(r.$slots,"default")]),_:3}),b(gt),b(o(Fe))]),_:3},16,["class"]))}}),St={class:"flex h-full flex-col"},xt={key:0,class:"p-4"},yt={class:"bg-subtle-background mb-4 rounded-lg p-2"},wt={class:"mb-2 flex items-center space-x-2"},Ct={class:"font-mono text-sm text-gray-800 dark:text-gray-200"},Rt={class:"text-xs text-gray-500 dark:text-gray-400"},$t={key:0},Et={class:"via-background relative max-h-full overflow-hidden rounded-lg bg-gradient-to-br from-red-50 from-10% p-2 dark:from-red-950/30"},kt={class:"relative z-10 flex max-h-full flex-col space-y-4"},At={class:"bg-subtle-background rounded-sm p-2 text-sm"},zt=["innerHTML"],Tt={key:1,class:"flex h-full items-center justify-center"},Lt=y({__name:"ErrorDetails",props:{selectedRoute:{}},setup(a){const e=a;return(t,r)=>(v(),E("div",St,[r[3]||(r[3]=d("div",{class:"h-toolbar px-panel bg-subtle-background flex flex-shrink-0 items-center justify-between border-b"},[d("span",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," Error Details ")],-1)),b(o(Se),{class:"min-h-0 flex-1"},{default:m(()=>[e.selectedRoute!==null?(v(),E("div",xt,[d("div",yt,[d("div",wt,[b(ae,{method:e.selectedRoute.method,size:"sm"},null,8,["method"]),d("span",Ct,k(e.selectedRoute.endpoint),1)]),d("div",Rt,[q(" /"+k(e.selectedRoute.resource)+" ",1),e.selectedRoute.version!=="n/a"?(v(),E("span",$t," • v"+k(e.selectedRoute.version),1)):B("",!0)])]),d("div",Et,[d("div",kt,[d("div",null,[b(o(Le),{variant:"outline",class:"mb-2 p-0 px-1 text-xs"},{default:m(()=>[...r[0]||(r[0]=[q(" Extraction Error ",-1)])]),_:1}),r[1]||(r[1]=d("p",{class:"text-subtle-foreground text-sm"}," The schema extraction process encountered an error while processing this route. The error details below may help identify the issue. ",-1))]),d("div",At,[d("div",{class:"prose prose-sm max-w-none",innerHTML:e.selectedRoute.schema.extractionErrors},null,8,zt)])])])])):(v(),E("div",Tt,[b(ne,null,{default:m(()=>[...r[2]||(r[2]=[d("h2",{class:"text-lg font-medium"}," Select a route to view its error details ",-1),d("p",{class:"mb-2 text-sm"}," Click on any route from the list on the left to see the extraction error details. ",-1)])]),_:1})]))]),_:1})]))}}),Pt={class:"flex h-full flex-col"},Dt={class:"h-toolbar bg-subtle-background flex flex-shrink-0 items-center justify-between border-b"},Ht={class:"pl-panel flex items-center"},Wt={class:"bg-background ml-2 rounded-full px-2 py-0.5 text-xs"},Bt={class:"relative h-full w-54 max-w-2/5 border-l"},It=["onClick"],Mt={class:"min-w-0 flex-1"},qt={class:"text-subtle-foreground truncate font-mono text-sm"},Vt={class:"truncate text-xs text-gray-500"},Xt={key:0},Nt={key:1,class:"p-panel"},Ot=y({__name:"ErrorRoutesList",props:{routes:{},selectedRoute:{}},emits:["route-selected"],setup(a,{emit:e}){const t=a,r=e,l=w(""),n=C(()=>{if(!l.value.trim())return t.routes;const _=l.value.toLowerCase();return t.routes.filter(g=>g.endpoint.toLowerCase().includes(_)||g.resource.toLowerCase().includes(_))}),s=C(()=>n.value.length>0),i=_=>{r("route-selected",_)},c=()=>{l.value=""},f=_=>t.selectedRoute?t.selectedRoute.endpoint===_.endpoint&&t.selectedRoute.method===_.method:!1;return(_,g)=>(v(),E("div",Pt,[d("div",Dt,[d("div",Ht,[g[1]||(g[1]=d("span",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," Failed Routes ",-1)),d("span",Wt,k(n.value.length),1)]),d("div",Bt,[b(o(Pe),{class:"absolute top-1/2 left-3 size-4 -translate-y-1/2 transform"}),b(o(xe),{modelValue:l.value,"onUpdate:modelValue":g[0]||(g[0]=p=>l.value=p),placeholder:"Search",class:"rounded-non h-full border-0 py-0.5 pr-4 pl-10 text-sm shadow-none outline-none focus-visible:ring-0"},null,8,["modelValue"])])]),b(o(Se),{class:"min-h-0 flex-1"},{default:m(()=>[s.value?(v(!0),E(ue,{key:0},De(n.value,p=>(v(),E("div",{key:`${p.version}-${p.resource}-${p.method}-${p.endpoint}`,class:ee(["px-panel dark:hover:bg-accent/20 flex cursor-pointer items-center space-x-3 border-b border-l-2 border-l-transparent py-1 transition-colors odd:bg-white even:bg-gray-50 hover:bg-yellow-50/30 dark:odd:bg-zinc-950 dark:even:bg-zinc-900/30",{"!border-l-black dark:!border-l-zinc-800":f(p)}]),onClick:$=>i(p)},[b(ae,{method:p.method,size:"sm"},null,8,["method"]),d("div",Mt,[d("div",qt,k(p.endpoint),1),d("div",Vt,[q(" /"+k(p.resource)+" ",1),p.version!=="n/a"?(v(),E("span",Xt," • v"+k(p.version),1)):B("",!0)])])],10,It))),128)):(v(),E("div",Nt,[g[3]||(g[3]=d("h2",{class:"text-lg font-medium"},"No routes match your search criteria",-1)),g[4]||(g[4]=d("p",{class:"text-subtle-foreground mb-4 text-sm"}," Try searching for route endpoints or resource names ",-1)),l.value?(v(),x(o(G),{key:0,size:"xs",variant:"outline",onClick:c},{default:m(()=>[b(o(bt),{class:"size-3"}),g[2]||(g[2]=q(" Clear Search ",-1))]),_:1})):B("",!0)]))]),_:1})]))}}),Yt={class:"flex items-center space-x-4"},jt={class:"flex items-center space-x-2"},Ut={class:"text-sm font-medium"},Ft={class:"xs:flex flex hidden items-center space-x-2"},Gt={class:"text-sm font-medium"},Zt={class:"flex hidden items-center space-x-2 sm:flex"},Jt={class:"text-sm font-medium"},Qt={class:"hidden items-center space-x-2 sm:flex"},Kt={class:"text-sm font-medium"},eo=y({__name:"RouteStatistics",props:{totalRoutes:{},routesWithErrors:{},routesWithoutErrors:{},errorRate:{}},setup(a){return(e,t)=>(v(),E("div",Yt,[d("div",jt,[b(o(pe),{class:"size-4"}),d("div",null,[d("span",Ut,k(a.totalRoutes),1),t[0]||(t[0]=d("span",{class:"text-muted-foreground ml-1 text-xs"},"routes",-1))])]),d("div",Ft,[b(o(ve),{class:"size-4"}),d("div",null,[d("span",Gt,k(a.routesWithoutErrors),1),t[1]||(t[1]=d("span",{class:"text-muted-foreground ml-1 text-xs"},"success",-1))])]),d("div",Zt,[b(o(_t),{class:"size-4"}),d("div",null,[d("span",Jt,k(a.routesWithErrors),1),t[2]||(t[2]=d("span",{class:"text-muted-foreground ml-1 text-xs"},"errors",-1))])]),d("div",Qt,[b(o(mt),{class:"size-4"}),d("div",null,[d("span",Kt,k(a.errorRate)+"%",1),t[3]||(t[3]=d("span",{class:"text-muted-foreground ml-1 text-xs"},"error rate",-1))])])]))}}),to={class:"flex items-center space-x-2"},oo={class:"text-muted-foreground text-xs"},ro=y({__name:"StatusIndicator",props:{routesWithErrors:{},totalRoutes:{}},setup(a){const e={success:"text-emerald-600",error:"text-rose-500",neutral:"text-zinc-500"},t={allGood:"All good",issuesFound:"Issues found",noRoutes:"No routes"},r=a,l=C(()=>{const{routesWithErrors:n,totalRoutes:s}=r;return n===0&&s>0?{color:e.success,message:t.allGood}:n>0?{color:e.error,message:t.issuesFound}:{color:e.neutral,message:t.noRoutes}});return(n,s)=>(v(),E("div",to,[b(ye,{class:ee(l.value.color)},null,8,["class"]),d("span",oo,k(l.value.message),1)]))}}),lo={class:"flex space-x-2"},so={class:"mt-2"},ao={class:"mb-2 text-sm"},no=y({__name:"AllRoutesSuccessState",props:{totalRoutes:{}},emits:["go-to-main"],setup(a,{emit:e}){const t=e,r=()=>{t("go-to-main")};return(l,n)=>(v(),E("div",lo,[d("div",so,[b(o(ve),{class:"size-6"})]),d("div",null,[n[1]||(n[1]=d("h2",{class:"text-lg font-medium"},"All Routes Successfully Extracted!",-1)),d("p",ao," No extraction errors found in "+k(a.totalRoutes)+" routes. ",1),b(o(G),{size:"xs",onClick:r},{default:m(()=>[b(o(pe),{class:"mr-1 size-3"}),n[0]||(n[0]=q(" Explore Routes ",-1))]),_:1})])]))}}),io={class:"flex space-x-2"},co={class:"mt-2"},uo=y({__name:"LoadingRoutesState",setup(a){return(e,t)=>(v(),E("div",io,[d("div",co,[b(o(he),{class:"size-6 animate-spin"})]),t[0]||(t[0]=d("div",null,[d("h2",{class:"text-lg font-medium"},"Loading Routes..."),d("p",{class:"mb-2 text-sm"}," Extracting route information from your application. ")],-1))]))}}),fo=y({__name:"NoRoutesState",setup(a){return(e,t)=>(v(),E("div",null,[t[0]||(t[0]=d("h2",{class:"text-lg font-medium"},"No Routes Found",-1)),t[1]||(t[1]=d("p",{class:"mb-2 text-sm"}," No routes have been extracted yet. Check your configuration. ",-1)),b(we)]))}});function po(){const a=ie(),e=(s,i,c)=>({...s,resource:i,version:c,schema:{...s.schema,extractionErrors:s.schema.extractionErrors??""}}),t=s=>!!s.schema.extractionErrors,r=()=>a.routes?Object.values(a.routes).flat().flatMap(s=>s.routes):[],l=C(()=>{const s=r(),i=s.length,c=s.filter(t).length,f=i-c,_=i===0?0:Math.round(c/i*100);return{total:i,withErrors:c,withoutErrors:f,errorRate:_}}),n=C(()=>a.routes?Object.entries(a.routes).flatMap(([s,i])=>i.flatMap(c=>c.routes.filter(t).map(f=>e(f,c.resource,s)))):[]);return{routeStatistics:l,displayableRoutesWithErrors:n}}const vo={key:0,class:"xs:block text-muted-foreground mr-3 hidden text-xs"},ho={class:"xs:inline ml-1 hidden"},xo=y({name:"StatusPage",__name:"Status",setup(a){const e=ie(),t=qe(),{routeStatistics:r,displayableRoutesWithErrors:l}=po(),n=w(null),s=w(null),i=C(()=>r.value.total),c=C(()=>r.value.withErrors),f=C(()=>r.value.withoutErrors),_=C(()=>r.value.errorRate),g=C(()=>n.value?He(n.value).value:""),p=()=>{t.push({name:"main"})},$=async()=>{n.value=new Date,s.value=null,await e.initializeRoutes()},z=u=>{s.value=u};We(()=>{e.initializeRoutes(),n.value=new Date});const P=Be("panels-group"),D=Ce([600],P).thresholds[0];return(u,S)=>(v(),x(Ve,{title:"Status",icon:o(Me)},{"header-actions":m(()=>[n.value?(v(),E("div",vo,[b(o(Ie),{class:"mr-1 inline size-3"}),d("span",null,k(g.value),1)])):B("",!0),b(o(G),{variant:"outline",size:"xs",disabled:o(e).isLoading,onClick:$},{default:m(()=>[b(o(he),{class:ee([{"animate-spin":o(e).isLoading},"h-3 w-3"])},null,8,["class"]),d("span",ho,k(o(e).isLoading?"Syncing":"Refresh"),1)]),_:1},8,["disabled"])]),"subheader-left":m(()=>[b(eo,{"total-routes":i.value,"routes-with-errors":c.value,"routes-without-errors":f.value,"error-rate":_.value},null,8,["total-routes","routes-with-errors","routes-without-errors","error-rate"])]),"subheader-right":m(()=>[b(ro,{"routes-with-errors":c.value,"total-routes":i.value},null,8,["routes-with-errors","total-routes"])]),content:m(()=>[o(l).length>0&&!o(e).isLoading?(v(),x(o(Re),{key:0,ref:"panels-group","auto-save-id":"status-splitter-group",direction:o(D),class:"h-full"},{default:m(()=>[b(o(oe),{"min-size":25,"default-size":50},{default:m(()=>[b(Ot,{routes:o(l),"selected-route":s.value,onRouteSelected:z},null,8,["routes","selected-route"])]),_:1}),b(o($e)),b(o(oe),{"min-size":25,"default-size":50},{default:m(()=>[b(Lt,{"selected-route":s.value},null,8,["selected-route"])]),_:1})]),_:1},8,["direction"])):(v(),x(ne,{key:1,class:"h-full"},{default:m(()=>[!o(e).isLoading&&i.value>0?(v(),x(no,{key:0,"total-routes":i.value,onGoToMain:p},null,8,["total-routes"])):!o(e).isLoading&&i.value===0?(v(),x(fo,{key:1})):(v(),x(uo,{key:2}))]),_:1}))]),_:1},8,["icon"]))}});export{xo as default};