@velkymx/vibeui 0.8.1 → 0.8.2

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 (52) hide show
  1. package/CLAUDE.md +48 -0
  2. package/dist/vibeui.css +1 -1
  3. package/dist/vibeui.es.js +149 -148
  4. package/dist/vibeui.umd.js +1 -1
  5. package/docs/README.md +153 -0
  6. package/docs/components/advanced/popover.md +150 -0
  7. package/docs/components/advanced/scrollspy.md +64 -0
  8. package/docs/components/advanced/tooltip.md +111 -0
  9. package/docs/components/card/card.md +215 -0
  10. package/docs/components/core/alert.md +72 -0
  11. package/docs/components/core/badge.md +81 -0
  12. package/docs/components/core/button-group.md +105 -0
  13. package/docs/components/core/button.md +127 -0
  14. package/docs/components/core/close-button.md +82 -0
  15. package/docs/components/core/link.md +36 -0
  16. package/docs/components/core/placeholder.md +135 -0
  17. package/docs/components/core/spinner.md +109 -0
  18. package/docs/components/data/datatable.md +416 -0
  19. package/docs/components/interactive/accordion.md +92 -0
  20. package/docs/components/interactive/carousel.md +97 -0
  21. package/docs/components/interactive/collapse.md +105 -0
  22. package/docs/components/interactive/dropdown.md +93 -0
  23. package/docs/components/interactive/modal.md +148 -0
  24. package/docs/components/interactive/offcanvas.md +89 -0
  25. package/docs/components/interactive/toast.md +114 -0
  26. package/docs/components/layout/col.md +123 -0
  27. package/docs/components/layout/container.md +59 -0
  28. package/docs/components/layout/row.md +113 -0
  29. package/docs/components/list/list-group.md +221 -0
  30. package/docs/components/navigation/breadcrumb.md +116 -0
  31. package/docs/components/navigation/nav.md +88 -0
  32. package/docs/components/navigation/navbar.md +106 -0
  33. package/docs/components/navigation/pagination.md +146 -0
  34. package/docs/components/progress/progress.md +182 -0
  35. package/docs/composables/back-button.md +28 -0
  36. package/docs/composables/breakpoints.md +54 -0
  37. package/docs/composables/color-mode.md +141 -0
  38. package/docs/forms/README.md +88 -0
  39. package/docs/forms/form-checkbox.md +50 -0
  40. package/docs/forms/form-datepicker.md +50 -0
  41. package/docs/forms/form-group.md +80 -0
  42. package/docs/forms/form-input.md +55 -0
  43. package/docs/forms/form-radio.md +58 -0
  44. package/docs/forms/form-select.md +54 -0
  45. package/docs/forms/form-spinbutton.md +55 -0
  46. package/docs/forms/form-switch.md +47 -0
  47. package/docs/forms/form-textarea.md +51 -0
  48. package/docs/forms/form-wysiwyg.md +64 -0
  49. package/docs/forms/input-group.md +51 -0
  50. package/docs/forms/validation.md +599 -0
  51. package/llms.txt +422 -0
  52. package/package.json +5 -2
@@ -1 +1 @@
1
- (function(B,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(B=typeof globalThis<"u"?globalThis:B||self,e(B.VibeUI={},B.Vue))})(this,(function(B,e){"use strict";const Y=e.defineComponent({__name:"VibeAlert",props:{variant:{type:String,default:"primary"},subtle:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!0},dismissable:{type:Boolean,default:!1},message:{type:String,required:!0},fade:{type:Boolean,default:!0}},emits:["update:modelValue","close","closed","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.ref(null),i=e.ref(null),n=e.ref(a.modelValue),s=()=>{o("close")},u=()=>{n.value=!1,o("update:modelValue",!1),o("closed")};e.onMounted(async()=>{if(l.value)try{const g=(await import("bootstrap")).Alert;i.value=new g(l.value),l.value.addEventListener("close.bs.alert",s),l.value.addEventListener("closed.bs.alert",u)}catch(m){o("component-error",{message:"Bootstrap JS not loaded. Alert will use basic Vue logic.",componentName:"VibeAlert",originalError:m})}}),e.onBeforeUnmount(()=>{l.value&&(l.value.removeEventListener("close.bs.alert",s),l.value.removeEventListener("closed.bs.alert",u)),i.value&&(i.value.dispose(),i.value=null)}),e.watch(()=>a.modelValue,m=>{m?n.value=!0:i.value&&n.value?i.value.close():n.value=!1});const c=()=>{i.value?i.value.close():(n.value=!1,o("update:modelValue",!1),o("closed"))},b=e.computed(()=>{const m=["alert"];return a.subtle?m.push(`bg-${a.variant}-subtle`,`text-${a.variant}-emphasis`,`border-${a.variant}-subtle`):m.push(`alert-${a.variant}`),a.dismissable&&m.push("alert-dismissible"),a.fade&&m.push("fade","show"),m.join(" ")});return(m,g)=>n.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"alertRef",ref:l,class:e.normalizeClass(b.value),role:"alert"},[e.renderSlot(m.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.message),1)]),t.dismissable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"btn-close","aria-label":"Close",onClick:c})):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)}}),J=e.defineComponent({__name:"VibeBadge",props:{variant:{type:String,default:"primary"},subtle:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},tag:{type:String,default:"span"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["badge"];return a.subtle?l.push(`bg-${a.variant}-subtle`,`text-${a.variant}-emphasis`):l.push(`bg-${a.variant}`),a.pill&&l.push("rounded-pill"),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),K=e.defineComponent({__name:"VibeButton",props:{variant:{type:String,default:"primary"},size:{type:String,default:void 0},outline:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{type:String,default:"button"},href:{type:String,default:void 0},to:{type:[String,Object],default:void 0},active:{type:Boolean,default:!1},focusRing:{type:Boolean,default:!1}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>a.href?"a":a.to?"router-link":"button"),i=e.computed(()=>{const s=["btn"];return a.outline?s.push(`btn-outline-${a.variant}`):s.push(`btn-${a.variant}`),a.size&&s.push(`btn-${a.size}`),a.active&&s.push("active"),a.focusRing&&s.push("focus-ring"),s.join(" ")}),n=s=>{a.disabled||o("click",s)};return(s,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value),{class:e.normalizeClass(i.value),type:t.href||t.to?void 0:t.type,href:t.href,to:t.to,disabled:t.disabled,"aria-disabled":t.disabled,onClick:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},8,["class","type","href","to","disabled","aria-disabled"]))}}),Oe=["role","aria-label"],W=e.defineComponent({__name:"VibeButtonGroup",props:{size:{type:String,default:void 0},vertical:{type:Boolean,default:!1},role:{type:String,default:"group"},ariaLabel:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[a.vertical?"btn-group-vertical":"btn-group"];return a.size&&l.push(`btn-group-${a.size}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.value),role:t.role,"aria-label":t.ariaLabel},[e.renderSlot(l.$slots,"default")],10,Oe))}}),He=["disabled","aria-label"],Q=e.defineComponent({__name:"VibeCloseButton",props:{disabled:{type:Boolean,default:!1},white:{type:Boolean,default:!1},ariaLabel:{type:String,default:"Close"}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=i=>{a.disabled||o("click",i)};return(i,n)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["btn-close",{"btn-close-white":t.white}]),disabled:t.disabled,"aria-label":t.ariaLabel,onClick:l},null,10,He))}}),Ge={class:"visually-hidden"},Z=e.defineComponent({__name:"VibeSpinner",props:{variant:{type:String,default:void 0},type:{type:String,default:"border"},size:{type:String,default:void 0},label:{type:String,default:"Loading..."},tag:{type:String,default:"div"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[`spinner-${a.type}`];return a.variant&&l.push(`text-${a.variant}`),a.size&&l.push(`spinner-${a.type}-${a.size}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value),role:"status"},{default:e.withCtx(()=>[e.createElementVNode("span",Ge,e.toDisplayString(t.label),1)]),_:1},8,["class"]))}}),_=e.defineComponent({__name:"VibePlaceholder",props:{variant:{type:String,default:void 0},size:{type:String,default:void 0},animation:{type:String,default:void 0},width:{type:[String,Number],default:void 0},tag:{type:String,default:"span"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const n=["placeholder"];return a.variant&&n.push(`bg-${a.variant}`),a.size&&n.push(`placeholder-${a.size}`),n.join(" ")}),l=e.computed(()=>{if(a.animation)return`placeholder-${a.animation}`}),i=e.computed(()=>{if(a.width)return{width:typeof a.width=="number"?`${a.width}%`:a.width}});return(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(l.value)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.value),style:e.normalizeStyle(i.value)},[e.renderSlot(n.$slots,"default")],6)]),_:3},8,["class"]))}}),ee=e.defineComponent({__name:"VibeContainer",props:{fluid:{type:[Boolean,String],default:!1},tag:{type:String,default:"div"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>a.fluid===!1?"container":a.fluid===!0?"container-fluid":`container-${a.fluid}`);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),te=e.defineComponent({__name:"VibeRow",props:{tag:{type:String,default:"div"},gutters:{type:Number,default:void 0},guttersX:{type:Number,default:void 0},guttersY:{type:Number,default:void 0},guttersSm:{type:Number,default:void 0},guttersMd:{type:Number,default:void 0},guttersLg:{type:Number,default:void 0},guttersXl:{type:Number,default:void 0},guttersXxl:{type:Number,default:void 0},guttersXSm:{type:Number,default:void 0},guttersXMd:{type:Number,default:void 0},guttersXLg:{type:Number,default:void 0},guttersXXl:{type:Number,default:void 0},guttersXXxl:{type:Number,default:void 0},guttersYSm:{type:Number,default:void 0},guttersYMd:{type:Number,default:void 0},guttersYLg:{type:Number,default:void 0},guttersYXl:{type:Number,default:void 0},guttersYXxl:{type:Number,default:void 0},rowCols:{type:Number,default:void 0},rowColsSm:{type:Number,default:void 0},rowColsMd:{type:Number,default:void 0},rowColsLg:{type:Number,default:void 0},rowColsXl:{type:Number,default:void 0},rowColsXxl:{type:Number,default:void 0},alignItems:{type:String,default:void 0},justifyContent:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["row"];a.gutters!==void 0&&l.push(`g-${a.gutters}`),a.guttersX!==void 0&&l.push(`gx-${a.guttersX}`),a.guttersY!==void 0&&l.push(`gy-${a.guttersY}`);const i=["sm","md","lg","xl","xxl"];return i.forEach(n=>{const s=n.charAt(0).toUpperCase()+n.slice(1),u=`gutters${s}`;a[u]!==void 0&&l.push(`g-${n}-${a[u]}`);const c=`guttersX${s}`;a[c]!==void 0&&l.push(`gx-${n}-${a[c]}`);const b=`guttersY${s}`;a[b]!==void 0&&l.push(`gy-${n}-${a[b]}`)}),a.rowCols!==void 0&&l.push(`row-cols-${a.rowCols}`),i.forEach(n=>{const s=`rowCols${n.charAt(0).toUpperCase()+n.slice(1)}`;a[s]!==void 0&&l.push(`row-cols-${n}-${a[s]}`)}),a.alignItems&&l.push(`align-items-${a.alignItems}`),a.justifyContent&&l.push(`justify-content-${a.justifyContent}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),ae=e.defineComponent({__name:"VibeCol",props:{tag:{type:String,default:"div"},cols:{type:[Number,String,Boolean],default:void 0},sm:{type:[Number,String,Boolean],default:void 0},md:{type:[Number,String,Boolean],default:void 0},lg:{type:[Number,String,Boolean],default:void 0},xl:{type:[Number,String,Boolean],default:void 0},xxl:{type:[Number,String,Boolean],default:void 0},offset:{type:Number,default:void 0},offsetSm:{type:Number,default:void 0},offsetMd:{type:Number,default:void 0},offsetLg:{type:Number,default:void 0},offsetXl:{type:Number,default:void 0},offsetXxl:{type:Number,default:void 0},order:{type:[Number,String],default:void 0},orderSm:{type:[Number,String],default:void 0},orderMd:{type:[Number,String],default:void 0},orderLg:{type:[Number,String],default:void 0},orderXl:{type:[Number,String],default:void 0},orderXxl:{type:[Number,String],default:void 0},alignSelf:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[];return a.cols!==void 0||a.sm!==void 0||a.md!==void 0||a.lg!==void 0||a.xl!==void 0||a.xxl!==void 0?(a.cols===!0?l.push("col"):a.cols==="auto"?l.push("col-auto"):a.cols&&l.push(`col-${a.cols}`),[{name:"sm",value:a.sm},{name:"md",value:a.md},{name:"lg",value:a.lg},{name:"xl",value:a.xl},{name:"xxl",value:a.xxl}].forEach(({name:s,value:u})=>{u===!0?l.push(`col-${s}`):u==="auto"?l.push(`col-${s}-auto`):u!==void 0&&l.push(`col-${s}-${u}`)})):l.push("col"),a.offset!==void 0&&l.push(`offset-${a.offset}`),a.offsetSm!==void 0&&l.push(`offset-sm-${a.offsetSm}`),a.offsetMd!==void 0&&l.push(`offset-md-${a.offsetMd}`),a.offsetLg!==void 0&&l.push(`offset-lg-${a.offsetLg}`),a.offsetXl!==void 0&&l.push(`offset-xl-${a.offsetXl}`),a.offsetXxl!==void 0&&l.push(`offset-xxl-${a.offsetXxl}`),a.order!==void 0&&l.push(`order-${a.order}`),a.orderSm!==void 0&&l.push(`order-sm-${a.orderSm}`),a.orderMd!==void 0&&l.push(`order-md-${a.orderMd}`),a.orderLg!==void 0&&l.push(`order-lg-${a.orderLg}`),a.orderXl!==void 0&&l.push(`order-xl-${a.orderXl}`),a.orderXxl!==void 0&&l.push(`order-xxl-${a.orderXxl}`),a.alignSelf&&l.push(`align-self-${a.alignSelf}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),Xe=["src","alt"],Ue={key:1,class:"card-header"},Ye={key:2,class:"card-body"},Je={key:0,class:"card-title"},Ke={key:1,class:"card-text"},We={key:3,class:"card-footer"},Qe=["src","alt"],oe=e.defineComponent({__name:"VibeCard",props:{variant:{type:String,default:void 0},border:{type:String,default:void 0},textVariant:{type:String,default:void 0},tag:{type:String,default:"div"},title:{type:String,default:void 0},body:{type:String,default:void 0},header:{type:String,default:void 0},footer:{type:String,default:void 0},imgSrc:{type:String,default:void 0},imgAlt:{type:String,default:""},imgTop:{type:Boolean,default:!0},imgBottom:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["card"];return a.variant&&l.push(`text-bg-${a.variant}`),a.border&&l.push(`border-${a.border}`),a.textVariant&&l.push(`text-${a.textVariant}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[t.imgSrc&&t.imgTop?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.imgSrc,alt:t.imgAlt,class:"card-img-top"},null,8,Xe)):e.createCommentVNode("",!0),t.header||l.$slots.header?(e.openBlock(),e.createElementBlock("div",Ue,[e.renderSlot(l.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.header),1)])])):e.createCommentVNode("",!0),t.title||t.body||l.$slots.default||l.$slots.body?(e.openBlock(),e.createElementBlock("div",Ye,[t.title||l.$slots.title?(e.openBlock(),e.createElementBlock("h5",Je,[e.renderSlot(l.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)])])):e.createCommentVNode("",!0),t.body||l.$slots.body?(e.openBlock(),e.createElementBlock("p",Ke,[e.renderSlot(l.$slots,"body",{},()=>[e.createTextVNode(e.toDisplayString(t.body),1)])])):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default")])):e.createCommentVNode("",!0),t.footer||l.$slots.footer?(e.openBlock(),e.createElementBlock("div",We,[e.renderSlot(l.$slots,"footer",{},()=>[e.createTextVNode(e.toDisplayString(t.footer),1)])])):e.createCommentVNode("",!0),t.imgSrc&&t.imgBottom?(e.openBlock(),e.createElementBlock("img",{key:4,src:t.imgSrc,alt:t.imgAlt,class:"card-img-bottom"},null,8,Qe)):e.createCommentVNode("",!0)]),_:3},8,["class"]))}}),Ze=["aria-label"],_e={class:"breadcrumb"},et=["aria-current"],le=e.defineComponent({__name:"VibeBreadcrumb",props:{ariaLabel:{type:String,default:"breadcrumb"},items:{type:Array,required:!0}},emits:["item-click","component-error"],setup(t,{emit:r}){const a=r,o=(l,i,n)=>{l.active||a("item-click",{item:l,index:i,event:n})};return(l,i)=>(e.openBlock(),e.createElementBlock("nav",{"aria-label":t.ariaLabel},[e.createElementVNode("ol",_e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(n,s)=>(e.openBlock(),e.createElementBlock("li",{key:s,class:e.normalizeClass(["breadcrumb-item",{active:n.active}]),"aria-current":n.active?"page":void 0},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.to?"router-link":"span"),{href:n.href,to:n.to,onClick:u=>o(n,s,u)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"item",{item:n,index:s},()=>[e.createTextVNode(e.toDisplayString(n.text),1)])]),_:2},1032,["href","to","onClick"]))],10,et))),128))])],8,Ze))}}),tt={class:"dropdown-menu"},at={key:0,class:"dropdown-divider"},ot={key:1,class:"dropdown-header"},ne=e.defineComponent({__name:"VibeNav",props:{items:{type:Array,required:!0},pills:{type:Boolean,default:!1},tabs:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},justified:{type:Boolean,default:!1},fill:{type:Boolean,default:!1},underline:{type:Boolean,default:!1},tag:{type:String,default:"ul"}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=new Map,s=e.computed(()=>{const d=["nav"];return o.pills&&d.push("nav-pills"),o.tabs&&d.push("nav-tabs"),o.vertical&&d.push("flex-column"),o.justified&&d.push("nav-justified"),o.fill&&d.push("nav-fill"),o.underline&&d.push("nav-underline"),d.join(" ")}),u=d=>l("show",d),c=d=>l("shown",d),b=d=>l("hide",d),m=d=>l("hidden",d),g=async()=>{if(i.value)try{const f=(await import("bootstrap")).Tab;i.value.querySelectorAll('[data-bs-toggle="tab"], [data-bs-toggle="pill"]').forEach(y=>{const C=y;if(!n.has(C)){const k=new f(C);n.set(C,k),C.addEventListener("show.bs.tab",u),C.addEventListener("shown.bs.tab",c),C.addEventListener("hide.bs.tab",b),C.addEventListener("hidden.bs.tab",m)}})}catch(d){l("component-error",{message:"Bootstrap JS not loaded. Nav will use basic Vue logic.",componentName:"VibeNav",originalError:d})}};e.onMounted(g),e.onBeforeUnmount(()=>{n.forEach((d,f)=>{f.removeEventListener("show.bs.tab",u),f.removeEventListener("shown.bs.tab",c),f.removeEventListener("hide.bs.tab",b),f.removeEventListener("hidden.bs.tab",m),d.dispose()}),n.clear()}),e.watch(()=>o.items,async()=>{await e.nextTick(),await g()},{deep:!0});const h=(d,f,p)=>{d.disabled||l("item-click",{item:d,index:f,event:p})};return r({bsInstances:n,refresh:g}),(d,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"navRef",ref:i,class:e.normalizeClass(s.value)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(p,y)=>(e.openBlock(),e.createElementBlock("li",{key:y,class:e.normalizeClass(["nav-item",{dropdown:p.children&&p.children.length>0}])},[p.children&&p.children.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("a",{class:e.normalizeClass(["nav-link dropdown-toggle",{active:p.active,disabled:p.disabled}]),"data-bs-toggle":"dropdown",href:"#",role:"button","aria-expanded":"false"},e.toDisplayString(p.text),3),e.createElementVNode("ul",tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.children,(C,k)=>(e.openBlock(),e.createElementBlock("li",{key:k},[C.divider?(e.openBlock(),e.createElementBlock("hr",at)):C.header?(e.openBlock(),e.createElementBlock("h6",ot,e.toDisplayString(C.text),1)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(C.href?"a":C.to?"router-link":"button"),{key:2,class:e.normalizeClass(["dropdown-item",{active:C.active,disabled:C.disabled}]),href:C.href,to:C.to,type:!C.href&&!C.to?"button":void 0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.text),1)]),_:2},1032,["class","href","to","type"]))]))),128))])],64)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.href?"a":p.to?"router-link":"button"),{key:1,class:e.normalizeClass(["nav-link",{active:p.active,disabled:p.disabled}]),href:p.href,to:p.to,type:!p.href&&!p.to?"button":void 0,"aria-current":p.active?"page":void 0,"data-bs-toggle":(t.tabs||t.pills)&&p.href&&p.href.startsWith("#")?t.tabs?"tab":"pill":void 0,"data-bs-target":p.href&&p.href.startsWith("#")?p.href:void 0,onClick:C=>h(p,y,C)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.text),1)]),_:2},1032,["class","href","to","type","aria-current","data-bs-toggle","data-bs-target","onClick"]))],2))),128))]),_:1},8,["class"]))}}),lt=e.defineComponent({__name:"VibeNavbar",props:{variant:{type:String,default:"light"},theme:{type:String,default:void 0},expand:{type:[Boolean,String],default:"lg"},container:{type:[Boolean,String],default:!0},position:{type:String,default:void 0},tag:{type:String,default:"nav"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.reactive({}),l=u=>{o[u]=!o[u]};e.provide("vibeNavbarCollapse",{collapseStates:o,toggleCollapse:l});const i=e.computed(()=>{const u=["navbar"];return a.expand===!0?u.push("navbar-expand"):typeof a.expand=="string"&&u.push(`navbar-expand-${a.expand}`),u.push(`bg-${a.variant}`),a.position&&u.push(a.position),u.join(" ")}),n=e.computed(()=>{if(a.theme)return a.theme;if(a.variant==="dark")return"dark";if(a.variant==="light")return"light"}),s=e.computed(()=>{if(a.container!==!1)return a.container===!0?"container-fluid":`container-${a.container}`});return(u,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(i.value),"data-bs-theme":n.value},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(s.value)},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2)):e.renderSlot(u.$slots,"default",{key:1},void 0,!0)]),_:3},8,["class","data-bs-theme"]))}}),I=(t,r)=>{const a=t.__vccOpts||t;for(const[o,l]of r)a[o]=l;return a},ie=I(lt,[["__scopeId","data-v-8228b170"]]),re=e.defineComponent({__name:"VibeNavbarBrand",props:{href:{type:String,default:void 0},to:{type:[String,Object],default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=a.href?"a":a.to?"router-link":"span";return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(o)),{class:"navbar-brand",href:t.href,to:t.to},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["href","to"]))}}),nt=["data-bs-target","aria-controls","aria-expanded","aria-label"],se=e.defineComponent({__name:"VibeNavbarToggle",props:{target:{type:String,required:!0},ariaLabel:{type:String,default:"Toggle navigation"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.inject("vibeNavbarCollapse",null),l=e.computed(()=>o?.collapseStates[a.target]??!1),i=async()=>{o&&o.toggleCollapse(a.target);try{const n=document.getElementById(a.target);n&&(await import("bootstrap")).Collapse.getOrCreateInstance(n).toggle()}catch{}};return(n,s)=>(e.openBlock(),e.createElementBlock("button",{class:"navbar-toggler",type:"button","data-bs-target":`#${t.target}`,"data-bs-toggle":"collapse","aria-controls":t.target,"aria-expanded":l.value,"aria-label":t.ariaLabel,onClick:i},[...s[0]||(s[0]=[e.createElementVNode("span",{class:"navbar-toggler-icon"},null,-1)])],8,nt))}}),it={class:"dropdown-menu"},rt={key:0},st={key:1},dt={class:"dropdown-header"},ct={key:2},de=e.defineComponent({__name:"VibeNavbarNav",props:{tag:{type:String,default:"ul"},items:{type:Array,default:void 0}},emits:["item-click","dropdown-item-click","component-error"],setup(t,{emit:r}){const a=r,o=c=>{const b=["nav-item"];return c.children?.length&&b.push("dropdown"),b.join(" ")},l=c=>{const b=["nav-link"];return c.active&&b.push("active"),c.disabled&&b.push("disabled"),c.children?.length&&b.push("dropdown-toggle"),b.join(" ")},i=c=>c.href?"a":c.to?"router-link":"a",n=c=>{const b=["dropdown-item"];return c.active&&b.push("active"),c.disabled&&b.push("disabled"),b.join(" ")},s=(c,b,m)=>{c.disabled||a("item-click",{item:c,index:b,event:m})},u=(c,b,m,g,h)=>{!m.disabled&&!m.divider&&!m.header&&a("dropdown-item-click",{item:c,itemIndex:b,child:m,childIndex:g,event:h})};return(c,b)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:"navbar-nav"},{default:e.withCtx(()=>[t.items&&t.items.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.items,(m,g)=>(e.openBlock(),e.createElementBlock("li",{key:g,class:e.normalizeClass(o(m))},[m.children?.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("a",{class:e.normalizeClass(l(m)),href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[e.renderSlot(c.$slots,"item",{item:m,index:g},()=>[e.createTextVNode(e.toDisplayString(m.text),1)])],2),e.createElementVNode("ul",it,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.children,(h,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[h.divider?(e.openBlock(),e.createElementBlock("li",rt,[...b[0]||(b[0]=[e.createElementVNode("hr",{class:"dropdown-divider"},null,-1)])])):h.header?(e.openBlock(),e.createElementBlock("li",st,[e.createElementVNode("h6",dt,e.toDisplayString(h.text),1)])):(e.openBlock(),e.createElementBlock("li",ct,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.href?"a":h.to?"router-link":"button"),{class:e.normalizeClass(n(h)),href:h.href,to:h.to,type:!h.href&&!h.to?"button":void 0,onClick:f=>u(m,g,h,d,f)},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"dropdown-item",{item:m,child:h,index:g,childIndex:d},()=>[e.createTextVNode(e.toDisplayString(h.text),1)])]),_:2},1032,["class","href","to","type","onClick"]))]))],64))),128))])],64)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i(m)),{key:1,class:e.normalizeClass(l(m)),href:m.href,to:m.to,"aria-current":m.active?"page":void 0,"aria-disabled":m.disabled,onClick:h=>s(m,g,h)},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"item",{item:m,index:g},()=>[e.createTextVNode(e.toDisplayString(m.text),1)])]),_:2},1032,["class","href","to","aria-current","aria-disabled","onClick"]))],2))),128)):e.renderSlot(c.$slots,"default",{key:1})]),_:3}))}}),ut=["aria-label"],mt=["disabled","aria-disabled"],ft=["aria-current","onClick"],pt=["disabled","aria-disabled"],ce=e.defineComponent({__name:"VibePagination",props:{size:{type:String,default:void 0},ariaLabel:{type:String,default:"Pagination"},totalPages:{type:Number,required:!0},currentPage:{type:Number,default:1},showPrevNext:{type:Boolean,default:!0},prevText:{type:String,default:"Previous"},nextText:{type:String,default:"Next"}},emits:["update:currentPage","page-click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const c=["pagination"];return a.size&&c.push(`pagination-${a.size}`),c.join(" ")}),i=e.computed(()=>Array.from({length:a.totalPages},(c,b)=>b+1)),n=c=>{c>=1&&c<=a.totalPages&&(o("update:currentPage",c),o("page-click",c))},s=e.computed(()=>a.currentPage===1),u=e.computed(()=>a.currentPage===a.totalPages);return(c,b)=>(e.openBlock(),e.createElementBlock("nav",{"aria-label":t.ariaLabel},[e.createElementVNode("ul",{class:e.normalizeClass(l.value)},[t.showPrevNext?(e.openBlock(),e.createElementBlock("li",{key:0,class:e.normalizeClass(["page-item",{disabled:s.value}])},[e.createElementVNode("button",{class:"page-link",type:"button",disabled:s.value,"aria-disabled":s.value,onClick:b[0]||(b[0]=m=>n(t.currentPage-1))},[e.renderSlot(c.$slots,"prev",{disabled:s.value},()=>[e.createTextVNode(e.toDisplayString(t.prevText),1)])],8,mt)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m,class:e.normalizeClass(["page-item",{active:m===t.currentPage}])},[e.createElementVNode("button",{class:"page-link",type:"button","aria-current":m===t.currentPage?"page":void 0,onClick:g=>n(m)},[e.renderSlot(c.$slots,"page",{page:m,active:m===t.currentPage},()=>[e.createTextVNode(e.toDisplayString(m),1)])],8,ft)],2))),128)),t.showPrevNext?(e.openBlock(),e.createElementBlock("li",{key:1,class:e.normalizeClass(["page-item",{disabled:u.value}])},[e.createElementVNode("button",{class:"page-link",type:"button",disabled:u.value,"aria-disabled":u.value,onClick:b[1]||(b[1]=m=>n(t.currentPage+1))},[e.renderSlot(c.$slots,"next",{disabled:u.value},()=>[e.createTextVNode(e.toDisplayString(t.nextText),1)])],8,pt)],2)):e.createCommentVNode("",!0)],2)],8,ut))}}),bt=["id","aria-labelledby"],ue=e.defineComponent({__name:"VibeTabContent",props:{id:{type:String,default:void 0},tag:{type:String,default:"div"},panes:{type:Array,required:!0},fade:{type:Boolean,default:!0}},emits:["component-error","shown","hide","hidden"],setup(t,{emit:r}){const a=t,o=e.ref(null),l=new Map,i=n=>{const s=["tab-pane"];return a.fade&&s.push("fade"),n.active&&s.push("show","active"),s.join(" ")};return e.onMounted(async()=>{if(o.value)try{const s=(await import("bootstrap")).Tab}catch{}}),e.onBeforeUnmount(()=>{l.forEach(n=>n.dispose()),l.clear()}),(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{id:t.id,ref_key:"tabContentRef",ref:o,class:"tab-content"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.panes,(u,c)=>(e.openBlock(),e.createElementBlock("div",{key:u.id,id:u.id,class:e.normalizeClass(i(u)),role:"tabpanel","aria-labelledby":`${u.id}-tab`,tabindex:"0"},[e.renderSlot(n.$slots,"pane",{pane:u,index:c},()=>[e.createTextVNode(e.toDisplayString(u.content),1)])],10,bt))),128))]),_:3},8,["id"]))}}),me=e.defineComponent({__name:"VibeListGroup",props:{flush:{type:Boolean,default:!1},horizontal:{type:[Boolean,String],default:!1},numbered:{type:Boolean,default:!1},tag:{type:String,default:"ul"},items:{type:Array,required:!0}},emits:["item-click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const u=["list-group"];return a.flush&&u.push("list-group-flush"),a.numbered&&u.push("list-group-numbered"),a.horizontal===!0?u.push("list-group-horizontal"):typeof a.horizontal=="string"&&u.push(`list-group-horizontal-${a.horizontal}`),u.join(" ")}),i=u=>u.href?"a":u.to?"router-link":"li",n=u=>{const c=["list-group-item"];return u.active&&c.push("active"),u.disabled&&c.push("disabled"),u.variant&&c.push(`list-group-item-${u.variant}`),c.join(" ")},s=(u,c,b)=>{u.disabled||o("item-click",{item:u,index:c,event:b})};return(u,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(l.value)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(b,m)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i(b)),{key:m,class:e.normalizeClass(n(b)),href:b.href,to:b.to,"aria-disabled":b.disabled,"aria-current":b.active,onClick:g=>s(b,m,g)},{default:e.withCtx(()=>[e.renderSlot(u.$slots,"item",{item:b,index:m},()=>[e.createTextVNode(e.toDisplayString(b.text),1)])]),_:2},1032,["class","href","to","aria-disabled","aria-current","onClick"]))),128))]),_:3},8,["class"]))}}),ht=["aria-valuenow","aria-valuemax"],fe=e.defineComponent({__name:"VibeProgress",props:{height:{type:String,default:void 0},bars:{type:Array,required:!0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{if(a.height)return{height:a.height}}),l=s=>{const u=["progress-bar"];return s.variant&&u.push(`bg-${s.variant}`),(s.striped||s.animated)&&u.push("progress-bar-striped"),s.animated&&u.push("progress-bar-animated"),u.join(" ")},i=s=>{const u=s.max||100;return{width:`${Math.min(100,Math.max(0,s.value/u*100))}%`}},n=s=>s.label?s.label:s.showValue?`${s.value}%`:"";return(s,u)=>(e.openBlock(),e.createElementBlock("div",{class:"progress",style:e.normalizeStyle(o.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.bars,(c,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(l(c)),style:e.normalizeStyle(i(c)),role:"progressbar","aria-valuenow":c.value,"aria-valuemin":0,"aria-valuemax":c.max||100},[e.renderSlot(s.$slots,"label",{bar:c,index:b},()=>[e.createTextVNode(e.toDisplayString(n(c)),1)])],14,ht))),128))],4))}});let pe=0;function N(t="vibe"){const r=e.getCurrentInstance(),a=r?r.uid:"no-instance";return pe++,`${t}-${a}-${pe}`}const yt=["id"],gt={class:"accordion-header"},kt=["data-bs-target","aria-expanded","aria-controls","onClick"],Bt=["id","data-bs-parent"],St={class:"accordion-body"},be=e.defineComponent({__name:"VibeAccordion",props:{id:{type:String,default:()=>N("accordion")},flush:{type:Boolean,default:!1},items:{type:Array,required:!0},alwaysOpen:{type:Boolean,default:!1}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=new Map,s=h=>l("show",h),u=h=>l("shown",h),c=h=>l("hide",h),b=h=>l("hidden",h),m=async()=>{if(i.value)try{const d=(await import("bootstrap")).Collapse;i.value.querySelectorAll(".accordion-collapse").forEach(p=>{const y=p.id;if(!n.has(y)){const C=new d(p,{toggle:!1,parent:o.alwaysOpen?void 0:`#${o.id}`});n.set(y,C),p.addEventListener("show.bs.collapse",()=>s(y)),p.addEventListener("shown.bs.collapse",()=>u(y)),p.addEventListener("hide.bs.collapse",()=>c(y)),p.addEventListener("hidden.bs.collapse",()=>b(y)),o.items.find(E=>E.id===y)?.show&&C.show()}})}catch(h){l("component-error",{message:"Bootstrap JS not loaded. Accordion will use data attributes only.",componentName:"VibeAccordion",originalError:h})}};e.onMounted(m),e.onBeforeUnmount(()=>{n.forEach((h,d)=>{const f=document.getElementById(d);f&&(f.removeEventListener("show.bs.collapse",()=>s(d)),f.removeEventListener("shown.bs.collapse",()=>u(d)),f.removeEventListener("hide.bs.collapse",()=>c(d)),f.removeEventListener("hidden.bs.collapse",()=>b(d))),h.dispose()}),n.clear()}),e.watch(()=>o.items,async(h,d)=>{h.length!==d?.length&&(await e.nextTick(),await m()),h.forEach(f=>{const p=n.get(f.id);p&&(f.show?p.show():o.alwaysOpen||p.hide())})},{deep:!0});const g=(h,d)=>{l("item-click",{item:h,index:d})};return r({bsInstances:n,refresh:m}),(h,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"accordionRef",ref:i,id:t.id,class:e.normalizeClass(["accordion",{"accordion-flush":t.flush}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"accordion-item"},[e.createElementVNode("h2",gt,[e.createElementVNode("button",{class:e.normalizeClass(["accordion-button",{collapsed:!f.show}]),type:"button","data-bs-toggle":"collapse","data-bs-target":`#${f.id}`,"aria-expanded":f.show,"aria-controls":f.id,onClick:y=>g(f,p)},[e.renderSlot(h.$slots,"title",{item:f,index:p},()=>[e.createTextVNode(e.toDisplayString(f.title),1)])],10,kt)]),e.createElementVNode("div",{id:f.id,class:e.normalizeClass(["accordion-collapse","collapse",{show:f.show}]),"data-bs-parent":t.alwaysOpen?void 0:`#${t.id}`},[e.createElementVNode("div",St,[e.renderSlot(h.$slots,"content",{item:f,index:p},()=>[e.createTextVNode(e.toDisplayString(f.content),1)])])],10,Bt)]))),128))],10,yt))}}),he=e.defineComponent({__name:"VibeCollapse",props:{id:{type:String,default:()=>N("collapse")},modelValue:{type:Boolean,default:!1},tag:{type:String,default:"div"},horizontal:{type:Boolean,default:!1},isNav:{type:Boolean,default:!1}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeNavbarCollapse",null),i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=()=>{s.value=!0,o("show")},c=()=>{o("shown"),o("update:modelValue",!0)},b=()=>{o("hide")},m=()=>{s.value=!1,o("hidden"),o("update:modelValue",!1)};e.onMounted(async()=>{if(i.value)try{const f=(await import("bootstrap")).Collapse;n.value=new f(i.value,{toggle:!1}),i.value.addEventListener("show.bs.collapse",u),i.value.addEventListener("shown.bs.collapse",c),i.value.addEventListener("hide.bs.collapse",b),i.value.addEventListener("hidden.bs.collapse",m),(l&&a.id in l.collapseStates?l.collapseStates[a.id]:a.modelValue)&&n.value.show()}catch(d){o("component-error",{message:"Bootstrap JS not loaded. Collapse will use CSS classes only.",componentName:"VibeCollapse",originalError:d})}}),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.collapse",u),i.value.removeEventListener("shown.bs.collapse",c),i.value.removeEventListener("hide.bs.collapse",b),i.value.removeEventListener("hidden.bs.collapse",m)),n.value&&(n.value.dispose(),n.value=null)});const g=e.computed(()=>l&&a.id in l.collapseStates?l.collapseStates[a.id]:a.modelValue);e.watch(g,d=>{n.value&&(d&&!s.value?n.value.show():!d&&s.value&&n.value.hide())});const h=e.computed(()=>{const d=["collapse"];return a.isNav&&d.push("navbar-collapse"),a.horizontal&&d.push("collapse-horizontal"),!n.value&&g.value&&d.push("show"),d.join(" ")});return(d,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"collapseRef",ref:i,id:t.id,class:e.normalizeClass(h.value)},{default:e.withCtx(()=>[e.renderSlot(d.$slots,"default")]),_:3},8,["id","class"]))}}),Ct=["id","data-bs-auto-close"],Vt=["id","data-bs-auto-close"],vt=["aria-labelledby"],wt={key:0},$t={key:1},Et={class:"dropdown-header"},Nt={key:2},ye=e.defineComponent({__name:"VibeDropdown",props:{id:{type:String,default:()=>N("dropdown")},text:{type:String,default:"Dropdown"},variant:{type:String,default:"primary"},size:{type:String,default:void 0},split:{type:Boolean,default:!1},direction:{type:String,default:"down"},menuEnd:{type:Boolean,default:!1},items:{type:Array,required:!0},autoClose:{type:[Boolean,String],default:!0}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.computed(()=>o.direction==="up"?"dropup":o.direction==="end"?"dropend":o.direction==="start"?"dropstart":"dropdown"),u=e.computed(()=>{const k=["btn",`btn-${o.variant}`];return o.size&&k.push(`btn-${o.size}`),k.join(" ")}),c=e.computed(()=>{const k=["dropdown-menu"];return o.menuEnd&&k.push("dropdown-menu-end"),k.join(" ")}),b=k=>{const E=["dropdown-item"];return k.active&&E.push("active"),k.disabled&&E.push("disabled"),E.join(" ")},m=()=>l("show"),g=()=>l("shown"),h=()=>l("hide"),d=()=>l("hidden");e.onMounted(async()=>{if(i.value)try{const E=(await import("bootstrap")).Dropdown,w=i.value.querySelector(".dropdown-toggle");w&&(n.value=new E(w,{autoClose:o.autoClose}),w.addEventListener("show.bs.dropdown",m),w.addEventListener("shown.bs.dropdown",g),w.addEventListener("hide.bs.dropdown",h),w.addEventListener("hidden.bs.dropdown",d))}catch(k){l("component-error",{message:"Bootstrap JS not loaded. Dropdown will use data attributes only.",componentName:"VibeDropdown",originalError:k})}}),e.onBeforeUnmount(()=>{const k=i.value?.querySelector(".dropdown-toggle");k&&(k.removeEventListener("show.bs.dropdown",m),k.removeEventListener("shown.bs.dropdown",g),k.removeEventListener("hide.bs.dropdown",h),k.removeEventListener("hidden.bs.dropdown",d)),n.value&&(n.value.dispose(),n.value=null)});const f=(k,E,w)=>{!k.disabled&&!k.divider&&!k.header&&l("item-click",{item:k,index:E,event:w})};return r({show:()=>n.value?.show(),hide:()=>n.value?.hide(),toggle:()=>n.value?.toggle()}),(k,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dropdownRef",ref:i,class:e.normalizeClass(s.value)},[t.split?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:e.normalizeClass(u.value),type:"button"},[e.renderSlot(k.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])],2),e.createElementVNode("button",{id:t.id,type:"button",class:e.normalizeClass([u.value,"dropdown-toggle","dropdown-toggle-split"]),"data-bs-toggle":"dropdown","aria-expanded":"false","data-bs-auto-close":t.autoClose},[...E[0]||(E[0]=[e.createElementVNode("span",{class:"visually-hidden"},"Toggle Dropdown",-1)])],10,Vt)],64)):(e.openBlock(),e.createElementBlock("button",{key:0,id:t.id,class:e.normalizeClass([u.value,"dropdown-toggle"]),type:"button","data-bs-toggle":"dropdown","aria-expanded":"false","data-bs-auto-close":t.autoClose},[e.renderSlot(k.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])],10,Ct)),e.createElementVNode("ul",{class:e.normalizeClass(c.value),"aria-labelledby":t.id},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(w,L)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:L},[w.divider?(e.openBlock(),e.createElementBlock("li",wt,[...E[1]||(E[1]=[e.createElementVNode("hr",{class:"dropdown-divider"},null,-1)])])):w.header?(e.openBlock(),e.createElementBlock("li",$t,[e.createElementVNode("h6",Et,[e.renderSlot(k.$slots,"header",{item:w,index:L},()=>[e.createTextVNode(e.toDisplayString(w.text),1)])])])):(e.openBlock(),e.createElementBlock("li",Nt,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w.href?"a":w.to?"router-link":"button"),{class:e.normalizeClass(b(w)),href:w.href,to:w.to,type:!w.href&&!w.to?"button":void 0,disabled:w.disabled,onClick:F=>f(w,L,F)},{default:e.withCtx(()=>[e.renderSlot(k.$slots,"item",{item:w,index:L},()=>[e.createTextVNode(e.toDisplayString(w.text),1)])]),_:2},1032,["class","href","to","type","disabled","onClick"]))]))],64))),128))],10,vt)],2))}}),M=[];function ge(t){if(M.length>0){t.preventDefault();const r=M.pop();r&&r()}}function j(t){e.onMounted(()=>{M.push(t),M.length===1&&typeof document<"u"&&document.addEventListener("backbutton",ge)}),e.onUnmounted(()=>{const r=M.indexOf(t);r!==-1&&M.splice(r,1),M.length===0&&typeof document<"u"&&document.removeEventListener("backbutton",ge)})}const xt=["id","aria-labelledby","aria-hidden","data-bs-backdrop","data-bs-keyboard"],Tt={class:"modal-content"},Lt={key:0,class:"modal-header"},zt=["id"],Dt={class:"modal-body"},Mt={key:1,class:"modal-footer"},ke=I(e.defineComponent({__name:"VibeModal",props:{id:{type:String,default:()=>N("modal")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},size:{type:String,default:void 0},centered:{type:Boolean,default:!1},scrollable:{type:Boolean,default:!1},fullscreen:{type:[Boolean,String],default:!1},staticBackdrop:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},teleport:{type:[String,Boolean],default:"body"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>{const y=["modal-dialog"];return o.size&&y.push(`modal-${o.size}`),o.centered&&y.push("modal-dialog-centered"),o.scrollable&&y.push("modal-dialog-scrollable"),o.fullscreen===!0?y.push("modal-fullscreen"):typeof o.fullscreen=="string"&&y.push(`modal-fullscreen-${o.fullscreen}-down`),y.join(" ")}),c=()=>{s.value=!0,l("show")},b=()=>{l("shown"),l("update:modelValue",!0)},m=()=>{l("hide")},g=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},h=async()=>{if(i.value){n.value&&n.value.dispose();try{const C=(await import("bootstrap")).Modal;n.value=new C(i.value,{backdrop:o.staticBackdrop?"static":!0,keyboard:!o.staticBackdrop,focus:!0}),i.value.addEventListener("show.bs.modal",c),i.value.addEventListener("shown.bs.modal",b),i.value.addEventListener("hide.bs.modal",m),i.value.addEventListener("hidden.bs.modal",g),o.modelValue&&n.value.show()}catch(y){l("component-error",{message:"Bootstrap JS not loaded. Modal will use data attributes only.",componentName:"VibeModal",originalError:y})}}};e.onMounted(h),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.modal",c),i.value.removeEventListener("shown.bs.modal",b),i.value.removeEventListener("hide.bs.modal",m),i.value.removeEventListener("hidden.bs.modal",g)),n.value&&(s.value&&n.value.hide(),n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,y=>{n.value&&(y&&!s.value?n.value.show():!y&&s.value&&n.value.hide())}),e.watch(()=>o.staticBackdrop,h);const d=()=>n.value?.show(),f=()=>n.value?.hide(),p=()=>n.value?.handleUpdate();return j(()=>{s.value&&f()}),r({show:d,hide:f,handleUpdate:p,bsInstance:n}),(y,C)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{ref_key:"modalRef",ref:i,id:t.id,class:e.normalizeClass(["modal fade",{show:s.value}]),tabindex:"-1","aria-labelledby":`${t.id}-label`,"aria-hidden":!s.value,"data-bs-backdrop":t.staticBackdrop?"static":void 0,"data-bs-keyboard":!t.staticBackdrop},[e.createElementVNode("div",{class:e.normalizeClass(u.value)},[e.createElementVNode("div",Tt,[t.hideHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Lt,[e.createElementVNode("h5",{id:`${t.id}-label`,class:"modal-title"},[e.renderSlot(y.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)],!0)],8,zt),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:f})])),e.createElementVNode("div",Dt,[e.renderSlot(y.$slots,"default",{},void 0,!0)]),t.hideFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Mt,[e.renderSlot(y.$slots,"footer",{},()=>[e.createElementVNode("button",{type:"button",class:"btn btn-secondary",onClick:f},"Close")],!0)]))])],2)],10,xt)],8,["to","disabled"]))}}),[["__scopeId","data-v-c11ac690"]]),Ft=["id","aria-labelledby","data-bs-backdrop","data-bs-scroll"],It={class:"offcanvas-header"},Rt=["id"],Pt={class:"offcanvas-body"},Be=I(e.defineComponent({__name:"VibeOffcanvas",props:{id:{type:String,default:()=>N("offcanvas")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},placement:{type:String,default:"start"},backdrop:{type:[Boolean,String],default:!0},scroll:{type:Boolean,default:!1},teleport:{type:[String,Boolean],default:"body"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>`offcanvas offcanvas-${o.placement}`),c=()=>{s.value=!0,l("show")},b=()=>{l("shown"),l("update:modelValue",!0)},m=()=>{l("hide")},g=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},h=async()=>{if(i.value){n.value&&n.value.dispose();try{const y=(await import("bootstrap")).Offcanvas;n.value=new y(i.value,{backdrop:o.backdrop===!1?!1:o.backdrop==="static"?"static":!0,scroll:o.scroll,keyboard:o.backdrop!=="static"}),i.value.addEventListener("show.bs.offcanvas",c),i.value.addEventListener("shown.bs.offcanvas",b),i.value.addEventListener("hide.bs.offcanvas",m),i.value.addEventListener("hidden.bs.offcanvas",g),o.modelValue&&n.value.show()}catch(p){l("component-error",{message:"Bootstrap JS not loaded. Offcanvas will use data attributes only.",componentName:"VibeOffcanvas",originalError:p})}}};e.onMounted(h),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.offcanvas",c),i.value.removeEventListener("shown.bs.offcanvas",b),i.value.removeEventListener("hide.bs.offcanvas",m),i.value.removeEventListener("hidden.bs.offcanvas",g)),n.value&&(s.value&&n.value.hide(),n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,p=>{n.value&&(p&&!s.value?n.value.show():!p&&s.value&&n.value.hide())}),e.watch([()=>o.placement,()=>o.backdrop,()=>o.scroll],h);const d=()=>n.value?.show(),f=()=>n.value?.hide();return j(()=>{s.value&&f()}),r({show:d,hide:f,bsInstance:n}),(p,y)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{ref_key:"offcanvasRef",ref:i,id:t.id,class:e.normalizeClass(u.value),tabindex:"-1","aria-labelledby":`${t.id}-label`,"data-bs-backdrop":t.backdrop===!1?"false":t.backdrop==="static"?"static":"true","data-bs-scroll":t.scroll},[e.createElementVNode("div",It,[e.createElementVNode("h5",{id:`${t.id}-label`,class:"offcanvas-title"},[e.renderSlot(p.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)],!0)],8,Rt),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:f})]),e.createElementVNode("div",Pt,[e.renderSlot(p.$slots,"default",{},void 0,!0)])],10,Ft)],8,["to","disabled"]))}}),[["__scopeId","data-v-f03bd194"]]),qt=["id","data-bs-autohide","data-bs-delay"],jt={key:0,class:"toast-header"},At={class:"me-auto"},Ot={class:"toast-body"},Se=e.defineComponent({__name:"VibeToast",props:{id:{type:String,default:()=>N("toast")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},variant:{type:String,default:void 0},autohide:{type:Boolean,default:!0},delay:{type:Number,default:5e3},teleport:{type:[String,Boolean],default:"body"},placement:{type:String,default:"top-end"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>{const y=["toast"];return o.variant&&y.push(`text-bg-${o.variant}`),y.join(" ")}),c=e.computed(()=>{const y=["toast-container","position-fixed","p-3"],C=o.placement;return C.includes("top")&&y.push("top-0"),C.includes("bottom")&&y.push("bottom-0"),C.includes("middle")&&y.push("top-50","start-50","translate-middle"),C.includes("start")&&y.push("start-0"),C.includes("end")&&y.push("end-0"),C.includes("center")&&!C.includes("middle")&&y.push("start-50","translate-middle-x"),y.join(" ")}),b=()=>{s.value=!0,l("show")},m=()=>{l("shown"),l("update:modelValue",!0)},g=()=>{l("hide")},h=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},d=async()=>{if(i.value){n.value&&n.value.dispose();try{const C=(await import("bootstrap")).Toast;n.value=new C(i.value,{autohide:o.autohide,delay:o.delay}),i.value.addEventListener("show.bs.toast",b),i.value.addEventListener("shown.bs.toast",m),i.value.addEventListener("hide.bs.toast",g),i.value.addEventListener("hidden.bs.toast",h),o.modelValue&&n.value.show()}catch(y){l("component-error",{message:"Bootstrap JS not loaded. Toast will use data attributes only.",componentName:"VibeToast",originalError:y})}}};e.onMounted(d),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.toast",b),i.value.removeEventListener("shown.bs.toast",m),i.value.removeEventListener("hide.bs.toast",g),i.value.removeEventListener("hidden.bs.toast",h)),n.value&&(n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,y=>{n.value&&(y&&!s.value?n.value.show():!y&&s.value&&n.value.hide())}),e.watch([()=>o.autohide,()=>o.delay],d);const f=()=>n.value?.show(),p=()=>n.value?.hide();return r({show:f,hide:p,bsInstance:n}),(y,C)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{class:e.normalizeClass(c.value),style:{"z-index":"1090"}},[e.createElementVNode("div",{ref_key:"toastRef",ref:i,id:t.id,class:e.normalizeClass(u.value),role:"alert","aria-live":"assertive","aria-atomic":"true","data-bs-autohide":t.autohide,"data-bs-delay":t.delay},[t.title||y.$slots.header?(e.openBlock(),e.createElementBlock("div",jt,[e.renderSlot(y.$slots,"header",{},()=>[e.createElementVNode("strong",At,e.toDisplayString(t.title),1)]),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:p})])):e.createCommentVNode("",!0),e.createElementVNode("div",Ot,[e.renderSlot(y.$slots,"default")])],10,qt)],2)],8,["to","disabled"]))}}),Ht=["id","data-bs-ride","data-bs-interval","data-bs-keyboard","data-bs-pause","data-bs-wrap","data-bs-touch"],Gt={key:0,class:"carousel-indicators"},Xt=["data-bs-target","data-bs-slide-to","aria-current","aria-label"],Ut={class:"carousel-inner"},Yt=["data-bs-interval"],Jt=["src","alt"],Kt={key:0,class:"carousel-caption d-none d-md-block"},Wt={key:0},Qt={key:1},Zt=["data-bs-target"],_t=["data-bs-target"],Ce=e.defineComponent({__name:"VibeCarousel",props:{id:{type:String,default:()=>N("carousel")},modelValue:{type:Number,default:0},controls:{type:Boolean,default:!0},indicators:{type:Boolean,default:!0},ride:{type:[Boolean,String],default:!1},interval:{type:[Number,Boolean],default:5e3},keyboard:{type:Boolean,default:!0},pause:{type:[String,Boolean],default:"hover"},wrap:{type:Boolean,default:!0},touch:{type:Boolean,default:!0},dark:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},items:{type:Array,required:!0}},emits:["update:modelValue","slide","slid","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(o.modelValue),u=e.computed(()=>{const h=["carousel","slide"];return o.dark&&h.push("carousel-dark"),o.fade&&h.push("carousel-fade"),h.join(" ")}),c=h=>{l("slide",h)},b=h=>{s.value=h.to,l("update:modelValue",h.to),l("slid",h)},m=async()=>{if(i.value){n.value&&n.value.dispose();try{const d=(await import("bootstrap")).Carousel;n.value=new d(i.value,{interval:o.interval,keyboard:o.keyboard,pause:o.pause,ride:o.ride===!0?"carousel":o.ride,wrap:o.wrap,touch:o.touch}),i.value.addEventListener("slide.bs.carousel",c),i.value.addEventListener("slid.bs.carousel",b),o.modelValue!==0&&n.value.to(o.modelValue)}catch(h){l("component-error",{message:"Bootstrap JS not loaded. Carousel will use data attributes only.",componentName:"VibeCarousel",originalError:h})}}};e.onMounted(m),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("slide.bs.carousel",c),i.value.removeEventListener("slid.bs.carousel",b)),n.value&&(n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,h=>{n.value&&h!==s.value&&n.value.to(h)}),e.watch(()=>o.items,async()=>{await e.nextTick(),await m()},{deep:!0});const g=(h,d)=>h.alt?h.alt:h.caption?h.caption:h.captionText?h.captionText:`Carousel slide ${d+1}`;return r({bsInstance:n,refresh:m}),(h,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"carouselRef",ref:i,id:t.id,class:e.normalizeClass(u.value),"data-bs-ride":t.ride===!0?"carousel":t.ride,"data-bs-interval":t.interval,"data-bs-keyboard":t.keyboard,"data-bs-pause":t.pause,"data-bs-wrap":t.wrap,"data-bs-touch":t.touch},[t.indicators?(e.openBlock(),e.createElementBlock("div",Gt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("button",{key:`indicator-${p}`,type:"button","data-bs-target":`#${t.id}`,"data-bs-slide-to":p,class:e.normalizeClass({active:p===s.value}),"aria-current":p===s.value,"aria-label":`Slide ${p+1}`},null,10,Xt))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("div",{key:`slide-${p}`,class:e.normalizeClass(["carousel-item",{active:p===s.value}]),"data-bs-interval":f.interval},[e.createElementVNode("img",{src:f.src,alt:g(f,p),class:"d-block w-100"},null,8,Jt),f.caption||f.captionText||h.$slots.caption?(e.openBlock(),e.createElementBlock("div",Kt,[e.renderSlot(h.$slots,"caption",{item:f,index:p},()=>[f.caption?(e.openBlock(),e.createElementBlock("h5",Wt,e.toDisplayString(f.caption),1)):e.createCommentVNode("",!0),f.captionText?(e.openBlock(),e.createElementBlock("p",Qt,e.toDisplayString(f.captionText),1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)],10,Yt))),128))]),t.controls?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:"carousel-control-prev",type:"button","data-bs-target":`#${t.id}`,"data-bs-slide":"prev"},[...d[0]||(d[0]=[e.createElementVNode("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1),e.createElementVNode("span",{class:"visually-hidden"},"Previous",-1)])],8,Zt),e.createElementVNode("button",{class:"carousel-control-next",type:"button","data-bs-target":`#${t.id}`,"data-bs-slide":"next"},[...d[1]||(d[1]=[e.createElementVNode("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1),e.createElementVNode("span",{class:"visually-hidden"},"Next",-1)])],8,_t)],64)):e.createCommentVNode("",!0)],10,Ht))}}),ea=["data-bs-placement","data-bs-title","data-bs-trigger","data-bs-html"],Ve=e.defineComponent({__name:"VibeTooltip",props:{content:{type:String,default:void 0},text:{type:String,default:void 0},placement:{type:String,default:"top"},trigger:{type:String,default:"hover focus"},html:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=()=>typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0),u=e.computed(()=>s()&&o.trigger==="hover focus"?"click":o.trigger),c=async()=>{if(i.value){n.value&&n.value.dispose();try{const m=(await import("bootstrap")).Tooltip;n.value=new m(i.value,{title:o.text||o.content||"",placement:o.placement,trigger:u.value,html:o.html})}catch(b){l("component-error",{message:"Bootstrap JS not loaded. Tooltip will use data attributes only.",componentName:"VibeTooltip",originalError:b})}}};return e.onMounted(c),e.onBeforeUnmount(()=>{n.value&&(n.value.dispose(),n.value=null)}),e.watch([()=>o.content,()=>o.text],()=>{n.value&&n.value.setContent({".tooltip-inner":o.text||o.content||""})}),e.watch([()=>o.placement,()=>o.trigger,()=>o.html],c),r({bsInstance:n}),(b,m)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"tooltipRef",ref:i,"data-bs-toggle":"tooltip","data-bs-placement":t.placement,"data-bs-title":t.text||t.content,"data-bs-trigger":t.trigger,"data-bs-html":t.html},[e.renderSlot(b.$slots,"default")],8,ea))}}),ta=["data-bs-placement","data-bs-title","data-bs-content","data-bs-trigger","data-bs-html"],ve=e.defineComponent({__name:"VibePopover",props:{title:{type:String,default:void 0},content:{type:String,default:void 0},text:{type:String,default:void 0},placement:{type:String,default:"top"},trigger:{type:String,default:"click"},html:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=()=>typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0),u=e.computed(()=>s()&&o.trigger==="hover focus"?"click":o.trigger),c=async()=>{if(i.value){n.value&&n.value.dispose();try{const m=(await import("bootstrap")).Popover;n.value=new m(i.value,{title:o.title,content:o.text||o.content||"",placement:o.placement,trigger:u.value,html:o.html})}catch(b){l("component-error",{message:"Bootstrap JS not loaded. Popover will use data attributes only.",componentName:"VibePopover",originalError:b})}}};return e.onMounted(c),e.onBeforeUnmount(()=>{n.value&&(n.value.dispose(),n.value=null)}),e.watch([()=>o.content,()=>o.text,()=>o.title],()=>{n.value&&n.value.setContent({".popover-header":o.title||"",".popover-body":o.text||o.content||""})}),e.watch([()=>o.placement,()=>o.trigger,()=>o.html],c),r({bsInstance:n}),(b,m)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"popoverRef",ref:i,"data-bs-toggle":"popover","data-bs-placement":t.placement,"data-bs-title":t.title,"data-bs-content":t.text||t.content,"data-bs-trigger":t.trigger,"data-bs-html":t.html},[e.renderSlot(b.$slots,"default")],8,ta))}}),we=e.defineComponent({__name:"VibeScrollspy",props:{target:{type:String,required:!0},offset:{type:Number,default:10},method:{type:String,default:"auto"},smoothScroll:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["activate","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=c=>{l("activate",c)};return e.onMounted(async()=>{if(i.value)try{const b=(await import("bootstrap")).ScrollSpy;n.value=new b(i.value,{target:o.target,offset:o.offset,method:o.method,smoothScroll:o.smoothScroll}),i.value.addEventListener("activate.bs.scrollspy",s)}catch(c){l("component-error",{message:"Bootstrap JS not loaded. ScrollSpy will use data attributes only.",componentName:"VibeScrollspy",originalError:c})}}),e.onBeforeUnmount(()=>{i.value&&i.value.removeEventListener("activate.bs.scrollspy",s),n.value&&(n.value.dispose(),n.value=null)}),r({refresh:()=>{n.value&&n.value.refresh()}}),(c,b)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"scrollspyRef",ref:i,"data-bs-spy":"scroll","data-bs-target":t.target,"data-bs-offset":t.offset,"data-bs-method":t.method,"data-bs-smooth-scroll":t.smoothScroll,tabindex:"0",style:{position:"relative",height:"100%",overflow:"auto"}},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"default")]),_:3},8,["data-bs-target","data-bs-offset","data-bs-method","data-bs-smooth-scroll"]))}}),$e=e.defineComponent({__name:"VibeIcon",props:{icon:{type:String,required:!0},size:{type:String,default:void 0},fontSize:{type:String,default:void 0},color:{type:String,default:void 0},customClass:{type:String,default:void 0},flipH:{type:Boolean,default:!1},flipV:{type:Boolean,default:!1},rotate:{type:Number,default:void 0}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const s=["bi",`bi-${a.icon}`];return a.size&&(["1x","2x","3x","4x","5x"].includes(a.size)||s.push(`bi-${a.size}`)),a.customClass&&s.push(a.customClass),s.join(" ")}),i=e.computed(()=>{const s={};if(a.fontSize)s.fontSize=a.fontSize;else if(a.size){const c={"1x":"1rem","2x":"2rem","3x":"3rem","4x":"4rem","5x":"5rem"};c[a.size]&&(s.fontSize=c[a.size])}a.color&&(s.color=a.color);const u=[];return a.flipH&&u.push("scaleX(-1)"),a.flipV&&u.push("scaleY(-1)"),a.rotate&&u.push(`rotate(${a.rotate}deg)`),u.length>0&&(s.transform=u.join(" "),s.display="inline-block"),Object.keys(s).length>0?s:void 0}),n=s=>{o("click",s)};return(s,u)=>(e.openBlock(),e.createElementBlock("i",{class:e.normalizeClass(l.value),style:e.normalizeStyle(i.value),"aria-hidden":!0,onClick:n},null,6))}}),aa={class:"vibe-datatable"},oa={class:"row mb-3"},la={key:0,class:"col-md-6 mb-2 mb-md-0"},na=["placeholder"],ia={key:1,class:"col-md-6"},ra={class:"d-flex justify-content-md-end align-items-center"},sa=["value"],da=["onClick"],ca={key:0,class:"ms-1"},ua=["onClick"],ma=["data-label"],fa={key:0},pa=["colspan"],ba={class:"row"},ha={key:0,class:"col-md-6 mb-2 mb-md-0"},ya={class:"datatable-info"},ga={key:1,class:"col-md-6"},ka={class:"pagination justify-content-md-end mb-0"},Ba={key:0,class:"page-item"},Sa={key:1,class:"page-item disabled"},Ca=["onClick"],Va={key:2,class:"page-item disabled"},va={key:3,class:"page-item"},Ee=I(e.defineComponent({__name:"VibeDataTable",props:e.mergeModels({items:{type:Array,default:()=>[]},columns:{type:Array,required:!0},rowKey:{type:String,default:"id"},striped:{type:Boolean,default:!1},bordered:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},small:{type:Boolean,default:!1},responsive:{type:Boolean,default:!0},stack:{type:Boolean,default:!1},variant:{type:String,default:void 0},searchable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},paginated:{type:Boolean,default:!0},searchPlaceholder:{type:String,default:"Search..."},searchDebounce:{type:Number,default:300},showEmpty:{type:Boolean,default:!0},emptyText:{type:String,default:"No data available"},showPerPage:{type:Boolean,default:!0},showInfo:{type:Boolean,default:!0},infoText:{type:String,default:"Showing {start} to {end} of {total} entries"},filteredInfoText:{type:String,default:"Showing {start} to {end} of {total} entries (filtered from {totalRows} total entries)"},perPageOptions:{type:Array,default:()=>[5,10,25,50,100]}},{currentPage:{default:1},currentPageModifiers:{},perPage:{default:10},perPageModifiers:{},sortBy:{default:void 0},sortByModifiers:{},sortDesc:{type:Boolean,default:!1},sortDescModifiers:{}}),emits:e.mergeModels(["row-clicked","component-error"],["update:currentPage","update:perPage","update:sortBy","update:sortDesc"]),setup(t,{emit:r}){const a=t,o=e.useModel(t,"currentPage"),l=e.useModel(t,"perPage"),i=e.useModel(t,"sortBy"),n=e.useModel(t,"sortDesc"),s=r,u=e.ref(""),c=e.ref(null),b=e.ref(""),m=(S,V)=>a.rowKey&&S[a.rowKey]!==void 0?String(S[a.rowKey]):V;e.watch(u,S=>{c.value!==null&&clearTimeout(c.value),c.value=setTimeout(()=>{b.value=S,o.value=1,c.value=null},a.searchDebounce)}),e.onBeforeUnmount(()=>{c.value!==null&&(clearTimeout(c.value),c.value=null)});const g=e.computed(()=>{if(!a.searchable||!b.value)return a.items||[];const S=b.value.toLowerCase();return(a.items||[]).filter(V=>(a.columns||[]).some(v=>{if(v.searchable===!1)return!1;const x=V[v.key];return x==null?!1:String(x).toLowerCase().includes(S)}))}),h=(S,V,v)=>{if(S==null)return 1;if(V==null)return-1;if(typeof S=="string"&&typeof V=="string"){const x=S.toLowerCase(),T=V.toLowerCase();return x<T?v?1:-1:x>T?v?-1:1:0}if(typeof S=="number"&&typeof V=="number")return S<V?v?1:-1:S>V?v?-1:1:0;if(typeof S=="boolean"&&typeof V=="boolean")return S===V?0:(S?1:-1)*(v?-1:1);if(S instanceof Date&&V instanceof Date){const x=S.getTime(),T=V.getTime();return x<T?v?1:-1:x>T?v?-1:1:0}return 0},d=e.computed(()=>{if(!a.sortable||!i.value)return g.value;const S=[...g.value],V=i.value;return S.sort((v,x)=>h(v[V],x[V],n.value)),S}),f=e.computed(()=>{if(!a.paginated)return d.value;const S=(o.value-1)*l.value,V=S+l.value;return d.value.slice(S,V)}),p=e.computed(()=>a.items.length),y=e.computed(()=>g.value.length),C=e.computed(()=>Math.ceil(y.value/l.value)),k=e.computed(()=>y.value===0?0:(o.value-1)*l.value+1),E=e.computed(()=>{const S=o.value*l.value;return Math.min(S,y.value)}),w=e.computed(()=>(y.value!==p.value?a.filteredInfoText:a.infoText).replace("{start}",String(k.value)).replace("{end}",String(E.value)).replace("{total}",String(y.value)).replace("{totalRows}",String(p.value))),L=e.computed(()=>{const S=["table"];return a.striped&&S.push("table-striped"),a.bordered&&S.push("table-bordered"),a.borderless&&S.push("table-borderless"),a.hover&&S.push("table-hover"),a.small&&S.push("table-sm"),a.stack&&S.push("vibe-table-stack"),a.variant&&S.push(`table-${a.variant}`),S.join(" ")}),F=S=>{!a.sortable||S.sortable===!1||(i.value===S.key?n.value=!n.value:(i.value=S.key,n.value=!1))},z=S=>{S<1||S>C.value||(o.value=S)},$=()=>{o.value=1},D=(S,V)=>{s("row-clicked",S,V)},X=(S,V)=>{const v=S[V.key];return V.formatter?V.formatter(v,S):v},U=S=>!a.sortable||S.sortable===!1?"":i.value!==S.key?"⇅":n.value?"↓":"↑",Wo=S=>{const V={...S.thStyle};return a.sortable&&S.sortable!==!1&&(V.cursor="pointer"),V};return(S,V)=>(e.openBlock(),e.createElementBlock("div",aa,[e.createElementVNode("div",oa,[t.searchable?(e.openBlock(),e.createElementBlock("div",la,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[0]||(V[0]=v=>u.value=v),type:"search",class:"form-control",placeholder:t.searchPlaceholder},null,8,na),[[e.vModelText,u.value]])])):e.createCommentVNode("",!0),t.showPerPage&&t.paginated?(e.openBlock(),e.createElementBlock("div",ia,[e.createElementVNode("div",ra,[V[6]||(V[6]=e.createElementVNode("label",{class:"me-2 mb-0"},"Show",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[1]||(V[1]=v=>l.value=v),class:"form-select form-select-sm",style:{width:"auto"},onChange:$},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.perPageOptions,v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},e.toDisplayString(v),9,sa))),128))],544),[[e.vModelSelect,l.value,void 0,{number:!0}]]),V[7]||(V[7]=e.createElementVNode("span",{class:"ms-2"},"entries",-1))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:e.normalizeClass({"table-responsive":t.responsive})},[e.createElementVNode("table",{class:e.normalizeClass(L.value)},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,v=>(e.openBlock(),e.createElementBlock("th",{key:v.key,class:e.normalizeClass(v.headerClass),style:e.normalizeStyle(Wo(v)),onClick:x=>F(v)},[e.createTextVNode(e.toDisplayString(v.label)+" ",1),t.sortable&&v.sortable!==!1?(e.openBlock(),e.createElementBlock("span",ca,e.toDisplayString(U(v)),1)):e.createCommentVNode("",!0)],14,da))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(v,x)=>(e.openBlock(),e.createElementBlock("tr",{key:m(v,x),onClick:T=>D(v,x),style:{cursor:"pointer"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,T=>(e.openBlock(),e.createElementBlock("td",{key:T.key,class:e.normalizeClass(T.class),style:e.normalizeStyle(T.tdStyle),"data-label":T.label},[e.renderSlot(S.$slots,`cell(${T.key})`,{item:v,value:v[T.key],index:x},()=>[e.createTextVNode(e.toDisplayString(X(v,T)),1)],!0)],14,ma))),128))],8,ua))),128)),f.value.length===0&&t.showEmpty?(e.openBlock(),e.createElementBlock("tr",fa,[e.createElementVNode("td",{colspan:t.columns?.length||1,class:"text-center"},e.toDisplayString(t.emptyText),9,pa)])):e.createCommentVNode("",!0)])],2)],2),e.createElementVNode("div",ba,[t.showInfo?(e.openBlock(),e.createElementBlock("div",ha,[e.createElementVNode("div",ya,e.toDisplayString(w.value),1)])):e.createCommentVNode("",!0),t.paginated&&C.value>1?(e.openBlock(),e.createElementBlock("div",ga,[e.createElementVNode("nav",null,[e.createElementVNode("ul",ka,[e.createElementVNode("li",{class:e.normalizeClass(["page-item",{disabled:o.value===1}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[2]||(V[2]=e.withModifiers(v=>z(o.value-1),["prevent"]))}," Previous ")],2),o.value>3?(e.openBlock(),e.createElementBlock("li",Ba,[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[3]||(V[3]=e.withModifiers(v=>z(1),["prevent"]))},"1")])):e.createCommentVNode("",!0),o.value>4?(e.openBlock(),e.createElementBlock("li",Sa,[...V[8]||(V[8]=[e.createElementVNode("span",{class:"page-link"},"...",-1)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Array.from({length:C.value},(v,x)=>x+1).filter(v=>v>=o.value-2&&v<=o.value+2),v=>(e.openBlock(),e.createElementBlock("li",{key:v,class:e.normalizeClass(["page-item",{active:v===o.value}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:e.withModifiers(x=>z(v),["prevent"])},e.toDisplayString(v),9,Ca)],2))),128)),o.value<C.value-3?(e.openBlock(),e.createElementBlock("li",Va,[...V[9]||(V[9]=[e.createElementVNode("span",{class:"page-link"},"...",-1)])])):e.createCommentVNode("",!0),o.value<C.value-2?(e.openBlock(),e.createElementBlock("li",va,[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[4]||(V[4]=e.withModifiers(v=>z(C.value),["prevent"]))},e.toDisplayString(C.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("li",{class:e.normalizeClass(["page-item",{disabled:o.value===C.value}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[5]||(V[5]=e.withModifiers(v=>z(o.value+1),["prevent"]))}," Next ")],2)])])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-c496dc70"]]),wa=["for"],$a={key:0,class:"text-danger"},Ea=["id","type","value","placeholder","disabled","readonly","required","aria-invalid","aria-describedby"],Na=["id"],xa={key:0,class:"valid-feedback",style:{display:"block"}},Ta=["id"],La=["id","type","value","placeholder","disabled","readonly","required","aria-invalid"],Ne=e.defineComponent({__name:"VibeFormInput",props:{modelValue:{type:[String,Number],default:""},type:{type:String,default:"text"},id:{type:String,default:void 0},label:{type:String,default:void 0},placeholder:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},plaintext:{type:Boolean,default:!1},noWrapper:{type:Boolean,default:!1},focusRing:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("input")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=[];return a.plaintext?d.push("form-control-plaintext"):(d.push("form-control"),a.size&&d.push(`form-control-${a.size}`)),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),a.focusRing&&d.push("focus-ring"),d.join(" ")}),b=d=>{const f=d.target,p=a.type==="number"?f.value===""?"":Number(f.value):f.value;o("update:modelValue",p),o("input",d),a.validateOn==="input"&&o("validate")},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>t.noWrapper?(e.openBlock(),e.createElementBlock("input",{key:1,id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly||t.plaintext,required:t.required,"aria-invalid":t.validationState==="invalid",onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,La)):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",$a,"*")):e.createCommentVNode("",!0)],8,wa)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly||t.plaintext,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,Ea),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Na)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",xa,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Ta)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),za=["for"],Da={key:0,class:"text-danger"},Ma=["id","value","multiple","size","disabled","required","aria-invalid","aria-describedby"],Fa={key:0,value:"",disabled:"",selected:""},Ia=["value","disabled"],Ra=["id"],Pa={key:0,class:"valid-feedback",style:{display:"block"}},qa=["id"],xe=e.defineComponent({__name:"VibeFormSelect",props:{modelValue:{type:[String,Number,Array],default:""},id:{type:String,default:void 0},label:{type:String,default:void 0},options:{type:Array,default:()=>[]},multiple:{type:Boolean,default:!1},selectSize:{type:Number,default:void 0},htmlSize:{type:Number,default:void 0},placeholder:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("select")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-select"];return a.size&&d.push(`form-select-${a.size}`),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),b=d=>{const f=d.target;let p;a.multiple?p=Array.from(f.selectedOptions).map(y=>y.value):p=f.value,o("update:modelValue",p)},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Da,"*")):e.createCommentVNode("",!0)],8,za)):e.createCommentVNode("",!0),e.createElementVNode("select",{id:i.value,class:e.normalizeClass(c.value),value:t.modelValue,multiple:t.multiple,size:t.htmlSize||t.selectSize,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},[t.placeholder?(e.openBlock(),e.createElementBlock("option",Fa,e.toDisplayString(t.placeholder),1)):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,p=>(e.openBlock(),e.createElementBlock("option",{key:String(p.value),value:p.value,disabled:p.disabled},e.toDisplayString(p.text),9,Ia))),128))])],42,Ma),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Ra)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Pa,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please select an option."),9,qa)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),ja=["for"],Aa={key:0,class:"text-danger"},Oa=["id","value","placeholder","rows","maxlength","disabled","readonly","required","aria-invalid","aria-describedby"],Ha=["id"],Ga={key:0,class:"ms-auto"},Xa={key:0,class:"valid-feedback",style:{display:"block"}},Ua=["id"],Te=e.defineComponent({__name:"VibeFormTextarea",props:{modelValue:{type:String,default:""},id:{type:String,default:void 0},label:{type:String,default:void 0},placeholder:{type:String,default:void 0},rows:{type:[Number,String],default:3},maxlength:{type:[Number,String],default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},noResize:{type:Boolean,default:!1},showCharCount:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("textarea")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>(!!a.helpText||a.showCharCount)&&!l?.hasHelp.value),c=e.computed(()=>{const p=["form-control"];return a.size&&p.push(`form-control-${a.size}`),a.validationState==="valid"&&p.push("is-valid"),a.validationState==="invalid"&&p.push("is-invalid"),p.join(" ")}),b=e.computed(()=>{if(a.noResize)return{resize:"none"}}),m=e.computed(()=>a.modelValue?.length||0),g=p=>{const y=p.target;o("update:modelValue",y.value),o("input",p),a.validateOn==="input"&&o("validate")},h=p=>{o("change",p),a.validateOn==="change"&&o("validate")},d=p=>{o("blur",p),a.validateOn==="blur"&&o("validate")},f=p=>{o("focus",p)};return(p,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Aa,"*")):e.createCommentVNode("",!0)],8,ja)):e.createCommentVNode("",!0),e.createElementVNode("textarea",{id:i.value,class:e.normalizeClass(c.value),style:e.normalizeStyle(b.value),value:t.modelValue,placeholder:t.placeholder,rows:t.rows,maxlength:t.maxlength,disabled:t.disabled,readonly:t.readonly,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText||t.showCharCount?`${i.value}-feedback`:void 0,onInput:g,onChange:h,onBlur:d,onFocus:f},null,46,Oa),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text d-flex justify-content-between"},[e.createElementVNode("span",null,e.toDisplayString(t.helpText),1),t.showCharCount?(e.openBlock(),e.createElementBlock("span",Ga,[t.maxlength?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(m.value)+" / "+e.toDisplayString(t.maxlength),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(m.value),1)],64))])):e.createCommentVNode("",!0)],8,Ha)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Xa,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Ua)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Ya=["for"],Ja={key:0,class:"text-danger"},Ka=["disabled"],Wa=["id","value","disabled","readonly","required","min","max","step","aria-invalid","aria-describedby"],Qa=["disabled"],Za=["id"],_a={key:0,class:"valid-feedback",style:{display:"block"}},eo=["id"],Le=I(e.defineComponent({__name:"VibeFormSpinbutton",props:{modelValue:{type:Number,default:0,validator:t=>!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},min:{type:Number,default:void 0},max:{type:Number,default:void 0},step:{type:Number,default:1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},wrap:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change","increment","decrement"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("spinbutton")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const k=["form-control"];return a.size&&k.push(`form-control-${a.size}`),a.validationState==="valid"&&k.push("is-valid"),a.validationState==="invalid"&&k.push("is-invalid"),k.join(" ")}),b=e.computed(()=>{const k=["input-group"];return a.size&&k.push(`input-group-${a.size}`),a.vertical&&k.push("input-group-vertical"),k.join(" ")}),m=e.computed(()=>a.disabled||a.readonly?!1:a.min===void 0||a.wrap?!0:a.modelValue>a.min),g=e.computed(()=>a.disabled||a.readonly?!1:a.max===void 0||a.wrap?!0:a.modelValue<a.max),h=k=>{const E=k.target;let w=E.value===""?0:Number(E.value);a.min!==void 0&&w<a.min&&(w=a.min),a.max!==void 0&&w>a.max&&(w=a.max),o("update:modelValue",w),o("input",k),a.validateOn==="input"&&o("validate")},d=k=>{o("change",k),a.validateOn==="change"&&o("validate")},f=k=>{o("blur",k),a.validateOn==="blur"&&o("validate")},p=k=>{o("focus",k)},y=()=>{if(!g.value)return;let k=a.modelValue+a.step;a.max!==void 0&&k>a.max&&(k=a.wrap?a.min??0:a.max),o("update:modelValue",k),o("increment",k),a.validateOn==="change"&&o("validate")},C=()=>{if(!m.value)return;let k=a.modelValue-a.step;a.min!==void 0&&k<a.min&&(k=a.wrap?a.max??0:a.min),o("update:modelValue",k),o("decrement",k),a.validateOn==="change"&&o("validate")};return(k,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Ja,"*")):e.createCommentVNode("",!0)],8,Ya)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(b.value)},[e.createElementVNode("button",{class:"btn btn-outline-secondary",type:"button",disabled:!m.value,onClick:C,"aria-label":"Decrement"},[...E[0]||(E[0]=[e.createElementVNode("span",{"aria-hidden":"true"},"−",-1)])],8,Ka),e.createElementVNode("input",{id:i.value,type:"number",class:e.normalizeClass(c.value),value:t.modelValue,disabled:t.disabled,readonly:t.readonly,required:t.required,min:t.min,max:t.max,step:t.step,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:h,onChange:d,onBlur:f,onFocus:p},null,42,Wa),e.createElementVNode("button",{class:"btn btn-outline-secondary",type:"button",disabled:!g.value,onClick:y,"aria-label":"Increment"},[...E[1]||(E[1]=[e.createElementVNode("span",{"aria-hidden":"true"},"+",-1)])],8,Qa)],2),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Za)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",_a,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,eo)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-49746a62"]]),to=["for"],ao={key:0,class:"text-danger"},oo=["id","type","value","disabled","readonly","required","min","max","aria-invalid","aria-describedby"],lo=["id"],no={key:0,class:"valid-feedback",style:{display:"block"}},io=["id"],ze=e.defineComponent({__name:"VibeFormDatepicker",props:{modelValue:{type:String,default:"",validator:t=>!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},min:{type:String,default:void 0},max:{type:String,default:void 0},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},type:{type:String,default:"date"}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("datepicker")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-control"];return a.size&&d.push(`form-control-${a.size}`),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),b=d=>{const f=d.target;o("update:modelValue",f.value),o("input",d),a.validateOn==="input"&&o("validate")},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",ao,"*")):e.createCommentVNode("",!0)],8,to)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,disabled:t.disabled,readonly:t.readonly,required:t.required,min:t.min,max:t.max,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,oo),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,lo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",no,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid date."),9,io)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),ro=["id","checked","disabled","required","indeterminate","aria-invalid","aria-describedby"],so=["for"],co={key:0,class:"text-danger"},uo=["id"],mo={key:0,class:"valid-feedback",style:{display:"block"}},fo=["id"],De=e.defineComponent({__name:"VibeFormCheckbox",props:{modelValue:{type:[Boolean,Array],default:!1},value:{type:[String,Number,Boolean],default:!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0},reverse:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("checkbox")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const f=["form-check"];return a.inline&&f.push("form-check-inline"),a.reverse&&f.push("form-check-reverse"),f.join(" ")}),b=e.computed(()=>{const f=["form-check-input"];return a.validationState==="valid"&&f.push("is-valid"),a.validationState==="invalid"&&f.push("is-invalid"),f.join(" ")}),m=e.computed(()=>Array.isArray(a.modelValue)?a.modelValue.includes(a.value):a.modelValue===a.value),g=f=>{const p=f.target;let y;if(Array.isArray(a.modelValue))if(y=[...a.modelValue],p.checked)y.push(a.value);else{const C=y.indexOf(a.value);C>-1&&y.splice(C,1)}else y=p.checked?a.value:a.value===!0?!1:null;o("update:modelValue",y),o("change",f),a.validateOn==="change"&&o("validate")},h=f=>{o("blur",f),a.validateOn==="blur"&&o("validate")},d=f=>{o("focus",f)};return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"checkbox",class:e.normalizeClass(b.value),checked:m.value,disabled:t.disabled,required:t.required,indeterminate:t.indeterminate,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:g,onBlur:h,onFocus:d},null,42,ro),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",co,"*")):e.createCommentVNode("",!0)],8,so)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,uo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",mo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please check this box."),9,fo)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),po=["id","name","value","checked","disabled","required","aria-invalid","aria-describedby"],bo=["for"],ho={key:0,class:"text-danger"},yo=["id"],go={key:0,class:"valid-feedback",style:{display:"block"}},ko=["id"],Me=e.defineComponent({__name:"VibeFormRadio",props:{modelValue:{type:[String,Number,Boolean],default:""},value:{type:[String,Number,Boolean],required:!0},name:{type:String,required:!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0},reverse:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("radio")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const f=["form-check"];return a.inline&&f.push("form-check-inline"),a.reverse&&f.push("form-check-reverse"),f.join(" ")}),b=e.computed(()=>{const f=["form-check-input"];return a.validationState==="valid"&&f.push("is-valid"),a.validationState==="invalid"&&f.push("is-invalid"),f.join(" ")}),m=e.computed(()=>a.modelValue===a.value),g=f=>{o("update:modelValue",a.value),o("change",f),a.validateOn==="change"&&o("validate")},h=f=>{o("blur",f),a.validateOn==="blur"&&o("validate")},d=f=>{o("focus",f)};return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"radio",class:e.normalizeClass(b.value),name:t.name,value:t.value,checked:m.value,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:g,onBlur:h,onFocus:d},null,42,po),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",ho,"*")):e.createCommentVNode("",!0)],8,bo)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,yo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",go,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please select an option."),9,ko)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Bo=["id","checked","disabled","required","aria-invalid","aria-describedby"],So=["for"],Co={key:0,class:"text-danger"},Vo=["id"],vo={key:0,class:"valid-feedback",style:{display:"block"}},wo=["id"],Fe=e.defineComponent({__name:"VibeFormSwitch",props:{modelValue:{type:Boolean,default:!1},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("switch")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-check","form-switch"];return a.inline&&d.push("form-check-inline"),d.join(" ")}),b=e.computed(()=>{const d=["form-check-input"];return a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),m=d=>{const f=d.target;o("update:modelValue",f.checked),o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"checkbox",role:"switch",class:e.normalizeClass(b.value),checked:t.modelValue,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:m,onBlur:g,onFocus:h},null,42,Bo),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Co,"*")):e.createCommentVNode("",!0)],8,So)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Vo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",vo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please toggle this switch."),9,wo)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),$o=["for"],Eo={key:0,class:"text-danger"},No=["id"],xo={key:1,class:"valid-feedback",style:{display:"block"}},To=["id"],Lo=["for"],zo={key:0,class:"text-danger"},Do=["id"],Mo={key:2,class:"valid-feedback",style:{display:"block"}},Fo=["id"],Ie=e.defineComponent({__name:"VibeFormGroup",props:{label:{type:String,default:void 0},labelFor:{type:String,default:void 0},required:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},helpText:{type:String,default:void 0},floating:{type:Boolean,default:!1},row:{type:Boolean,default:!1},labelCols:{type:[Number,String],default:void 0},labelAlign:{type:String,default:void 0}},setup(t){const r=t,a=e.computed(()=>r.labelFor||N("form-group")),o=e.ref(!1),l=()=>o.value?null:(o.value=!0,a.value);e.provide("vibeFormGroup",{id:a,consumeId:l,hasLabel:e.computed(()=>!!r.label),hasValidation:e.computed(()=>!!r.validationState),hasHelp:e.computed(()=>!!r.helpText)});const i=e.computed(()=>{const c=[];return r.floating?c.push("form-floating"):r.row?c.push("row","mb-3"):c.push("mb-3"),c.join(" ")}),n=e.computed(()=>{const c=[];return r.floating?c.push("form-label"):r.row?(c.push("col-form-label"),r.labelCols&&c.push(`col-sm-${r.labelCols}`),r.labelAlign&&c.push(`text-${r.labelAlign}`)):c.push("form-label"),c.join(" ")}),s=e.computed(()=>r.row&&r.labelCols?`col-sm-${12-Number(r.labelCols)}`:""),u=e.computed(()=>`${a.value}-feedback`);return(c,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value)},[t.label&&!t.floating?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.value,class:e.normalizeClass(n.value)},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Eo,"*")):e.createCommentVNode("",!0)],10,$o)):e.createCommentVNode("",!0),t.row&&t.labelCols?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value)},[e.renderSlot(c.$slots,"default"),t.helpText&&!t.validationMessage?(e.openBlock(),e.createElementBlock("div",{key:0,id:u.value,class:"form-text"},e.toDisplayString(t.helpText),9,No)):e.createCommentVNode("",!0),t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",xo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:2,id:u.value,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,To)):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(c.$slots,"default"),t.label&&t.floating?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.value,class:e.normalizeClass(n.value)},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",zo,"*")):e.createCommentVNode("",!0)],10,Lo)):e.createCommentVNode("",!0),t.helpText&&!t.validationMessage?(e.openBlock(),e.createElementBlock("div",{key:1,id:u.value,class:"form-text"},e.toDisplayString(t.helpText),9,Do)):e.createCommentVNode("",!0),t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Mo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:3,id:u.value,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Fo)):e.createCommentVNode("",!0)],64))],2))}}),R={sm:576,md:768,lg:992,xl:1200,xxl:1400};function Re(){const t=e.ref(!1),r=e.ref(!1),a=e.ref(!1),o=e.ref(!1),l=e.ref(!1),i=()=>{typeof window>"u"||(t.value=window.matchMedia(`(min-width: ${R.sm}px)`).matches,r.value=window.matchMedia(`(min-width: ${R.md}px)`).matches,a.value=window.matchMedia(`(min-width: ${R.lg}px)`).matches,o.value=window.matchMedia(`(min-width: ${R.xl}px)`).matches,l.value=window.matchMedia(`(min-width: ${R.xxl}px)`).matches)};i();const n=e.computed(()=>!t.value),s=e.computed(()=>!r.value),u=e.computed(()=>r.value&&!a.value);return typeof window<"u"&&Object.entries(R).forEach(([c,b])=>{const m=window.matchMedia(`(min-width: ${b}px)`),g=()=>{i()};m.addEventListener("change",g),e.getCurrentInstance()&&e.onUnmounted(()=>m.removeEventListener("change",g))}),{isXs:n,isSm:t,isMd:r,isLg:a,isXl:o,isXxl:l,isMobile:s,isTablet:u}}const Io=["for"],Ro={key:0,class:"text-danger"},Po={key:1,class:"alert alert-warning",role:"alert"},qo=["id"],jo=["id"],Ao={key:0,class:"valid-feedback",style:{display:"block"}},Oo=["id"],Pe=I(e.defineComponent({__name:"VibeFormWysiwyg",props:{modelValue:{type:String,default:""},id:{type:String,default:()=>N("wysiwyg")},label:{type:String,default:void 0},placeholder:{type:String,default:"Write something..."},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},theme:{type:String,default:"snow"},toolbar:{type:[Array,String,Boolean],default:void 0},mobileToolbar:{type:[Array,String,Boolean],default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},height:{type:String,default:"200px"}},emits:["update:modelValue","validate","blur","focus","change","ready"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.id.value||N("wysiwyg")),{isMobile:n}=Re(),s=e.computed(()=>!!a.label&&!l?.hasLabel.value),u=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),c=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),b=e.ref(null),m=e.ref(null),g=e.ref(!1),h=e.ref(null),d=e.ref(!1),f=e.ref(null),p=e.ref(null),y=e.ref(null),C=e.computed(()=>{const $=["vibe-wysiwyg-container"];return a.validationState==="valid"&&$.push("is-valid"),a.validationState==="invalid"&&$.push("is-invalid"),a.disabled&&$.push("disabled"),$.join(" ")}),k=[[{header:[1,2,3,!1]}],["bold","italic","underline","strike"],[{list:"ordered"},{list:"bullet"}],[{color:[]},{background:[]}],["link","image"],["clean"]],E=[["bold","italic","underline"],[{list:"ordered"},{list:"bullet"}],["link","clean"]],w=()=>a.toolbar===!1?!1:n.value?a.mobileToolbar===!1?!1:a.mobileToolbar!==void 0?a.mobileToolbar:E:a.toolbar===!0||a.toolbar===void 0?k:a.toolbar,L=$=>{m.value&&(d.value=!0,m.value.setContents([],"silent"),$&&m.value.clipboard.dangerouslyPasteHTML($,"silent"),d.value=!1)},F=()=>!m.value||m.value.getText().trim().length===0?"":m.value.getSemanticHTML(),z=async()=>{try{const $=await import("quill"),D=$.default||$;if(await import("quill/dist/quill.snow.css"),b.value){const X={theme:a.theme,placeholder:a.placeholder,readOnly:a.readonly||a.disabled,modules:{toolbar:w()}};m.value=new D(b.value,X),a.modelValue&&L(a.modelValue),y.value=()=>{if(d.value)return;const U=F();o("update:modelValue",U),o("change"),a.validateOn==="change"&&o("validate")},m.value.on("text-change",y.value),f.value=()=>{o("blur"),a.validateOn==="blur"&&o("validate")},m.value.root.addEventListener("blur",f.value),p.value=()=>{o("focus")},m.value.root.addEventListener("focus",p.value),g.value=!0,o("ready",m.value)}}catch($){console.error("Failed to load Quill editor:",$),h.value="Failed to load WYSIWYG editor. Please install quill: npm install quill",g.value=!1}};return e.onMounted(z),e.onBeforeUnmount(()=>{if(m.value){if(y.value&&(m.value.off("text-change",y.value),y.value=null),f.value&&(m.value.root.removeEventListener("blur",f.value),f.value=null),p.value&&(m.value.root.removeEventListener("focus",p.value),p.value=null),b.value){const $=b.value.parentElement?.querySelector(".ql-toolbar");$&&$.remove()}m.value=null}}),e.watch(()=>a.modelValue,$=>{if(!m.value)return;F()!==($||"")&&L($||"")}),e.watch(()=>a.disabled,$=>{m.value&&m.value.enable(!$)}),e.watch(()=>a.readonly,$=>{m.value&&m.value.enable(!$)}),e.watch(n,async()=>{if(m.value){const $=F();y.value&&m.value.off("text-change",y.value),f.value&&m.value.root.removeEventListener("blur",f.value),p.value&&m.value.root.removeEventListener("focus",p.value);const D=b.value?.parentElement?.querySelector(".ql-toolbar");D&&D.remove(),b.value&&(b.value.innerHTML=""),await e.nextTick(),await z(),$&&L($)}}),($,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":s.value||c.value||u.value})},[s.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Ro,"*")):e.createCommentVNode("",!0)],8,Io)):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("div",Po,e.toDisplayString(h.value),1)):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(C.value),style:e.normalizeStyle({minHeight:t.height})},[e.createElementVNode("div",{ref_key:"editorContainer",ref:b,id:i.value},null,8,qo)],6)),c.value?(e.openBlock(),e.createElementBlock("div",{key:3,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,jo)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Ao,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide valid content."),9,Oo)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-952f7269"]]),Ho={key:0,class:"input-group-text"},Go={key:0,class:"input-group-text"},qe=e.defineComponent({__name:"VibeInputGroup",props:{size:{type:String,default:void 0},prepend:{type:String,default:void 0},append:{type:String,default:void 0},tag:{type:String,default:"div"}},setup(t){const r=t,a=e.computed(()=>{const o=["input-group"];return r.size&&o.push(`input-group-${r.size}`),o.join(" ")});return(o,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(a.value)},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"prepend",{},()=>[t.prepend?(e.openBlock(),e.createElementBlock("span",Ho,e.toDisplayString(t.prepend),1)):e.createCommentVNode("",!0)]),e.renderSlot(o.$slots,"default"),e.renderSlot(o.$slots,"append",{},()=>[t.append?(e.openBlock(),e.createElementBlock("span",Go,e.toDisplayString(t.append),1)):e.createCommentVNode("",!0)])]),_:3},8,["class"]))}}),je=e.defineComponent({__name:"VibeLink",props:{tag:{type:String,default:"a"},href:{type:String,default:void 0},to:{type:[String,Object],default:void 0},variant:{type:String,default:void 0},underline:{type:[Boolean,String],default:!0},underlineVariant:{type:String,default:void 0},underlineOpacity:{type:[String,Number],default:void 0},offset:{type:[String,Number],default:void 0},opacity:{type:[String,Number],default:void 0},focusRing:{type:Boolean,default:!1}},setup(t){const r=t,a=e.computed(()=>!!r.to),o=e.computed(()=>a.value?"router-link":r.tag),l=e.computed(()=>{const i=[];return r.variant&&i.push(`link-${r.variant}`),r.underline===!1||r.underline==="0"?i.push("link-underline-0"):typeof r.underline=="string"&&["1","2","3"].includes(r.underline)&&i.push("link-underline",`link-underline-opacity-${r.underline}`),r.underlineVariant&&i.push(`link-underline-${r.underlineVariant}`),r.underlineOpacity!==void 0&&i.push(`link-underline-opacity-${r.underlineOpacity}`),r.offset!==void 0&&i.push(`link-offset-${r.offset}`),r.opacity!==void 0&&i.push(`link-opacity-${r.opacity}`),r.focusRing&&i.push("focus-ring"),i.join(" ")});return(i,n)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(l.value),href:t.href,to:t.to},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},8,["class","href","to"]))}}),Xo={install(t){t.component("VibeAlert",Y),t.component("VibeBadge",J),t.component("VibeButton",K),t.component("VibeButtonGroup",W),t.component("VibeCloseButton",Q),t.component("VibeSpinner",Z),t.component("VibePlaceholder",_),t.component("VibeContainer",ee),t.component("VibeRow",te),t.component("VibeCol",ae),t.component("VibeCard",oe),t.component("VibeBreadcrumb",le),t.component("VibeNav",ne),t.component("VibeNavbar",ie),t.component("VibeNavbarBrand",re),t.component("VibeNavbarToggle",se),t.component("VibeNavbarNav",de),t.component("VibePagination",ce),t.component("VibeTabContent",ue),t.component("VibeListGroup",me),t.component("VibeProgress",fe),t.component("VibeAccordion",be),t.component("VibeCollapse",he),t.component("VibeDropdown",ye),t.component("VibeModal",ke),t.component("VibeOffcanvas",Be),t.component("VibeToast",Se),t.component("VibeCarousel",Ce),t.component("VibeTooltip",Ve),t.component("VibePopover",ve),t.component("VibeScrollspy",we),t.component("VibeIcon",$e),t.component("VibeDataTable",Ee),t.component("VibeFormInput",Ne),t.component("VibeFormSelect",xe),t.component("VibeFormTextarea",Te),t.component("VibeFormSpinbutton",Le),t.component("VibeFormDatepicker",ze),t.component("VibeFormCheckbox",De),t.component("VibeFormRadio",Me),t.component("VibeFormSwitch",Fe),t.component("VibeFormGroup",Ie),t.component("VibeFormWysiwyg",Pe),t.component("VibeInputGroup",qe),t.component("VibeLink",je)}};function Uo(t=""){const r=e.ref(t),a=e.ref(null),o=e.ref(""),l=e.ref(!1),i=e.ref(!1),n=e.ref(!1),s=async h=>{if(!h)return a.value=null,o.value="",{valid:!0};n.value=!0;try{const d=Array.isArray(h)?h:[{validator:h}];for(const f of d){const p=await f.validator(r.value);if(p===!1||typeof p=="string")return a.value="invalid",o.value=typeof p=="string"?p:f.message||"Invalid value",n.value=!1,{valid:!1,message:o.value}}return a.value="valid",o.value="",n.value=!1,{valid:!0}}catch{return a.value="invalid",o.value="Validation error occurred",n.value=!1,{valid:!1,message:o.value}}},u=()=>{r.value=t,a.value=null,o.value="",l.value=!1,i.value=!1,n.value=!1},c=()=>{i.value=!0},b=()=>{l.value=!0},m=e.computed(()=>a.value==="valid"),g=e.computed(()=>a.value==="invalid");return{value:r,validationState:a,validationMessage:o,isDirty:l,isTouched:i,isValidating:n,isValid:m,isInvalid:g,validate:s,reset:u,markAsTouched:c,markAsDirty:b}}const Yo={required:(t="This field is required")=>({validator:r=>Array.isArray(r)?r.length>0||t:typeof r=="string"?r.trim().length>0||t:r!=null&&r!==""||t,message:t}),email:(t="Please enter a valid email address")=>({validator:r=>r?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)||t:!0,message:t}),minLength:(t,r)=>({validator:a=>a?a.length>=t||r||`Minimum length is ${t} characters`:!0,message:r}),maxLength:(t,r)=>({validator:a=>a?a.length<=t||r||`Maximum length is ${t} characters`:!0,message:r}),min:(t,r)=>({validator:a=>{if(a==null||a==="")return!0;const o=Number(a);return Number.isNaN(o)?r||"Value must be a number":o>=t||r||`Minimum value is ${t}`},message:r}),max:(t,r)=>({validator:a=>{if(a==null||a==="")return!0;const o=Number(a);return Number.isNaN(o)?r||"Value must be a number":o<=t||r||`Maximum value is ${t}`},message:r}),pattern:(t,r="Invalid format")=>({validator:a=>a?t.test(a)||r:!0,message:r}),url:(t="Please enter a valid URL")=>({validator:r=>{if(!r)return!0;try{return new URL(r),!0}catch{return t}},message:t}),async:t=>({validator:t})},A="vibe-color-mode",O={light:"dark",dark:"auto",auto:"light"},P=e.ref("auto");let H=!1;const G=[];function Jo(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Ae(t){if(typeof document>"u")return;const r=t==="auto"?Jo():t;document.documentElement.setAttribute("data-bs-theme",r)}function q(t){P.value=t,Ae(t),G.forEach(r=>r(t))}q("auto"),typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{P.value==="auto"&&(Ae("auto"),G.forEach(t=>t("auto")))});function Ko(){function t(i){if(i in O){try{localStorage.setItem(A,i)}catch{}q(i)}}function r(){if(H)return;let i="auto";try{const n=localStorage.getItem(A);n!==null&&n in O&&(i=n)}catch{}q(i),H=!0}function a(){try{localStorage.removeItem(A)}catch{}H=!1,q("auto")}function o(){t(O[P.value]??"auto")}function l(i){G.push(i)}return{colorMode:P,setColorMode:t,toggleColorMode:o,initColorMode:r,clearColorMode:a,onColorModeChange:l}}B.VibeAccordion=be,B.VibeAlert=Y,B.VibeBadge=J,B.VibeBreadcrumb=le,B.VibeButton=K,B.VibeButtonGroup=W,B.VibeCard=oe,B.VibeCarousel=Ce,B.VibeCloseButton=Q,B.VibeCol=ae,B.VibeCollapse=he,B.VibeContainer=ee,B.VibeDataTable=Ee,B.VibeDropdown=ye,B.VibeFormCheckbox=De,B.VibeFormDatepicker=ze,B.VibeFormGroup=Ie,B.VibeFormInput=Ne,B.VibeFormRadio=Me,B.VibeFormSelect=xe,B.VibeFormSpinbutton=Le,B.VibeFormSwitch=Fe,B.VibeFormTextarea=Te,B.VibeFormWysiwyg=Pe,B.VibeIcon=$e,B.VibeInputGroup=qe,B.VibeLink=je,B.VibeListGroup=me,B.VibeModal=ke,B.VibeNav=ne,B.VibeNavbar=ie,B.VibeNavbarBrand=re,B.VibeNavbarNav=de,B.VibeNavbarToggle=se,B.VibeOffcanvas=Be,B.VibePagination=ce,B.VibePlaceholder=_,B.VibePopover=ve,B.VibeProgress=fe,B.VibeRow=te,B.VibeScrollspy=we,B.VibeSpinner=Z,B.VibeTabContent=ue,B.VibeToast=Se,B.VibeTooltip=Ve,B.default=Xo,B.useBackButton=j,B.useBreakpoints=Re,B.useColorMode=Ko,B.useFormValidation=Uo,B.useId=N,B.validators=Yo,Object.defineProperties(B,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(S,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(S=typeof globalThis<"u"?globalThis:S||self,e(S.VibeUI={},S.Vue))})(this,(function(S,e){"use strict";const J=e.defineComponent({__name:"VibeAlert",props:{variant:{type:String,default:"primary"},subtle:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!0},dismissable:{type:Boolean,default:!1},message:{type:String,required:!0},fade:{type:Boolean,default:!0}},emits:["update:modelValue","close","closed","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.ref(null),i=e.ref(null),n=e.ref(a.modelValue),s=()=>{o("close")},u=()=>{n.value=!1,o("update:modelValue",!1),o("closed")};e.onMounted(async()=>{if(l.value)try{const g=(await import("bootstrap")).Alert;i.value=new g(l.value),l.value.addEventListener("close.bs.alert",s),l.value.addEventListener("closed.bs.alert",u)}catch(m){o("component-error",{message:"Bootstrap JS not loaded. Alert will use basic Vue logic.",componentName:"VibeAlert",originalError:m})}}),e.onBeforeUnmount(()=>{l.value&&(l.value.removeEventListener("close.bs.alert",s),l.value.removeEventListener("closed.bs.alert",u)),i.value&&(i.value.dispose(),i.value=null)}),e.watch(()=>a.modelValue,m=>{m?n.value=!0:i.value&&n.value?i.value.close():n.value=!1});const c=()=>{i.value?i.value.close():(n.value=!1,o("update:modelValue",!1),o("closed"))},b=e.computed(()=>{const m=["alert"];return a.subtle?m.push(`bg-${a.variant}-subtle`,`text-${a.variant}-emphasis`,`border-${a.variant}-subtle`):m.push(`alert-${a.variant}`),a.dismissable&&m.push("alert-dismissible"),a.fade&&m.push("fade","show"),m.join(" ")});return(m,g)=>n.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"alertRef",ref:l,class:e.normalizeClass(b.value),role:"alert"},[e.renderSlot(m.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.message),1)]),t.dismissable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"btn-close","aria-label":"Close",onClick:c})):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)}}),K=e.defineComponent({__name:"VibeBadge",props:{variant:{type:String,default:"primary"},subtle:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},tag:{type:String,default:"span"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["badge"];return a.subtle?l.push(`bg-${a.variant}-subtle`,`text-${a.variant}-emphasis`):l.push(`bg-${a.variant}`),a.pill&&l.push("rounded-pill"),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),W=e.defineComponent({__name:"VibeButton",props:{variant:{type:String,default:"primary"},size:{type:String,default:void 0},outline:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{type:String,default:"button"},href:{type:String,default:void 0},to:{type:[String,Object],default:void 0},active:{type:Boolean,default:!1},focusRing:{type:Boolean,default:!1}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>a.href?"a":a.to?"router-link":"button"),i=e.computed(()=>{const s=["btn"];return a.outline?s.push(`btn-outline-${a.variant}`):s.push(`btn-${a.variant}`),a.size&&s.push(`btn-${a.size}`),a.active&&s.push("active"),a.focusRing&&s.push("focus-ring"),s.join(" ")}),n=s=>{a.disabled||o("click",s)};return(s,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value),{class:e.normalizeClass(i.value),type:t.href||t.to?void 0:t.type,href:t.href,to:t.to,disabled:t.disabled,"aria-disabled":t.disabled,onClick:n},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},8,["class","type","href","to","disabled","aria-disabled"]))}}),He=["role","aria-label"],Q=e.defineComponent({__name:"VibeButtonGroup",props:{size:{type:String,default:void 0},vertical:{type:Boolean,default:!1},role:{type:String,default:"group"},ariaLabel:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[a.vertical?"btn-group-vertical":"btn-group"];return a.size&&l.push(`btn-group-${a.size}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(o.value),role:t.role,"aria-label":t.ariaLabel},[e.renderSlot(l.$slots,"default")],10,He))}}),Ge=["disabled","aria-label"],Z=e.defineComponent({__name:"VibeCloseButton",props:{disabled:{type:Boolean,default:!1},white:{type:Boolean,default:!1},ariaLabel:{type:String,default:"Close"}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=i=>{a.disabled||o("click",i)};return(i,n)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["btn-close",{"btn-close-white":t.white}]),disabled:t.disabled,"aria-label":t.ariaLabel,onClick:l},null,10,Ge))}}),Xe={class:"visually-hidden"},_=e.defineComponent({__name:"VibeSpinner",props:{variant:{type:String,default:void 0},type:{type:String,default:"border"},size:{type:String,default:void 0},label:{type:String,default:"Loading..."},tag:{type:String,default:"div"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[`spinner-${a.type}`];return a.variant&&l.push(`text-${a.variant}`),a.size&&l.push(`spinner-${a.type}-${a.size}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value),role:"status"},{default:e.withCtx(()=>[e.createElementVNode("span",Xe,e.toDisplayString(t.label),1)]),_:1},8,["class"]))}}),ee=e.defineComponent({__name:"VibePlaceholder",props:{variant:{type:String,default:void 0},size:{type:String,default:void 0},animation:{type:String,default:void 0},width:{type:[String,Number],default:void 0},tag:{type:String,default:"span"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const n=["placeholder"];return a.variant&&n.push(`bg-${a.variant}`),a.size&&n.push(`placeholder-${a.size}`),n.join(" ")}),l=e.computed(()=>{if(a.animation)return`placeholder-${a.animation}`}),i=e.computed(()=>{if(a.width)return{width:typeof a.width=="number"?`${a.width}%`:a.width}});return(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(l.value)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.value),style:e.normalizeStyle(i.value)},[e.renderSlot(n.$slots,"default")],6)]),_:3},8,["class"]))}}),te=e.defineComponent({__name:"VibeContainer",props:{fluid:{type:[Boolean,String],default:!1},tag:{type:String,default:"div"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>a.fluid===!1?"container":a.fluid===!0?"container-fluid":`container-${a.fluid}`);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),ae=e.defineComponent({__name:"VibeRow",props:{tag:{type:String,default:"div"},gutters:{type:Number,default:void 0},guttersX:{type:Number,default:void 0},guttersY:{type:Number,default:void 0},guttersSm:{type:Number,default:void 0},guttersMd:{type:Number,default:void 0},guttersLg:{type:Number,default:void 0},guttersXl:{type:Number,default:void 0},guttersXxl:{type:Number,default:void 0},guttersXSm:{type:Number,default:void 0},guttersXMd:{type:Number,default:void 0},guttersXLg:{type:Number,default:void 0},guttersXXl:{type:Number,default:void 0},guttersXXxl:{type:Number,default:void 0},guttersYSm:{type:Number,default:void 0},guttersYMd:{type:Number,default:void 0},guttersYLg:{type:Number,default:void 0},guttersYXl:{type:Number,default:void 0},guttersYXxl:{type:Number,default:void 0},rowCols:{type:Number,default:void 0},rowColsSm:{type:Number,default:void 0},rowColsMd:{type:Number,default:void 0},rowColsLg:{type:Number,default:void 0},rowColsXl:{type:Number,default:void 0},rowColsXxl:{type:Number,default:void 0},alignItems:{type:String,default:void 0},justifyContent:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["row"];a.gutters!==void 0&&l.push(`g-${a.gutters}`),a.guttersX!==void 0&&l.push(`gx-${a.guttersX}`),a.guttersY!==void 0&&l.push(`gy-${a.guttersY}`);const i=["sm","md","lg","xl","xxl"];return i.forEach(n=>{const s=n.charAt(0).toUpperCase()+n.slice(1),u=`gutters${s}`;a[u]!==void 0&&l.push(`g-${n}-${a[u]}`);const c=`guttersX${s}`;a[c]!==void 0&&l.push(`gx-${n}-${a[c]}`);const b=`guttersY${s}`;a[b]!==void 0&&l.push(`gy-${n}-${a[b]}`)}),a.rowCols!==void 0&&l.push(`row-cols-${a.rowCols}`),i.forEach(n=>{const s=`rowCols${n.charAt(0).toUpperCase()+n.slice(1)}`;a[s]!==void 0&&l.push(`row-cols-${n}-${a[s]}`)}),a.alignItems&&l.push(`align-items-${a.alignItems}`),a.justifyContent&&l.push(`justify-content-${a.justifyContent}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),oe=e.defineComponent({__name:"VibeCol",props:{tag:{type:String,default:"div"},cols:{type:[Number,String,Boolean],default:void 0},sm:{type:[Number,String,Boolean],default:void 0},md:{type:[Number,String,Boolean],default:void 0},lg:{type:[Number,String,Boolean],default:void 0},xl:{type:[Number,String,Boolean],default:void 0},xxl:{type:[Number,String,Boolean],default:void 0},offset:{type:Number,default:void 0},offsetSm:{type:Number,default:void 0},offsetMd:{type:Number,default:void 0},offsetLg:{type:Number,default:void 0},offsetXl:{type:Number,default:void 0},offsetXxl:{type:Number,default:void 0},order:{type:[Number,String],default:void 0},orderSm:{type:[Number,String],default:void 0},orderMd:{type:[Number,String],default:void 0},orderLg:{type:[Number,String],default:void 0},orderXl:{type:[Number,String],default:void 0},orderXxl:{type:[Number,String],default:void 0},alignSelf:{type:String,default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=[];return a.cols!==void 0||a.sm!==void 0||a.md!==void 0||a.lg!==void 0||a.xl!==void 0||a.xxl!==void 0?(a.cols===!0?l.push("col"):a.cols==="auto"?l.push("col-auto"):a.cols&&l.push(`col-${a.cols}`),[{name:"sm",value:a.sm},{name:"md",value:a.md},{name:"lg",value:a.lg},{name:"xl",value:a.xl},{name:"xxl",value:a.xxl}].forEach(({name:s,value:u})=>{u===!0?l.push(`col-${s}`):u==="auto"?l.push(`col-${s}-auto`):u!==void 0&&l.push(`col-${s}-${u}`)})):l.push("col"),a.offset!==void 0&&l.push(`offset-${a.offset}`),a.offsetSm!==void 0&&l.push(`offset-sm-${a.offsetSm}`),a.offsetMd!==void 0&&l.push(`offset-md-${a.offsetMd}`),a.offsetLg!==void 0&&l.push(`offset-lg-${a.offsetLg}`),a.offsetXl!==void 0&&l.push(`offset-xl-${a.offsetXl}`),a.offsetXxl!==void 0&&l.push(`offset-xxl-${a.offsetXxl}`),a.order!==void 0&&l.push(`order-${a.order}`),a.orderSm!==void 0&&l.push(`order-sm-${a.orderSm}`),a.orderMd!==void 0&&l.push(`order-md-${a.orderMd}`),a.orderLg!==void 0&&l.push(`order-lg-${a.orderLg}`),a.orderXl!==void 0&&l.push(`order-xl-${a.orderXl}`),a.orderXxl!==void 0&&l.push(`order-xxl-${a.orderXxl}`),a.alignSelf&&l.push(`align-self-${a.alignSelf}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["class"]))}}),Ue=["src","alt"],Ye={key:1,class:"card-header"},Je={key:2,class:"card-body"},Ke={key:0,class:"card-title"},We={key:1,class:"card-text"},Qe={key:3,class:"card-footer"},Ze=["src","alt"],le=e.defineComponent({__name:"VibeCard",props:{variant:{type:String,default:void 0},border:{type:String,default:void 0},textVariant:{type:String,default:void 0},tag:{type:String,default:"div"},title:{type:String,default:void 0},body:{type:String,default:void 0},header:{type:String,default:void 0},footer:{type:String,default:void 0},imgSrc:{type:String,default:void 0},imgAlt:{type:String,default:""},imgTop:{type:Boolean,default:!0},imgBottom:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{const l=["card"];return a.variant&&l.push(`text-bg-${a.variant}`),a.border&&l.push(`border-${a.border}`),a.textVariant&&l.push(`text-${a.textVariant}`),l.join(" ")});return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(o.value)},{default:e.withCtx(()=>[t.imgSrc&&t.imgTop?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.imgSrc,alt:t.imgAlt,class:"card-img-top"},null,8,Ue)):e.createCommentVNode("",!0),t.header||l.$slots.header?(e.openBlock(),e.createElementBlock("div",Ye,[e.renderSlot(l.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.header),1)])])):e.createCommentVNode("",!0),t.title||t.body||l.$slots.default||l.$slots.body?(e.openBlock(),e.createElementBlock("div",Je,[t.title||l.$slots.title?(e.openBlock(),e.createElementBlock("h5",Ke,[e.renderSlot(l.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)])])):e.createCommentVNode("",!0),t.body||l.$slots.body?(e.openBlock(),e.createElementBlock("p",We,[e.renderSlot(l.$slots,"body",{},()=>[e.createTextVNode(e.toDisplayString(t.body),1)])])):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default")])):e.createCommentVNode("",!0),t.footer||l.$slots.footer?(e.openBlock(),e.createElementBlock("div",Qe,[e.renderSlot(l.$slots,"footer",{},()=>[e.createTextVNode(e.toDisplayString(t.footer),1)])])):e.createCommentVNode("",!0),t.imgSrc&&t.imgBottom?(e.openBlock(),e.createElementBlock("img",{key:4,src:t.imgSrc,alt:t.imgAlt,class:"card-img-bottom"},null,8,Ze)):e.createCommentVNode("",!0)]),_:3},8,["class"]))}}),_e=["aria-label"],et={class:"breadcrumb"},tt=["aria-current"],ne=e.defineComponent({__name:"VibeBreadcrumb",props:{ariaLabel:{type:String,default:"breadcrumb"},items:{type:Array,required:!0}},emits:["item-click","component-error"],setup(t,{emit:r}){const a=r,o=(l,i,n)=>{l.active||a("item-click",{item:l,index:i,event:n})};return(l,i)=>(e.openBlock(),e.createElementBlock("nav",{"aria-label":t.ariaLabel},[e.createElementVNode("ol",et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(n,s)=>(e.openBlock(),e.createElementBlock("li",{key:s,class:e.normalizeClass(["breadcrumb-item",{active:n.active}]),"aria-current":n.active?"page":void 0},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.to?"router-link":"span"),{href:n.href,to:n.to,onClick:u=>o(n,s,u)},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"item",{item:n,index:s},()=>[e.createTextVNode(e.toDisplayString(n.text),1)])]),_:2},1032,["href","to","onClick"]))],10,tt))),128))])],8,_e))}}),at={class:"dropdown-menu"},ot={key:0,class:"dropdown-divider"},lt={key:1,class:"dropdown-header"},ie=e.defineComponent({__name:"VibeNav",props:{items:{type:Array,required:!0},pills:{type:Boolean,default:!1},tabs:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},justified:{type:Boolean,default:!1},fill:{type:Boolean,default:!1},underline:{type:Boolean,default:!1},tag:{type:String,default:"ul"}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=new Map,s=e.computed(()=>{const d=["nav"];return o.pills&&d.push("nav-pills"),o.tabs&&d.push("nav-tabs"),o.vertical&&d.push("flex-column"),o.justified&&d.push("nav-justified"),o.fill&&d.push("nav-fill"),o.underline&&d.push("nav-underline"),d.join(" ")}),u=d=>l("show",d),c=d=>l("shown",d),b=d=>l("hide",d),m=d=>l("hidden",d),g=async()=>{if(i.value)try{const f=(await import("bootstrap")).Tab;i.value.querySelectorAll('[data-bs-toggle="tab"], [data-bs-toggle="pill"]').forEach(y=>{const B=y;if(!n.has(B)){const k=new f(B);n.set(B,k),B.addEventListener("show.bs.tab",u),B.addEventListener("shown.bs.tab",c),B.addEventListener("hide.bs.tab",b),B.addEventListener("hidden.bs.tab",m)}})}catch(d){l("component-error",{message:"Bootstrap JS not loaded. Nav will use basic Vue logic.",componentName:"VibeNav",originalError:d})}};e.onMounted(g),e.onBeforeUnmount(()=>{n.forEach((d,f)=>{f.removeEventListener("show.bs.tab",u),f.removeEventListener("shown.bs.tab",c),f.removeEventListener("hide.bs.tab",b),f.removeEventListener("hidden.bs.tab",m),d.dispose()}),n.clear()}),e.watch(()=>o.items,async()=>{await e.nextTick(),await g()},{deep:!0});const h=(d,f,p)=>{d.disabled||l("item-click",{item:d,index:f,event:p})};return r({bsInstances:n,refresh:g}),(d,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"navRef",ref:i,class:e.normalizeClass(s.value)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(p,y)=>(e.openBlock(),e.createElementBlock("li",{key:y,class:e.normalizeClass(["nav-item",{dropdown:p.children&&p.children.length>0}])},[p.children&&p.children.length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("a",{class:e.normalizeClass(["nav-link dropdown-toggle",{active:p.active,disabled:p.disabled}]),"data-bs-toggle":"dropdown",href:"#",role:"button","aria-expanded":"false"},e.toDisplayString(p.text),3),e.createElementVNode("ul",at,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.children,(B,k)=>(e.openBlock(),e.createElementBlock("li",{key:k},[B.divider?(e.openBlock(),e.createElementBlock("hr",ot)):B.header?(e.openBlock(),e.createElementBlock("h6",lt,e.toDisplayString(B.text),1)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(B.href?"a":B.to?"router-link":"button"),{key:2,class:e.normalizeClass(["dropdown-item",{active:B.active,disabled:B.disabled}]),href:B.href,to:B.to,type:!B.href&&!B.to?"button":void 0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.text),1)]),_:2},1032,["class","href","to","type"]))]))),128))])],64)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.href?"a":p.to?"router-link":"button"),{key:1,class:e.normalizeClass(["nav-link",{active:p.active,disabled:p.disabled}]),href:p.href,to:p.to,type:!p.href&&!p.to?"button":void 0,"aria-current":p.active?"page":void 0,"data-bs-toggle":(t.tabs||t.pills)&&p.href&&p.href.startsWith("#")?t.tabs?"tab":"pill":void 0,"data-bs-target":p.href&&p.href.startsWith("#")?p.href:void 0,onClick:B=>h(p,y,B)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.text),1)]),_:2},1032,["class","href","to","type","aria-current","data-bs-toggle","data-bs-target","onClick"]))],2))),128))]),_:1},8,["class"]))}}),nt=e.defineComponent({__name:"VibeNavbar",props:{variant:{type:String,default:"light"},theme:{type:String,default:void 0},expand:{type:[Boolean,String],default:"lg"},container:{type:[Boolean,String],default:!0},position:{type:String,default:void 0},tag:{type:String,default:"nav"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.reactive({}),l=u=>{o[u]=!o[u]};e.provide("vibeNavbarCollapse",{collapseStates:o,toggleCollapse:l});const i=e.computed(()=>{const u=["navbar"];return a.expand===!0?u.push("navbar-expand"):typeof a.expand=="string"&&u.push(`navbar-expand-${a.expand}`),u.push(`bg-${a.variant}`),a.position&&u.push(a.position),u.join(" ")}),n=e.computed(()=>{if(a.theme)return a.theme;if(a.variant==="dark")return"dark";if(a.variant==="light")return"light"}),s=e.computed(()=>{if(a.container!==!1)return a.container===!0?"container-fluid":`container-${a.container}`});return(u,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(i.value),"data-bs-theme":n.value},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(s.value)},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2)):e.renderSlot(u.$slots,"default",{key:1},void 0,!0)]),_:3},8,["class","data-bs-theme"]))}}),I=(t,r)=>{const a=t.__vccOpts||t;for(const[o,l]of r)a[o]=l;return a},re=I(nt,[["__scopeId","data-v-8228b170"]]),se=e.defineComponent({__name:"VibeNavbarBrand",props:{href:{type:String,default:void 0},to:{type:[String,Object],default:void 0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=a.href?"a":a.to?"router-link":"span";return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(o)),{class:"navbar-brand",href:t.href,to:t.to},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},8,["href","to"]))}}),it=["data-bs-target","aria-controls","aria-expanded","aria-label"],de=e.defineComponent({__name:"VibeNavbarToggle",props:{target:{type:String,required:!0},ariaLabel:{type:String,default:"Toggle navigation"}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.inject("vibeNavbarCollapse",null),l=e.computed(()=>o?.collapseStates[a.target]??!1),i=async()=>{o&&o.toggleCollapse(a.target);try{const n=document.getElementById(a.target);n&&(await import("bootstrap")).Collapse.getOrCreateInstance(n).toggle()}catch{}};return(n,s)=>(e.openBlock(),e.createElementBlock("button",{class:"navbar-toggler",type:"button","data-bs-target":`#${t.target}`,"data-bs-toggle":"collapse","aria-controls":t.target,"aria-expanded":l.value,"aria-label":t.ariaLabel,onClick:i},[...s[0]||(s[0]=[e.createElementVNode("span",{class:"navbar-toggler-icon"},null,-1)])],8,it))}}),rt={class:"dropdown-menu"},st={key:0},dt={key:1},ct={class:"dropdown-header"},ut={key:2},ce=e.defineComponent({__name:"VibeNavbarNav",props:{tag:{type:String,default:"ul"},items:{type:Array,default:void 0}},emits:["item-click","dropdown-item-click","component-error"],setup(t,{emit:r}){const a=r,o=c=>{const b=["nav-item"];return c.children?.length&&b.push("dropdown"),b.join(" ")},l=c=>{const b=["nav-link"];return c.active&&b.push("active"),c.disabled&&b.push("disabled"),c.children?.length&&b.push("dropdown-toggle"),b.join(" ")},i=c=>c.href?"a":c.to?"router-link":"a",n=c=>{const b=["dropdown-item"];return c.active&&b.push("active"),c.disabled&&b.push("disabled"),b.join(" ")},s=(c,b,m)=>{c.disabled||a("item-click",{item:c,index:b,event:m})},u=(c,b,m,g,h)=>{!m.disabled&&!m.divider&&!m.header&&a("dropdown-item-click",{item:c,itemIndex:b,child:m,childIndex:g,event:h})};return(c,b)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:"navbar-nav"},{default:e.withCtx(()=>[t.items&&t.items.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.items,(m,g)=>(e.openBlock(),e.createElementBlock("li",{key:g,class:e.normalizeClass(o(m))},[m.children?.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("a",{class:e.normalizeClass(l(m)),href:"#",role:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[e.renderSlot(c.$slots,"item",{item:m,index:g},()=>[e.createTextVNode(e.toDisplayString(m.text),1)])],2),e.createElementVNode("ul",rt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.children,(h,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[h.divider?(e.openBlock(),e.createElementBlock("li",st,[...b[0]||(b[0]=[e.createElementVNode("hr",{class:"dropdown-divider"},null,-1)])])):h.header?(e.openBlock(),e.createElementBlock("li",dt,[e.createElementVNode("h6",ct,e.toDisplayString(h.text),1)])):(e.openBlock(),e.createElementBlock("li",ut,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.href?"a":h.to?"router-link":"button"),{class:e.normalizeClass(n(h)),href:h.href,to:h.to,type:!h.href&&!h.to?"button":void 0,onClick:f=>u(m,g,h,d,f)},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"dropdown-item",{item:m,child:h,index:g,childIndex:d},()=>[e.createTextVNode(e.toDisplayString(h.text),1)])]),_:2},1032,["class","href","to","type","onClick"]))]))],64))),128))])],64)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i(m)),{key:1,class:e.normalizeClass(l(m)),href:m.href,to:m.to,"aria-current":m.active?"page":void 0,"aria-disabled":m.disabled,onClick:h=>s(m,g,h)},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"item",{item:m,index:g},()=>[e.createTextVNode(e.toDisplayString(m.text),1)])]),_:2},1032,["class","href","to","aria-current","aria-disabled","onClick"]))],2))),128)):e.renderSlot(c.$slots,"default",{key:1})]),_:3}))}}),mt=["aria-label"],ft=["disabled","aria-disabled"],pt=["aria-current","onClick"],bt=["disabled","aria-disabled"],ue=e.defineComponent({__name:"VibePagination",props:{size:{type:String,default:void 0},ariaLabel:{type:String,default:"Pagination"},totalPages:{type:Number,required:!0},currentPage:{type:Number,default:1},showPrevNext:{type:Boolean,default:!0},prevText:{type:String,default:"Previous"},nextText:{type:String,default:"Next"}},emits:["update:currentPage","page-click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const c=["pagination"];return a.size&&c.push(`pagination-${a.size}`),c.join(" ")}),i=e.computed(()=>Array.from({length:a.totalPages},(c,b)=>b+1)),n=c=>{c>=1&&c<=a.totalPages&&(o("update:currentPage",c),o("page-click",c))},s=e.computed(()=>a.currentPage===1),u=e.computed(()=>a.currentPage===a.totalPages);return(c,b)=>(e.openBlock(),e.createElementBlock("nav",{"aria-label":t.ariaLabel},[e.createElementVNode("ul",{class:e.normalizeClass(l.value)},[t.showPrevNext?(e.openBlock(),e.createElementBlock("li",{key:0,class:e.normalizeClass(["page-item",{disabled:s.value}])},[e.createElementVNode("button",{class:"page-link",type:"button",disabled:s.value,"aria-disabled":s.value,onClick:b[0]||(b[0]=m=>n(t.currentPage-1))},[e.renderSlot(c.$slots,"prev",{disabled:s.value},()=>[e.createTextVNode(e.toDisplayString(t.prevText),1)])],8,ft)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m,class:e.normalizeClass(["page-item",{active:m===t.currentPage}])},[e.createElementVNode("button",{class:"page-link",type:"button","aria-current":m===t.currentPage?"page":void 0,onClick:g=>n(m)},[e.renderSlot(c.$slots,"page",{page:m,active:m===t.currentPage},()=>[e.createTextVNode(e.toDisplayString(m),1)])],8,pt)],2))),128)),t.showPrevNext?(e.openBlock(),e.createElementBlock("li",{key:1,class:e.normalizeClass(["page-item",{disabled:u.value}])},[e.createElementVNode("button",{class:"page-link",type:"button",disabled:u.value,"aria-disabled":u.value,onClick:b[1]||(b[1]=m=>n(t.currentPage+1))},[e.renderSlot(c.$slots,"next",{disabled:u.value},()=>[e.createTextVNode(e.toDisplayString(t.nextText),1)])],8,bt)],2)):e.createCommentVNode("",!0)],2)],8,mt))}}),ht=["id","aria-labelledby"],me=e.defineComponent({__name:"VibeTabContent",props:{id:{type:String,default:void 0},tag:{type:String,default:"div"},panes:{type:Array,required:!0},fade:{type:Boolean,default:!0}},emits:["component-error","shown","hide","hidden"],setup(t,{emit:r}){const a=t,o=e.ref(null),l=new Map,i=n=>{const s=["tab-pane"];return a.fade&&s.push("fade"),n.active&&s.push("show","active"),s.join(" ")};return e.onMounted(async()=>{if(o.value)try{const s=(await import("bootstrap")).Tab}catch{}}),e.onBeforeUnmount(()=>{l.forEach(n=>n.dispose()),l.clear()}),(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{id:t.id,ref_key:"tabContentRef",ref:o,class:"tab-content"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.panes,(u,c)=>(e.openBlock(),e.createElementBlock("div",{key:u.id,id:u.id,class:e.normalizeClass(i(u)),role:"tabpanel","aria-labelledby":`${u.id}-tab`,tabindex:"0"},[e.renderSlot(n.$slots,"pane",{pane:u,index:c},()=>[e.createTextVNode(e.toDisplayString(u.content),1)])],10,ht))),128))]),_:3},8,["id"]))}}),fe=e.defineComponent({__name:"VibeListGroup",props:{flush:{type:Boolean,default:!1},horizontal:{type:[Boolean,String],default:!1},numbered:{type:Boolean,default:!1},tag:{type:String,default:"ul"},items:{type:Array,required:!0}},emits:["item-click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const u=["list-group"];return a.flush&&u.push("list-group-flush"),a.numbered&&u.push("list-group-numbered"),a.horizontal===!0?u.push("list-group-horizontal"):typeof a.horizontal=="string"&&u.push(`list-group-horizontal-${a.horizontal}`),u.join(" ")}),i=u=>u.href?"a":u.to?"router-link":"li",n=u=>{const c=["list-group-item"];return u.active&&c.push("active"),u.disabled&&c.push("disabled"),u.variant&&c.push(`list-group-item-${u.variant}`),c.join(" ")},s=(u,c,b)=>{u.disabled||o("item-click",{item:u,index:c,event:b})};return(u,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(l.value)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(b,m)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i(b)),{key:m,class:e.normalizeClass(n(b)),href:b.href,to:b.to,"aria-disabled":b.disabled,"aria-current":b.active,onClick:g=>s(b,m,g)},{default:e.withCtx(()=>[e.renderSlot(u.$slots,"item",{item:b,index:m},()=>[e.createTextVNode(e.toDisplayString(b.text),1)])]),_:2},1032,["class","href","to","aria-disabled","aria-current","onClick"]))),128))]),_:3},8,["class"]))}}),yt=["aria-valuenow","aria-valuemax"],pe=e.defineComponent({__name:"VibeProgress",props:{height:{type:String,default:void 0},bars:{type:Array,required:!0}},emits:["component-error"],setup(t,{emit:r}){const a=t,o=e.computed(()=>{if(a.height)return{height:a.height}}),l=s=>{const u=["progress-bar"];return s.variant&&u.push(`bg-${s.variant}`),(s.striped||s.animated)&&u.push("progress-bar-striped"),s.animated&&u.push("progress-bar-animated"),u.join(" ")},i=s=>{const u=s.max||100;return{width:`${Math.min(100,Math.max(0,s.value/u*100))}%`}},n=s=>s.label?s.label:s.showValue?`${s.value}%`:"";return(s,u)=>(e.openBlock(),e.createElementBlock("div",{class:"progress",style:e.normalizeStyle(o.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.bars,(c,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(l(c)),style:e.normalizeStyle(i(c)),role:"progressbar","aria-valuenow":c.value,"aria-valuemin":0,"aria-valuemax":c.max||100},[e.renderSlot(s.$slots,"label",{bar:c,index:b},()=>[e.createTextVNode(e.toDisplayString(n(c)),1)])],14,yt))),128))],4))}});let be=0;function N(t="vibe"){const r=e.getCurrentInstance(),a=r?r.uid:"no-instance";return be++,`${t}-${a}-${be}`}const gt=["id"],kt={class:"accordion-header"},Bt=["data-bs-target","aria-expanded","aria-controls","onClick"],St=["id","data-bs-parent"],Ct={class:"accordion-body"},he=e.defineComponent({__name:"VibeAccordion",props:{id:{type:String,default:()=>N("accordion")},flush:{type:Boolean,default:!1},items:{type:Array,required:!0},alwaysOpen:{type:Boolean,default:!1}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=new Map,s=h=>l("show",h),u=h=>l("shown",h),c=h=>l("hide",h),b=h=>l("hidden",h),m=async()=>{if(i.value)try{const d=(await import("bootstrap")).Collapse;i.value.querySelectorAll(".accordion-collapse").forEach(p=>{const y=p.id;if(!n.has(y)){const B=new d(p,{toggle:!1,parent:o.alwaysOpen?void 0:`#${o.id}`});n.set(y,B),p.addEventListener("show.bs.collapse",()=>s(y)),p.addEventListener("shown.bs.collapse",()=>u(y)),p.addEventListener("hide.bs.collapse",()=>c(y)),p.addEventListener("hidden.bs.collapse",()=>b(y)),o.items.find(E=>E.id===y)?.show&&B.show()}})}catch(h){l("component-error",{message:"Bootstrap JS not loaded. Accordion will use data attributes only.",componentName:"VibeAccordion",originalError:h})}};e.onMounted(m),e.onBeforeUnmount(()=>{n.forEach((h,d)=>{const f=document.getElementById(d);f&&(f.removeEventListener("show.bs.collapse",()=>s(d)),f.removeEventListener("shown.bs.collapse",()=>u(d)),f.removeEventListener("hide.bs.collapse",()=>c(d)),f.removeEventListener("hidden.bs.collapse",()=>b(d))),h.dispose()}),n.clear()}),e.watch(()=>o.items,async(h,d)=>{h.length!==d?.length&&(await e.nextTick(),await m()),h.forEach(f=>{const p=n.get(f.id);p&&(f.show?p.show():o.alwaysOpen||p.hide())})},{deep:!0});const g=(h,d)=>{l("item-click",{item:h,index:d})};return r({bsInstances:n,refresh:m}),(h,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"accordionRef",ref:i,id:t.id,class:e.normalizeClass(["accordion",{"accordion-flush":t.flush}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"accordion-item"},[e.createElementVNode("h2",kt,[e.createElementVNode("button",{class:e.normalizeClass(["accordion-button",{collapsed:!f.show}]),type:"button","data-bs-toggle":"collapse","data-bs-target":`#${f.id}`,"aria-expanded":f.show,"aria-controls":f.id,onClick:y=>g(f,p)},[e.renderSlot(h.$slots,"title",{item:f,index:p},()=>[e.createTextVNode(e.toDisplayString(f.title),1)])],10,Bt)]),e.createElementVNode("div",{id:f.id,class:e.normalizeClass(["accordion-collapse","collapse",{show:f.show}]),"data-bs-parent":t.alwaysOpen?void 0:`#${t.id}`},[e.createElementVNode("div",Ct,[e.renderSlot(h.$slots,"content",{item:f,index:p},()=>[e.createTextVNode(e.toDisplayString(f.content),1)])])],10,St)]))),128))],10,gt))}}),ye=e.defineComponent({__name:"VibeCollapse",props:{id:{type:String,default:()=>N("collapse")},modelValue:{type:Boolean,default:!1},tag:{type:String,default:"div"},horizontal:{type:Boolean,default:!1},isNav:{type:Boolean,default:!1}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeNavbarCollapse",null),i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=()=>{s.value=!0,o("show")},c=()=>{o("shown"),o("update:modelValue",!0)},b=()=>{o("hide")},m=()=>{s.value=!1,o("hidden"),o("update:modelValue",!1)};e.onMounted(async()=>{if(i.value)try{const f=(await import("bootstrap")).Collapse;n.value=new f(i.value,{toggle:!1}),i.value.addEventListener("show.bs.collapse",u),i.value.addEventListener("shown.bs.collapse",c),i.value.addEventListener("hide.bs.collapse",b),i.value.addEventListener("hidden.bs.collapse",m),(l&&a.id in l.collapseStates?l.collapseStates[a.id]:a.modelValue)&&n.value.show()}catch(d){o("component-error",{message:"Bootstrap JS not loaded. Collapse will use CSS classes only.",componentName:"VibeCollapse",originalError:d})}}),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.collapse",u),i.value.removeEventListener("shown.bs.collapse",c),i.value.removeEventListener("hide.bs.collapse",b),i.value.removeEventListener("hidden.bs.collapse",m)),n.value&&(n.value.dispose(),n.value=null)});const g=e.computed(()=>l&&a.id in l.collapseStates?l.collapseStates[a.id]:a.modelValue);e.watch(g,d=>{n.value&&(d&&!s.value?n.value.show():!d&&s.value&&n.value.hide())});const h=e.computed(()=>{const d=["collapse"];return a.isNav&&d.push("navbar-collapse"),a.horizontal&&d.push("collapse-horizontal"),!n.value&&g.value&&d.push("show"),d.join(" ")});return(d,f)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"collapseRef",ref:i,id:t.id,class:e.normalizeClass(h.value)},{default:e.withCtx(()=>[e.renderSlot(d.$slots,"default")]),_:3},8,["id","class"]))}}),Vt=["id","data-bs-auto-close"],vt=["id","data-bs-auto-close"],wt=["aria-labelledby"],$t={key:0},Et={key:1},Nt={class:"dropdown-header"},xt={key:2},ge=e.defineComponent({__name:"VibeDropdown",props:{id:{type:String,default:()=>N("dropdown")},text:{type:String,default:"Dropdown"},variant:{type:String,default:"primary"},size:{type:String,default:void 0},split:{type:Boolean,default:!1},direction:{type:String,default:"down"},menuEnd:{type:Boolean,default:!1},items:{type:Array,required:!0},autoClose:{type:[Boolean,String],default:!0}},emits:["item-click","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.computed(()=>o.direction==="up"?"dropup":o.direction==="end"?"dropend":o.direction==="start"?"dropstart":"dropdown"),u=e.computed(()=>{const k=["btn",`btn-${o.variant}`];return o.size&&k.push(`btn-${o.size}`),k.join(" ")}),c=e.computed(()=>{const k=["dropdown-menu"];return o.menuEnd&&k.push("dropdown-menu-end"),k.join(" ")}),b=k=>{const E=["dropdown-item"];return k.active&&E.push("active"),k.disabled&&E.push("disabled"),E.join(" ")},m=()=>l("show"),g=()=>l("shown"),h=()=>l("hide"),d=()=>l("hidden");e.onMounted(async()=>{if(i.value)try{const E=(await import("bootstrap")).Dropdown,w=i.value.querySelector(".dropdown-toggle");w&&(n.value=new E(w,{autoClose:o.autoClose}),w.addEventListener("show.bs.dropdown",m),w.addEventListener("shown.bs.dropdown",g),w.addEventListener("hide.bs.dropdown",h),w.addEventListener("hidden.bs.dropdown",d))}catch(k){l("component-error",{message:"Bootstrap JS not loaded. Dropdown will use data attributes only.",componentName:"VibeDropdown",originalError:k})}}),e.onBeforeUnmount(()=>{const k=i.value?.querySelector(".dropdown-toggle");k&&(k.removeEventListener("show.bs.dropdown",m),k.removeEventListener("shown.bs.dropdown",g),k.removeEventListener("hide.bs.dropdown",h),k.removeEventListener("hidden.bs.dropdown",d)),n.value&&(n.value.dispose(),n.value=null)});const f=(k,E,w)=>{!k.disabled&&!k.divider&&!k.header&&l("item-click",{item:k,index:E,event:w})};return r({show:()=>n.value?.show(),hide:()=>n.value?.hide(),toggle:()=>n.value?.toggle()}),(k,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dropdownRef",ref:i,class:e.normalizeClass(s.value)},[t.split?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:e.normalizeClass(u.value),type:"button"},[e.renderSlot(k.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])],2),e.createElementVNode("button",{id:t.id,type:"button",class:e.normalizeClass([u.value,"dropdown-toggle","dropdown-toggle-split"]),"data-bs-toggle":"dropdown","aria-expanded":"false","data-bs-auto-close":t.autoClose},[...E[0]||(E[0]=[e.createElementVNode("span",{class:"visually-hidden"},"Toggle Dropdown",-1)])],10,vt)],64)):(e.openBlock(),e.createElementBlock("button",{key:0,id:t.id,class:e.normalizeClass([u.value,"dropdown-toggle"]),type:"button","data-bs-toggle":"dropdown","aria-expanded":"false","data-bs-auto-close":t.autoClose},[e.renderSlot(k.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(t.text),1)])],10,Vt)),e.createElementVNode("ul",{class:e.normalizeClass(c.value),"aria-labelledby":t.id},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(w,z)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:z},[w.divider?(e.openBlock(),e.createElementBlock("li",$t,[...E[1]||(E[1]=[e.createElementVNode("hr",{class:"dropdown-divider"},null,-1)])])):w.header?(e.openBlock(),e.createElementBlock("li",Et,[e.createElementVNode("h6",Nt,[e.renderSlot(k.$slots,"header",{item:w,index:z},()=>[e.createTextVNode(e.toDisplayString(w.text),1)])])])):(e.openBlock(),e.createElementBlock("li",xt,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w.href?"a":w.to?"router-link":"button"),{class:e.normalizeClass(b(w)),href:w.href,to:w.to,type:!w.href&&!w.to?"button":void 0,disabled:w.disabled,onClick:F=>f(w,z,F)},{default:e.withCtx(()=>[e.renderSlot(k.$slots,"item",{item:w,index:z},()=>[e.createTextVNode(e.toDisplayString(w.text),1)])]),_:2},1032,["class","href","to","type","disabled","onClick"]))]))],64))),128))],10,wt)],2))}}),M=[];function ke(t){if(M.length>0){t.preventDefault();const r=M.pop();r&&r()}}function A(t){e.onMounted(()=>{M.push(t),M.length===1&&typeof document<"u"&&document.addEventListener("backbutton",ke)}),e.onUnmounted(()=>{const r=M.indexOf(t);r!==-1&&M.splice(r,1),M.length===0&&typeof document<"u"&&document.removeEventListener("backbutton",ke)})}const Tt=["id","aria-labelledby","aria-hidden","data-bs-backdrop","data-bs-keyboard"],Lt={class:"modal-content"},zt={key:0,class:"modal-header"},Dt=["id"],Mt={class:"modal-body"},Ft={key:1,class:"modal-footer"},Be=I(e.defineComponent({__name:"VibeModal",props:{id:{type:String,default:()=>N("modal")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},size:{type:String,default:void 0},centered:{type:Boolean,default:!1},scrollable:{type:Boolean,default:!1},fullscreen:{type:[Boolean,String],default:!1},staticBackdrop:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},teleport:{type:[String,Boolean],default:"body"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>{const y=["modal-dialog"];return o.size&&y.push(`modal-${o.size}`),o.centered&&y.push("modal-dialog-centered"),o.scrollable&&y.push("modal-dialog-scrollable"),o.fullscreen===!0?y.push("modal-fullscreen"):typeof o.fullscreen=="string"&&y.push(`modal-fullscreen-${o.fullscreen}-down`),y.join(" ")}),c=()=>{s.value=!0,l("show")},b=()=>{l("shown"),l("update:modelValue",!0)},m=()=>{l("hide")},g=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},h=async()=>{if(i.value){n.value&&n.value.dispose();try{const B=(await import("bootstrap")).Modal;n.value=new B(i.value,{backdrop:o.staticBackdrop?"static":!0,keyboard:!o.staticBackdrop,focus:!0}),i.value.addEventListener("show.bs.modal",c),i.value.addEventListener("shown.bs.modal",b),i.value.addEventListener("hide.bs.modal",m),i.value.addEventListener("hidden.bs.modal",g),o.modelValue&&n.value.show()}catch(y){l("component-error",{message:"Bootstrap JS not loaded. Modal will use data attributes only.",componentName:"VibeModal",originalError:y})}}};e.onMounted(h),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.modal",c),i.value.removeEventListener("shown.bs.modal",b),i.value.removeEventListener("hide.bs.modal",m),i.value.removeEventListener("hidden.bs.modal",g)),n.value&&(s.value&&n.value.hide(),n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,y=>{n.value&&(y&&!s.value?n.value.show():!y&&s.value&&n.value.hide())}),e.watch(()=>o.staticBackdrop,h);const d=()=>n.value?.show(),f=()=>n.value?.hide(),p=()=>n.value?.handleUpdate();return A(()=>{s.value&&f()}),r({show:d,hide:f,handleUpdate:p,bsInstance:n}),(y,B)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{ref_key:"modalRef",ref:i,id:t.id,class:e.normalizeClass(["modal fade",{show:s.value}]),tabindex:"-1","aria-labelledby":`${t.id}-label`,"aria-hidden":!s.value,"data-bs-backdrop":t.staticBackdrop?"static":void 0,"data-bs-keyboard":!t.staticBackdrop},[e.createElementVNode("div",{class:e.normalizeClass(u.value)},[e.createElementVNode("div",Lt,[t.hideHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",zt,[e.createElementVNode("h5",{id:`${t.id}-label`,class:"modal-title"},[e.renderSlot(y.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)],!0)],8,Dt),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:f})])),e.createElementVNode("div",Mt,[e.renderSlot(y.$slots,"default",{},void 0,!0)]),t.hideFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ft,[e.renderSlot(y.$slots,"footer",{},()=>[e.createElementVNode("button",{type:"button",class:"btn btn-secondary",onClick:f},"Close")],!0)]))])],2)],10,Tt)],8,["to","disabled"]))}}),[["__scopeId","data-v-c11ac690"]]),It=["id","aria-labelledby","data-bs-backdrop","data-bs-scroll"],Rt={class:"offcanvas-header"},Pt=["id"],qt={class:"offcanvas-body"},Se=I(e.defineComponent({__name:"VibeOffcanvas",props:{id:{type:String,default:()=>N("offcanvas")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},placement:{type:String,default:"start"},backdrop:{type:[Boolean,String],default:!0},scroll:{type:Boolean,default:!1},teleport:{type:[String,Boolean],default:"body"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>`offcanvas offcanvas-${o.placement}`),c=()=>{s.value=!0,l("show")},b=()=>{l("shown"),l("update:modelValue",!0)},m=()=>{l("hide")},g=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},h=async()=>{if(i.value){n.value&&n.value.dispose();try{const y=(await import("bootstrap")).Offcanvas;n.value=new y(i.value,{backdrop:o.backdrop===!1?!1:o.backdrop==="static"?"static":!0,scroll:o.scroll,keyboard:o.backdrop!=="static"}),i.value.addEventListener("show.bs.offcanvas",c),i.value.addEventListener("shown.bs.offcanvas",b),i.value.addEventListener("hide.bs.offcanvas",m),i.value.addEventListener("hidden.bs.offcanvas",g),o.modelValue&&n.value.show()}catch(p){l("component-error",{message:"Bootstrap JS not loaded. Offcanvas will use data attributes only.",componentName:"VibeOffcanvas",originalError:p})}}};e.onMounted(h),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.offcanvas",c),i.value.removeEventListener("shown.bs.offcanvas",b),i.value.removeEventListener("hide.bs.offcanvas",m),i.value.removeEventListener("hidden.bs.offcanvas",g)),n.value&&(s.value&&n.value.hide(),n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,p=>{n.value&&(p&&!s.value?n.value.show():!p&&s.value&&n.value.hide())}),e.watch([()=>o.placement,()=>o.backdrop,()=>o.scroll],h);const d=()=>n.value?.show(),f=()=>n.value?.hide();return A(()=>{s.value&&f()}),r({show:d,hide:f,bsInstance:n}),(p,y)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{ref_key:"offcanvasRef",ref:i,id:t.id,class:e.normalizeClass(u.value),tabindex:"-1","aria-labelledby":`${t.id}-label`,"data-bs-backdrop":t.backdrop===!1?"false":t.backdrop==="static"?"static":"true","data-bs-scroll":t.scroll},[e.createElementVNode("div",Rt,[e.createElementVNode("h5",{id:`${t.id}-label`,class:"offcanvas-title"},[e.renderSlot(p.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)],!0)],8,Pt),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:f})]),e.createElementVNode("div",qt,[e.renderSlot(p.$slots,"default",{},void 0,!0)])],10,It)],8,["to","disabled"]))}}),[["__scopeId","data-v-f03bd194"]]),jt=["id","data-bs-autohide","data-bs-delay"],At={key:0,class:"toast-header"},Ot={class:"me-auto"},Ht={class:"toast-body"},Ce=e.defineComponent({__name:"VibeToast",props:{id:{type:String,default:()=>N("toast")},modelValue:{type:Boolean,default:!1},title:{type:String,default:""},variant:{type:String,default:void 0},autohide:{type:Boolean,default:!0},delay:{type:Number,default:5e3},teleport:{type:[String,Boolean],default:"body"},placement:{type:String,default:"top-end"}},emits:["update:modelValue","show","shown","hide","hidden","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.computed(()=>{const y=["toast"];return o.variant&&y.push(`text-bg-${o.variant}`),y.join(" ")}),c=e.computed(()=>{const y=["toast-container","position-fixed","p-3"],B=o.placement;return B.includes("top")&&y.push("top-0"),B.includes("bottom")&&y.push("bottom-0"),B.includes("middle")&&y.push("top-50","start-50","translate-middle"),B.includes("start")&&y.push("start-0"),B.includes("end")&&y.push("end-0"),B.includes("center")&&!B.includes("middle")&&y.push("start-50","translate-middle-x"),y.join(" ")}),b=()=>{s.value=!0,l("show")},m=()=>{l("shown"),l("update:modelValue",!0)},g=()=>{l("hide")},h=()=>{s.value=!1,l("hidden"),l("update:modelValue",!1)},d=async()=>{if(i.value){n.value&&n.value.dispose();try{const B=(await import("bootstrap")).Toast;n.value=new B(i.value,{autohide:o.autohide,delay:o.delay}),i.value.addEventListener("show.bs.toast",b),i.value.addEventListener("shown.bs.toast",m),i.value.addEventListener("hide.bs.toast",g),i.value.addEventListener("hidden.bs.toast",h),o.modelValue&&n.value.show()}catch(y){l("component-error",{message:"Bootstrap JS not loaded. Toast will use data attributes only.",componentName:"VibeToast",originalError:y})}}};e.onMounted(d),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("show.bs.toast",b),i.value.removeEventListener("shown.bs.toast",m),i.value.removeEventListener("hide.bs.toast",g),i.value.removeEventListener("hidden.bs.toast",h)),n.value&&(n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,y=>{n.value&&(y&&!s.value?n.value.show():!y&&s.value&&n.value.hide())}),e.watch([()=>o.autohide,()=>o.delay],d);const f=()=>n.value?.show(),p=()=>n.value?.hide();return r({show:f,hide:p,bsInstance:n}),(y,B)=>(e.openBlock(),e.createBlock(e.Teleport,{to:t.teleport===!0?"body":t.teleport||void 0,disabled:!t.teleport},[e.createElementVNode("div",{class:e.normalizeClass(c.value),style:{"z-index":"1090"}},[e.createElementVNode("div",{ref_key:"toastRef",ref:i,id:t.id,class:e.normalizeClass(u.value),role:"alert","aria-live":"assertive","aria-atomic":"true","data-bs-autohide":t.autohide,"data-bs-delay":t.delay},[t.title||y.$slots.header?(e.openBlock(),e.createElementBlock("div",At,[e.renderSlot(y.$slots,"header",{},()=>[e.createElementVNode("strong",Ot,e.toDisplayString(t.title),1)]),e.createElementVNode("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:p})])):e.createCommentVNode("",!0),e.createElementVNode("div",Ht,[e.renderSlot(y.$slots,"default")])],10,jt)],2)],8,["to","disabled"]))}}),Gt=["id","data-bs-ride","data-bs-interval","data-bs-keyboard","data-bs-pause","data-bs-wrap","data-bs-touch"],Xt={key:0,class:"carousel-indicators"},Ut=["data-bs-target","data-bs-slide-to","aria-current","aria-label"],Yt={class:"carousel-inner"},Jt=["data-bs-interval"],Kt=["src","alt"],Wt={key:0,class:"carousel-caption d-none d-md-block"},Qt={key:0},Zt={key:1},_t=["data-bs-target"],ea=["data-bs-target"],Ve=e.defineComponent({__name:"VibeCarousel",props:{id:{type:String,default:()=>N("carousel")},modelValue:{type:Number,default:0},controls:{type:Boolean,default:!0},indicators:{type:Boolean,default:!0},ride:{type:[Boolean,String],default:!1},interval:{type:[Number,Boolean],default:5e3},keyboard:{type:Boolean,default:!0},pause:{type:[String,Boolean],default:"hover"},wrap:{type:Boolean,default:!0},touch:{type:Boolean,default:!0},dark:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},items:{type:Array,required:!0}},emits:["update:modelValue","slide","slid","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=e.ref(o.modelValue),u=e.computed(()=>{const h=["carousel","slide"];return o.dark&&h.push("carousel-dark"),o.fade&&h.push("carousel-fade"),h.join(" ")}),c=h=>{l("slide",h)},b=h=>{s.value=h.to,l("update:modelValue",h.to),l("slid",h)},m=async()=>{if(i.value){n.value&&n.value.dispose();try{const d=(await import("bootstrap")).Carousel;n.value=new d(i.value,{interval:o.interval,keyboard:o.keyboard,pause:o.pause,ride:o.ride===!0?"carousel":o.ride,wrap:o.wrap,touch:o.touch}),i.value.addEventListener("slide.bs.carousel",c),i.value.addEventListener("slid.bs.carousel",b),o.modelValue!==0&&n.value.to(o.modelValue)}catch(h){l("component-error",{message:"Bootstrap JS not loaded. Carousel will use data attributes only.",componentName:"VibeCarousel",originalError:h})}}};e.onMounted(m),e.onBeforeUnmount(()=>{i.value&&(i.value.removeEventListener("slide.bs.carousel",c),i.value.removeEventListener("slid.bs.carousel",b)),n.value&&(n.value.dispose(),n.value=null)}),e.watch(()=>o.modelValue,h=>{n.value&&h!==s.value&&n.value.to(h)}),e.watch(()=>o.items,async()=>{await e.nextTick(),await m()},{deep:!0});const g=(h,d)=>h.alt?h.alt:h.caption?h.caption:h.captionText?h.captionText:`Carousel slide ${d+1}`;return r({bsInstance:n,refresh:m}),(h,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"carouselRef",ref:i,id:t.id,class:e.normalizeClass(u.value),"data-bs-ride":t.ride===!0?"carousel":t.ride,"data-bs-interval":t.interval,"data-bs-keyboard":t.keyboard,"data-bs-pause":t.pause,"data-bs-wrap":t.wrap,"data-bs-touch":t.touch},[t.indicators?(e.openBlock(),e.createElementBlock("div",Xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("button",{key:`indicator-${p}`,type:"button","data-bs-target":`#${t.id}`,"data-bs-slide-to":p,class:e.normalizeClass({active:p===s.value}),"aria-current":p===s.value,"aria-label":`Slide ${p+1}`},null,10,Ut))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Yt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createElementBlock("div",{key:`slide-${p}`,class:e.normalizeClass(["carousel-item",{active:p===s.value}]),"data-bs-interval":f.interval},[e.createElementVNode("img",{src:f.src,alt:g(f,p),class:"d-block w-100"},null,8,Kt),f.caption||f.captionText||h.$slots.caption?(e.openBlock(),e.createElementBlock("div",Wt,[e.renderSlot(h.$slots,"caption",{item:f,index:p},()=>[f.caption?(e.openBlock(),e.createElementBlock("h5",Qt,e.toDisplayString(f.caption),1)):e.createCommentVNode("",!0),f.captionText?(e.openBlock(),e.createElementBlock("p",Zt,e.toDisplayString(f.captionText),1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)],10,Jt))),128))]),t.controls?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:"carousel-control-prev",type:"button","data-bs-target":`#${t.id}`,"data-bs-slide":"prev"},[...d[0]||(d[0]=[e.createElementVNode("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1),e.createElementVNode("span",{class:"visually-hidden"},"Previous",-1)])],8,_t),e.createElementVNode("button",{class:"carousel-control-next",type:"button","data-bs-target":`#${t.id}`,"data-bs-slide":"next"},[...d[1]||(d[1]=[e.createElementVNode("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1),e.createElementVNode("span",{class:"visually-hidden"},"Next",-1)])],8,ea)],64)):e.createCommentVNode("",!0)],10,Gt))}}),ta=["data-bs-placement","data-bs-title","data-bs-trigger","data-bs-html"],ve=e.defineComponent({__name:"VibeTooltip",props:{content:{type:String,default:void 0},text:{type:String,default:void 0},placement:{type:String,default:"top"},trigger:{type:String,default:"hover focus"},html:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=()=>typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0),u=e.computed(()=>s()&&o.trigger==="hover focus"?"click":o.trigger),c=async()=>{if(i.value){n.value&&n.value.dispose();try{const m=(await import("bootstrap")).Tooltip;n.value=new m(i.value,{title:o.text||o.content||"",placement:o.placement,trigger:u.value,html:o.html})}catch(b){l("component-error",{message:"Bootstrap JS not loaded. Tooltip will use data attributes only.",componentName:"VibeTooltip",originalError:b})}}};return e.onMounted(c),e.onBeforeUnmount(()=>{n.value&&(n.value.dispose(),n.value=null)}),e.watch([()=>o.content,()=>o.text],()=>{n.value&&n.value.setContent({".tooltip-inner":o.text||o.content||""})}),e.watch([()=>o.placement,()=>o.trigger,()=>o.html],c),r({bsInstance:n}),(b,m)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"tooltipRef",ref:i,"data-bs-toggle":"tooltip","data-bs-placement":t.placement,"data-bs-title":t.text||t.content,"data-bs-trigger":t.trigger,"data-bs-html":t.html},[e.renderSlot(b.$slots,"default")],8,ta))}}),aa=["data-bs-placement","data-bs-title","data-bs-content","data-bs-trigger","data-bs-html"],we=e.defineComponent({__name:"VibePopover",props:{title:{type:String,default:void 0},content:{type:String,default:void 0},text:{type:String,default:void 0},placement:{type:String,default:"top"},trigger:{type:String,default:"click"},html:{type:Boolean,default:!1}},emits:["component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=()=>typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0),u=e.computed(()=>s()&&o.trigger==="hover focus"?"click":o.trigger),c=async()=>{if(i.value){n.value&&n.value.dispose();try{const m=(await import("bootstrap")).Popover;n.value=new m(i.value,{title:o.title,content:o.text||o.content||"",placement:o.placement,trigger:u.value,html:o.html})}catch(b){l("component-error",{message:"Bootstrap JS not loaded. Popover will use data attributes only.",componentName:"VibePopover",originalError:b})}}};return e.onMounted(c),e.onBeforeUnmount(()=>{n.value&&(n.value.dispose(),n.value=null)}),e.watch([()=>o.content,()=>o.text,()=>o.title],()=>{n.value&&n.value.setContent({".popover-header":o.title||"",".popover-body":o.text||o.content||""})}),e.watch([()=>o.placement,()=>o.trigger,()=>o.html],c),r({bsInstance:n}),(b,m)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"popoverRef",ref:i,"data-bs-toggle":"popover","data-bs-placement":t.placement,"data-bs-title":t.title,"data-bs-content":t.text||t.content,"data-bs-trigger":t.trigger,"data-bs-html":t.html},[e.renderSlot(b.$slots,"default")],8,aa))}}),$e=e.defineComponent({__name:"VibeScrollspy",props:{target:{type:String,required:!0},offset:{type:Number,default:10},method:{type:String,default:"auto"},smoothScroll:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["activate","component-error"],setup(t,{expose:r,emit:a}){const o=t,l=a,i=e.ref(null),n=e.ref(null),s=c=>{l("activate",c)};return e.onMounted(async()=>{if(i.value)try{const b=(await import("bootstrap")).ScrollSpy;n.value=new b(i.value,{target:o.target,offset:o.offset,method:o.method,smoothScroll:o.smoothScroll}),i.value.addEventListener("activate.bs.scrollspy",s)}catch(c){l("component-error",{message:"Bootstrap JS not loaded. ScrollSpy will use data attributes only.",componentName:"VibeScrollspy",originalError:c})}}),e.onBeforeUnmount(()=>{i.value&&i.value.removeEventListener("activate.bs.scrollspy",s),n.value&&(n.value.dispose(),n.value=null)}),r({refresh:()=>{n.value&&n.value.refresh()}}),(c,b)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"scrollspyRef",ref:i,"data-bs-spy":"scroll","data-bs-target":t.target,"data-bs-offset":t.offset,"data-bs-method":t.method,"data-bs-smooth-scroll":t.smoothScroll,tabindex:"0",style:{position:"relative",height:"100%",overflow:"auto"}},{default:e.withCtx(()=>[e.renderSlot(c.$slots,"default")]),_:3},8,["data-bs-target","data-bs-offset","data-bs-method","data-bs-smooth-scroll"]))}}),Ee=e.defineComponent({__name:"VibeIcon",props:{icon:{type:String,required:!0},size:{type:String,default:void 0},fontSize:{type:String,default:void 0},color:{type:String,default:void 0},customClass:{type:String,default:void 0},flipH:{type:Boolean,default:!1},flipV:{type:Boolean,default:!1},rotate:{type:Number,default:void 0}},emits:["click","component-error"],setup(t,{emit:r}){const a=t,o=r,l=e.computed(()=>{const s=["bi",`bi-${a.icon}`];return a.size&&(["1x","2x","3x","4x","5x"].includes(a.size)||s.push(`bi-${a.size}`)),a.customClass&&s.push(a.customClass),s.join(" ")}),i=e.computed(()=>{const s={};if(a.fontSize)s.fontSize=a.fontSize;else if(a.size){const c={"1x":"1rem","2x":"2rem","3x":"3rem","4x":"4rem","5x":"5rem"};c[a.size]&&(s.fontSize=c[a.size])}a.color&&(s.color=a.color);const u=[];return a.flipH&&u.push("scaleX(-1)"),a.flipV&&u.push("scaleY(-1)"),a.rotate&&u.push(`rotate(${a.rotate}deg)`),u.length>0&&(s.transform=u.join(" "),s.display="inline-block"),Object.keys(s).length>0?s:void 0}),n=s=>{o("click",s)};return(s,u)=>(e.openBlock(),e.createElementBlock("i",{class:e.normalizeClass(l.value),style:e.normalizeStyle(i.value),"aria-hidden":!0,onClick:n},null,6))}}),oa={class:"vibe-datatable"},la={class:"row mb-3"},na={key:0,class:"col-md-6 mb-2 mb-md-0"},ia=["placeholder"],ra={key:1,class:"col-md-6"},sa={class:"d-flex justify-content-md-end align-items-center"},da=["value"],ca=["onClick"],ua={key:0,class:"ms-1"},ma=["onClick"],fa=["data-label"],pa={key:0},ba=["colspan"],ha={class:"row"},ya={key:0,class:"col-md-6 mb-2 mb-md-0"},ga={class:"datatable-info"},ka={key:1,class:"col-md-6"},Ba={class:"pagination justify-content-md-end mb-0"},Sa={key:0,class:"page-item"},Ca={key:1,class:"page-item disabled"},Va=["onClick"],va={key:2,class:"page-item disabled"},wa={key:3,class:"page-item"},Ne=I(e.defineComponent({__name:"VibeDataTable",props:e.mergeModels({items:{type:Array,default:()=>[]},columns:{type:Array,required:!0},rowKey:{type:String,default:"id"},striped:{type:Boolean,default:!1},bordered:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},small:{type:Boolean,default:!1},responsive:{type:Boolean,default:!0},stack:{type:Boolean,default:!1},variant:{type:String,default:void 0},searchable:{type:Boolean,default:!0},sortable:{type:Boolean,default:!0},paginated:{type:Boolean,default:!0},searchPlaceholder:{type:String,default:"Search..."},searchDebounce:{type:Number,default:300},showEmpty:{type:Boolean,default:!0},emptyText:{type:String,default:"No data available"},showPerPage:{type:Boolean,default:!0},showInfo:{type:Boolean,default:!0},infoText:{type:String,default:"Showing {start} to {end} of {total} entries"},filteredInfoText:{type:String,default:"Showing {start} to {end} of {total} entries (filtered from {totalRows} total entries)"},perPageOptions:{type:Array,default:()=>[5,10,25,50,100]}},{currentPage:{default:1},currentPageModifiers:{},perPage:{default:10},perPageModifiers:{},sortBy:{default:void 0},sortByModifiers:{},sortDesc:{type:Boolean,default:!1},sortDescModifiers:{}}),emits:e.mergeModels(["row-clicked","component-error"],["update:currentPage","update:perPage","update:sortBy","update:sortDesc"]),setup(t,{emit:r}){const a=t,o=e.useModel(t,"currentPage"),l=e.useModel(t,"perPage"),i=e.useModel(t,"sortBy"),n=e.useModel(t,"sortDesc"),s=r,u=e.ref(""),c=e.ref(null),b=e.ref(""),m=(C,V)=>a.rowKey&&C[a.rowKey]!==void 0?String(C[a.rowKey]):V;e.watch(u,C=>{c.value!==null&&clearTimeout(c.value),c.value=setTimeout(()=>{b.value=C,o.value=1,c.value=null},a.searchDebounce)}),e.onBeforeUnmount(()=>{c.value!==null&&(clearTimeout(c.value),c.value=null)});const g=e.computed(()=>{if(!a.searchable||!b.value)return a.items||[];const C=b.value.toLowerCase();return(a.items||[]).filter(V=>(a.columns||[]).some(v=>{if(v.searchable===!1)return!1;const x=V[v.key];return x==null?!1:String(x).toLowerCase().includes(C)}))}),h=(C,V,v)=>{if(C==null)return 1;if(V==null)return-1;if(typeof C=="string"&&typeof V=="string"){const x=C.toLowerCase(),T=V.toLowerCase();return x<T?v?1:-1:x>T?v?-1:1:0}if(typeof C=="number"&&typeof V=="number")return C<V?v?1:-1:C>V?v?-1:1:0;if(typeof C=="boolean"&&typeof V=="boolean")return C===V?0:(C?1:-1)*(v?-1:1);if(C instanceof Date&&V instanceof Date){const x=C.getTime(),T=V.getTime();return x<T?v?1:-1:x>T?v?-1:1:0}return 0},d=e.computed(()=>{if(!a.sortable||!i.value)return g.value;const C=[...g.value],V=i.value;return C.sort((v,x)=>h(v[V],x[V],n.value)),C}),f=e.computed(()=>{if(!a.paginated)return d.value;const C=(o.value-1)*l.value,V=C+l.value;return d.value.slice(C,V)}),p=e.computed(()=>a.items.length),y=e.computed(()=>g.value.length),B=e.computed(()=>Math.ceil(y.value/l.value)),k=e.computed(()=>y.value===0?0:(o.value-1)*l.value+1),E=e.computed(()=>{const C=o.value*l.value;return Math.min(C,y.value)}),w=e.computed(()=>(y.value!==p.value?a.filteredInfoText:a.infoText).replace("{start}",String(k.value)).replace("{end}",String(E.value)).replace("{total}",String(y.value)).replace("{totalRows}",String(p.value))),z=e.computed(()=>{const C=["table"];return a.striped&&C.push("table-striped"),a.bordered&&C.push("table-bordered"),a.borderless&&C.push("table-borderless"),a.hover&&C.push("table-hover"),a.small&&C.push("table-sm"),a.stack&&C.push("vibe-table-stack"),a.variant&&C.push(`table-${a.variant}`),C.join(" ")}),F=C=>{!a.sortable||C.sortable===!1||(i.value===C.key?n.value=!n.value:(i.value=C.key,n.value=!1))},L=C=>{C<1||C>B.value||(o.value=C)},j=()=>{o.value=1},$=(C,V)=>{s("row-clicked",C,V)},D=(C,V)=>{const v=C[V.key];return V.formatter?V.formatter(v,C):v},U=C=>!a.sortable||C.sortable===!1?"":i.value!==C.key?"⇅":n.value?"↓":"↑",Y=C=>{const V={...C.thStyle};return a.sortable&&C.sortable!==!1&&(V.cursor="pointer"),V};return(C,V)=>(e.openBlock(),e.createElementBlock("div",oa,[e.createElementVNode("div",la,[t.searchable?(e.openBlock(),e.createElementBlock("div",na,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[0]||(V[0]=v=>u.value=v),type:"search",class:"form-control",placeholder:t.searchPlaceholder},null,8,ia),[[e.vModelText,u.value]])])):e.createCommentVNode("",!0),t.showPerPage&&t.paginated?(e.openBlock(),e.createElementBlock("div",ra,[e.createElementVNode("div",sa,[V[6]||(V[6]=e.createElementVNode("label",{class:"me-2 mb-0"},"Show",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[1]||(V[1]=v=>l.value=v),class:"form-select form-select-sm",style:{width:"auto"},onChange:j},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.perPageOptions,v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},e.toDisplayString(v),9,da))),128))],544),[[e.vModelSelect,l.value,void 0,{number:!0}]]),V[7]||(V[7]=e.createElementVNode("span",{class:"ms-2"},"entries",-1))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:e.normalizeClass({"table-responsive":t.responsive})},[e.createElementVNode("table",{class:e.normalizeClass(z.value)},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,v=>(e.openBlock(),e.createElementBlock("th",{key:v.key,class:e.normalizeClass(v.headerClass),style:e.normalizeStyle(Y(v)),onClick:x=>F(v)},[e.createTextVNode(e.toDisplayString(v.label)+" ",1),t.sortable&&v.sortable!==!1?(e.openBlock(),e.createElementBlock("span",ua,e.toDisplayString(U(v)),1)):e.createCommentVNode("",!0)],14,ca))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(v,x)=>(e.openBlock(),e.createElementBlock("tr",{key:m(v,x),onClick:T=>$(v,x),style:{cursor:"pointer"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,T=>(e.openBlock(),e.createElementBlock("td",{key:T.key,class:e.normalizeClass(T.class),style:e.normalizeStyle(T.tdStyle),"data-label":T.label},[e.renderSlot(C.$slots,`cell(${T.key})`,{item:v,value:v[T.key],index:x},()=>[e.createTextVNode(e.toDisplayString(D(v,T)),1)],!0)],14,fa))),128))],8,ma))),128)),f.value.length===0&&t.showEmpty?(e.openBlock(),e.createElementBlock("tr",pa,[e.createElementVNode("td",{colspan:t.columns?.length||1,class:"text-center"},e.toDisplayString(t.emptyText),9,ba)])):e.createCommentVNode("",!0)])],2)],2),e.createElementVNode("div",ha,[t.showInfo?(e.openBlock(),e.createElementBlock("div",ya,[e.createElementVNode("div",ga,e.toDisplayString(w.value),1)])):e.createCommentVNode("",!0),t.paginated&&B.value>1?(e.openBlock(),e.createElementBlock("div",ka,[e.createElementVNode("nav",null,[e.createElementVNode("ul",Ba,[e.createElementVNode("li",{class:e.normalizeClass(["page-item",{disabled:o.value===1}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[2]||(V[2]=e.withModifiers(v=>L(o.value-1),["prevent"]))}," Previous ")],2),o.value>3?(e.openBlock(),e.createElementBlock("li",Sa,[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[3]||(V[3]=e.withModifiers(v=>L(1),["prevent"]))},"1")])):e.createCommentVNode("",!0),o.value>4?(e.openBlock(),e.createElementBlock("li",Ca,[...V[8]||(V[8]=[e.createElementVNode("span",{class:"page-link"},"...",-1)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Array.from({length:B.value},(v,x)=>x+1).filter(v=>v>=o.value-2&&v<=o.value+2),v=>(e.openBlock(),e.createElementBlock("li",{key:v,class:e.normalizeClass(["page-item",{active:v===o.value}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:e.withModifiers(x=>L(v),["prevent"])},e.toDisplayString(v),9,Va)],2))),128)),o.value<B.value-3?(e.openBlock(),e.createElementBlock("li",va,[...V[9]||(V[9]=[e.createElementVNode("span",{class:"page-link"},"...",-1)])])):e.createCommentVNode("",!0),o.value<B.value-2?(e.openBlock(),e.createElementBlock("li",wa,[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[4]||(V[4]=e.withModifiers(v=>L(B.value),["prevent"]))},e.toDisplayString(B.value),1)])):e.createCommentVNode("",!0),e.createElementVNode("li",{class:e.normalizeClass(["page-item",{disabled:o.value===B.value}])},[e.createElementVNode("a",{class:"page-link",href:"#",onClick:V[5]||(V[5]=e.withModifiers(v=>L(o.value+1),["prevent"]))}," Next ")],2)])])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-c496dc70"]]),$a=["for"],Ea={key:0,class:"text-danger"},Na=["id","type","value","placeholder","disabled","readonly","required","aria-invalid","aria-describedby"],xa=["id"],Ta={key:0,class:"valid-feedback",style:{display:"block"}},La=["id"],za=["id","type","value","placeholder","disabled","readonly","required","aria-invalid"],xe=e.defineComponent({__name:"VibeFormInput",props:{modelValue:{type:[String,Number],default:""},type:{type:String,default:"text"},id:{type:String,default:void 0},label:{type:String,default:void 0},placeholder:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},plaintext:{type:Boolean,default:!1},noWrapper:{type:Boolean,default:!1},focusRing:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("input")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=[];return a.plaintext?d.push("form-control-plaintext"):(d.push("form-control"),a.size&&d.push(`form-control-${a.size}`)),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),a.focusRing&&d.push("focus-ring"),d.join(" ")}),b=d=>{const f=d.target,p=a.type==="number"?f.value===""?"":Number(f.value):f.value;o("update:modelValue",p),o("input",d),a.validateOn==="input"&&o("validate")},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>t.noWrapper?(e.openBlock(),e.createElementBlock("input",{key:1,id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly||t.plaintext,required:t.required,"aria-invalid":t.validationState==="invalid",onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,za)):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Ea,"*")):e.createCommentVNode("",!0)],8,$a)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly||t.plaintext,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,Na),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,xa)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Ta,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,La)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Da=["for"],Ma={key:0,class:"text-danger"},Fa=["id","value","multiple","size","disabled","required","aria-invalid","aria-describedby"],Ia={key:0,value:"",disabled:"",selected:""},Ra=["value","disabled"],Pa=["id"],qa={key:0,class:"valid-feedback",style:{display:"block"}},ja=["id"],Te=e.defineComponent({__name:"VibeFormSelect",props:{modelValue:{type:[String,Number,Array],default:""},id:{type:String,default:void 0},label:{type:String,default:void 0},options:{type:Array,default:()=>[]},multiple:{type:Boolean,default:!1},selectSize:{type:Number,default:void 0},htmlSize:{type:Number,default:void 0},placeholder:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("select")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-select"];return a.size&&d.push(`form-select-${a.size}`),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),b=d=>{const f=d.target;let p;a.multiple?p=Array.from(f.selectedOptions).map(y=>y.value):p=f.value,o("update:modelValue",p)},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Ma,"*")):e.createCommentVNode("",!0)],8,Da)):e.createCommentVNode("",!0),e.createElementVNode("select",{id:i.value,class:e.normalizeClass(c.value),value:t.modelValue,multiple:t.multiple,size:t.htmlSize||t.selectSize,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},[t.placeholder?(e.openBlock(),e.createElementBlock("option",Ia,e.toDisplayString(t.placeholder),1)):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,p=>(e.openBlock(),e.createElementBlock("option",{key:String(p.value),value:p.value,disabled:p.disabled},e.toDisplayString(p.text),9,Ra))),128))])],42,Fa),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Pa)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",qa,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please select an option."),9,ja)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Aa=["for"],Oa={key:0,class:"text-danger"},Ha=["id","value","placeholder","rows","maxlength","disabled","readonly","required","aria-invalid","aria-describedby"],Ga=["id"],Xa={key:0,class:"ms-auto"},Ua={key:0,class:"valid-feedback",style:{display:"block"}},Ya=["id"],Le=e.defineComponent({__name:"VibeFormTextarea",props:{modelValue:{type:String,default:""},id:{type:String,default:void 0},label:{type:String,default:void 0},placeholder:{type:String,default:void 0},rows:{type:[Number,String],default:3},maxlength:{type:[Number,String],default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},noResize:{type:Boolean,default:!1},showCharCount:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("textarea")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>(!!a.helpText||a.showCharCount)&&!l?.hasHelp.value),c=e.computed(()=>{const p=["form-control"];return a.size&&p.push(`form-control-${a.size}`),a.validationState==="valid"&&p.push("is-valid"),a.validationState==="invalid"&&p.push("is-invalid"),p.join(" ")}),b=e.computed(()=>{if(a.noResize)return{resize:"none"}}),m=e.computed(()=>a.modelValue?.length||0),g=p=>{const y=p.target;o("update:modelValue",y.value),o("input",p),a.validateOn==="input"&&o("validate")},h=p=>{o("change",p),a.validateOn==="change"&&o("validate")},d=p=>{o("blur",p),a.validateOn==="blur"&&o("validate")},f=p=>{o("focus",p)};return(p,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Oa,"*")):e.createCommentVNode("",!0)],8,Aa)):e.createCommentVNode("",!0),e.createElementVNode("textarea",{id:i.value,class:e.normalizeClass(c.value),style:e.normalizeStyle(b.value),value:t.modelValue,placeholder:t.placeholder,rows:t.rows,maxlength:t.maxlength,disabled:t.disabled,readonly:t.readonly,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText||t.showCharCount?`${i.value}-feedback`:void 0,onInput:g,onChange:h,onBlur:d,onFocus:f},null,46,Ha),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text d-flex justify-content-between"},[e.createElementVNode("span",null,e.toDisplayString(t.helpText),1),t.showCharCount?(e.openBlock(),e.createElementBlock("span",Xa,[t.maxlength?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(m.value)+" / "+e.toDisplayString(t.maxlength),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(m.value),1)],64))])):e.createCommentVNode("",!0)],8,Ga)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Ua,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Ya)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Ja=["for"],Ka={key:0,class:"text-danger"},Wa=["disabled"],Qa=["id","value","disabled","readonly","required","min","max","step","aria-invalid","aria-describedby"],Za=["disabled"],_a=["id"],eo={key:0,class:"valid-feedback",style:{display:"block"}},to=["id"],ze=I(e.defineComponent({__name:"VibeFormSpinbutton",props:{modelValue:{type:Number,default:0,validator:t=>!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},min:{type:Number,default:void 0},max:{type:Number,default:void 0},step:{type:Number,default:1},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},wrap:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","input","change","increment","decrement"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("spinbutton")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const k=["form-control"];return a.size&&k.push(`form-control-${a.size}`),a.validationState==="valid"&&k.push("is-valid"),a.validationState==="invalid"&&k.push("is-invalid"),k.join(" ")}),b=e.computed(()=>{const k=["input-group"];return a.size&&k.push(`input-group-${a.size}`),a.vertical&&k.push("input-group-vertical"),k.join(" ")}),m=e.computed(()=>a.disabled||a.readonly?!1:a.min===void 0||a.wrap?!0:a.modelValue>a.min),g=e.computed(()=>a.disabled||a.readonly?!1:a.max===void 0||a.wrap?!0:a.modelValue<a.max),h=k=>{const E=k.target;let w=E.value===""?0:Number(E.value);a.min!==void 0&&w<a.min&&(w=a.min),a.max!==void 0&&w>a.max&&(w=a.max),o("update:modelValue",w),o("input",k),a.validateOn==="input"&&o("validate")},d=k=>{o("change",k),a.validateOn==="change"&&o("validate")},f=k=>{o("blur",k),a.validateOn==="blur"&&o("validate")},p=k=>{o("focus",k)},y=()=>{if(!g.value)return;let k=a.modelValue+a.step;a.max!==void 0&&k>a.max&&(k=a.wrap?a.min??0:a.max),o("update:modelValue",k),o("increment",k),a.validateOn==="change"&&o("validate")},B=()=>{if(!m.value)return;let k=a.modelValue-a.step;a.min!==void 0&&k<a.min&&(k=a.wrap?a.max??0:a.min),o("update:modelValue",k),o("decrement",k),a.validateOn==="change"&&o("validate")};return(k,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Ka,"*")):e.createCommentVNode("",!0)],8,Ja)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(b.value)},[e.createElementVNode("button",{class:"btn btn-outline-secondary",type:"button",disabled:!m.value,onClick:B,"aria-label":"Decrement"},[...E[0]||(E[0]=[e.createElementVNode("span",{"aria-hidden":"true"},"−",-1)])],8,Wa),e.createElementVNode("input",{id:i.value,type:"number",class:e.normalizeClass(c.value),value:t.modelValue,disabled:t.disabled,readonly:t.readonly,required:t.required,min:t.min,max:t.max,step:t.step,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:h,onChange:d,onBlur:f,onFocus:p},null,42,Qa),e.createElementVNode("button",{class:"btn btn-outline-secondary",type:"button",disabled:!g.value,onClick:y,"aria-label":"Increment"},[...E[1]||(E[1]=[e.createElementVNode("span",{"aria-hidden":"true"},"+",-1)])],8,Za)],2),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,_a)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",eo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,to)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-49746a62"]]),ao=["for"],oo={key:0,class:"text-danger"},lo=["id","type","value","disabled","readonly","required","min","max","aria-invalid","aria-describedby"],no=["id"],io={key:0,class:"valid-feedback",style:{display:"block"}},ro=["id"],De=e.defineComponent({__name:"VibeFormDatepicker",props:{modelValue:{type:String,default:"",validator:t=>!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},min:{type:String,default:void 0},max:{type:String,default:void 0},size:{type:String,default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},type:{type:String,default:"date"}},emits:["update:modelValue","validate","blur","focus","input","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("datepicker")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-control"];return a.size&&d.push(`form-control-${a.size}`),a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),b=d=>{const f=d.target;o("update:modelValue",f.value),o("input",d),a.validateOn==="input"&&o("validate")},m=d=>{o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":n.value||u.value||s.value})},[n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",oo,"*")):e.createCommentVNode("",!0)],8,ao)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:i.value,type:t.type,class:e.normalizeClass(c.value),value:t.modelValue,disabled:t.disabled,readonly:t.readonly,required:t.required,min:t.min,max:t.max,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onInput:b,onChange:m,onBlur:g,onFocus:h},null,42,lo),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,no)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",io,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid date."),9,ro)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),so=["id","checked","disabled","required","indeterminate","aria-invalid","aria-describedby"],co=["for"],uo={key:0,class:"text-danger"},mo=["id"],fo={key:0,class:"valid-feedback",style:{display:"block"}},po=["id"],Me=e.defineComponent({__name:"VibeFormCheckbox",props:{modelValue:{type:[Boolean,Array],default:!1},value:{type:[String,Number,Boolean],default:!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0},reverse:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("checkbox")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const f=["form-check"];return a.inline&&f.push("form-check-inline"),a.reverse&&f.push("form-check-reverse"),f.join(" ")}),b=e.computed(()=>{const f=["form-check-input"];return a.validationState==="valid"&&f.push("is-valid"),a.validationState==="invalid"&&f.push("is-invalid"),f.join(" ")}),m=e.computed(()=>Array.isArray(a.modelValue)?a.modelValue.includes(a.value):a.modelValue===a.value),g=f=>{const p=f.target;let y;if(Array.isArray(a.modelValue))if(y=[...a.modelValue],p.checked)y.push(a.value);else{const B=y.indexOf(a.value);B>-1&&y.splice(B,1)}else y=p.checked?a.value:a.value===!0?!1:null;o("update:modelValue",y),o("change",f),a.validateOn==="change"&&o("validate")},h=f=>{o("blur",f),a.validateOn==="blur"&&o("validate")},d=f=>{o("focus",f)};return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"checkbox",class:e.normalizeClass(b.value),checked:m.value,disabled:t.disabled,required:t.required,indeterminate:t.indeterminate,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:g,onBlur:h,onFocus:d},null,42,so),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",uo,"*")):e.createCommentVNode("",!0)],8,co)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,mo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",fo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please check this box."),9,po)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),bo=["id","name","value","checked","disabled","required","aria-invalid","aria-describedby"],ho=["for"],yo={key:0,class:"text-danger"},go=["id"],ko={key:0,class:"valid-feedback",style:{display:"block"}},Bo=["id"],Fe=e.defineComponent({__name:"VibeFormRadio",props:{modelValue:{type:[String,Number,Boolean],default:""},value:{type:[String,Number,Boolean],required:!0},name:{type:String,required:!0},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0},reverse:{type:Boolean,default:!1}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("radio")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const f=["form-check"];return a.inline&&f.push("form-check-inline"),a.reverse&&f.push("form-check-reverse"),f.join(" ")}),b=e.computed(()=>{const f=["form-check-input"];return a.validationState==="valid"&&f.push("is-valid"),a.validationState==="invalid"&&f.push("is-invalid"),f.join(" ")}),m=e.computed(()=>a.modelValue===a.value),g=f=>{o("update:modelValue",a.value),o("change",f),a.validateOn==="change"&&o("validate")},h=f=>{o("blur",f),a.validateOn==="blur"&&o("validate")},d=f=>{o("focus",f)};return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"radio",class:e.normalizeClass(b.value),name:t.name,value:t.value,checked:m.value,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:g,onBlur:h,onFocus:d},null,42,bo),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",yo,"*")):e.createCommentVNode("",!0)],8,ho)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,go)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",ko,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please select an option."),9,Bo)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),So=["id","checked","disabled","required","aria-invalid","aria-describedby"],Co=["for"],Vo={key:0,class:"text-danger"},vo=["id"],wo={key:0,class:"valid-feedback",style:{display:"block"}},$o=["id"],Ie=e.defineComponent({__name:"VibeFormSwitch",props:{modelValue:{type:Boolean,default:!1},id:{type:String,default:void 0},label:{type:String,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"change"},helpText:{type:String,default:void 0}},emits:["update:modelValue","validate","blur","focus","change"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.consumeId()||N("switch")),n=e.computed(()=>!!a.label&&!l?.hasLabel.value),s=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),u=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),c=e.computed(()=>{const d=["form-check","form-switch"];return a.inline&&d.push("form-check-inline"),d.join(" ")}),b=e.computed(()=>{const d=["form-check-input"];return a.validationState==="valid"&&d.push("is-valid"),a.validationState==="invalid"&&d.push("is-invalid"),d.join(" ")}),m=d=>{const f=d.target;o("update:modelValue",f.checked),o("change",d),a.validateOn==="change"&&o("validate")},g=d=>{o("blur",d),a.validateOn==="blur"&&o("validate")},h=d=>{o("focus",d)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([c.value,{"mb-3":n.value||u.value||s.value}])},[e.createElementVNode("input",{id:i.value,type:"checkbox",role:"switch",class:e.normalizeClass(b.value),checked:t.modelValue,disabled:t.disabled,required:t.required,"aria-invalid":t.validationState==="invalid","aria-describedby":t.validationMessage||t.helpText?`${i.value}-feedback`:void 0,onChange:m,onBlur:g,onFocus:h},null,42,So),n.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-check-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Vo,"*")):e.createCommentVNode("",!0)],8,Co)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,vo)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",wo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please toggle this switch."),9,$o)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),Eo=["for"],No={key:0,class:"text-danger"},xo=["id"],To={key:1,class:"valid-feedback",style:{display:"block"}},Lo=["id"],zo=["for"],Do={key:0,class:"text-danger"},Mo=["id"],Fo={key:2,class:"valid-feedback",style:{display:"block"}},Io=["id"],Re=e.defineComponent({__name:"VibeFormGroup",props:{label:{type:String,default:void 0},labelFor:{type:String,default:void 0},required:{type:Boolean,default:!1},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},helpText:{type:String,default:void 0},floating:{type:Boolean,default:!1},row:{type:Boolean,default:!1},labelCols:{type:[Number,String],default:void 0},labelAlign:{type:String,default:void 0}},setup(t){const r=t,a=e.computed(()=>r.labelFor||N("form-group")),o=e.ref(!1),l=()=>o.value?null:(o.value=!0,a.value);e.provide("vibeFormGroup",{id:a,consumeId:l,hasLabel:e.computed(()=>!!r.label),hasValidation:e.computed(()=>!!r.validationState),hasHelp:e.computed(()=>!!r.helpText)});const i=e.computed(()=>{const c=[];return r.floating?c.push("form-floating"):r.row?c.push("row","mb-3"):c.push("mb-3"),c.join(" ")}),n=e.computed(()=>{const c=[];return r.floating?c.push("form-label"):r.row?(c.push("col-form-label"),r.labelCols&&c.push(`col-sm-${r.labelCols}`),r.labelAlign&&c.push(`text-${r.labelAlign}`)):c.push("form-label"),c.join(" ")}),s=e.computed(()=>r.row&&r.labelCols?`col-sm-${12-Number(r.labelCols)}`:""),u=e.computed(()=>`${a.value}-feedback`);return(c,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value)},[t.label&&!t.floating?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.value,class:e.normalizeClass(n.value)},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",No,"*")):e.createCommentVNode("",!0)],10,Eo)):e.createCommentVNode("",!0),t.row&&t.labelCols?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value)},[e.renderSlot(c.$slots,"default"),t.helpText&&!t.validationMessage?(e.openBlock(),e.createElementBlock("div",{key:0,id:u.value,class:"form-text"},e.toDisplayString(t.helpText),9,xo)):e.createCommentVNode("",!0),t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",To,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:2,id:u.value,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Lo)):e.createCommentVNode("",!0)],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.renderSlot(c.$slots,"default"),t.label&&t.floating?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.value,class:e.normalizeClass(n.value)},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Do,"*")):e.createCommentVNode("",!0)],10,zo)):e.createCommentVNode("",!0),t.helpText&&!t.validationMessage?(e.openBlock(),e.createElementBlock("div",{key:1,id:u.value,class:"form-text"},e.toDisplayString(t.helpText),9,Mo)):e.createCommentVNode("",!0),t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Fo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:3,id:u.value,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide a valid value."),9,Io)):e.createCommentVNode("",!0)],64))],2))}}),R={sm:576,md:768,lg:992,xl:1200,xxl:1400};function Pe(){const t=e.ref(!1),r=e.ref(!1),a=e.ref(!1),o=e.ref(!1),l=e.ref(!1),i=()=>{typeof window>"u"||(t.value=window.matchMedia(`(min-width: ${R.sm}px)`).matches,r.value=window.matchMedia(`(min-width: ${R.md}px)`).matches,a.value=window.matchMedia(`(min-width: ${R.lg}px)`).matches,o.value=window.matchMedia(`(min-width: ${R.xl}px)`).matches,l.value=window.matchMedia(`(min-width: ${R.xxl}px)`).matches)};i();const n=e.computed(()=>!t.value),s=e.computed(()=>!r.value),u=e.computed(()=>r.value&&!a.value);return typeof window<"u"&&Object.entries(R).forEach(([c,b])=>{const m=window.matchMedia(`(min-width: ${b}px)`),g=()=>{i()};m.addEventListener("change",g),e.getCurrentInstance()&&e.onUnmounted(()=>m.removeEventListener("change",g))}),{isXs:n,isSm:t,isMd:r,isLg:a,isXl:o,isXxl:l,isMobile:s,isTablet:u}}const Ro=["for"],Po={key:0,class:"text-danger"},qo={key:1,class:"alert alert-warning",role:"alert"},jo=["id"],Ao=["id"],Oo={key:0,class:"valid-feedback",style:{display:"block"}},Ho=["id"],qe=I(e.defineComponent({__name:"VibeFormWysiwyg",props:{modelValue:{type:String,default:""},id:{type:String,default:()=>N("wysiwyg")},label:{type:String,default:void 0},placeholder:{type:String,default:"Write something..."},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},theme:{type:String,default:"snow"},toolbar:{type:[Array,String,Boolean],default:void 0},mobileToolbar:{type:[Array,String,Boolean],default:void 0},validationState:{type:String,default:null},validationMessage:{type:String,default:void 0},validationRules:{type:[Array,Function],default:void 0},validateOn:{type:String,default:"blur"},helpText:{type:String,default:void 0},height:{type:String,default:"200px"}},emits:["update:modelValue","validate","blur","focus","change","ready"],setup(t,{emit:r}){const a=t,o=r,l=e.inject("vibeFormGroup",null),i=e.computed(()=>a.id||l?.id.value||N("wysiwyg")),{isMobile:n}=Pe(),s=e.computed(()=>!!a.label&&!l?.hasLabel.value),u=e.computed(()=>!!a.validationState&&!l?.hasValidation.value),c=e.computed(()=>!!a.helpText&&!l?.hasHelp.value),b=e.ref(null),m=e.ref(null),g=e.ref(!1),h=e.ref(null),d=e.ref(!1),f=e.ref(null),p=e.ref(null),y=e.ref(null),B=e.ref(null),k=e.computed(()=>{const $=["vibe-wysiwyg-container"];return a.validationState==="valid"&&$.push("is-valid"),a.validationState==="invalid"&&$.push("is-invalid"),a.disabled&&$.push("disabled"),$.join(" ")}),E=[[{header:[1,2,3,!1]}],["bold","italic","underline","strike"],[{list:"ordered"},{list:"bullet"}],[{color:[]},{background:[]}],["link","image"],["clean"]],w=[["bold","italic","underline"],[{list:"ordered"},{list:"bullet"}],["link","clean"]],z=()=>a.toolbar===!1?!1:n.value?a.mobileToolbar===!1?!1:a.mobileToolbar!==void 0?a.mobileToolbar:w:a.toolbar===!0||a.toolbar===void 0?E:a.toolbar,F=$=>{m.value&&(d.value=!0,m.value.setContents([],"silent"),$&&m.value.clipboard.dangerouslyPasteHTML($,"silent"),d.value=!1)},L=()=>!m.value||m.value.getText().trim().length===0?"":m.value.getSemanticHTML(),j=async()=>{try{const $=await import("quill"),D=$.default||$;if(await import("quill/dist/quill.snow.css"),b.value){const U={theme:a.theme,placeholder:a.placeholder,readOnly:a.readonly||a.disabled,modules:{toolbar:z()}};m.value=new D(b.value,U),a.modelValue&&F(a.modelValue),y.value=()=>{if(d.value)return;const Y=L();o("update:modelValue",Y),o("change"),a.validateOn==="change"&&o("validate")},m.value.on("text-change",y.value),f.value=()=>{o("blur"),a.validateOn==="blur"&&o("validate")},m.value.root.addEventListener("blur",f.value),p.value=()=>{o("focus")},m.value.root.addEventListener("focus",p.value),B.value=()=>{},m.value.on("selection-change",B.value),g.value=!0,o("ready",m.value)}}catch($){console.error("Failed to load Quill editor:",$),h.value="Failed to load WYSIWYG editor. Please install quill: npm install quill",g.value=!1}};return e.onMounted(j),e.onBeforeUnmount(()=>{if(m.value){if(m.value.enable(!1),y.value&&(m.value.off("text-change",y.value),y.value=null),B.value&&(m.value.off("selection-change",B.value),B.value=null),f.value&&(m.value.root.removeEventListener("blur",f.value),f.value=null),p.value&&(m.value.root.removeEventListener("focus",p.value),p.value=null),m.value.selection=null,b.value){const $=b.value.parentElement?.querySelector(".ql-toolbar");$&&$.remove()}m.value=null}}),e.watch(()=>a.modelValue,$=>{if(!m.value)return;L()!==($||"")&&F($||"")}),e.watch(()=>a.disabled,$=>{m.value&&m.value.enable(!$)}),e.watch(()=>a.readonly,$=>{m.value&&m.value.enable(!$)}),e.watch(n,async()=>{if(m.value){const $=L();y.value&&m.value.off("text-change",y.value),f.value&&m.value.root.removeEventListener("blur",f.value),p.value&&m.value.root.removeEventListener("focus",p.value);const D=b.value?.parentElement?.querySelector(".ql-toolbar");D&&D.remove(),b.value&&(b.value.innerHTML=""),await e.nextTick(),await j(),$&&F($)}}),($,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"mb-3":s.value||c.value||u.value})},[s.value?(e.openBlock(),e.createElementBlock("label",{key:0,for:i.value,class:"form-label"},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",Po,"*")):e.createCommentVNode("",!0)],8,Ro)):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("div",qo,e.toDisplayString(h.value),1)):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(k.value),style:e.normalizeStyle({minHeight:t.height})},[e.createElementVNode("div",{ref_key:"editorContainer",ref:b,id:i.value},null,8,jo)],6)),c.value?(e.openBlock(),e.createElementBlock("div",{key:3,id:`${i.value}-feedback`,class:"form-text"},e.toDisplayString(t.helpText),9,Ao)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[t.validationState==="valid"?(e.openBlock(),e.createElementBlock("div",Oo,e.toDisplayString(t.validationMessage||"Looks good!"),1)):e.createCommentVNode("",!0),t.validationState==="invalid"?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${i.value}-feedback`,class:"invalid-feedback",style:{display:"block"}},e.toDisplayString(t.validationMessage||"Please provide valid content."),9,Ho)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-822ccb91"]]),Go={key:0,class:"input-group-text"},Xo={key:0,class:"input-group-text"},je=e.defineComponent({__name:"VibeInputGroup",props:{size:{type:String,default:void 0},prepend:{type:String,default:void 0},append:{type:String,default:void 0},tag:{type:String,default:"div"}},setup(t){const r=t,a=e.computed(()=>{const o=["input-group"];return r.size&&o.push(`input-group-${r.size}`),o.join(" ")});return(o,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{class:e.normalizeClass(a.value)},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"prepend",{},()=>[t.prepend?(e.openBlock(),e.createElementBlock("span",Go,e.toDisplayString(t.prepend),1)):e.createCommentVNode("",!0)]),e.renderSlot(o.$slots,"default"),e.renderSlot(o.$slots,"append",{},()=>[t.append?(e.openBlock(),e.createElementBlock("span",Xo,e.toDisplayString(t.append),1)):e.createCommentVNode("",!0)])]),_:3},8,["class"]))}}),Ae=e.defineComponent({__name:"VibeLink",props:{tag:{type:String,default:"a"},href:{type:String,default:void 0},to:{type:[String,Object],default:void 0},variant:{type:String,default:void 0},underline:{type:[Boolean,String],default:!0},underlineVariant:{type:String,default:void 0},underlineOpacity:{type:[String,Number],default:void 0},offset:{type:[String,Number],default:void 0},opacity:{type:[String,Number],default:void 0},focusRing:{type:Boolean,default:!1}},setup(t){const r=t,a=e.computed(()=>!!r.to),o=e.computed(()=>a.value?"router-link":r.tag),l=e.computed(()=>{const i=[];return r.variant&&i.push(`link-${r.variant}`),r.underline===!1||r.underline==="0"?i.push("link-underline-0"):typeof r.underline=="string"&&["1","2","3"].includes(r.underline)&&i.push("link-underline",`link-underline-opacity-${r.underline}`),r.underlineVariant&&i.push(`link-underline-${r.underlineVariant}`),r.underlineOpacity!==void 0&&i.push(`link-underline-opacity-${r.underlineOpacity}`),r.offset!==void 0&&i.push(`link-offset-${r.offset}`),r.opacity!==void 0&&i.push(`link-opacity-${r.opacity}`),r.focusRing&&i.push("focus-ring"),i.join(" ")});return(i,n)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(l.value),href:t.href,to:t.to},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},8,["class","href","to"]))}}),Uo={install(t){t.component("VibeAlert",J),t.component("VibeBadge",K),t.component("VibeButton",W),t.component("VibeButtonGroup",Q),t.component("VibeCloseButton",Z),t.component("VibeSpinner",_),t.component("VibePlaceholder",ee),t.component("VibeContainer",te),t.component("VibeRow",ae),t.component("VibeCol",oe),t.component("VibeCard",le),t.component("VibeBreadcrumb",ne),t.component("VibeNav",ie),t.component("VibeNavbar",re),t.component("VibeNavbarBrand",se),t.component("VibeNavbarToggle",de),t.component("VibeNavbarNav",ce),t.component("VibePagination",ue),t.component("VibeTabContent",me),t.component("VibeListGroup",fe),t.component("VibeProgress",pe),t.component("VibeAccordion",he),t.component("VibeCollapse",ye),t.component("VibeDropdown",ge),t.component("VibeModal",Be),t.component("VibeOffcanvas",Se),t.component("VibeToast",Ce),t.component("VibeCarousel",Ve),t.component("VibeTooltip",ve),t.component("VibePopover",we),t.component("VibeScrollspy",$e),t.component("VibeIcon",Ee),t.component("VibeDataTable",Ne),t.component("VibeFormInput",xe),t.component("VibeFormSelect",Te),t.component("VibeFormTextarea",Le),t.component("VibeFormSpinbutton",ze),t.component("VibeFormDatepicker",De),t.component("VibeFormCheckbox",Me),t.component("VibeFormRadio",Fe),t.component("VibeFormSwitch",Ie),t.component("VibeFormGroup",Re),t.component("VibeFormWysiwyg",qe),t.component("VibeInputGroup",je),t.component("VibeLink",Ae)}};function Yo(t=""){const r=e.ref(t),a=e.ref(null),o=e.ref(""),l=e.ref(!1),i=e.ref(!1),n=e.ref(!1),s=async h=>{if(!h)return a.value=null,o.value="",{valid:!0};n.value=!0;try{const d=Array.isArray(h)?h:[{validator:h}];for(const f of d){const p=await f.validator(r.value);if(p===!1||typeof p=="string")return a.value="invalid",o.value=typeof p=="string"?p:f.message||"Invalid value",n.value=!1,{valid:!1,message:o.value}}return a.value="valid",o.value="",n.value=!1,{valid:!0}}catch{return a.value="invalid",o.value="Validation error occurred",n.value=!1,{valid:!1,message:o.value}}},u=()=>{r.value=t,a.value=null,o.value="",l.value=!1,i.value=!1,n.value=!1},c=()=>{i.value=!0},b=()=>{l.value=!0},m=e.computed(()=>a.value==="valid"),g=e.computed(()=>a.value==="invalid");return{value:r,validationState:a,validationMessage:o,isDirty:l,isTouched:i,isValidating:n,isValid:m,isInvalid:g,validate:s,reset:u,markAsTouched:c,markAsDirty:b}}const Jo={required:(t="This field is required")=>({validator:r=>Array.isArray(r)?r.length>0||t:typeof r=="string"?r.trim().length>0||t:r!=null&&r!==""||t,message:t}),email:(t="Please enter a valid email address")=>({validator:r=>r?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)||t:!0,message:t}),minLength:(t,r)=>({validator:a=>a?a.length>=t||r||`Minimum length is ${t} characters`:!0,message:r}),maxLength:(t,r)=>({validator:a=>a?a.length<=t||r||`Maximum length is ${t} characters`:!0,message:r}),min:(t,r)=>({validator:a=>{if(a==null||a==="")return!0;const o=Number(a);return Number.isNaN(o)?r||"Value must be a number":o>=t||r||`Minimum value is ${t}`},message:r}),max:(t,r)=>({validator:a=>{if(a==null||a==="")return!0;const o=Number(a);return Number.isNaN(o)?r||"Value must be a number":o<=t||r||`Maximum value is ${t}`},message:r}),pattern:(t,r="Invalid format")=>({validator:a=>a?t.test(a)||r:!0,message:r}),url:(t="Please enter a valid URL")=>({validator:r=>{if(!r)return!0;try{return new URL(r),!0}catch{return t}},message:t}),async:t=>({validator:t})},O="vibe-color-mode",H={light:"dark",dark:"auto",auto:"light"},P=e.ref("auto");let G=!1;const X=[];function Ko(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Oe(t){if(typeof document>"u")return;const r=t==="auto"?Ko():t;document.documentElement.setAttribute("data-bs-theme",r)}function q(t){P.value=t,Oe(t),X.forEach(r=>r(t))}q("auto"),typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{P.value==="auto"&&(Oe("auto"),X.forEach(t=>t("auto")))});function Wo(){function t(i){if(i in H){try{localStorage.setItem(O,i)}catch{}q(i)}}function r(){if(G)return;let i="auto";try{const n=localStorage.getItem(O);n!==null&&n in H&&(i=n)}catch{}q(i),G=!0}function a(){try{localStorage.removeItem(O)}catch{}G=!1,q("auto")}function o(){t(H[P.value]??"auto")}function l(i){X.push(i)}return{colorMode:P,setColorMode:t,toggleColorMode:o,initColorMode:r,clearColorMode:a,onColorModeChange:l}}S.VibeAccordion=he,S.VibeAlert=J,S.VibeBadge=K,S.VibeBreadcrumb=ne,S.VibeButton=W,S.VibeButtonGroup=Q,S.VibeCard=le,S.VibeCarousel=Ve,S.VibeCloseButton=Z,S.VibeCol=oe,S.VibeCollapse=ye,S.VibeContainer=te,S.VibeDataTable=Ne,S.VibeDropdown=ge,S.VibeFormCheckbox=Me,S.VibeFormDatepicker=De,S.VibeFormGroup=Re,S.VibeFormInput=xe,S.VibeFormRadio=Fe,S.VibeFormSelect=Te,S.VibeFormSpinbutton=ze,S.VibeFormSwitch=Ie,S.VibeFormTextarea=Le,S.VibeFormWysiwyg=qe,S.VibeIcon=Ee,S.VibeInputGroup=je,S.VibeLink=Ae,S.VibeListGroup=fe,S.VibeModal=Be,S.VibeNav=ie,S.VibeNavbar=re,S.VibeNavbarBrand=se,S.VibeNavbarNav=ce,S.VibeNavbarToggle=de,S.VibeOffcanvas=Se,S.VibePagination=ue,S.VibePlaceholder=ee,S.VibePopover=we,S.VibeProgress=pe,S.VibeRow=ae,S.VibeScrollspy=$e,S.VibeSpinner=_,S.VibeTabContent=me,S.VibeToast=Ce,S.VibeTooltip=ve,S.default=Uo,S.useBackButton=A,S.useBreakpoints=Pe,S.useColorMode=Wo,S.useFormValidation=Yo,S.useId=N,S.validators=Jo,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));