@velkymx/vibeui 0.2.0 → 0.4.0

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 (71) hide show
  1. package/README.md +592 -1
  2. package/dist/App.vue.d.ts +2 -0
  3. package/dist/components/HelloWorld.vue.d.ts +5 -0
  4. package/dist/components/VibeAccordion.vue.d.ts +51 -0
  5. package/dist/components/VibeAccordionItem.vue.d.ts +57 -0
  6. package/dist/components/VibeAlert.vue.d.ts +61 -0
  7. package/dist/components/VibeBadge.vue.d.ts +52 -0
  8. package/dist/components/VibeBreadcrumb.vue.d.ts +43 -0
  9. package/dist/components/VibeBreadcrumbItem.vue.d.ts +51 -0
  10. package/dist/components/VibeButton.vue.d.ts +99 -0
  11. package/dist/components/VibeButtonGroup.vue.d.ts +61 -0
  12. package/dist/components/VibeCard.vue.d.ts +126 -0
  13. package/dist/components/VibeCardBody.vue.d.ts +34 -0
  14. package/dist/components/VibeCardFooter.vue.d.ts +34 -0
  15. package/dist/components/VibeCardHeader.vue.d.ts +34 -0
  16. package/dist/components/VibeCardImg.vue.d.ts +44 -0
  17. package/dist/components/VibeCardText.vue.d.ts +33 -0
  18. package/dist/components/VibeCardTitle.vue.d.ts +33 -0
  19. package/dist/components/VibeCarousel.vue.d.ts +137 -0
  20. package/dist/components/VibeCarouselSlide.vue.d.ts +80 -0
  21. package/dist/components/VibeCloseButton.vue.d.ts +38 -0
  22. package/dist/components/VibeCol.vue.d.ts +206 -0
  23. package/dist/components/VibeCollapse.vue.d.ts +70 -0
  24. package/dist/components/VibeContainer.vue.d.ts +44 -0
  25. package/dist/components/VibeDataTable.vue.d.ts +261 -0
  26. package/dist/components/VibeDropdown.vue.d.ts +96 -0
  27. package/dist/components/VibeDropdownItem.vue.d.ts +81 -0
  28. package/dist/components/VibeFormCheckbox.vue.d.ts +134 -0
  29. package/dist/components/VibeFormDatepicker.vue.d.ts +154 -0
  30. package/dist/components/VibeFormGroup.vue.d.ts +112 -0
  31. package/dist/components/VibeFormInput.vue.d.ts +154 -0
  32. package/dist/components/VibeFormRadio.vue.d.ts +132 -0
  33. package/dist/components/VibeFormSelect.vue.d.ts +167 -0
  34. package/dist/components/VibeFormSpinbutton.vue.d.ts +176 -0
  35. package/dist/components/VibeFormSwitch.vue.d.ts +107 -0
  36. package/dist/components/VibeFormTextarea.vue.d.ts +163 -0
  37. package/dist/components/VibeFormWysiwyg.vue.d.ts +156 -0
  38. package/dist/components/VibeIcon.vue.d.ts +83 -0
  39. package/dist/components/VibeListGroup.vue.d.ts +63 -0
  40. package/dist/components/VibeListGroupItem.vue.d.ts +90 -0
  41. package/dist/components/VibeModal.vue.d.ts +126 -0
  42. package/dist/components/VibeNav.vue.d.ts +81 -0
  43. package/dist/components/VibeNavItem.vue.d.ts +80 -0
  44. package/dist/components/VibeNavbar.vue.d.ts +71 -0
  45. package/dist/components/VibeNavbarBrand.vue.d.ts +42 -0
  46. package/dist/components/VibeNavbarNav.vue.d.ts +36 -0
  47. package/dist/components/VibeNavbarToggle.vue.d.ts +26 -0
  48. package/dist/components/VibeOffcanvas.vue.d.ts +89 -0
  49. package/dist/components/VibePagination.vue.d.ts +72 -0
  50. package/dist/components/VibePaginationItem.vue.d.ts +62 -0
  51. package/dist/components/VibePlaceholder.vue.d.ts +70 -0
  52. package/dist/components/VibePopover.vue.d.ts +69 -0
  53. package/dist/components/VibeProgress.vue.d.ts +33 -0
  54. package/dist/components/VibeProgressBar.vue.d.ts +88 -0
  55. package/dist/components/VibeRow.vue.d.ts +269 -0
  56. package/dist/components/VibeScrollspy.vue.d.ts +71 -0
  57. package/dist/components/VibeSpinner.vue.d.ts +55 -0
  58. package/dist/components/VibeTabContent.vue.d.ts +44 -0
  59. package/dist/components/VibeTabPane.vue.d.ts +70 -0
  60. package/dist/components/VibeToast.vue.d.ts +90 -0
  61. package/dist/components/VibeTooltip.vue.d.ts +60 -0
  62. package/dist/components/index.d.ts +63 -0
  63. package/dist/composables/useFormValidation.d.ts +26 -0
  64. package/dist/index.d.ts +3 -0
  65. package/dist/main.d.ts +0 -0
  66. package/dist/types/index.d.ts +2 -0
  67. package/dist/types.d.ts +100 -0
  68. package/dist/vibeui.css +1 -1
  69. package/dist/vibeui.es.js +1936 -704
  70. package/dist/vibeui.umd.js +1 -1
  71. package/package.json +14 -4
package/dist/vibeui.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { defineComponent as v, computed as f, createElementBlock as n, createCommentVNode as $, openBlock as a, normalizeClass as m, renderSlot as b, createTextVNode as C, toDisplayString as S, createBlock as y, resolveDynamicComponent as V, withCtx as g, createElementVNode as d, normalizeStyle as M, unref as _, useSlots as j, Fragment as w, renderList as I, ref as T, watch as D, withDirectives as Q, vModelText as re, vModelSelect as ie, withModifiers as O } from "vue";
2
- const Lt = /* @__PURE__ */ v({
1
+ import { defineComponent as p, computed as c, createElementBlock as n, createCommentVNode as u, openBlock as l, normalizeClass as h, renderSlot as $, createTextVNode as N, toDisplayString as f, createBlock as x, resolveDynamicComponent as T, withCtx as V, createElementVNode as m, normalizeStyle as R, unref as L, useSlots as X, Fragment as P, renderList as I, ref as z, watch as O, withDirectives as Q, vModelText as ne, vModelSelect as de, withModifiers as G, onMounted as oe, onBeforeUnmount as re } from "vue";
2
+ const ul = /* @__PURE__ */ p({
3
3
  __name: "VibeAlert",
4
4
  props: {
5
5
  variant: { type: String, default: "primary" },
@@ -8,38 +8,38 @@ const Lt = /* @__PURE__ */ v({
8
8
  message: { type: String, required: !0 }
9
9
  },
10
10
  emits: ["update:modelValue", "component-error"],
11
- setup(e, { emit: u }) {
12
- const t = e, i = u, l = f({
11
+ setup(e, { emit: o }) {
12
+ const t = e, i = o, a = c({
13
13
  get: () => t.modelValue,
14
- set: (o) => i("update:modelValue", o)
14
+ set: (r) => i("update:modelValue", r)
15
15
  }), s = () => {
16
16
  try {
17
- l.value = !1;
18
- } catch (o) {
17
+ a.value = !1;
18
+ } catch (r) {
19
19
  i("component-error", {
20
20
  message: "Dismiss failed",
21
21
  componentName: "VibeAlert",
22
- originalError: o
22
+ originalError: r
23
23
  });
24
24
  }
25
25
  };
26
- return (o, r) => l.value ? (a(), n("div", {
26
+ return (r, d) => a.value ? (l(), n("div", {
27
27
  key: 0,
28
- class: m(`alert alert-${e.variant}`),
28
+ class: h(`alert alert-${e.variant}`),
29
29
  role: "alert"
30
30
  }, [
31
- b(o.$slots, "default", {}, () => [
32
- C(S(e.message), 1)
31
+ $(r.$slots, "default", {}, () => [
32
+ N(f(e.message), 1)
33
33
  ]),
34
- e.dismissable ? (a(), n("button", {
34
+ e.dismissable ? (l(), n("button", {
35
35
  key: 0,
36
36
  class: "btn-close",
37
37
  onClick: s,
38
38
  "aria-label": "Close"
39
- })) : $("", !0)
40
- ], 2)) : $("", !0);
39
+ })) : u("", !0)
40
+ ], 2)) : u("", !0);
41
41
  }
42
- }), qt = /* @__PURE__ */ v({
42
+ }), cl = /* @__PURE__ */ p({
43
43
  __name: "VibeBadge",
44
44
  props: {
45
45
  variant: { type: String, default: "primary" },
@@ -47,21 +47,21 @@ const Lt = /* @__PURE__ */ v({
47
47
  tag: { type: String, default: "span" }
48
48
  },
49
49
  emits: ["component-error"],
50
- setup(e, { emit: u }) {
51
- const t = e, i = f(() => {
52
- const l = ["badge", `bg-${t.variant}`];
53
- return t.pill && l.push("rounded-pill"), l.join(" ");
50
+ setup(e, { emit: o }) {
51
+ const t = e, i = c(() => {
52
+ const a = ["badge", `bg-${t.variant}`];
53
+ return t.pill && a.push("rounded-pill"), a.join(" ");
54
54
  });
55
- return (l, s) => (a(), y(V(e.tag), {
56
- class: m(i.value)
55
+ return (a, s) => (l(), x(T(e.tag), {
56
+ class: h(i.value)
57
57
  }, {
58
- default: g(() => [
59
- b(l.$slots, "default")
58
+ default: V(() => [
59
+ $(a.$slots, "default")
60
60
  ]),
61
61
  _: 3
62
62
  }, 8, ["class"]));
63
63
  }
64
- }), Ot = /* @__PURE__ */ v({
64
+ }), fl = /* @__PURE__ */ p({
65
65
  __name: "VibeButton",
66
66
  props: {
67
67
  variant: { type: String, default: "primary" },
@@ -74,29 +74,29 @@ const Lt = /* @__PURE__ */ v({
74
74
  active: { type: Boolean, default: !1 }
75
75
  },
76
76
  emits: ["click", "component-error"],
77
- setup(e, { emit: u }) {
78
- const t = e, i = u, l = f(() => t.href ? "a" : t.to ? "router-link" : "button"), s = f(() => {
79
- const r = ["btn"];
80
- return t.outline ? r.push(`btn-outline-${t.variant}`) : r.push(`btn-${t.variant}`), t.size && r.push(`btn-${t.size}`), t.active && r.push("active"), r.join(" ");
81
- }), o = (r) => {
82
- t.disabled || i("click", r);
77
+ setup(e, { emit: o }) {
78
+ const t = e, i = o, a = c(() => t.href ? "a" : t.to ? "router-link" : "button"), s = c(() => {
79
+ const d = ["btn"];
80
+ return t.outline ? d.push(`btn-outline-${t.variant}`) : d.push(`btn-${t.variant}`), t.size && d.push(`btn-${t.size}`), t.active && d.push("active"), d.join(" ");
81
+ }), r = (d) => {
82
+ t.disabled || i("click", d);
83
83
  };
84
- return (r, k) => (a(), y(V(l.value), {
85
- class: m(s.value),
84
+ return (d, y) => (l(), x(T(a.value), {
85
+ class: h(s.value),
86
86
  type: e.href || e.to ? void 0 : e.type,
87
87
  href: e.href,
88
88
  to: e.to,
89
89
  disabled: e.disabled,
90
90
  "aria-disabled": e.disabled,
91
- onClick: o
91
+ onClick: r
92
92
  }, {
93
- default: g(() => [
94
- b(r.$slots, "default")
93
+ default: V(() => [
94
+ $(d.$slots, "default")
95
95
  ]),
96
96
  _: 3
97
97
  }, 8, ["class", "type", "href", "to", "disabled", "aria-disabled"]));
98
98
  }
99
- }), ne = ["role", "aria-label"], Mt = /* @__PURE__ */ v({
99
+ }), ue = ["role", "aria-label"], vl = /* @__PURE__ */ p({
100
100
  __name: "VibeButtonGroup",
101
101
  props: {
102
102
  size: { type: String, default: void 0 },
@@ -105,20 +105,20 @@ const Lt = /* @__PURE__ */ v({
105
105
  ariaLabel: { type: String, default: void 0 }
106
106
  },
107
107
  emits: ["component-error"],
108
- setup(e, { emit: u }) {
109
- const t = e, i = f(() => {
110
- const l = [t.vertical ? "btn-group-vertical" : "btn-group"];
111
- return t.size && l.push(`btn-group-${t.size}`), l.join(" ");
108
+ setup(e, { emit: o }) {
109
+ const t = e, i = c(() => {
110
+ const a = [t.vertical ? "btn-group-vertical" : "btn-group"];
111
+ return t.size && a.push(`btn-group-${t.size}`), a.join(" ");
112
112
  });
113
- return (l, s) => (a(), n("div", {
114
- class: m(i.value),
113
+ return (a, s) => (l(), n("div", {
114
+ class: h(i.value),
115
115
  role: e.role,
116
116
  "aria-label": e.ariaLabel
117
117
  }, [
118
- b(l.$slots, "default")
119
- ], 10, ne));
118
+ $(a.$slots, "default")
119
+ ], 10, ue));
120
120
  }
121
- }), oe = ["disabled", "aria-label"], Ft = /* @__PURE__ */ v({
121
+ }), ce = ["disabled", "aria-label"], bl = /* @__PURE__ */ p({
122
122
  __name: "VibeCloseButton",
123
123
  props: {
124
124
  disabled: { type: Boolean, default: !1 },
@@ -126,19 +126,19 @@ const Lt = /* @__PURE__ */ v({
126
126
  ariaLabel: { type: String, default: "Close" }
127
127
  },
128
128
  emits: ["click", "component-error"],
129
- setup(e, { emit: u }) {
130
- const t = e, i = u, l = (s) => {
129
+ setup(e, { emit: o }) {
130
+ const t = e, i = o, a = (s) => {
131
131
  t.disabled || i("click", s);
132
132
  };
133
- return (s, o) => (a(), n("button", {
133
+ return (s, r) => (l(), n("button", {
134
134
  type: "button",
135
- class: m(["btn-close", { "btn-close-white": e.white }]),
135
+ class: h(["btn-close", { "btn-close-white": e.white }]),
136
136
  disabled: e.disabled,
137
137
  "aria-label": e.ariaLabel,
138
- onClick: l
139
- }, null, 10, oe));
138
+ onClick: a
139
+ }, null, 10, ce));
140
140
  }
141
- }), de = { class: "visually-hidden" }, Et = /* @__PURE__ */ v({
141
+ }), fe = { class: "visually-hidden" }, ml = /* @__PURE__ */ p({
142
142
  __name: "VibeSpinner",
143
143
  props: {
144
144
  variant: { type: String, default: void 0 },
@@ -148,22 +148,22 @@ const Lt = /* @__PURE__ */ v({
148
148
  tag: { type: String, default: "div" }
149
149
  },
150
150
  emits: ["component-error"],
151
- setup(e, { emit: u }) {
152
- const t = e, i = f(() => {
153
- const l = [`spinner-${t.type}`];
154
- return t.variant && l.push(`text-${t.variant}`), t.size && l.push(`spinner-${t.type}-${t.size}`), l.join(" ");
151
+ setup(e, { emit: o }) {
152
+ const t = e, i = c(() => {
153
+ const a = [`spinner-${t.type}`];
154
+ return t.variant && a.push(`text-${t.variant}`), t.size && a.push(`spinner-${t.type}-${t.size}`), a.join(" ");
155
155
  });
156
- return (l, s) => (a(), y(V(e.tag), {
157
- class: m(i.value),
156
+ return (a, s) => (l(), x(T(e.tag), {
157
+ class: h(i.value),
158
158
  role: "status"
159
159
  }, {
160
- default: g(() => [
161
- d("span", de, S(e.label), 1)
160
+ default: V(() => [
161
+ m("span", fe, f(e.label), 1)
162
162
  ]),
163
163
  _: 1
164
164
  }, 8, ["class"]));
165
165
  }
166
- }), Gt = /* @__PURE__ */ v({
166
+ }), yl = /* @__PURE__ */ p({
167
167
  __name: "VibePlaceholder",
168
168
  props: {
169
169
  variant: { type: String, default: void 0 },
@@ -173,73 +173,204 @@ const Lt = /* @__PURE__ */ v({
173
173
  tag: { type: String, default: "span" }
174
174
  },
175
175
  emits: ["component-error"],
176
- setup(e, { emit: u }) {
177
- const t = e, i = f(() => {
178
- const o = ["placeholder"];
179
- return t.variant && o.push(`bg-${t.variant}`), t.size && o.push(`placeholder-${t.size}`), o.join(" ");
180
- }), l = f(() => {
176
+ setup(e, { emit: o }) {
177
+ const t = e, i = c(() => {
178
+ const r = ["placeholder"];
179
+ return t.variant && r.push(`bg-${t.variant}`), t.size && r.push(`placeholder-${t.size}`), r.join(" ");
180
+ }), a = c(() => {
181
181
  if (t.animation) return `placeholder-${t.animation}`;
182
- }), s = f(() => {
182
+ }), s = c(() => {
183
183
  if (t.width)
184
184
  return { width: typeof t.width == "number" ? `${t.width}%` : t.width };
185
185
  });
186
- return (o, r) => (a(), y(V(e.tag), {
187
- class: m(l.value)
186
+ return (r, d) => (l(), x(T(e.tag), {
187
+ class: h(a.value)
188
188
  }, {
189
- default: g(() => [
190
- d("span", {
191
- class: m(i.value),
192
- style: M(s.value)
189
+ default: V(() => [
190
+ m("span", {
191
+ class: h(i.value),
192
+ style: R(s.value)
193
193
  }, [
194
- b(o.$slots, "default")
194
+ $(r.$slots, "default")
195
195
  ], 6)
196
196
  ]),
197
197
  _: 3
198
198
  }, 8, ["class"]));
199
199
  }
200
- }), ue = /* @__PURE__ */ v({
200
+ }), hl = /* @__PURE__ */ p({
201
+ __name: "VibeContainer",
202
+ props: {
203
+ fluid: { type: [Boolean, String], default: !1 },
204
+ tag: { type: String, default: "div" }
205
+ },
206
+ emits: ["component-error"],
207
+ setup(e, { emit: o }) {
208
+ const t = e, i = c(() => t.fluid === !1 ? "container" : t.fluid === !0 ? "container-fluid" : `container-${t.fluid}`);
209
+ return (a, s) => (l(), x(T(e.tag), {
210
+ class: h(i.value)
211
+ }, {
212
+ default: V(() => [
213
+ $(a.$slots, "default")
214
+ ]),
215
+ _: 3
216
+ }, 8, ["class"]));
217
+ }
218
+ }), gl = /* @__PURE__ */ p({
219
+ __name: "VibeRow",
220
+ props: {
221
+ tag: { type: String, default: "div" },
222
+ // Base gutters
223
+ gutters: { type: Number, default: void 0 },
224
+ guttersX: { type: Number, default: void 0 },
225
+ guttersY: { type: Number, default: void 0 },
226
+ // Responsive gutters
227
+ guttersSm: { type: Number, default: void 0 },
228
+ guttersMd: { type: Number, default: void 0 },
229
+ guttersLg: { type: Number, default: void 0 },
230
+ guttersXl: { type: Number, default: void 0 },
231
+ guttersXxl: { type: Number, default: void 0 },
232
+ guttersXSm: { type: Number, default: void 0 },
233
+ guttersXMd: { type: Number, default: void 0 },
234
+ guttersXLg: { type: Number, default: void 0 },
235
+ guttersXXl: { type: Number, default: void 0 },
236
+ guttersXXxl: { type: Number, default: void 0 },
237
+ guttersYSm: { type: Number, default: void 0 },
238
+ guttersYMd: { type: Number, default: void 0 },
239
+ guttersYLg: { type: Number, default: void 0 },
240
+ guttersYXl: { type: Number, default: void 0 },
241
+ guttersYXxl: { type: Number, default: void 0 },
242
+ // Row columns
243
+ rowCols: { type: Number, default: void 0 },
244
+ rowColsSm: { type: Number, default: void 0 },
245
+ rowColsMd: { type: Number, default: void 0 },
246
+ rowColsLg: { type: Number, default: void 0 },
247
+ rowColsXl: { type: Number, default: void 0 },
248
+ rowColsXxl: { type: Number, default: void 0 },
249
+ // Alignment
250
+ alignItems: { type: String, default: void 0 },
251
+ justifyContent: { type: String, default: void 0 }
252
+ },
253
+ emits: ["component-error"],
254
+ setup(e, { emit: o }) {
255
+ const t = e, i = c(() => {
256
+ const a = ["row"];
257
+ t.gutters !== void 0 && a.push(`g-${t.gutters}`), t.guttersX !== void 0 && a.push(`gx-${t.guttersX}`), t.guttersY !== void 0 && a.push(`gy-${t.guttersY}`);
258
+ const s = ["sm", "md", "lg", "xl", "xxl"];
259
+ return s.forEach((r) => {
260
+ const d = r.charAt(0).toUpperCase() + r.slice(1), y = `gutters${d}`;
261
+ t[y] !== void 0 && a.push(`g-${r}-${t[y]}`);
262
+ const v = `guttersX${d}`;
263
+ t[v] !== void 0 && a.push(`gx-${r}-${t[v]}`);
264
+ const b = `guttersY${d}`;
265
+ t[b] !== void 0 && a.push(`gy-${r}-${t[b]}`);
266
+ }), t.rowCols !== void 0 && a.push(`row-cols-${t.rowCols}`), s.forEach((r) => {
267
+ const d = `rowCols${r.charAt(0).toUpperCase() + r.slice(1)}`;
268
+ t[d] !== void 0 && a.push(`row-cols-${r}-${t[d]}`);
269
+ }), t.alignItems && a.push(`align-items-${t.alignItems}`), t.justifyContent && a.push(`justify-content-${t.justifyContent}`), a.join(" ");
270
+ });
271
+ return (a, s) => (l(), x(T(e.tag), {
272
+ class: h(i.value)
273
+ }, {
274
+ default: V(() => [
275
+ $(a.$slots, "default")
276
+ ]),
277
+ _: 3
278
+ }, 8, ["class"]));
279
+ }
280
+ }), pl = /* @__PURE__ */ p({
281
+ __name: "VibeCol",
282
+ props: {
283
+ tag: { type: String, default: "div" },
284
+ // Column sizes
285
+ cols: { type: [Number, String, Boolean], default: void 0 },
286
+ sm: { type: [Number, String, Boolean], default: void 0 },
287
+ md: { type: [Number, String, Boolean], default: void 0 },
288
+ lg: { type: [Number, String, Boolean], default: void 0 },
289
+ xl: { type: [Number, String, Boolean], default: void 0 },
290
+ xxl: { type: [Number, String, Boolean], default: void 0 },
291
+ // Offsets
292
+ offset: { type: Number, default: void 0 },
293
+ offsetSm: { type: Number, default: void 0 },
294
+ offsetMd: { type: Number, default: void 0 },
295
+ offsetLg: { type: Number, default: void 0 },
296
+ offsetXl: { type: Number, default: void 0 },
297
+ offsetXxl: { type: Number, default: void 0 },
298
+ // Order
299
+ order: { type: [Number, String], default: void 0 },
300
+ orderSm: { type: [Number, String], default: void 0 },
301
+ orderMd: { type: [Number, String], default: void 0 },
302
+ orderLg: { type: [Number, String], default: void 0 },
303
+ orderXl: { type: [Number, String], default: void 0 },
304
+ orderXxl: { type: [Number, String], default: void 0 },
305
+ // Alignment
306
+ alignSelf: { type: String, default: void 0 }
307
+ },
308
+ emits: ["component-error"],
309
+ setup(e, { emit: o }) {
310
+ const t = e, i = c(() => {
311
+ const a = [];
312
+ return t.cols !== void 0 || t.sm !== void 0 || t.md !== void 0 || t.lg !== void 0 || t.xl !== void 0 || t.xxl !== void 0 ? (t.cols === !0 ? a.push("col") : t.cols === "auto" ? a.push("col-auto") : t.cols && a.push(`col-${t.cols}`), [
313
+ { name: "sm", value: t.sm },
314
+ { name: "md", value: t.md },
315
+ { name: "lg", value: t.lg },
316
+ { name: "xl", value: t.xl },
317
+ { name: "xxl", value: t.xxl }
318
+ ].forEach(({ name: d, value: y }) => {
319
+ y === !0 ? a.push(`col-${d}`) : y === "auto" ? a.push(`col-${d}-auto`) : y !== void 0 && a.push(`col-${d}-${y}`);
320
+ })) : a.push("col"), t.offset !== void 0 && a.push(`offset-${t.offset}`), t.offsetSm !== void 0 && a.push(`offset-sm-${t.offsetSm}`), t.offsetMd !== void 0 && a.push(`offset-md-${t.offsetMd}`), t.offsetLg !== void 0 && a.push(`offset-lg-${t.offsetLg}`), t.offsetXl !== void 0 && a.push(`offset-xl-${t.offsetXl}`), t.offsetXxl !== void 0 && a.push(`offset-xxl-${t.offsetXxl}`), t.order !== void 0 && a.push(`order-${t.order}`), t.orderSm !== void 0 && a.push(`order-sm-${t.orderSm}`), t.orderMd !== void 0 && a.push(`order-md-${t.orderMd}`), t.orderLg !== void 0 && a.push(`order-lg-${t.orderLg}`), t.orderXl !== void 0 && a.push(`order-xl-${t.orderXl}`), t.orderXxl !== void 0 && a.push(`order-xxl-${t.orderXxl}`), t.alignSelf && a.push(`align-self-${t.alignSelf}`), a.join(" ");
321
+ });
322
+ return (a, s) => (l(), x(T(e.tag), {
323
+ class: h(i.value)
324
+ }, {
325
+ default: V(() => [
326
+ $(a.$slots, "default")
327
+ ]),
328
+ _: 3
329
+ }, 8, ["class"]));
330
+ }
331
+ }), ve = /* @__PURE__ */ p({
201
332
  __name: "VibeCardHeader",
202
333
  props: {
203
334
  tag: { type: String, default: "div" }
204
335
  },
205
336
  emits: ["component-error"],
206
- setup(e, { emit: u }) {
207
- return (t, i) => (a(), y(V(e.tag), { class: "card-header" }, {
208
- default: g(() => [
209
- b(t.$slots, "default")
337
+ setup(e, { emit: o }) {
338
+ return (t, i) => (l(), x(T(e.tag), { class: "card-header" }, {
339
+ default: V(() => [
340
+ $(t.$slots, "default")
210
341
  ]),
211
342
  _: 3
212
343
  }));
213
344
  }
214
- }), ce = /* @__PURE__ */ v({
345
+ }), be = /* @__PURE__ */ p({
215
346
  __name: "VibeCardBody",
216
347
  props: {
217
348
  tag: { type: String, default: "div" }
218
349
  },
219
350
  emits: ["component-error"],
220
- setup(e, { emit: u }) {
221
- return (t, i) => (a(), y(V(e.tag), { class: "card-body" }, {
222
- default: g(() => [
223
- b(t.$slots, "default")
351
+ setup(e, { emit: o }) {
352
+ return (t, i) => (l(), x(T(e.tag), { class: "card-body" }, {
353
+ default: V(() => [
354
+ $(t.$slots, "default")
224
355
  ]),
225
356
  _: 3
226
357
  }));
227
358
  }
228
- }), fe = /* @__PURE__ */ v({
359
+ }), me = /* @__PURE__ */ p({
229
360
  __name: "VibeCardFooter",
230
361
  props: {
231
362
  tag: { type: String, default: "div" }
232
363
  },
233
364
  emits: ["component-error"],
234
- setup(e, { emit: u }) {
235
- return (t, i) => (a(), y(V(e.tag), { class: "card-footer" }, {
236
- default: g(() => [
237
- b(t.$slots, "default")
365
+ setup(e, { emit: o }) {
366
+ return (t, i) => (l(), x(T(e.tag), { class: "card-footer" }, {
367
+ default: V(() => [
368
+ $(t.$slots, "default")
238
369
  ]),
239
370
  _: 3
240
371
  }));
241
372
  }
242
- }), be = ["src", "alt"], U = /* @__PURE__ */ v({
373
+ }), ye = ["src", "alt"], K = /* @__PURE__ */ p({
243
374
  __name: "VibeCardImg",
244
375
  props: {
245
376
  src: { type: String, required: !0 },
@@ -248,43 +379,43 @@ const Lt = /* @__PURE__ */ v({
248
379
  bottom: { type: Boolean, default: !1 }
249
380
  },
250
381
  emits: ["component-error"],
251
- setup(e, { emit: u }) {
382
+ setup(e, { emit: o }) {
252
383
  const t = e, i = t.top ? "card-img-top" : t.bottom ? "card-img-bottom" : "card-img";
253
- return (l, s) => (a(), n("img", {
384
+ return (a, s) => (l(), n("img", {
254
385
  src: e.src,
255
386
  alt: e.alt,
256
- class: m(_(i))
257
- }, null, 10, be));
387
+ class: h(L(i))
388
+ }, null, 10, ye));
258
389
  }
259
- }), me = /* @__PURE__ */ v({
390
+ }), he = /* @__PURE__ */ p({
260
391
  __name: "VibeCardTitle",
261
392
  props: {
262
393
  tag: { type: String, default: "h5" }
263
394
  },
264
395
  emits: ["component-error"],
265
- setup(e, { emit: u }) {
266
- return (t, i) => (a(), y(V(e.tag), { class: "card-title" }, {
267
- default: g(() => [
268
- b(t.$slots, "default")
396
+ setup(e, { emit: o }) {
397
+ return (t, i) => (l(), x(T(e.tag), { class: "card-title" }, {
398
+ default: V(() => [
399
+ $(t.$slots, "default")
269
400
  ]),
270
401
  _: 3
271
402
  }));
272
403
  }
273
- }), ve = /* @__PURE__ */ v({
404
+ }), ge = /* @__PURE__ */ p({
274
405
  __name: "VibeCardText",
275
406
  props: {
276
407
  tag: { type: String, default: "p" }
277
408
  },
278
409
  emits: ["component-error"],
279
- setup(e, { emit: u }) {
280
- return (t, i) => (a(), y(V(e.tag), { class: "card-text" }, {
281
- default: g(() => [
282
- b(t.$slots, "default")
410
+ setup(e, { emit: o }) {
411
+ return (t, i) => (l(), x(T(e.tag), { class: "card-text" }, {
412
+ default: V(() => [
413
+ $(t.$slots, "default")
283
414
  ]),
284
415
  _: 3
285
416
  }));
286
417
  }
287
- }), Rt = /* @__PURE__ */ v({
418
+ }), $l = /* @__PURE__ */ p({
288
419
  __name: "VibeCard",
289
420
  props: {
290
421
  variant: { type: String, default: void 0 },
@@ -302,63 +433,63 @@ const Lt = /* @__PURE__ */ v({
302
433
  footerImageAlt: { type: String, default: "" }
303
434
  },
304
435
  emits: ["component-error"],
305
- setup(e, { emit: u }) {
306
- const t = e, i = j(), l = f(() => {
307
- const r = ["card"];
308
- return t.variant && r.push(`bg-${t.variant}`), t.border && r.push(`border-${t.border}`), t.textVariant && r.push(`text-${t.textVariant}`), r.join(" ");
309
- }), s = f(() => !!(t.title || t.body || t.header || t.footer || t.headerImage || t.footerImage)), o = f(() => !!(i.default || i.header || i.footer || i.body));
310
- return (r, k) => (a(), y(V(e.tag), {
311
- class: m(l.value)
436
+ setup(e, { emit: o }) {
437
+ const t = e, i = X(), a = c(() => {
438
+ const d = ["card"];
439
+ return t.variant && d.push(`bg-${t.variant}`), t.border && d.push(`border-${t.border}`), t.textVariant && d.push(`text-${t.textVariant}`), d.join(" ");
440
+ }), s = c(() => !!(t.title || t.body || t.header || t.footer || t.headerImage || t.footerImage)), r = c(() => !!(i.default || i.header || i.footer || i.body));
441
+ return (d, y) => (l(), x(T(e.tag), {
442
+ class: h(a.value)
312
443
  }, {
313
- default: g(() => [
314
- s.value && !o.value ? (a(), n(w, { key: 0 }, [
315
- e.headerImage ? (a(), y(U, {
444
+ default: V(() => [
445
+ s.value && !r.value ? (l(), n(P, { key: 0 }, [
446
+ e.headerImage ? (l(), x(K, {
316
447
  key: 0,
317
448
  top: "",
318
449
  src: e.headerImage,
319
450
  alt: e.headerImageAlt
320
- }, null, 8, ["src", "alt"])) : $("", !0),
321
- e.header ? (a(), y(ue, { key: 1 }, {
322
- default: g(() => [
323
- C(S(e.header), 1)
451
+ }, null, 8, ["src", "alt"])) : u("", !0),
452
+ e.header ? (l(), x(ve, { key: 1 }, {
453
+ default: V(() => [
454
+ N(f(e.header), 1)
324
455
  ]),
325
456
  _: 1
326
- })) : $("", !0),
327
- e.title || e.body ? (a(), y(ce, { key: 2 }, {
328
- default: g(() => [
329
- e.title ? (a(), y(me, { key: 0 }, {
330
- default: g(() => [
331
- C(S(e.title), 1)
457
+ })) : u("", !0),
458
+ e.title || e.body ? (l(), x(be, { key: 2 }, {
459
+ default: V(() => [
460
+ e.title ? (l(), x(he, { key: 0 }, {
461
+ default: V(() => [
462
+ N(f(e.title), 1)
332
463
  ]),
333
464
  _: 1
334
- })) : $("", !0),
335
- e.body ? (a(), y(ve, { key: 1 }, {
336
- default: g(() => [
337
- C(S(e.body), 1)
465
+ })) : u("", !0),
466
+ e.body ? (l(), x(ge, { key: 1 }, {
467
+ default: V(() => [
468
+ N(f(e.body), 1)
338
469
  ]),
339
470
  _: 1
340
- })) : $("", !0)
471
+ })) : u("", !0)
341
472
  ]),
342
473
  _: 1
343
- })) : $("", !0),
344
- e.footer ? (a(), y(fe, { key: 3 }, {
345
- default: g(() => [
346
- C(S(e.footer), 1)
474
+ })) : u("", !0),
475
+ e.footer ? (l(), x(me, { key: 3 }, {
476
+ default: V(() => [
477
+ N(f(e.footer), 1)
347
478
  ]),
348
479
  _: 1
349
- })) : $("", !0),
350
- e.footerImage ? (a(), y(U, {
480
+ })) : u("", !0),
481
+ e.footerImage ? (l(), x(K, {
351
482
  key: 4,
352
483
  bottom: "",
353
484
  src: e.footerImage,
354
485
  alt: e.footerImageAlt
355
- }, null, 8, ["src", "alt"])) : $("", !0)
356
- ], 64)) : b(r.$slots, "default", { key: 1 })
486
+ }, null, 8, ["src", "alt"])) : u("", !0)
487
+ ], 64)) : $(d.$slots, "default", { key: 1 })
357
488
  ]),
358
489
  _: 3
359
490
  }, 8, ["class"]));
360
491
  }
361
- }), pe = ["aria-current"], ye = /* @__PURE__ */ v({
492
+ }), pe = ["aria-current"], $e = /* @__PURE__ */ p({
362
493
  __name: "VibeBreadcrumbItem",
363
494
  props: {
364
495
  active: { type: Boolean, default: !1 },
@@ -366,81 +497,92 @@ const Lt = /* @__PURE__ */ v({
366
497
  to: { type: [String, Object], default: void 0 }
367
498
  },
368
499
  emits: ["component-error"],
369
- setup(e, { emit: u }) {
500
+ setup(e, { emit: o }) {
370
501
  const t = e, i = t.href ? "a" : t.to ? "router-link" : "span";
371
- return (l, s) => (a(), n("li", {
372
- class: m(["breadcrumb-item", { active: e.active }]),
502
+ return (a, s) => (l(), n("li", {
503
+ class: h(["breadcrumb-item", { active: e.active }]),
373
504
  "aria-current": e.active ? "page" : void 0
374
505
  }, [
375
- (a(), y(V(_(i)), {
506
+ (l(), x(T(L(i)), {
376
507
  href: e.href,
377
508
  to: e.to
378
509
  }, {
379
- default: g(() => [
380
- b(l.$slots, "default")
510
+ default: V(() => [
511
+ $(a.$slots, "default")
381
512
  ]),
382
513
  _: 3
383
514
  }, 8, ["href", "to"]))
384
515
  ], 10, pe));
385
516
  }
386
- }), he = ["aria-label"], ge = { class: "breadcrumb" }, Ht = /* @__PURE__ */ v({
517
+ }), ke = ["aria-label"], Se = { class: "breadcrumb" }, kl = /* @__PURE__ */ p({
387
518
  __name: "VibeBreadcrumb",
388
519
  props: {
389
520
  ariaLabel: { type: String, default: "breadcrumb" },
390
521
  items: { type: Array, default: void 0 }
391
522
  },
392
523
  emits: ["component-error"],
393
- setup(e, { emit: u }) {
394
- const t = j();
395
- return (i, l) => (a(), n("nav", { "aria-label": e.ariaLabel }, [
396
- d("ol", ge, [
397
- e.items && e.items.length > 0 && !_(t).default ? (a(!0), n(w, { key: 0 }, I(e.items, (s, o) => (a(), y(ye, {
398
- key: o,
524
+ setup(e, { emit: o }) {
525
+ const t = X();
526
+ return (i, a) => (l(), n("nav", { "aria-label": e.ariaLabel }, [
527
+ m("ol", Se, [
528
+ e.items && e.items.length > 0 && !L(t).default ? (l(!0), n(P, { key: 0 }, I(e.items, (s, r) => (l(), x($e, {
529
+ key: r,
399
530
  href: s.href,
400
531
  to: s.to,
401
532
  active: s.active
402
533
  }, {
403
- default: g(() => [
404
- C(S(s.text), 1)
534
+ default: V(() => [
535
+ N(f(s.text), 1)
405
536
  ]),
406
537
  _: 2
407
- }, 1032, ["href", "to", "active"]))), 128)) : b(i.$slots, "default", { key: 1 })
538
+ }, 1032, ["href", "to", "active"]))), 128)) : $(i.$slots, "default", { key: 1 })
408
539
  ])
409
- ], 8, he));
540
+ ], 8, ke));
410
541
  }
411
- }), $e = { class: "nav-item" }, K = /* @__PURE__ */ v({
542
+ }), xe = ["role"], W = /* @__PURE__ */ p({
412
543
  __name: "VibeNavItem",
413
544
  props: {
414
545
  active: { type: Boolean, default: !1 },
415
546
  disabled: { type: Boolean, default: !1 },
416
547
  href: { type: String, default: void 0 },
417
- to: { type: [String, Object], default: void 0 }
548
+ to: { type: [String, Object], default: void 0 },
549
+ // Tab-specific props
550
+ tab: { type: Boolean, default: !1 },
551
+ target: { type: String, default: void 0 }
418
552
  },
419
553
  emits: ["click", "component-error"],
420
- setup(e, { emit: u }) {
421
- const t = e, i = u, l = f(() => t.href ? "a" : t.to ? "router-link" : "a"), s = f(() => {
422
- const r = ["nav-link"];
423
- return t.active && r.push("active"), t.disabled && r.push("disabled"), r.join(" ");
424
- }), o = (r) => {
425
- t.disabled || i("click", r);
554
+ setup(e, { emit: o }) {
555
+ const t = e, i = o, a = c(() => t.tab && !t.href && !t.to ? "button" : t.href ? "a" : t.to ? "router-link" : "a"), s = c(() => {
556
+ const d = ["nav-link"];
557
+ return t.active && d.push("active"), t.disabled && d.push("disabled"), d.join(" ");
558
+ }), r = (d) => {
559
+ t.disabled || i("click", d);
426
560
  };
427
- return (r, k) => (a(), n("li", $e, [
428
- (a(), y(V(l.value), {
429
- class: m(s.value),
561
+ return (d, y) => (l(), n("li", {
562
+ class: "nav-item",
563
+ role: e.tab ? "presentation" : void 0
564
+ }, [
565
+ (l(), x(T(a.value), {
566
+ class: h(s.value),
430
567
  href: e.href,
431
568
  to: e.to,
569
+ type: a.value === "button" ? "button" : void 0,
570
+ "data-bs-toggle": e.tab ? "tab" : void 0,
571
+ "data-bs-target": e.tab && e.target ? e.target : void 0,
572
+ role: e.tab ? "tab" : void 0,
432
573
  "aria-current": e.active ? "page" : void 0,
433
574
  "aria-disabled": e.disabled,
434
- onClick: o
575
+ "aria-selected": e.tab ? e.active : void 0,
576
+ onClick: r
435
577
  }, {
436
- default: g(() => [
437
- b(r.$slots, "default")
578
+ default: V(() => [
579
+ $(d.$slots, "default")
438
580
  ]),
439
581
  _: 3
440
- }, 8, ["class", "href", "to", "aria-current", "aria-disabled"]))
441
- ]));
582
+ }, 8, ["class", "href", "to", "type", "data-bs-toggle", "data-bs-target", "role", "aria-current", "aria-disabled", "aria-selected"]))
583
+ ], 8, xe));
442
584
  }
443
- }), Qt = /* @__PURE__ */ v({
585
+ }), Sl = /* @__PURE__ */ p({
444
586
  __name: "VibeNav",
445
587
  props: {
446
588
  tabs: { type: Boolean, default: !1 },
@@ -452,32 +594,32 @@ const Lt = /* @__PURE__ */ v({
452
594
  items: { type: Array, default: void 0 }
453
595
  },
454
596
  emits: ["component-error"],
455
- setup(e, { emit: u }) {
456
- const t = e, i = j(), l = f(() => {
597
+ setup(e, { emit: o }) {
598
+ const t = e, i = X(), a = c(() => {
457
599
  const s = ["nav"];
458
600
  return t.tabs && s.push("nav-tabs"), t.pills && s.push("nav-pills"), t.fill && s.push("nav-fill"), t.justified && s.push("nav-justified"), t.vertical && s.push("flex-column"), s.join(" ");
459
601
  });
460
- return (s, o) => (a(), y(V(e.tag), {
461
- class: m(l.value)
602
+ return (s, r) => (l(), x(T(e.tag), {
603
+ class: h(a.value)
462
604
  }, {
463
- default: g(() => [
464
- e.items && e.items.length > 0 && !_(i).default ? (a(!0), n(w, { key: 0 }, I(e.items, (r, k) => (a(), y(K, {
465
- key: k,
466
- href: r.href,
467
- to: r.to,
468
- active: r.active,
469
- disabled: r.disabled
605
+ default: V(() => [
606
+ e.items && e.items.length > 0 && !L(i).default ? (l(!0), n(P, { key: 0 }, I(e.items, (d, y) => (l(), x(W, {
607
+ key: y,
608
+ href: d.href,
609
+ to: d.to,
610
+ active: d.active,
611
+ disabled: d.disabled
470
612
  }, {
471
- default: g(() => [
472
- C(S(r.text), 1)
613
+ default: V(() => [
614
+ N(f(d.text), 1)
473
615
  ]),
474
616
  _: 2
475
- }, 1032, ["href", "to", "active", "disabled"]))), 128)) : b(s.$slots, "default", { key: 1 })
617
+ }, 1032, ["href", "to", "active", "disabled"]))), 128)) : $(s.$slots, "default", { key: 1 })
476
618
  ]),
477
619
  _: 3
478
620
  }, 8, ["class"]));
479
621
  }
480
- }), Ut = /* @__PURE__ */ v({
622
+ }), xl = /* @__PURE__ */ p({
481
623
  __name: "VibeNavbar",
482
624
  props: {
483
625
  variant: { type: String, default: "light" },
@@ -487,57 +629,57 @@ const Lt = /* @__PURE__ */ v({
487
629
  tag: { type: String, default: "nav" }
488
630
  },
489
631
  emits: ["component-error"],
490
- setup(e, { emit: u }) {
491
- const t = e, i = f(() => {
632
+ setup(e, { emit: o }) {
633
+ const t = e, i = c(() => {
492
634
  const s = ["navbar"];
493
635
  return t.expand === !0 ? s.push("navbar-expand") : typeof t.expand == "string" && s.push(`navbar-expand-${t.expand}`), t.variant === "dark" || t.variant === "light" ? s.push(`navbar-${t.variant}`) : s.push(`bg-${t.variant}`), t.position && s.push(t.position), s.join(" ");
494
- }), l = f(() => {
636
+ }), a = c(() => {
495
637
  if (t.container !== !1)
496
638
  return t.container === !0 ? "container-fluid" : `container-${t.container}`;
497
639
  });
498
- return (s, o) => (a(), y(V(e.tag), {
499
- class: m(i.value)
640
+ return (s, r) => (l(), x(T(e.tag), {
641
+ class: h(i.value)
500
642
  }, {
501
- default: g(() => [
502
- l.value ? (a(), n("div", {
643
+ default: V(() => [
644
+ a.value ? (l(), n("div", {
503
645
  key: 0,
504
- class: m(l.value)
646
+ class: h(a.value)
505
647
  }, [
506
- b(s.$slots, "default")
507
- ], 2)) : b(s.$slots, "default", { key: 1 })
648
+ $(s.$slots, "default")
649
+ ], 2)) : $(s.$slots, "default", { key: 1 })
508
650
  ]),
509
651
  _: 3
510
652
  }, 8, ["class"]));
511
653
  }
512
- }), Kt = /* @__PURE__ */ v({
654
+ }), Vl = /* @__PURE__ */ p({
513
655
  __name: "VibeNavbarBrand",
514
656
  props: {
515
657
  href: { type: String, default: void 0 },
516
658
  to: { type: [String, Object], default: void 0 }
517
659
  },
518
660
  emits: ["component-error"],
519
- setup(e, { emit: u }) {
661
+ setup(e, { emit: o }) {
520
662
  const t = e, i = t.href ? "a" : t.to ? "router-link" : "span";
521
- return (l, s) => (a(), y(V(_(i)), {
663
+ return (a, s) => (l(), x(T(L(i)), {
522
664
  class: "navbar-brand",
523
665
  href: e.href,
524
666
  to: e.to
525
667
  }, {
526
- default: g(() => [
527
- b(l.$slots, "default")
668
+ default: V(() => [
669
+ $(a.$slots, "default")
528
670
  ]),
529
671
  _: 3
530
672
  }, 8, ["href", "to"]));
531
673
  }
532
- }), ke = ["data-bs-target", "aria-controls", "aria-label"], Jt = /* @__PURE__ */ v({
674
+ }), Ve = ["data-bs-target", "aria-controls", "aria-label"], Cl = /* @__PURE__ */ p({
533
675
  __name: "VibeNavbarToggle",
534
676
  props: {
535
677
  target: { type: String, required: !0 },
536
678
  ariaLabel: { type: String, default: "Toggle navigation" }
537
679
  },
538
680
  emits: ["component-error"],
539
- setup(e, { emit: u }) {
540
- return (t, i) => (a(), n("button", {
681
+ setup(e, { emit: o }) {
682
+ return (t, i) => (l(), n("button", {
541
683
  class: "navbar-toggler",
542
684
  type: "button",
543
685
  "data-bs-toggle": "collapse",
@@ -546,37 +688,37 @@ const Lt = /* @__PURE__ */ v({
546
688
  "aria-expanded": "false",
547
689
  "aria-label": e.ariaLabel
548
690
  }, [...i[0] || (i[0] = [
549
- d("span", { class: "navbar-toggler-icon" }, null, -1)
550
- ])], 8, ke));
691
+ m("span", { class: "navbar-toggler-icon" }, null, -1)
692
+ ])], 8, Ve));
551
693
  }
552
- }), Wt = /* @__PURE__ */ v({
694
+ }), Bl = /* @__PURE__ */ p({
553
695
  __name: "VibeNavbarNav",
554
696
  props: {
555
697
  tag: { type: String, default: "ul" },
556
698
  items: { type: Array, default: void 0 }
557
699
  },
558
700
  emits: ["component-error"],
559
- setup(e, { emit: u }) {
560
- const t = j();
561
- return (i, l) => (a(), y(V(e.tag), { class: "navbar-nav" }, {
562
- default: g(() => [
563
- e.items && e.items.length > 0 && !_(t).default ? (a(!0), n(w, { key: 0 }, I(e.items, (s, o) => (a(), y(K, {
564
- key: o,
701
+ setup(e, { emit: o }) {
702
+ const t = X();
703
+ return (i, a) => (l(), x(T(e.tag), { class: "navbar-nav" }, {
704
+ default: V(() => [
705
+ e.items && e.items.length > 0 && !L(t).default ? (l(!0), n(P, { key: 0 }, I(e.items, (s, r) => (l(), x(W, {
706
+ key: r,
565
707
  href: s.href,
566
708
  to: s.to,
567
709
  active: s.active,
568
710
  disabled: s.disabled
569
711
  }, {
570
- default: g(() => [
571
- C(S(s.text), 1)
712
+ default: V(() => [
713
+ N(f(s.text), 1)
572
714
  ]),
573
715
  _: 2
574
- }, 1032, ["href", "to", "active", "disabled"]))), 128)) : b(i.$slots, "default", { key: 1 })
716
+ }, 1032, ["href", "to", "active", "disabled"]))), 128)) : $(i.$slots, "default", { key: 1 })
575
717
  ]),
576
718
  _: 3
577
719
  }));
578
720
  }
579
- }), E = /* @__PURE__ */ v({
721
+ }), H = /* @__PURE__ */ p({
580
722
  __name: "VibePaginationItem",
581
723
  props: {
582
724
  active: { type: Boolean, default: !1 },
@@ -585,31 +727,31 @@ const Lt = /* @__PURE__ */ v({
585
727
  to: { type: [String, Object], default: void 0 }
586
728
  },
587
729
  emits: ["click", "component-error"],
588
- setup(e, { emit: u }) {
589
- const t = e, i = u, l = f(() => t.href ? "a" : t.to ? "router-link" : "button"), s = (o) => {
590
- t.disabled || i("click", o);
730
+ setup(e, { emit: o }) {
731
+ const t = e, i = o, a = c(() => t.href ? "a" : t.to ? "router-link" : "button"), s = (r) => {
732
+ t.disabled || i("click", r);
591
733
  };
592
- return (o, r) => (a(), n("li", {
593
- class: m(["page-item", { active: e.active, disabled: e.disabled }])
734
+ return (r, d) => (l(), n("li", {
735
+ class: h(["page-item", { active: e.active, disabled: e.disabled }])
594
736
  }, [
595
- (a(), y(V(l.value), {
737
+ (l(), x(T(a.value), {
596
738
  class: "page-link",
597
739
  href: e.href,
598
740
  to: e.to,
599
- type: l.value === "button" ? "button" : void 0,
600
- disabled: e.disabled && l.value === "button",
741
+ type: a.value === "button" ? "button" : void 0,
742
+ disabled: e.disabled && a.value === "button",
601
743
  "aria-current": e.active ? "page" : void 0,
602
744
  "aria-disabled": e.disabled,
603
745
  onClick: s
604
746
  }, {
605
- default: g(() => [
606
- b(o.$slots, "default")
747
+ default: V(() => [
748
+ $(r.$slots, "default")
607
749
  ]),
608
750
  _: 3
609
751
  }, 8, ["href", "to", "type", "disabled", "aria-current", "aria-disabled"]))
610
752
  ], 2));
611
753
  }
612
- }), Se = ["aria-label"], Xt = /* @__PURE__ */ v({
754
+ }), Ce = ["aria-label"], wl = /* @__PURE__ */ p({
613
755
  __name: "VibePagination",
614
756
  props: {
615
757
  size: { type: String, default: void 0 },
@@ -620,53 +762,99 @@ const Lt = /* @__PURE__ */ v({
620
762
  showPrevNext: { type: Boolean, default: !0 }
621
763
  },
622
764
  emits: ["page-click", "component-error"],
623
- setup(e, { emit: u }) {
624
- const t = e, i = u, l = j(), s = f(() => {
625
- const k = ["pagination"];
626
- return t.size && k.push(`pagination-${t.size}`), k.join(" ");
627
- }), o = f(() => t.totalPages ? Array.from({ length: t.totalPages }, (k, B) => B + 1) : []), r = (k) => {
628
- k >= 1 && k <= t.totalPages && i("page-click", k);
765
+ setup(e, { emit: o }) {
766
+ const t = e, i = o, a = X(), s = c(() => {
767
+ const y = ["pagination"];
768
+ return t.size && y.push(`pagination-${t.size}`), y.join(" ");
769
+ }), r = c(() => t.totalPages ? Array.from({ length: t.totalPages }, (y, v) => v + 1) : []), d = (y) => {
770
+ y >= 1 && y <= t.totalPages && i("page-click", y);
629
771
  };
630
- return (k, B) => (a(), n("nav", { "aria-label": e.ariaLabel }, [
631
- d("ul", {
632
- class: m(s.value)
772
+ return (y, v) => (l(), n("nav", { "aria-label": e.ariaLabel }, [
773
+ m("ul", {
774
+ class: h(s.value)
633
775
  }, [
634
- e.totalPages && !_(l).default ? (a(), n(w, { key: 0 }, [
635
- e.showPrevNext ? (a(), y(E, {
776
+ e.totalPages && !L(a).default ? (l(), n(P, { key: 0 }, [
777
+ e.showPrevNext ? (l(), x(H, {
636
778
  key: 0,
637
779
  disabled: e.currentPage === 1,
638
- onClick: B[0] || (B[0] = (P) => r(e.currentPage - 1))
780
+ onClick: v[0] || (v[0] = (b) => d(e.currentPage - 1))
639
781
  }, {
640
- default: g(() => [...B[2] || (B[2] = [
641
- C(" Previous ", -1)
782
+ default: V(() => [...v[2] || (v[2] = [
783
+ N(" Previous ", -1)
642
784
  ])]),
643
785
  _: 1
644
- }, 8, ["disabled"])) : $("", !0),
645
- (a(!0), n(w, null, I(o.value, (P) => (a(), y(E, {
646
- key: P,
647
- active: P === e.currentPage,
648
- onClick: (F) => r(P)
786
+ }, 8, ["disabled"])) : u("", !0),
787
+ (l(!0), n(P, null, I(r.value, (b) => (l(), x(H, {
788
+ key: b,
789
+ active: b === e.currentPage,
790
+ onClick: (g) => d(b)
649
791
  }, {
650
- default: g(() => [
651
- C(S(P), 1)
792
+ default: V(() => [
793
+ N(f(b), 1)
652
794
  ]),
653
795
  _: 2
654
796
  }, 1032, ["active", "onClick"]))), 128)),
655
- e.showPrevNext ? (a(), y(E, {
797
+ e.showPrevNext ? (l(), x(H, {
656
798
  key: 1,
657
799
  disabled: e.currentPage === e.totalPages,
658
- onClick: B[1] || (B[1] = (P) => r(e.currentPage + 1))
800
+ onClick: v[1] || (v[1] = (b) => d(e.currentPage + 1))
659
801
  }, {
660
- default: g(() => [...B[3] || (B[3] = [
661
- C(" Next ", -1)
802
+ default: V(() => [...v[3] || (v[3] = [
803
+ N(" Next ", -1)
662
804
  ])]),
663
805
  _: 1
664
- }, 8, ["disabled"])) : $("", !0)
665
- ], 64)) : b(k.$slots, "default", { key: 1 })
806
+ }, 8, ["disabled"])) : u("", !0)
807
+ ], 64)) : $(y.$slots, "default", { key: 1 })
666
808
  ], 2)
667
- ], 8, Se));
809
+ ], 8, Ce));
810
+ }
811
+ }), Nl = /* @__PURE__ */ p({
812
+ __name: "VibeTabContent",
813
+ props: {
814
+ id: { type: String, default: void 0 },
815
+ tag: { type: String, default: "div" }
816
+ },
817
+ emits: ["component-error"],
818
+ setup(e, { emit: o }) {
819
+ return (t, i) => (l(), x(T(e.tag), {
820
+ id: e.id,
821
+ class: "tab-content"
822
+ }, {
823
+ default: V(() => [
824
+ $(t.$slots, "default")
825
+ ]),
826
+ _: 3
827
+ }, 8, ["id"]));
668
828
  }
669
- }), Be = /* @__PURE__ */ v({
829
+ }), Tl = /* @__PURE__ */ p({
830
+ __name: "VibeTabPane",
831
+ props: {
832
+ id: { type: String, required: !0 },
833
+ active: { type: Boolean, default: !1 },
834
+ fade: { type: Boolean, default: !0 },
835
+ tag: { type: String, default: "div" },
836
+ ariaLabelledby: { type: String, default: void 0 }
837
+ },
838
+ emits: ["component-error"],
839
+ setup(e, { emit: o }) {
840
+ const t = e, i = c(() => {
841
+ const a = ["tab-pane"];
842
+ return t.fade && a.push("fade"), t.active && a.push("show", "active"), a.join(" ");
843
+ });
844
+ return (a, s) => (l(), x(T(e.tag), {
845
+ id: e.id,
846
+ class: h(i.value),
847
+ role: "tabpanel",
848
+ "aria-labelledby": e.ariaLabelledby,
849
+ tabindex: "0"
850
+ }, {
851
+ default: V(() => [
852
+ $(a.$slots, "default")
853
+ ]),
854
+ _: 3
855
+ }, 8, ["id", "class", "aria-labelledby"]));
856
+ }
857
+ }), Be = /* @__PURE__ */ p({
670
858
  __name: "VibeListGroupItem",
671
859
  props: {
672
860
  active: { type: Boolean, default: !1 },
@@ -678,30 +866,30 @@ const Lt = /* @__PURE__ */ v({
678
866
  action: { type: Boolean, default: !1 }
679
867
  },
680
868
  emits: ["click", "component-error"],
681
- setup(e, { emit: u }) {
682
- const t = e, i = u, l = f(() => t.href ? "a" : t.to ? "router-link" : t.action ? "button" : t.tag), s = f(() => {
683
- const r = ["list-group-item"];
684
- return t.active && r.push("active"), t.disabled && r.push("disabled"), t.variant && r.push(`list-group-item-${t.variant}`), (t.action || t.href || t.to) && r.push("list-group-item-action"), r.join(" ");
685
- }), o = (r) => {
686
- t.disabled || i("click", r);
869
+ setup(e, { emit: o }) {
870
+ const t = e, i = o, a = c(() => t.href ? "a" : t.to ? "router-link" : t.action ? "button" : t.tag), s = c(() => {
871
+ const d = ["list-group-item"];
872
+ return t.active && d.push("active"), t.disabled && d.push("disabled"), t.variant && d.push(`list-group-item-${t.variant}`), (t.action || t.href || t.to) && d.push("list-group-item-action"), d.join(" ");
873
+ }), r = (d) => {
874
+ t.disabled || i("click", d);
687
875
  };
688
- return (r, k) => (a(), y(V(l.value), {
689
- class: m(s.value),
876
+ return (d, y) => (l(), x(T(a.value), {
877
+ class: h(s.value),
690
878
  href: e.href,
691
879
  to: e.to,
692
- type: l.value === "button" ? "button" : void 0,
880
+ type: a.value === "button" ? "button" : void 0,
693
881
  disabled: e.disabled,
694
882
  "aria-disabled": e.disabled,
695
883
  "aria-current": e.active ? "true" : void 0,
696
- onClick: o
884
+ onClick: r
697
885
  }, {
698
- default: g(() => [
699
- b(r.$slots, "default")
886
+ default: V(() => [
887
+ $(d.$slots, "default")
700
888
  ]),
701
889
  _: 3
702
890
  }, 8, ["class", "href", "to", "type", "disabled", "aria-disabled", "aria-current"]));
703
891
  }
704
- }), Yt = /* @__PURE__ */ v({
892
+ }), Ml = /* @__PURE__ */ p({
705
893
  __name: "VibeListGroup",
706
894
  props: {
707
895
  flush: { type: Boolean, default: !1 },
@@ -711,51 +899,51 @@ const Lt = /* @__PURE__ */ v({
711
899
  items: { type: Array, default: void 0 }
712
900
  },
713
901
  emits: ["component-error"],
714
- setup(e, { emit: u }) {
715
- const t = e, i = j(), l = f(() => {
902
+ setup(e, { emit: o }) {
903
+ const t = e, i = X(), a = c(() => {
716
904
  const s = ["list-group"];
717
905
  return t.flush && s.push("list-group-flush"), t.numbered && s.push("list-group-numbered"), t.horizontal === !0 ? s.push("list-group-horizontal") : typeof t.horizontal == "string" && s.push(`list-group-horizontal-${t.horizontal}`), s.join(" ");
718
906
  });
719
- return (s, o) => (a(), y(V(e.tag), {
720
- class: m(l.value)
907
+ return (s, r) => (l(), x(T(e.tag), {
908
+ class: h(a.value)
721
909
  }, {
722
- default: g(() => [
723
- e.items && e.items.length > 0 && !_(i).default ? (a(!0), n(w, { key: 0 }, I(e.items, (r, k) => (a(), y(Be, {
724
- key: k,
725
- href: r.href,
726
- to: r.to,
727
- active: r.active,
728
- disabled: r.disabled,
729
- variant: r.variant
910
+ default: V(() => [
911
+ e.items && e.items.length > 0 && !L(i).default ? (l(!0), n(P, { key: 0 }, I(e.items, (d, y) => (l(), x(Be, {
912
+ key: y,
913
+ href: d.href,
914
+ to: d.to,
915
+ active: d.active,
916
+ disabled: d.disabled,
917
+ variant: d.variant
730
918
  }, {
731
- default: g(() => [
732
- C(S(r.text), 1)
919
+ default: V(() => [
920
+ N(f(d.text), 1)
733
921
  ]),
734
922
  _: 2
735
- }, 1032, ["href", "to", "active", "disabled", "variant"]))), 128)) : b(s.$slots, "default", { key: 1 })
923
+ }, 1032, ["href", "to", "active", "disabled", "variant"]))), 128)) : $(s.$slots, "default", { key: 1 })
736
924
  ]),
737
925
  _: 3
738
926
  }, 8, ["class"]));
739
927
  }
740
- }), Zt = /* @__PURE__ */ v({
928
+ }), ql = /* @__PURE__ */ p({
741
929
  __name: "VibeProgress",
742
930
  props: {
743
931
  height: { type: String, default: void 0 }
744
932
  },
745
933
  emits: ["component-error"],
746
- setup(e, { emit: u }) {
747
- const t = e, i = f(() => {
934
+ setup(e, { emit: o }) {
935
+ const t = e, i = c(() => {
748
936
  if (t.height)
749
937
  return { height: t.height };
750
938
  });
751
- return (l, s) => (a(), n("div", {
939
+ return (a, s) => (l(), n("div", {
752
940
  class: "progress",
753
- style: M(i.value)
941
+ style: R(i.value)
754
942
  }, [
755
- b(l.$slots, "default")
943
+ $(a.$slots, "default")
756
944
  ], 4));
757
945
  }
758
- }), Ve = ["aria-valuenow", "aria-valuemax"], ea = /* @__PURE__ */ v({
946
+ }), we = ["aria-valuenow", "aria-valuemax"], Pl = /* @__PURE__ */ p({
759
947
  __name: "VibeProgressBar",
760
948
  props: {
761
949
  value: { type: Number, default: 0 },
@@ -767,24 +955,24 @@ const Lt = /* @__PURE__ */ v({
767
955
  showValue: { type: Boolean, default: !1 }
768
956
  },
769
957
  emits: ["component-error"],
770
- setup(e, { emit: u }) {
771
- const t = e, i = f(() => {
772
- const o = ["progress-bar"];
773
- return t.variant && o.push(`bg-${t.variant}`), (t.striped || t.animated) && o.push("progress-bar-striped"), t.animated && o.push("progress-bar-animated"), o.join(" ");
774
- }), l = f(() => ({ width: `${Math.min(100, Math.max(0, t.value / t.max * 100))}%` })), s = f(() => t.label ? t.label : t.showValue ? `${t.value}%` : "");
775
- return (o, r) => (a(), n("div", {
776
- class: m(i.value),
777
- style: M(l.value),
958
+ setup(e, { emit: o }) {
959
+ const t = e, i = c(() => {
960
+ const r = ["progress-bar"];
961
+ return t.variant && r.push(`bg-${t.variant}`), (t.striped || t.animated) && r.push("progress-bar-striped"), t.animated && r.push("progress-bar-animated"), r.join(" ");
962
+ }), a = c(() => ({ width: `${Math.min(100, Math.max(0, t.value / t.max * 100))}%` })), s = c(() => t.label ? t.label : t.showValue ? `${t.value}%` : "");
963
+ return (r, d) => (l(), n("div", {
964
+ class: h(i.value),
965
+ style: R(a.value),
778
966
  role: "progressbar",
779
967
  "aria-valuenow": e.value,
780
968
  "aria-valuemin": 0,
781
969
  "aria-valuemax": e.max
782
970
  }, [
783
- C(S(s.value) + " ", 1),
784
- b(o.$slots, "default")
785
- ], 14, Ve));
971
+ N(f(s.value) + " ", 1),
972
+ $(r.$slots, "default")
973
+ ], 14, we));
786
974
  }
787
- }), Ce = { class: "accordion-item" }, we = { class: "accordion-header" }, Pe = ["data-bs-target", "aria-expanded", "aria-controls"], xe = ["id", "data-bs-parent"], Ie = { class: "accordion-body" }, Ne = /* @__PURE__ */ v({
975
+ }), Ne = { class: "accordion-item" }, Te = { class: "accordion-header" }, Me = ["data-bs-target", "aria-expanded", "aria-controls"], qe = ["id", "data-bs-parent"], Pe = { class: "accordion-body" }, ze = /* @__PURE__ */ p({
788
976
  __name: "VibeAccordionItem",
789
977
  props: {
790
978
  id: { type: String, required: !0 },
@@ -793,31 +981,31 @@ const Lt = /* @__PURE__ */ v({
793
981
  show: { type: Boolean, default: !1 }
794
982
  },
795
983
  emits: ["component-error"],
796
- setup(e, { emit: u }) {
797
- const t = e, i = f(() => t.show ? "accordion-collapse collapse show" : "accordion-collapse collapse");
798
- return (l, s) => (a(), n("div", Ce, [
799
- d("h2", we, [
800
- d("button", {
801
- class: m(["accordion-button", { collapsed: !e.show }]),
984
+ setup(e, { emit: o }) {
985
+ const t = e, i = c(() => t.show ? "accordion-collapse collapse show" : "accordion-collapse collapse");
986
+ return (a, s) => (l(), n("div", Ne, [
987
+ m("h2", Te, [
988
+ m("button", {
989
+ class: h(["accordion-button", { collapsed: !e.show }]),
802
990
  type: "button",
803
991
  "data-bs-toggle": "collapse",
804
992
  "data-bs-target": `#${e.id}`,
805
993
  "aria-expanded": e.show,
806
994
  "aria-controls": e.id
807
- }, S(e.title), 11, Pe)
995
+ }, f(e.title), 11, Me)
808
996
  ]),
809
- d("div", {
997
+ m("div", {
810
998
  id: e.id,
811
- class: m(i.value),
999
+ class: h(i.value),
812
1000
  "data-bs-parent": `#${e.parentId}`
813
1001
  }, [
814
- d("div", Ie, [
815
- b(l.$slots, "default")
1002
+ m("div", Pe, [
1003
+ $(a.$slots, "default")
816
1004
  ])
817
- ], 10, xe)
1005
+ ], 10, qe)
818
1006
  ]));
819
1007
  }
820
- }), _e = ["id"], ta = /* @__PURE__ */ v({
1008
+ }), Ie = ["id"], zl = /* @__PURE__ */ p({
821
1009
  __name: "VibeAccordion",
822
1010
  props: {
823
1011
  id: { type: String, required: !0 },
@@ -825,27 +1013,27 @@ const Lt = /* @__PURE__ */ v({
825
1013
  items: { type: Array, default: void 0 }
826
1014
  },
827
1015
  emits: ["component-error"],
828
- setup(e, { emit: u }) {
829
- const t = j();
830
- return (i, l) => (a(), n("div", {
1016
+ setup(e, { emit: o }) {
1017
+ const t = X();
1018
+ return (i, a) => (l(), n("div", {
831
1019
  id: e.id,
832
- class: m(["accordion", { "accordion-flush": e.flush }])
1020
+ class: h(["accordion", { "accordion-flush": e.flush }])
833
1021
  }, [
834
- e.items && e.items.length > 0 && !_(t).default ? (a(!0), n(w, { key: 0 }, I(e.items, (s, o) => (a(), y(Ne, {
835
- key: o,
1022
+ e.items && e.items.length > 0 && !L(t).default ? (l(!0), n(P, { key: 0 }, I(e.items, (s, r) => (l(), x(ze, {
1023
+ key: r,
836
1024
  id: s.id,
837
1025
  "parent-id": e.id,
838
1026
  title: s.title,
839
1027
  show: s.show
840
1028
  }, {
841
- default: g(() => [
842
- C(S(s.content), 1)
1029
+ default: V(() => [
1030
+ N(f(s.content), 1)
843
1031
  ]),
844
1032
  _: 2
845
- }, 1032, ["id", "parent-id", "title", "show"]))), 128)) : b(i.$slots, "default", { key: 1 })
846
- ], 10, _e));
1033
+ }, 1032, ["id", "parent-id", "title", "show"]))), 128)) : $(i.$slots, "default", { key: 1 })
1034
+ ], 10, Ie));
847
1035
  }
848
- }), aa = /* @__PURE__ */ v({
1036
+ }), Il = /* @__PURE__ */ p({
849
1037
  __name: "VibeCollapse",
850
1038
  props: {
851
1039
  id: { type: String, required: !0 },
@@ -854,26 +1042,26 @@ const Lt = /* @__PURE__ */ v({
854
1042
  horizontal: { type: Boolean, default: !1 }
855
1043
  },
856
1044
  emits: ["update:modelValue", "show", "shown", "hide", "hidden", "component-error"],
857
- setup(e, { emit: u }) {
858
- const t = e, i = T(t.modelValue);
859
- D(() => t.modelValue, (s) => {
1045
+ setup(e, { emit: o }) {
1046
+ const t = e, i = z(t.modelValue);
1047
+ O(() => t.modelValue, (s) => {
860
1048
  i.value = s;
861
1049
  });
862
- const l = f(() => {
1050
+ const a = c(() => {
863
1051
  const s = ["collapse"];
864
1052
  return t.horizontal && s.push("collapse-horizontal"), i.value && s.push("show"), s.join(" ");
865
1053
  });
866
- return (s, o) => (a(), y(V(e.tag), {
1054
+ return (s, r) => (l(), x(T(e.tag), {
867
1055
  id: e.id,
868
- class: m(l.value)
1056
+ class: h(a.value)
869
1057
  }, {
870
- default: g(() => [
871
- b(s.$slots, "default")
1058
+ default: V(() => [
1059
+ $(s.$slots, "default")
872
1060
  ]),
873
1061
  _: 3
874
1062
  }, 8, ["id", "class"]));
875
1063
  }
876
- }), je = { key: 0 }, ze = /* @__PURE__ */ v({
1064
+ }), Fe = { key: 0 }, je = /* @__PURE__ */ p({
877
1065
  __name: "VibeDropdownItem",
878
1066
  props: {
879
1067
  active: { type: Boolean, default: !1 },
@@ -884,40 +1072,40 @@ const Lt = /* @__PURE__ */ v({
884
1072
  header: { type: Boolean, default: !1 }
885
1073
  },
886
1074
  emits: ["click", "component-error"],
887
- setup(e, { emit: u }) {
888
- const t = e, i = u, l = f(() => t.divider ? "hr" : t.header ? "h6" : t.href ? "a" : t.to ? "router-link" : "button"), s = f(() => {
1075
+ setup(e, { emit: o }) {
1076
+ const t = e, i = o, a = c(() => t.divider ? "hr" : t.header ? "h6" : t.href ? "a" : t.to ? "router-link" : "button"), s = c(() => {
889
1077
  if (t.divider) return "dropdown-divider";
890
1078
  if (t.header) return "dropdown-header";
891
- const r = ["dropdown-item"];
892
- return t.active && r.push("active"), t.disabled && r.push("disabled"), r.join(" ");
893
- }), o = (r) => {
894
- !t.disabled && !t.divider && !t.header && i("click", r);
1079
+ const d = ["dropdown-item"];
1080
+ return t.active && d.push("active"), t.disabled && d.push("disabled"), d.join(" ");
1081
+ }), r = (d) => {
1082
+ !t.disabled && !t.divider && !t.header && i("click", d);
895
1083
  };
896
- return (r, k) => !e.divider && !e.header ? (a(), n("li", je, [
897
- (a(), y(V(l.value), {
898
- class: m(s.value),
1084
+ return (d, y) => !e.divider && !e.header ? (l(), n("li", Fe, [
1085
+ (l(), x(T(a.value), {
1086
+ class: h(s.value),
899
1087
  href: e.href,
900
1088
  to: e.to,
901
- type: l.value === "button" ? "button" : void 0,
1089
+ type: a.value === "button" ? "button" : void 0,
902
1090
  disabled: e.disabled,
903
- onClick: o
1091
+ onClick: r
904
1092
  }, {
905
- default: g(() => [
906
- b(r.$slots, "default")
1093
+ default: V(() => [
1094
+ $(d.$slots, "default")
907
1095
  ]),
908
1096
  _: 3
909
1097
  }, 8, ["class", "href", "to", "type", "disabled"]))
910
- ])) : (a(), y(V(l.value), {
1098
+ ])) : (l(), x(T(a.value), {
911
1099
  key: 1,
912
- class: m(s.value)
1100
+ class: h(s.value)
913
1101
  }, {
914
- default: g(() => [
915
- b(r.$slots, "default")
1102
+ default: V(() => [
1103
+ $(d.$slots, "default")
916
1104
  ]),
917
1105
  _: 3
918
1106
  }, 8, ["class"]));
919
1107
  }
920
- }), Te = ["id"], Ae = ["aria-labelledby"], sa = /* @__PURE__ */ v({
1108
+ }), Ae = ["id"], Le = ["aria-labelledby"], Fl = /* @__PURE__ */ p({
921
1109
  __name: "VibeDropdown",
922
1110
  props: {
923
1111
  id: { type: String, required: !0 },
@@ -930,52 +1118,52 @@ const Lt = /* @__PURE__ */ v({
930
1118
  items: { type: Array, default: void 0 }
931
1119
  },
932
1120
  emits: ["component-error"],
933
- setup(e, { emit: u }) {
934
- const t = e, i = j(), l = f(() => t.direction === "up" ? "dropup" : t.direction === "end" ? "dropend" : t.direction === "start" ? "dropstart" : "dropdown"), s = f(() => {
935
- const r = ["btn", `btn-${t.variant}`];
936
- return t.size && r.push(`btn-${t.size}`), r.join(" ");
937
- }), o = f(() => {
938
- const r = ["dropdown-menu"];
939
- return t.menuEnd && r.push("dropdown-menu-end"), r.join(" ");
1121
+ setup(e, { emit: o }) {
1122
+ const t = e, i = X(), a = c(() => t.direction === "up" ? "dropup" : t.direction === "end" ? "dropend" : t.direction === "start" ? "dropstart" : "dropdown"), s = c(() => {
1123
+ const d = ["btn", `btn-${t.variant}`];
1124
+ return t.size && d.push(`btn-${t.size}`), d.join(" ");
1125
+ }), r = c(() => {
1126
+ const d = ["dropdown-menu"];
1127
+ return t.menuEnd && d.push("dropdown-menu-end"), d.join(" ");
940
1128
  });
941
- return (r, k) => (a(), n("div", {
942
- class: m(l.value)
1129
+ return (d, y) => (l(), n("div", {
1130
+ class: h(a.value)
943
1131
  }, [
944
- d("button", {
1132
+ m("button", {
945
1133
  id: e.id,
946
- class: m([s.value, "dropdown-toggle"]),
1134
+ class: h([s.value, "dropdown-toggle"]),
947
1135
  type: "button",
948
1136
  "data-bs-toggle": "dropdown",
949
1137
  "aria-expanded": "false"
950
- }, S(e.text), 11, Te),
951
- d("ul", {
952
- class: m(o.value),
1138
+ }, f(e.text), 11, Ae),
1139
+ m("ul", {
1140
+ class: h(r.value),
953
1141
  "aria-labelledby": e.id
954
1142
  }, [
955
- e.items && e.items.length > 0 && !_(i).default ? (a(!0), n(w, { key: 0 }, I(e.items, (B, P) => (a(), y(ze, {
956
- key: P,
957
- href: B.href,
958
- to: B.to,
959
- active: B.active,
960
- disabled: B.disabled,
961
- divider: B.divider,
962
- header: B.header
1143
+ e.items && e.items.length > 0 && !L(i).default ? (l(!0), n(P, { key: 0 }, I(e.items, (v, b) => (l(), x(je, {
1144
+ key: b,
1145
+ href: v.href,
1146
+ to: v.to,
1147
+ active: v.active,
1148
+ disabled: v.disabled,
1149
+ divider: v.divider,
1150
+ header: v.header
963
1151
  }, {
964
- default: g(() => [
965
- C(S(B.text), 1)
1152
+ default: V(() => [
1153
+ N(f(v.text), 1)
966
1154
  ]),
967
1155
  _: 2
968
- }, 1032, ["href", "to", "active", "disabled", "divider", "header"]))), 128)) : b(r.$slots, "default", { key: 1 })
969
- ], 10, Ae)
1156
+ }, 1032, ["href", "to", "active", "disabled", "divider", "header"]))), 128)) : $(d.$slots, "default", { key: 1 })
1157
+ ], 10, Le)
970
1158
  ], 2));
971
1159
  }
972
- }), De = ["id", "aria-labelledby", "data-bs-backdrop", "data-bs-keyboard"], Le = { class: "modal-content" }, qe = {
1160
+ }), Oe = ["id", "aria-labelledby", "data-bs-backdrop", "data-bs-keyboard"], Xe = { class: "modal-content" }, De = {
973
1161
  key: 0,
974
1162
  class: "modal-header"
975
- }, Oe = ["id"], Me = { class: "modal-body" }, Fe = {
1163
+ }, Re = ["id"], Ee = { class: "modal-body" }, Ye = {
976
1164
  key: 1,
977
1165
  class: "modal-footer"
978
- }, la = /* @__PURE__ */ v({
1166
+ }, jl = /* @__PURE__ */ p({
979
1167
  __name: "VibeModal",
980
1168
  props: {
981
1169
  id: { type: String, required: !0 },
@@ -990,12 +1178,12 @@ const Lt = /* @__PURE__ */ v({
990
1178
  hideFooter: { type: Boolean, default: !1 }
991
1179
  },
992
1180
  emits: ["update:modelValue", "show", "shown", "hide", "hidden", "component-error"],
993
- setup(e, { emit: u }) {
994
- const t = e, i = f(() => {
995
- const l = ["modal-dialog"];
996
- return t.size && l.push(`modal-${t.size}`), t.centered && l.push("modal-dialog-centered"), t.scrollable && l.push("modal-dialog-scrollable"), t.fullscreen === !0 ? l.push("modal-fullscreen") : typeof t.fullscreen == "string" && l.push(`modal-fullscreen-${t.fullscreen}-down`), l.join(" ");
1181
+ setup(e, { emit: o }) {
1182
+ const t = e, i = c(() => {
1183
+ const a = ["modal-dialog"];
1184
+ return t.size && a.push(`modal-${t.size}`), t.centered && a.push("modal-dialog-centered"), t.scrollable && a.push("modal-dialog-scrollable"), t.fullscreen === !0 ? a.push("modal-fullscreen") : typeof t.fullscreen == "string" && a.push(`modal-fullscreen-${t.fullscreen}-down`), a.join(" ");
997
1185
  });
998
- return (l, s) => (a(), n("div", {
1186
+ return (a, s) => (l(), n("div", {
999
1187
  id: e.id,
1000
1188
  class: "modal fade",
1001
1189
  tabindex: "-1",
@@ -1004,32 +1192,32 @@ const Lt = /* @__PURE__ */ v({
1004
1192
  "data-bs-backdrop": e.staticBackdrop ? "static" : void 0,
1005
1193
  "data-bs-keyboard": !e.staticBackdrop
1006
1194
  }, [
1007
- d("div", {
1008
- class: m(i.value)
1195
+ m("div", {
1196
+ class: h(i.value)
1009
1197
  }, [
1010
- d("div", Le, [
1011
- e.hideHeader ? $("", !0) : (a(), n("div", qe, [
1012
- d("h5", {
1198
+ m("div", Xe, [
1199
+ e.hideHeader ? u("", !0) : (l(), n("div", De, [
1200
+ m("h5", {
1013
1201
  id: `${e.id}-label`,
1014
1202
  class: "modal-title"
1015
1203
  }, [
1016
- b(l.$slots, "header", {}, () => [
1017
- C(S(e.title), 1)
1204
+ $(a.$slots, "header", {}, () => [
1205
+ N(f(e.title), 1)
1018
1206
  ])
1019
- ], 8, Oe),
1020
- s[0] || (s[0] = d("button", {
1207
+ ], 8, Re),
1208
+ s[0] || (s[0] = m("button", {
1021
1209
  type: "button",
1022
1210
  class: "btn-close",
1023
1211
  "data-bs-dismiss": "modal",
1024
1212
  "aria-label": "Close"
1025
1213
  }, null, -1))
1026
1214
  ])),
1027
- d("div", Me, [
1028
- b(l.$slots, "default")
1215
+ m("div", Ee, [
1216
+ $(a.$slots, "default")
1029
1217
  ]),
1030
- e.hideFooter ? $("", !0) : (a(), n("div", Fe, [
1031
- b(l.$slots, "footer", {}, () => [
1032
- s[1] || (s[1] = d("button", {
1218
+ e.hideFooter ? u("", !0) : (l(), n("div", Ye, [
1219
+ $(a.$slots, "footer", {}, () => [
1220
+ s[1] || (s[1] = m("button", {
1033
1221
  type: "button",
1034
1222
  class: "btn btn-secondary",
1035
1223
  "data-bs-dismiss": "modal"
@@ -1038,9 +1226,9 @@ const Lt = /* @__PURE__ */ v({
1038
1226
  ]))
1039
1227
  ])
1040
1228
  ], 2)
1041
- ], 8, De));
1229
+ ], 8, Oe));
1042
1230
  }
1043
- }), Ee = ["id", "aria-labelledby", "data-bs-backdrop", "data-bs-scroll"], Ge = { class: "offcanvas-header" }, Re = ["id"], He = { class: "offcanvas-body" }, ra = /* @__PURE__ */ v({
1231
+ }), Ge = ["id", "aria-labelledby", "data-bs-backdrop", "data-bs-scroll"], He = { class: "offcanvas-header" }, Ue = ["id"], Qe = { class: "offcanvas-body" }, Al = /* @__PURE__ */ p({
1044
1232
  __name: "VibeOffcanvas",
1045
1233
  props: {
1046
1234
  id: { type: String, required: !0 },
@@ -1051,41 +1239,41 @@ const Lt = /* @__PURE__ */ v({
1051
1239
  scroll: { type: Boolean, default: !1 }
1052
1240
  },
1053
1241
  emits: ["update:modelValue", "show", "shown", "hide", "hidden", "component-error"],
1054
- setup(e, { emit: u }) {
1055
- const t = e, i = f(() => `offcanvas offcanvas-${t.placement}`);
1056
- return (l, s) => (a(), n("div", {
1242
+ setup(e, { emit: o }) {
1243
+ const t = e, i = c(() => `offcanvas offcanvas-${t.placement}`);
1244
+ return (a, s) => (l(), n("div", {
1057
1245
  id: e.id,
1058
- class: m(i.value),
1246
+ class: h(i.value),
1059
1247
  tabindex: "-1",
1060
1248
  "aria-labelledby": `${e.id}-label`,
1061
1249
  "data-bs-backdrop": e.backdrop === !1 ? "false" : e.backdrop === "static" ? "static" : "true",
1062
1250
  "data-bs-scroll": e.scroll
1063
1251
  }, [
1064
- d("div", Ge, [
1065
- d("h5", {
1252
+ m("div", He, [
1253
+ m("h5", {
1066
1254
  id: `${e.id}-label`,
1067
1255
  class: "offcanvas-title"
1068
1256
  }, [
1069
- b(l.$slots, "header", {}, () => [
1070
- C(S(e.title), 1)
1257
+ $(a.$slots, "header", {}, () => [
1258
+ N(f(e.title), 1)
1071
1259
  ])
1072
- ], 8, Re),
1073
- s[0] || (s[0] = d("button", {
1260
+ ], 8, Ue),
1261
+ s[0] || (s[0] = m("button", {
1074
1262
  type: "button",
1075
1263
  class: "btn-close",
1076
1264
  "data-bs-dismiss": "offcanvas",
1077
1265
  "aria-label": "Close"
1078
1266
  }, null, -1))
1079
1267
  ]),
1080
- d("div", He, [
1081
- b(l.$slots, "default")
1268
+ m("div", Qe, [
1269
+ $(a.$slots, "default")
1082
1270
  ])
1083
- ], 10, Ee));
1271
+ ], 10, Ge));
1084
1272
  }
1085
- }), Qe = ["id", "data-bs-autohide", "data-bs-delay"], Ue = {
1273
+ }), Ke = ["id", "data-bs-autohide", "data-bs-delay"], We = {
1086
1274
  key: 0,
1087
1275
  class: "toast-header"
1088
- }, Ke = { class: "me-auto" }, Je = { class: "toast-body" }, ia = /* @__PURE__ */ v({
1276
+ }, Je = { class: "me-auto" }, Ze = { class: "toast-body" }, Ll = /* @__PURE__ */ p({
1089
1277
  __name: "VibeToast",
1090
1278
  props: {
1091
1279
  id: { type: String, default: void 0 },
@@ -1096,40 +1284,40 @@ const Lt = /* @__PURE__ */ v({
1096
1284
  delay: { type: Number, default: 5e3 }
1097
1285
  },
1098
1286
  emits: ["update:modelValue", "show", "shown", "hide", "hidden", "component-error"],
1099
- setup(e, { emit: u }) {
1100
- const t = e, i = f(() => {
1101
- const l = ["toast"];
1102
- return t.variant && l.push(`text-bg-${t.variant}`), l.join(" ");
1287
+ setup(e, { emit: o }) {
1288
+ const t = e, i = c(() => {
1289
+ const a = ["toast"];
1290
+ return t.variant && a.push(`text-bg-${t.variant}`), a.join(" ");
1103
1291
  });
1104
- return (l, s) => (a(), n("div", {
1292
+ return (a, s) => (l(), n("div", {
1105
1293
  id: e.id,
1106
- class: m(i.value),
1294
+ class: h(i.value),
1107
1295
  role: "alert",
1108
1296
  "aria-live": "assertive",
1109
1297
  "aria-atomic": "true",
1110
1298
  "data-bs-autohide": e.autohide,
1111
1299
  "data-bs-delay": e.delay
1112
1300
  }, [
1113
- e.title || l.$slots.header ? (a(), n("div", Ue, [
1114
- b(l.$slots, "header", {}, () => [
1115
- d("strong", Ke, S(e.title), 1)
1301
+ e.title || a.$slots.header ? (l(), n("div", We, [
1302
+ $(a.$slots, "header", {}, () => [
1303
+ m("strong", Je, f(e.title), 1)
1116
1304
  ]),
1117
- s[0] || (s[0] = d("button", {
1305
+ s[0] || (s[0] = m("button", {
1118
1306
  type: "button",
1119
1307
  class: "btn-close",
1120
1308
  "data-bs-dismiss": "toast",
1121
1309
  "aria-label": "Close"
1122
1310
  }, null, -1))
1123
- ])) : $("", !0),
1124
- d("div", Je, [
1125
- b(l.$slots, "default")
1311
+ ])) : u("", !0),
1312
+ m("div", Ze, [
1313
+ $(a.$slots, "default")
1126
1314
  ])
1127
- ], 10, Qe));
1315
+ ], 10, Ke));
1128
1316
  }
1129
- }), We = ["data-bs-interval"], Xe = ["src", "alt"], Ye = {
1317
+ }), _e = ["data-bs-interval"], et = ["src", "alt"], tt = {
1130
1318
  key: 1,
1131
1319
  class: "carousel-caption d-none d-md-block"
1132
- }, Ze = { key: 0 }, et = { key: 1 }, tt = /* @__PURE__ */ v({
1320
+ }, at = { key: 0 }, lt = { key: 1 }, it = /* @__PURE__ */ p({
1133
1321
  __name: "VibeCarouselSlide",
1134
1322
  props: {
1135
1323
  active: { type: Boolean, default: !1 },
@@ -1140,34 +1328,34 @@ const Lt = /* @__PURE__ */ v({
1140
1328
  captionText: { type: String, default: void 0 }
1141
1329
  },
1142
1330
  emits: ["component-error"],
1143
- setup(e, { emit: u }) {
1144
- return (t, i) => (a(), n("div", {
1145
- class: m(["carousel-item", { active: e.active }]),
1331
+ setup(e, { emit: o }) {
1332
+ return (t, i) => (l(), n("div", {
1333
+ class: h(["carousel-item", { active: e.active }]),
1146
1334
  "data-bs-interval": e.interval
1147
1335
  }, [
1148
- e.imgSrc ? (a(), n("img", {
1336
+ e.imgSrc ? (l(), n("img", {
1149
1337
  key: 0,
1150
1338
  src: e.imgSrc,
1151
1339
  class: "d-block w-100",
1152
1340
  alt: e.imgAlt
1153
- }, null, 8, Xe)) : $("", !0),
1154
- b(t.$slots, "img"),
1155
- e.caption || e.captionText || t.$slots.caption ? (a(), n("div", Ye, [
1156
- b(t.$slots, "caption", {}, () => [
1157
- e.caption ? (a(), n("h5", Ze, S(e.caption), 1)) : $("", !0),
1158
- e.captionText ? (a(), n("p", et, S(e.captionText), 1)) : $("", !0)
1341
+ }, null, 8, et)) : u("", !0),
1342
+ $(t.$slots, "img"),
1343
+ e.caption || e.captionText || t.$slots.caption ? (l(), n("div", tt, [
1344
+ $(t.$slots, "caption", {}, () => [
1345
+ e.caption ? (l(), n("h5", at, f(e.caption), 1)) : u("", !0),
1346
+ e.captionText ? (l(), n("p", lt, f(e.captionText), 1)) : u("", !0)
1159
1347
  ])
1160
- ])) : $("", !0),
1161
- b(t.$slots, "default")
1162
- ], 10, We));
1348
+ ])) : u("", !0),
1349
+ $(t.$slots, "default")
1350
+ ], 10, _e));
1163
1351
  }
1164
- }), at = ["id", "data-bs-ride", "data-bs-interval", "data-bs-keyboard", "data-bs-pause", "data-bs-wrap", "data-bs-touch"], st = {
1352
+ }), st = ["id", "data-bs-ride", "data-bs-interval", "data-bs-keyboard", "data-bs-pause", "data-bs-wrap", "data-bs-touch"], nt = {
1165
1353
  key: 0,
1166
1354
  class: "carousel-indicators"
1167
- }, lt = ["data-bs-target", "data-bs-slide-to", "aria-current", "aria-label"], rt = { class: "carousel-inner" }, it = {
1355
+ }, dt = ["data-bs-target", "data-bs-slide-to", "aria-current", "aria-label"], ot = { class: "carousel-inner" }, rt = {
1168
1356
  key: 0,
1169
1357
  class: "carousel-indicators"
1170
- }, nt = { class: "carousel-inner" }, ot = ["data-bs-target"], dt = ["data-bs-target"], na = /* @__PURE__ */ v({
1358
+ }, ut = { class: "carousel-inner" }, ct = ["data-bs-target"], ft = ["data-bs-target"], Ol = /* @__PURE__ */ p({
1171
1359
  __name: "VibeCarousel",
1172
1360
  props: {
1173
1361
  id: { type: String, required: !0 },
@@ -1184,11 +1372,11 @@ const Lt = /* @__PURE__ */ v({
1184
1372
  items: { type: Array, default: void 0 }
1185
1373
  },
1186
1374
  emits: ["slide", "slid", "component-error"],
1187
- setup(e, { emit: u }) {
1188
- const t = j();
1189
- return (i, l) => (a(), n("div", {
1375
+ setup(e, { emit: o }) {
1376
+ const t = X();
1377
+ return (i, a) => (l(), n("div", {
1190
1378
  id: e.id,
1191
- class: m(["carousel", "slide", { "carousel-dark": e.dark, "carousel-fade": e.fade }]),
1379
+ class: h(["carousel", "slide", { "carousel-dark": e.dark, "carousel-fade": e.fade }]),
1192
1380
  "data-bs-ride": e.ride === !0 ? "carousel" : e.ride,
1193
1381
  "data-bs-interval": e.interval,
1194
1382
  "data-bs-keyboard": e.keyboard,
@@ -1196,22 +1384,22 @@ const Lt = /* @__PURE__ */ v({
1196
1384
  "data-bs-wrap": e.wrap,
1197
1385
  "data-bs-touch": e.touch
1198
1386
  }, [
1199
- e.items && e.items.length > 0 && !_(t).default ? (a(), n(w, { key: 0 }, [
1200
- e.indicators ? (a(), n("div", st, [
1201
- (a(!0), n(w, null, I(e.items, (s, o) => (a(), n("button", {
1202
- key: `indicator-${o}`,
1387
+ e.items && e.items.length > 0 && !L(t).default ? (l(), n(P, { key: 0 }, [
1388
+ e.indicators ? (l(), n("div", nt, [
1389
+ (l(!0), n(P, null, I(e.items, (s, r) => (l(), n("button", {
1390
+ key: `indicator-${r}`,
1203
1391
  type: "button",
1204
1392
  "data-bs-target": `#${e.id}`,
1205
- "data-bs-slide-to": o,
1206
- class: m({ active: s.active || o === 0 }),
1207
- "aria-current": s.active || o === 0,
1208
- "aria-label": `Slide ${o + 1}`
1209
- }, null, 10, lt))), 128))
1210
- ])) : $("", !0),
1211
- d("div", rt, [
1212
- (a(!0), n(w, null, I(e.items, (s, o) => (a(), y(tt, {
1213
- key: o,
1214
- active: s.active || o === 0,
1393
+ "data-bs-slide-to": r,
1394
+ class: h({ active: s.active || r === 0 }),
1395
+ "aria-current": s.active || r === 0,
1396
+ "aria-label": `Slide ${r + 1}`
1397
+ }, null, 10, dt))), 128))
1398
+ ])) : u("", !0),
1399
+ m("div", ot, [
1400
+ (l(!0), n(P, null, I(e.items, (s, r) => (l(), x(it, {
1401
+ key: r,
1402
+ active: s.active || r === 0,
1215
1403
  interval: s.interval,
1216
1404
  "img-src": s.src,
1217
1405
  "img-alt": s.alt,
@@ -1219,43 +1407,43 @@ const Lt = /* @__PURE__ */ v({
1219
1407
  "caption-text": s.captionText
1220
1408
  }, null, 8, ["active", "interval", "img-src", "img-alt", "caption", "caption-text"]))), 128))
1221
1409
  ])
1222
- ], 64)) : (a(), n(w, { key: 1 }, [
1223
- e.indicators ? (a(), n("div", it, [
1224
- b(i.$slots, "indicators")
1225
- ])) : $("", !0),
1226
- d("div", nt, [
1227
- b(i.$slots, "default")
1410
+ ], 64)) : (l(), n(P, { key: 1 }, [
1411
+ e.indicators ? (l(), n("div", rt, [
1412
+ $(i.$slots, "indicators")
1413
+ ])) : u("", !0),
1414
+ m("div", ut, [
1415
+ $(i.$slots, "default")
1228
1416
  ])
1229
1417
  ], 64)),
1230
- e.controls ? (a(), n("button", {
1418
+ e.controls ? (l(), n("button", {
1231
1419
  key: 2,
1232
1420
  class: "carousel-control-prev",
1233
1421
  type: "button",
1234
1422
  "data-bs-target": `#${e.id}`,
1235
1423
  "data-bs-slide": "prev"
1236
- }, [...l[0] || (l[0] = [
1237
- d("span", {
1424
+ }, [...a[0] || (a[0] = [
1425
+ m("span", {
1238
1426
  class: "carousel-control-prev-icon",
1239
1427
  "aria-hidden": "true"
1240
1428
  }, null, -1),
1241
- d("span", { class: "visually-hidden" }, "Previous", -1)
1242
- ])], 8, ot)) : $("", !0),
1243
- e.controls ? (a(), n("button", {
1429
+ m("span", { class: "visually-hidden" }, "Previous", -1)
1430
+ ])], 8, ct)) : u("", !0),
1431
+ e.controls ? (l(), n("button", {
1244
1432
  key: 3,
1245
1433
  class: "carousel-control-next",
1246
1434
  type: "button",
1247
1435
  "data-bs-target": `#${e.id}`,
1248
1436
  "data-bs-slide": "next"
1249
- }, [...l[1] || (l[1] = [
1250
- d("span", {
1437
+ }, [...a[1] || (a[1] = [
1438
+ m("span", {
1251
1439
  class: "carousel-control-next-icon",
1252
1440
  "aria-hidden": "true"
1253
1441
  }, null, -1),
1254
- d("span", { class: "visually-hidden" }, "Next", -1)
1255
- ])], 8, dt)) : $("", !0)
1256
- ], 10, at));
1442
+ m("span", { class: "visually-hidden" }, "Next", -1)
1443
+ ])], 8, ft)) : u("", !0)
1444
+ ], 10, st));
1257
1445
  }
1258
- }), ut = ["data-bs-placement", "data-bs-title", "data-bs-trigger", "data-bs-html"], oa = /* @__PURE__ */ v({
1446
+ }), vt = ["data-bs-placement", "data-bs-title", "data-bs-trigger", "data-bs-html"], Xl = /* @__PURE__ */ p({
1259
1447
  __name: "VibeTooltip",
1260
1448
  props: {
1261
1449
  content: { type: String, required: !0 },
@@ -1264,18 +1452,18 @@ const Lt = /* @__PURE__ */ v({
1264
1452
  html: { type: Boolean, default: !1 }
1265
1453
  },
1266
1454
  emits: ["component-error"],
1267
- setup(e, { emit: u }) {
1268
- return (t, i) => (a(), n("span", {
1455
+ setup(e, { emit: o }) {
1456
+ return (t, i) => (l(), n("span", {
1269
1457
  "data-bs-toggle": "tooltip",
1270
1458
  "data-bs-placement": e.placement,
1271
1459
  "data-bs-title": e.content,
1272
1460
  "data-bs-trigger": e.trigger,
1273
1461
  "data-bs-html": e.html
1274
1462
  }, [
1275
- b(t.$slots, "default")
1276
- ], 8, ut));
1463
+ $(t.$slots, "default")
1464
+ ], 8, vt));
1277
1465
  }
1278
- }), ct = ["data-bs-placement", "data-bs-title", "data-bs-content", "data-bs-trigger", "data-bs-html"], da = /* @__PURE__ */ v({
1466
+ }), bt = ["data-bs-placement", "data-bs-title", "data-bs-content", "data-bs-trigger", "data-bs-html"], Dl = /* @__PURE__ */ p({
1279
1467
  __name: "VibePopover",
1280
1468
  props: {
1281
1469
  title: { type: String, default: void 0 },
@@ -1285,8 +1473,8 @@ const Lt = /* @__PURE__ */ v({
1285
1473
  html: { type: Boolean, default: !1 }
1286
1474
  },
1287
1475
  emits: ["component-error"],
1288
- setup(e, { emit: u }) {
1289
- return (t, i) => (a(), n("span", {
1476
+ setup(e, { emit: o }) {
1477
+ return (t, i) => (l(), n("span", {
1290
1478
  "data-bs-toggle": "popover",
1291
1479
  "data-bs-placement": e.placement,
1292
1480
  "data-bs-title": e.title,
@@ -1294,10 +1482,10 @@ const Lt = /* @__PURE__ */ v({
1294
1482
  "data-bs-trigger": e.trigger,
1295
1483
  "data-bs-html": e.html
1296
1484
  }, [
1297
- b(t.$slots, "default")
1298
- ], 8, ct));
1485
+ $(t.$slots, "default")
1486
+ ], 8, bt));
1299
1487
  }
1300
- }), ua = /* @__PURE__ */ v({
1488
+ }), Rl = /* @__PURE__ */ p({
1301
1489
  __name: "VibeScrollspy",
1302
1490
  props: {
1303
1491
  target: { type: String, required: !0 },
@@ -1307,8 +1495,8 @@ const Lt = /* @__PURE__ */ v({
1307
1495
  tag: { type: String, default: "div" }
1308
1496
  },
1309
1497
  emits: ["activate", "component-error"],
1310
- setup(e, { emit: u }) {
1311
- return (t, i) => (a(), y(V(e.tag), {
1498
+ setup(e, { emit: o }) {
1499
+ return (t, i) => (l(), x(T(e.tag), {
1312
1500
  "data-bs-spy": "scroll",
1313
1501
  "data-bs-target": e.target,
1314
1502
  "data-bs-offset": e.offset,
@@ -1316,40 +1504,90 @@ const Lt = /* @__PURE__ */ v({
1316
1504
  "data-bs-smooth-scroll": e.smoothScroll,
1317
1505
  tabindex: "0"
1318
1506
  }, {
1319
- default: g(() => [
1320
- b(t.$slots, "default")
1507
+ default: V(() => [
1508
+ $(t.$slots, "default")
1321
1509
  ]),
1322
1510
  _: 3
1323
1511
  }, 8, ["data-bs-target", "data-bs-offset", "data-bs-method", "data-bs-smooth-scroll"]));
1324
1512
  }
1325
- }), ft = { class: "vibe-datatable" }, bt = { class: "row mb-3" }, mt = {
1513
+ }), El = /* @__PURE__ */ p({
1514
+ __name: "VibeIcon",
1515
+ props: {
1516
+ // Icon name (e.g., 'house', 'heart-fill', 'star')
1517
+ icon: { type: String, required: !0 },
1518
+ // Size variants
1519
+ size: { type: String, default: void 0 },
1520
+ // Font size (e.g., '1.5rem', '24px')
1521
+ fontSize: { type: String, default: void 0 },
1522
+ // Color
1523
+ color: { type: String, default: void 0 },
1524
+ // Custom class
1525
+ customClass: { type: String, default: void 0 },
1526
+ // Flip and rotate
1527
+ flipH: { type: Boolean, default: !1 },
1528
+ flipV: { type: Boolean, default: !1 },
1529
+ rotate: { type: Number, default: void 0 }
1530
+ },
1531
+ emits: ["click", "component-error"],
1532
+ setup(e, { emit: o }) {
1533
+ const t = e, i = o, a = c(() => {
1534
+ const d = ["bi", `bi-${t.icon}`];
1535
+ return t.size && (["1x", "2x", "3x", "4x", "5x"].includes(t.size) || d.push(`bi-${t.size}`)), t.customClass && d.push(t.customClass), d.join(" ");
1536
+ }), s = c(() => {
1537
+ const d = {};
1538
+ if (t.fontSize)
1539
+ d.fontSize = t.fontSize;
1540
+ else if (t.size) {
1541
+ const v = {
1542
+ "1x": "1rem",
1543
+ "2x": "2rem",
1544
+ "3x": "3rem",
1545
+ "4x": "4rem",
1546
+ "5x": "5rem"
1547
+ };
1548
+ v[t.size] && (d.fontSize = v[t.size]);
1549
+ }
1550
+ t.color && (d.color = t.color);
1551
+ const y = [];
1552
+ return t.flipH && y.push("scaleX(-1)"), t.flipV && y.push("scaleY(-1)"), t.rotate && y.push(`rotate(${t.rotate}deg)`), y.length > 0 && (d.transform = y.join(" "), d.display = "inline-block"), Object.keys(d).length > 0 ? d : void 0;
1553
+ }), r = (d) => {
1554
+ i("click", d);
1555
+ };
1556
+ return (d, y) => (l(), n("i", {
1557
+ class: h(a.value),
1558
+ style: R(s.value),
1559
+ "aria-hidden": !0,
1560
+ onClick: r
1561
+ }, null, 6));
1562
+ }
1563
+ }), mt = { class: "vibe-datatable" }, yt = { class: "row mb-3" }, ht = {
1326
1564
  key: 0,
1327
1565
  class: "col-md-6 mb-2 mb-md-0"
1328
- }, vt = ["placeholder"], pt = {
1566
+ }, gt = ["placeholder"], pt = {
1329
1567
  key: 1,
1330
1568
  class: "col-md-6"
1331
- }, yt = { class: "d-flex justify-content-md-end align-items-center" }, ht = ["value"], gt = ["onClick"], $t = {
1569
+ }, $t = { class: "d-flex justify-content-md-end align-items-center" }, kt = ["value"], St = ["onClick"], xt = {
1332
1570
  key: 0,
1333
1571
  class: "ms-1"
1334
- }, kt = ["onClick"], St = { key: 0 }, Bt = ["colspan"], Vt = { class: "row" }, Ct = {
1572
+ }, Vt = ["onClick"], Ct = { key: 0 }, Bt = ["colspan"], wt = { class: "row" }, Nt = {
1335
1573
  key: 0,
1336
1574
  class: "col-md-6 mb-2 mb-md-0"
1337
- }, wt = { class: "datatable-info" }, Pt = {
1575
+ }, Tt = { class: "datatable-info" }, Mt = {
1338
1576
  key: 1,
1339
1577
  class: "col-md-6"
1340
- }, xt = { class: "pagination justify-content-md-end mb-0" }, It = {
1578
+ }, qt = { class: "pagination justify-content-md-end mb-0" }, Pt = {
1341
1579
  key: 0,
1342
1580
  class: "page-item"
1343
- }, Nt = {
1581
+ }, zt = {
1344
1582
  key: 1,
1345
1583
  class: "page-item disabled"
1346
- }, _t = ["onClick"], jt = {
1584
+ }, It = ["onClick"], Ft = {
1347
1585
  key: 2,
1348
1586
  class: "page-item disabled"
1349
- }, zt = {
1587
+ }, jt = {
1350
1588
  key: 3,
1351
1589
  class: "page-item"
1352
- }, Tt = /* @__PURE__ */ v({
1590
+ }, At = /* @__PURE__ */ p({
1353
1591
  __name: "VibeDataTable",
1354
1592
  props: {
1355
1593
  // Data
@@ -1386,259 +1624,1253 @@ const Lt = /* @__PURE__ */ v({
1386
1624
  filteredInfoText: { type: String, default: "Showing {start} to {end} of {total} entries (filtered from {totalRows} total entries)" }
1387
1625
  },
1388
1626
  emits: ["update:currentPage", "update:perPage", "update:sortBy", "update:sortDesc", "row-clicked", "component-error"],
1389
- setup(e, { emit: u }) {
1390
- const t = e, i = u, l = T(""), s = T(null), o = T(""), r = T(t.currentPage), k = T(t.perPage), B = T(t.sortBy), P = T(t.sortDesc);
1391
- D(() => t.currentPage, (c) => {
1392
- r.value = c;
1393
- }), D(() => t.perPage, (c) => {
1394
- k.value = c;
1395
- }), D(() => t.sortBy, (c) => {
1396
- B.value = c;
1397
- }), D(() => t.sortDesc, (c) => {
1398
- P.value = c;
1399
- }), D(l, (c) => {
1627
+ setup(e, { emit: o }) {
1628
+ const t = e, i = o, a = z(""), s = z(null), r = z(""), d = z(t.currentPage), y = z(t.perPage), v = z(t.sortBy), b = z(t.sortDesc);
1629
+ O(() => t.currentPage, (k) => {
1630
+ d.value = k;
1631
+ }), O(() => t.perPage, (k) => {
1632
+ y.value = k;
1633
+ }), O(() => t.sortBy, (k) => {
1634
+ v.value = k;
1635
+ }), O(() => t.sortDesc, (k) => {
1636
+ b.value = k;
1637
+ }), O(a, (k) => {
1400
1638
  s.value && clearTimeout(s.value), s.value = window.setTimeout(() => {
1401
- o.value = c, r.value = 1;
1639
+ r.value = k, d.value = 1;
1402
1640
  }, t.searchDebounce);
1403
1641
  });
1404
- const F = f(() => {
1405
- if (!t.searchable || !o.value)
1642
+ const g = c(() => {
1643
+ if (!t.searchable || !r.value)
1406
1644
  return t.items;
1407
- const c = o.value.toLowerCase();
1408
- return t.items.filter((h) => t.columns.some((p) => {
1409
- if (p.searchable === !1) return !1;
1410
- const N = h[p.key];
1411
- return N == null ? !1 : String(N).toLowerCase().includes(c);
1645
+ const k = r.value.toLowerCase();
1646
+ return t.items.filter((w) => t.columns.some((C) => {
1647
+ if (C.searchable === !1) return !1;
1648
+ const A = w[C.key];
1649
+ return A == null ? !1 : String(A).toLowerCase().includes(k);
1412
1650
  }));
1413
- }), G = f(() => {
1414
- if (!t.sortable || !B.value)
1415
- return F.value;
1416
- const c = [...F.value], h = B.value;
1417
- return c.sort((p, N) => {
1418
- let x = p[h], A = N[h];
1419
- return x == null ? 1 : A == null ? -1 : (typeof x == "string" && (x = x.toLowerCase()), typeof A == "string" && (A = A.toLowerCase()), x < A ? P.value ? 1 : -1 : x > A ? P.value ? -1 : 1 : 0);
1420
- }), c;
1421
- }), R = f(() => {
1651
+ }), S = c(() => {
1652
+ if (!t.sortable || !v.value)
1653
+ return g.value;
1654
+ const k = [...g.value], w = v.value;
1655
+ return k.sort((C, A) => {
1656
+ let F = C[w], E = A[w];
1657
+ return F == null ? 1 : E == null ? -1 : (typeof F == "string" && (F = F.toLowerCase()), typeof E == "string" && (E = E.toLowerCase()), F < E ? b.value ? 1 : -1 : F > E ? b.value ? -1 : 1 : 0);
1658
+ }), k;
1659
+ }), M = c(() => {
1422
1660
  if (!t.paginated)
1423
- return G.value;
1424
- const c = (r.value - 1) * k.value, h = c + k.value;
1425
- return G.value.slice(c, h);
1426
- }), H = f(() => t.items.length), L = f(() => F.value.length), z = f(() => Math.ceil(L.value / k.value)), J = f(() => L.value === 0 ? 0 : (r.value - 1) * k.value + 1), W = f(() => {
1427
- const c = r.value * k.value;
1428
- return Math.min(c, L.value);
1429
- }), X = f(() => (L.value !== H.value ? t.filteredInfoText : t.infoText).replace("{start}", String(J.value)).replace("{end}", String(W.value)).replace("{total}", String(L.value)).replace("{totalRows}", String(H.value))), Y = f(() => {
1430
- const c = ["table"];
1431
- return t.striped && c.push("table-striped"), t.bordered && c.push("table-bordered"), t.borderless && c.push("table-borderless"), t.hover && c.push("table-hover"), t.small && c.push("table-sm"), t.variant && c.push(`table-${t.variant}`), c.join(" ");
1432
- }), Z = (c) => {
1433
- !t.sortable || c.sortable === !1 || (B.value === c.key ? P.value = !P.value : (B.value = c.key, P.value = !1), i("update:sortBy", B.value), i("update:sortDesc", P.value));
1434
- }, q = (c) => {
1435
- c < 1 || c > z.value || (r.value = c, i("update:currentPage", c));
1436
- }, ee = () => {
1437
- r.value = 1, i("update:perPage", k.value), i("update:currentPage", 1);
1438
- }, te = (c, h) => {
1439
- i("row-clicked", c, h);
1440
- }, ae = (c, h) => {
1441
- const p = c[h.key];
1442
- return h.formatter ? h.formatter(p, c) : p;
1443
- }, se = (c) => !t.sortable || c.sortable === !1 ? "" : B.value !== c.key ? "⇅" : P.value ? "↓" : "↑", le = (c) => {
1444
- const h = { ...c.thStyle };
1445
- return t.sortable && c.sortable !== !1 && (h.cursor = "pointer"), h;
1661
+ return S.value;
1662
+ const k = (d.value - 1) * y.value, w = k + y.value;
1663
+ return S.value.slice(k, w);
1664
+ }), j = c(() => t.items.length), B = c(() => g.value.length), q = c(() => Math.ceil(B.value / y.value)), D = c(() => B.value === 0 ? 0 : (d.value - 1) * y.value + 1), J = c(() => {
1665
+ const k = d.value * y.value;
1666
+ return Math.min(k, B.value);
1667
+ }), Z = c(() => (B.value !== j.value ? t.filteredInfoText : t.infoText).replace("{start}", String(D.value)).replace("{end}", String(J.value)).replace("{total}", String(B.value)).replace("{totalRows}", String(j.value))), _ = c(() => {
1668
+ const k = ["table"];
1669
+ return t.striped && k.push("table-striped"), t.bordered && k.push("table-bordered"), t.borderless && k.push("table-borderless"), t.hover && k.push("table-hover"), t.small && k.push("table-sm"), t.variant && k.push(`table-${t.variant}`), k.join(" ");
1670
+ }), ee = (k) => {
1671
+ !t.sortable || k.sortable === !1 || (v.value === k.key ? b.value = !b.value : (v.value = k.key, b.value = !1), i("update:sortBy", v.value), i("update:sortDesc", b.value));
1672
+ }, Y = (k) => {
1673
+ k < 1 || k > q.value || (d.value = k, i("update:currentPage", k));
1674
+ }, te = () => {
1675
+ d.value = 1, i("update:perPage", y.value), i("update:currentPage", 1);
1676
+ }, ae = (k, w) => {
1677
+ i("row-clicked", k, w);
1678
+ }, le = (k, w) => {
1679
+ const C = k[w.key];
1680
+ return w.formatter ? w.formatter(C, k) : C;
1681
+ }, ie = (k) => !t.sortable || k.sortable === !1 ? "" : v.value !== k.key ? "⇅" : b.value ? "↓" : "↑", se = (k) => {
1682
+ const w = { ...k.thStyle };
1683
+ return t.sortable && k.sortable !== !1 && (w.cursor = "pointer"), w;
1446
1684
  };
1447
- return (c, h) => (a(), n("div", ft, [
1448
- d("div", bt, [
1449
- e.searchable ? (a(), n("div", mt, [
1450
- Q(d("input", {
1451
- "onUpdate:modelValue": h[0] || (h[0] = (p) => l.value = p),
1685
+ return (k, w) => (l(), n("div", mt, [
1686
+ m("div", yt, [
1687
+ e.searchable ? (l(), n("div", ht, [
1688
+ Q(m("input", {
1689
+ "onUpdate:modelValue": w[0] || (w[0] = (C) => a.value = C),
1452
1690
  type: "search",
1453
1691
  class: "form-control",
1454
1692
  placeholder: e.searchPlaceholder
1455
- }, null, 8, vt), [
1456
- [re, l.value]
1693
+ }, null, 8, gt), [
1694
+ [ne, a.value]
1457
1695
  ])
1458
- ])) : $("", !0),
1459
- e.showPerPage && e.paginated ? (a(), n("div", pt, [
1460
- d("div", yt, [
1461
- h[6] || (h[6] = d("label", { class: "me-2 mb-0" }, "Show", -1)),
1462
- Q(d("select", {
1463
- "onUpdate:modelValue": h[1] || (h[1] = (p) => k.value = p),
1696
+ ])) : u("", !0),
1697
+ e.showPerPage && e.paginated ? (l(), n("div", pt, [
1698
+ m("div", $t, [
1699
+ w[6] || (w[6] = m("label", { class: "me-2 mb-0" }, "Show", -1)),
1700
+ Q(m("select", {
1701
+ "onUpdate:modelValue": w[1] || (w[1] = (C) => y.value = C),
1464
1702
  class: "form-select form-select-sm",
1465
1703
  style: { width: "auto" },
1466
- onChange: ee
1704
+ onChange: te
1467
1705
  }, [
1468
- (a(!0), n(w, null, I(e.perPageOptions, (p) => (a(), n("option", {
1469
- key: p,
1470
- value: p
1471
- }, S(p), 9, ht))), 128))
1706
+ (l(!0), n(P, null, I(e.perPageOptions, (C) => (l(), n("option", {
1707
+ key: C,
1708
+ value: C
1709
+ }, f(C), 9, kt))), 128))
1472
1710
  ], 544), [
1473
1711
  [
1474
- ie,
1475
- k.value,
1712
+ de,
1713
+ y.value,
1476
1714
  void 0,
1477
1715
  { number: !0 }
1478
1716
  ]
1479
1717
  ]),
1480
- h[7] || (h[7] = d("span", { class: "ms-2" }, "entries", -1))
1718
+ w[7] || (w[7] = m("span", { class: "ms-2" }, "entries", -1))
1481
1719
  ])
1482
- ])) : $("", !0)
1720
+ ])) : u("", !0)
1483
1721
  ]),
1484
- d("div", {
1485
- class: m({ "table-responsive": e.responsive })
1722
+ m("div", {
1723
+ class: h({ "table-responsive": e.responsive })
1486
1724
  }, [
1487
- d("table", {
1488
- class: m(Y.value)
1725
+ m("table", {
1726
+ class: h(_.value)
1489
1727
  }, [
1490
- d("thead", null, [
1491
- d("tr", null, [
1492
- (a(!0), n(w, null, I(e.columns, (p) => (a(), n("th", {
1493
- key: p.key,
1494
- class: m(p.headerClass),
1495
- style: M(le(p)),
1496
- onClick: (N) => Z(p)
1728
+ m("thead", null, [
1729
+ m("tr", null, [
1730
+ (l(!0), n(P, null, I(e.columns, (C) => (l(), n("th", {
1731
+ key: C.key,
1732
+ class: h(C.headerClass),
1733
+ style: R(se(C)),
1734
+ onClick: (A) => ee(C)
1497
1735
  }, [
1498
- C(S(p.label) + " ", 1),
1499
- e.sortable && p.sortable !== !1 ? (a(), n("span", $t, S(se(p)), 1)) : $("", !0)
1500
- ], 14, gt))), 128))
1736
+ N(f(C.label) + " ", 1),
1737
+ e.sortable && C.sortable !== !1 ? (l(), n("span", xt, f(ie(C)), 1)) : u("", !0)
1738
+ ], 14, St))), 128))
1501
1739
  ])
1502
1740
  ]),
1503
- d("tbody", null, [
1504
- (a(!0), n(w, null, I(R.value, (p, N) => (a(), n("tr", {
1505
- key: N,
1506
- onClick: (x) => te(p, N),
1741
+ m("tbody", null, [
1742
+ (l(!0), n(P, null, I(M.value, (C, A) => (l(), n("tr", {
1743
+ key: A,
1744
+ onClick: (F) => ae(C, A),
1507
1745
  style: { cursor: "pointer" }
1508
1746
  }, [
1509
- (a(!0), n(w, null, I(e.columns, (x) => (a(), n("td", {
1510
- key: x.key,
1511
- class: m(x.class),
1512
- style: M(x.tdStyle)
1747
+ (l(!0), n(P, null, I(e.columns, (F) => (l(), n("td", {
1748
+ key: F.key,
1749
+ class: h(F.class),
1750
+ style: R(F.tdStyle)
1513
1751
  }, [
1514
- b(c.$slots, `cell(${x.key})`, {
1515
- item: p,
1516
- value: p[x.key],
1517
- index: N
1752
+ $(k.$slots, `cell(${F.key})`, {
1753
+ item: C,
1754
+ value: C[F.key],
1755
+ index: A
1518
1756
  }, () => [
1519
- C(S(ae(p, x)), 1)
1757
+ N(f(le(C, F)), 1)
1520
1758
  ], !0)
1521
1759
  ], 6))), 128))
1522
- ], 8, kt))), 128)),
1523
- R.value.length === 0 && e.showEmpty ? (a(), n("tr", St, [
1524
- d("td", {
1760
+ ], 8, Vt))), 128)),
1761
+ M.value.length === 0 && e.showEmpty ? (l(), n("tr", Ct, [
1762
+ m("td", {
1525
1763
  colspan: e.columns.length,
1526
1764
  class: "text-center"
1527
- }, S(e.emptyText), 9, Bt)
1528
- ])) : $("", !0)
1765
+ }, f(e.emptyText), 9, Bt)
1766
+ ])) : u("", !0)
1529
1767
  ])
1530
1768
  ], 2)
1531
1769
  ], 2),
1532
- d("div", Vt, [
1533
- e.showInfo ? (a(), n("div", Ct, [
1534
- d("div", wt, S(X.value), 1)
1535
- ])) : $("", !0),
1536
- e.paginated && z.value > 1 ? (a(), n("div", Pt, [
1537
- d("nav", null, [
1538
- d("ul", xt, [
1539
- d("li", {
1540
- class: m(["page-item", { disabled: r.value === 1 }])
1770
+ m("div", wt, [
1771
+ e.showInfo ? (l(), n("div", Nt, [
1772
+ m("div", Tt, f(Z.value), 1)
1773
+ ])) : u("", !0),
1774
+ e.paginated && q.value > 1 ? (l(), n("div", Mt, [
1775
+ m("nav", null, [
1776
+ m("ul", qt, [
1777
+ m("li", {
1778
+ class: h(["page-item", { disabled: d.value === 1 }])
1541
1779
  }, [
1542
- d("a", {
1780
+ m("a", {
1543
1781
  class: "page-link",
1544
1782
  href: "#",
1545
- onClick: h[2] || (h[2] = O((p) => q(r.value - 1), ["prevent"]))
1783
+ onClick: w[2] || (w[2] = G((C) => Y(d.value - 1), ["prevent"]))
1546
1784
  }, " Previous ")
1547
1785
  ], 2),
1548
- r.value > 3 ? (a(), n("li", It, [
1549
- d("a", {
1786
+ d.value > 3 ? (l(), n("li", Pt, [
1787
+ m("a", {
1550
1788
  class: "page-link",
1551
1789
  href: "#",
1552
- onClick: h[3] || (h[3] = O((p) => q(1), ["prevent"]))
1790
+ onClick: w[3] || (w[3] = G((C) => Y(1), ["prevent"]))
1553
1791
  }, "1")
1554
- ])) : $("", !0),
1555
- r.value > 4 ? (a(), n("li", Nt, [...h[8] || (h[8] = [
1556
- d("span", { class: "page-link" }, "...", -1)
1557
- ])])) : $("", !0),
1558
- (a(!0), n(w, null, I(Array.from({ length: z.value }, (p, N) => N + 1).filter(
1559
- (p) => p >= r.value - 2 && p <= r.value + 2
1560
- ), (p) => (a(), n("li", {
1561
- key: p,
1562
- class: m(["page-item", { active: p === r.value }])
1792
+ ])) : u("", !0),
1793
+ d.value > 4 ? (l(), n("li", zt, [...w[8] || (w[8] = [
1794
+ m("span", { class: "page-link" }, "...", -1)
1795
+ ])])) : u("", !0),
1796
+ (l(!0), n(P, null, I(Array.from({ length: q.value }, (C, A) => A + 1).filter(
1797
+ (C) => C >= d.value - 2 && C <= d.value + 2
1798
+ ), (C) => (l(), n("li", {
1799
+ key: C,
1800
+ class: h(["page-item", { active: C === d.value }])
1563
1801
  }, [
1564
- d("a", {
1802
+ m("a", {
1565
1803
  class: "page-link",
1566
1804
  href: "#",
1567
- onClick: O((N) => q(p), ["prevent"])
1568
- }, S(p), 9, _t)
1805
+ onClick: G((A) => Y(C), ["prevent"])
1806
+ }, f(C), 9, It)
1569
1807
  ], 2))), 128)),
1570
- r.value < z.value - 3 ? (a(), n("li", jt, [...h[9] || (h[9] = [
1571
- d("span", { class: "page-link" }, "...", -1)
1572
- ])])) : $("", !0),
1573
- r.value < z.value - 2 ? (a(), n("li", zt, [
1574
- d("a", {
1808
+ d.value < q.value - 3 ? (l(), n("li", Ft, [...w[9] || (w[9] = [
1809
+ m("span", { class: "page-link" }, "...", -1)
1810
+ ])])) : u("", !0),
1811
+ d.value < q.value - 2 ? (l(), n("li", jt, [
1812
+ m("a", {
1575
1813
  class: "page-link",
1576
1814
  href: "#",
1577
- onClick: h[4] || (h[4] = O((p) => q(z.value), ["prevent"]))
1578
- }, S(z.value), 1)
1579
- ])) : $("", !0),
1580
- d("li", {
1581
- class: m(["page-item", { disabled: r.value === z.value }])
1815
+ onClick: w[4] || (w[4] = G((C) => Y(q.value), ["prevent"]))
1816
+ }, f(q.value), 1)
1817
+ ])) : u("", !0),
1818
+ m("li", {
1819
+ class: h(["page-item", { disabled: d.value === q.value }])
1582
1820
  }, [
1583
- d("a", {
1821
+ m("a", {
1584
1822
  class: "page-link",
1585
1823
  href: "#",
1586
- onClick: h[5] || (h[5] = O((p) => q(r.value + 1), ["prevent"]))
1824
+ onClick: w[5] || (w[5] = G((C) => Y(d.value + 1), ["prevent"]))
1587
1825
  }, " Next ")
1588
1826
  ], 2)
1589
1827
  ])
1590
1828
  ])
1591
- ])) : $("", !0)
1829
+ ])) : u("", !0)
1592
1830
  ])
1593
1831
  ]));
1594
1832
  }
1595
- }), At = (e, u) => {
1833
+ }), U = (e, o) => {
1596
1834
  const t = e.__vccOpts || e;
1597
- for (const [i, l] of u)
1598
- t[i] = l;
1835
+ for (const [i, a] of o)
1836
+ t[i] = a;
1599
1837
  return t;
1600
- }, ca = /* @__PURE__ */ At(Tt, [["__scopeId", "data-v-48221c7b"]]);
1838
+ }, Yl = /* @__PURE__ */ U(At, [["__scopeId", "data-v-48221c7b"]]), Lt = { class: "mb-3" }, Ot = ["for"], Xt = {
1839
+ key: 0,
1840
+ class: "text-danger"
1841
+ }, Dt = ["id", "type", "value", "placeholder", "disabled", "readonly", "required", "aria-invalid", "aria-describedby"], Rt = ["id"], Et = {
1842
+ key: 2,
1843
+ class: "valid-feedback",
1844
+ style: { display: "block" }
1845
+ }, Yt = ["id"], Gl = /* @__PURE__ */ p({
1846
+ __name: "VibeFormInput",
1847
+ props: {
1848
+ modelValue: { type: [String, Number], default: "" },
1849
+ type: { type: String, default: "text" },
1850
+ id: { type: String, required: !0 },
1851
+ label: { type: String, default: void 0 },
1852
+ placeholder: { type: String, default: void 0 },
1853
+ disabled: { type: Boolean, default: !1 },
1854
+ readonly: { type: Boolean, default: !1 },
1855
+ required: { type: Boolean, default: !1 },
1856
+ size: { type: String, default: void 0 },
1857
+ validationState: { type: String, default: null },
1858
+ validationMessage: { type: String, default: void 0 },
1859
+ validationRules: { type: [Array, Function], default: void 0 },
1860
+ validateOn: { type: String, default: "blur" },
1861
+ helpText: { type: String, default: void 0 },
1862
+ plaintext: { type: Boolean, default: !1 }
1863
+ },
1864
+ emits: ["update:modelValue", "validate", "blur", "focus", "input", "change"],
1865
+ setup(e, { emit: o }) {
1866
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
1867
+ const b = [];
1868
+ return t.plaintext ? b.push("form-control-plaintext") : (b.push("form-control"), t.size && b.push(`form-control-${t.size}`)), a.value === "valid" && b.push("is-valid"), a.value === "invalid" && b.push("is-invalid"), b.join(" ");
1869
+ }), r = (b) => {
1870
+ const g = b.target, S = t.type === "number" ? g.value === "" ? "" : Number(g.value) : g.value;
1871
+ i("update:modelValue", S), i("input", b), t.validateOn === "input" && i("validate");
1872
+ }, d = (b) => {
1873
+ i("change", b), t.validateOn === "change" && i("validate");
1874
+ }, y = (b) => {
1875
+ i("blur", b), t.validateOn === "blur" && i("validate");
1876
+ }, v = (b) => {
1877
+ i("focus", b);
1878
+ };
1879
+ return (b, g) => (l(), n("div", Lt, [
1880
+ e.label ? (l(), n("label", {
1881
+ key: 0,
1882
+ for: e.id,
1883
+ class: "form-label"
1884
+ }, [
1885
+ N(f(e.label) + " ", 1),
1886
+ e.required ? (l(), n("span", Xt, "*")) : u("", !0)
1887
+ ], 8, Ot)) : u("", !0),
1888
+ m("input", {
1889
+ id: e.id,
1890
+ type: e.type,
1891
+ class: h(s.value),
1892
+ value: e.modelValue,
1893
+ placeholder: e.placeholder,
1894
+ disabled: e.disabled,
1895
+ readonly: e.readonly || e.plaintext,
1896
+ required: e.required,
1897
+ "aria-invalid": a.value === "invalid",
1898
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
1899
+ onInput: r,
1900
+ onChange: d,
1901
+ onBlur: y,
1902
+ onFocus: v
1903
+ }, null, 42, Dt),
1904
+ e.helpText && !e.validationMessage ? (l(), n("div", {
1905
+ key: 1,
1906
+ id: `${e.id}-feedback`,
1907
+ class: "form-text"
1908
+ }, f(e.helpText), 9, Rt)) : u("", !0),
1909
+ a.value === "valid" ? (l(), n("div", Et, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
1910
+ a.value === "invalid" ? (l(), n("div", {
1911
+ key: 3,
1912
+ id: `${e.id}-feedback`,
1913
+ class: "invalid-feedback",
1914
+ style: { display: "block" }
1915
+ }, f(e.validationMessage || "Please provide a valid value."), 9, Yt)) : u("", !0)
1916
+ ]));
1917
+ }
1918
+ }), Gt = { class: "mb-3" }, Ht = ["for"], Ut = {
1919
+ key: 0,
1920
+ class: "text-danger"
1921
+ }, Qt = ["id", "value", "disabled", "required", "multiple", "size", "aria-invalid", "aria-describedby"], Kt = ["selected"], Wt = ["value", "disabled"], Jt = ["id"], Zt = {
1922
+ key: 2,
1923
+ class: "valid-feedback",
1924
+ style: { display: "block" }
1925
+ }, _t = ["id"], Hl = /* @__PURE__ */ p({
1926
+ __name: "VibeFormSelect",
1927
+ props: {
1928
+ modelValue: { type: [String, Number, Array], default: "" },
1929
+ id: { type: String, required: !0 },
1930
+ label: { type: String, default: void 0 },
1931
+ options: { type: Array, default: () => [] },
1932
+ disabled: { type: Boolean, default: !1 },
1933
+ required: { type: Boolean, default: !1 },
1934
+ multiple: { type: Boolean, default: !1 },
1935
+ size: { type: String, default: void 0 },
1936
+ htmlSize: { type: Number, default: void 0 },
1937
+ validationState: { type: String, default: null },
1938
+ validationMessage: { type: String, default: void 0 },
1939
+ validationRules: { type: [Array, Function], default: void 0 },
1940
+ validateOn: { type: String, default: "blur" },
1941
+ helpText: { type: String, default: void 0 },
1942
+ placeholder: { type: String, default: void 0 }
1943
+ },
1944
+ emits: ["update:modelValue", "validate", "blur", "focus", "change"],
1945
+ setup(e, { emit: o }) {
1946
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
1947
+ const v = ["form-select"];
1948
+ return t.size && v.push(`form-select-${t.size}`), a.value === "valid" && v.push("is-valid"), a.value === "invalid" && v.push("is-invalid"), v.join(" ");
1949
+ }), r = (v) => {
1950
+ const b = v.target;
1951
+ let g;
1952
+ t.multiple ? g = Array.from(b.selectedOptions).map((M) => M.value) : g = b.value, i("update:modelValue", g), i("change", v), t.validateOn === "change" && i("validate");
1953
+ }, d = (v) => {
1954
+ i("blur", v), t.validateOn === "blur" && i("validate");
1955
+ }, y = (v) => {
1956
+ i("focus", v);
1957
+ };
1958
+ return (v, b) => (l(), n("div", Gt, [
1959
+ e.label ? (l(), n("label", {
1960
+ key: 0,
1961
+ for: e.id,
1962
+ class: "form-label"
1963
+ }, [
1964
+ N(f(e.label) + " ", 1),
1965
+ e.required ? (l(), n("span", Ut, "*")) : u("", !0)
1966
+ ], 8, Ht)) : u("", !0),
1967
+ m("select", {
1968
+ id: e.id,
1969
+ class: h(s.value),
1970
+ value: e.modelValue,
1971
+ disabled: e.disabled,
1972
+ required: e.required,
1973
+ multiple: e.multiple,
1974
+ size: e.htmlSize,
1975
+ "aria-invalid": a.value === "invalid",
1976
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
1977
+ onChange: r,
1978
+ onBlur: d,
1979
+ onFocus: y
1980
+ }, [
1981
+ e.placeholder && !e.multiple ? (l(), n("option", {
1982
+ key: 0,
1983
+ value: "",
1984
+ disabled: "",
1985
+ selected: !e.modelValue
1986
+ }, f(e.placeholder), 9, Kt)) : u("", !0),
1987
+ (l(!0), n(P, null, I(e.options, (g) => (l(), n("option", {
1988
+ key: g.value,
1989
+ value: g.value,
1990
+ disabled: g.disabled
1991
+ }, f(g.text), 9, Wt))), 128)),
1992
+ $(v.$slots, "default")
1993
+ ], 42, Qt),
1994
+ e.helpText && !e.validationMessage ? (l(), n("div", {
1995
+ key: 1,
1996
+ id: `${e.id}-feedback`,
1997
+ class: "form-text"
1998
+ }, f(e.helpText), 9, Jt)) : u("", !0),
1999
+ a.value === "valid" ? (l(), n("div", Zt, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2000
+ a.value === "invalid" ? (l(), n("div", {
2001
+ key: 3,
2002
+ id: `${e.id}-feedback`,
2003
+ class: "invalid-feedback",
2004
+ style: { display: "block" }
2005
+ }, f(e.validationMessage || "Please select a valid option."), 9, _t)) : u("", !0)
2006
+ ]));
2007
+ }
2008
+ }), ea = { class: "mb-3" }, ta = ["for"], aa = {
2009
+ key: 0,
2010
+ class: "text-danger"
2011
+ }, la = ["id", "value", "placeholder", "disabled", "readonly", "required", "rows", "maxlength", "aria-invalid", "aria-describedby"], ia = {
2012
+ key: 1,
2013
+ class: "form-text"
2014
+ }, sa = ["id"], na = {
2015
+ key: 3,
2016
+ class: "valid-feedback",
2017
+ style: { display: "block" }
2018
+ }, da = ["id"], Ul = /* @__PURE__ */ p({
2019
+ __name: "VibeFormTextarea",
2020
+ props: {
2021
+ modelValue: { type: String, default: "" },
2022
+ id: { type: String, required: !0 },
2023
+ label: { type: String, default: void 0 },
2024
+ placeholder: { type: String, default: void 0 },
2025
+ disabled: { type: Boolean, default: !1 },
2026
+ readonly: { type: Boolean, default: !1 },
2027
+ required: { type: Boolean, default: !1 },
2028
+ rows: { type: Number, default: 3 },
2029
+ maxlength: { type: Number, default: void 0 },
2030
+ size: { type: String, default: void 0 },
2031
+ validationState: { type: String, default: null },
2032
+ validationMessage: { type: String, default: void 0 },
2033
+ validationRules: { type: [Array, Function], default: void 0 },
2034
+ validateOn: { type: String, default: "blur" },
2035
+ helpText: { type: String, default: void 0 },
2036
+ showCharCount: { type: Boolean, default: !1 }
2037
+ },
2038
+ emits: ["update:modelValue", "validate", "blur", "focus", "input", "change"],
2039
+ setup(e, { emit: o }) {
2040
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2041
+ const S = ["form-control"];
2042
+ return t.size && S.push(`form-control-${t.size}`), a.value === "valid" && S.push("is-valid"), a.value === "invalid" && S.push("is-invalid"), S.join(" ");
2043
+ }), r = c(() => t.modelValue ? t.modelValue.length : 0), d = c(() => t.maxlength ? `${r.value} / ${t.maxlength}` : `${r.value}`), y = (S) => {
2044
+ const M = S.target;
2045
+ i("update:modelValue", M.value), i("input", S), t.validateOn === "input" && i("validate");
2046
+ }, v = (S) => {
2047
+ i("change", S), t.validateOn === "change" && i("validate");
2048
+ }, b = (S) => {
2049
+ i("blur", S), t.validateOn === "blur" && i("validate");
2050
+ }, g = (S) => {
2051
+ i("focus", S);
2052
+ };
2053
+ return (S, M) => (l(), n("div", ea, [
2054
+ e.label ? (l(), n("label", {
2055
+ key: 0,
2056
+ for: e.id,
2057
+ class: "form-label"
2058
+ }, [
2059
+ N(f(e.label) + " ", 1),
2060
+ e.required ? (l(), n("span", aa, "*")) : u("", !0)
2061
+ ], 8, ta)) : u("", !0),
2062
+ m("textarea", {
2063
+ id: e.id,
2064
+ class: h(s.value),
2065
+ value: e.modelValue,
2066
+ placeholder: e.placeholder,
2067
+ disabled: e.disabled,
2068
+ readonly: e.readonly,
2069
+ required: e.required,
2070
+ rows: e.rows,
2071
+ maxlength: e.maxlength,
2072
+ "aria-invalid": a.value === "invalid",
2073
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2074
+ onInput: y,
2075
+ onChange: v,
2076
+ onBlur: b,
2077
+ onFocus: g
2078
+ }, null, 42, la),
2079
+ e.showCharCount ? (l(), n("div", ia, f(d.value), 1)) : u("", !0),
2080
+ e.helpText && !e.validationMessage && !e.showCharCount ? (l(), n("div", {
2081
+ key: 2,
2082
+ id: `${e.id}-feedback`,
2083
+ class: "form-text"
2084
+ }, f(e.helpText), 9, sa)) : u("", !0),
2085
+ a.value === "valid" ? (l(), n("div", na, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2086
+ a.value === "invalid" ? (l(), n("div", {
2087
+ key: 4,
2088
+ id: `${e.id}-feedback`,
2089
+ class: "invalid-feedback",
2090
+ style: { display: "block" }
2091
+ }, f(e.validationMessage || "Please provide a valid value."), 9, da)) : u("", !0)
2092
+ ]));
2093
+ }
2094
+ }), oa = { class: "mb-3" }, ra = ["for"], ua = {
2095
+ key: 0,
2096
+ class: "text-danger"
2097
+ }, ca = ["disabled"], fa = ["id", "value", "disabled", "readonly", "required", "min", "max", "step", "aria-invalid", "aria-describedby"], va = ["disabled"], ba = ["id"], ma = {
2098
+ key: 2,
2099
+ class: "valid-feedback",
2100
+ style: { display: "block" }
2101
+ }, ya = ["id"], ha = /* @__PURE__ */ p({
2102
+ __name: "VibeFormSpinbutton",
2103
+ props: {
2104
+ modelValue: { type: Number, default: 0 },
2105
+ id: { type: String, required: !0 },
2106
+ label: { type: String, default: void 0 },
2107
+ disabled: { type: Boolean, default: !1 },
2108
+ readonly: { type: Boolean, default: !1 },
2109
+ required: { type: Boolean, default: !1 },
2110
+ min: { type: Number, default: void 0 },
2111
+ max: { type: Number, default: void 0 },
2112
+ step: { type: Number, default: 1 },
2113
+ size: { type: String, default: void 0 },
2114
+ validationState: { type: String, default: null },
2115
+ validationMessage: { type: String, default: void 0 },
2116
+ validationRules: { type: [Array, Function], default: void 0 },
2117
+ validateOn: { type: String, default: "blur" },
2118
+ helpText: { type: String, default: void 0 },
2119
+ wrap: { type: Boolean, default: !1 },
2120
+ vertical: { type: Boolean, default: !1 }
2121
+ },
2122
+ emits: ["update:modelValue", "validate", "blur", "focus", "input", "change", "increment", "decrement"],
2123
+ setup(e, { emit: o }) {
2124
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2125
+ const B = ["form-control"];
2126
+ return t.size && B.push(`form-control-${t.size}`), a.value === "valid" && B.push("is-valid"), a.value === "invalid" && B.push("is-invalid"), B.join(" ");
2127
+ }), r = c(() => {
2128
+ const B = ["input-group"];
2129
+ return t.size && B.push(`input-group-${t.size}`), t.vertical && B.push("input-group-vertical"), B.join(" ");
2130
+ }), d = c(() => t.disabled || t.readonly ? !1 : t.min === void 0 || t.wrap ? !0 : t.modelValue > t.min), y = c(() => t.disabled || t.readonly ? !1 : t.max === void 0 || t.wrap ? !0 : t.modelValue < t.max), v = (B) => {
2131
+ const q = B.target;
2132
+ let D = q.value === "" ? 0 : Number(q.value);
2133
+ t.min !== void 0 && D < t.min && (D = t.min), t.max !== void 0 && D > t.max && (D = t.max), i("update:modelValue", D), i("input", B), t.validateOn === "input" && i("validate");
2134
+ }, b = (B) => {
2135
+ i("change", B), t.validateOn === "change" && i("validate");
2136
+ }, g = (B) => {
2137
+ i("blur", B), t.validateOn === "blur" && i("validate");
2138
+ }, S = (B) => {
2139
+ i("focus", B);
2140
+ }, M = () => {
2141
+ if (!y.value) return;
2142
+ let B = t.modelValue + t.step;
2143
+ t.max !== void 0 && B > t.max && (B = t.wrap ? t.min ?? 0 : t.max), i("update:modelValue", B), i("increment", B), t.validateOn === "change" && i("validate");
2144
+ }, j = () => {
2145
+ if (!d.value) return;
2146
+ let B = t.modelValue - t.step;
2147
+ t.min !== void 0 && B < t.min && (B = t.wrap ? t.max ?? 0 : t.min), i("update:modelValue", B), i("decrement", B), t.validateOn === "change" && i("validate");
2148
+ };
2149
+ return (B, q) => (l(), n("div", oa, [
2150
+ e.label ? (l(), n("label", {
2151
+ key: 0,
2152
+ for: e.id,
2153
+ class: "form-label"
2154
+ }, [
2155
+ N(f(e.label) + " ", 1),
2156
+ e.required ? (l(), n("span", ua, "*")) : u("", !0)
2157
+ ], 8, ra)) : u("", !0),
2158
+ m("div", {
2159
+ class: h(r.value)
2160
+ }, [
2161
+ m("button", {
2162
+ class: "btn btn-outline-secondary",
2163
+ type: "button",
2164
+ disabled: !d.value,
2165
+ onClick: j,
2166
+ "aria-label": "Decrement"
2167
+ }, [...q[0] || (q[0] = [
2168
+ m("span", { "aria-hidden": "true" }, "−", -1)
2169
+ ])], 8, ca),
2170
+ m("input", {
2171
+ id: e.id,
2172
+ type: "number",
2173
+ class: h(s.value),
2174
+ value: e.modelValue,
2175
+ disabled: e.disabled,
2176
+ readonly: e.readonly,
2177
+ required: e.required,
2178
+ min: e.min,
2179
+ max: e.max,
2180
+ step: e.step,
2181
+ "aria-invalid": a.value === "invalid",
2182
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2183
+ onInput: v,
2184
+ onChange: b,
2185
+ onBlur: g,
2186
+ onFocus: S
2187
+ }, null, 42, fa),
2188
+ m("button", {
2189
+ class: "btn btn-outline-secondary",
2190
+ type: "button",
2191
+ disabled: !y.value,
2192
+ onClick: M,
2193
+ "aria-label": "Increment"
2194
+ }, [...q[1] || (q[1] = [
2195
+ m("span", { "aria-hidden": "true" }, "+", -1)
2196
+ ])], 8, va)
2197
+ ], 2),
2198
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2199
+ key: 1,
2200
+ id: `${e.id}-feedback`,
2201
+ class: "form-text"
2202
+ }, f(e.helpText), 9, ba)) : u("", !0),
2203
+ a.value === "valid" ? (l(), n("div", ma, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2204
+ a.value === "invalid" ? (l(), n("div", {
2205
+ key: 3,
2206
+ id: `${e.id}-feedback`,
2207
+ class: "invalid-feedback",
2208
+ style: { display: "block" }
2209
+ }, f(e.validationMessage || "Please provide a valid value."), 9, ya)) : u("", !0)
2210
+ ]));
2211
+ }
2212
+ }), Ql = /* @__PURE__ */ U(ha, [["__scopeId", "data-v-e706d3dc"]]), ga = { class: "mb-3" }, pa = ["for"], $a = {
2213
+ key: 0,
2214
+ class: "text-danger"
2215
+ }, ka = ["id", "type", "value", "disabled", "readonly", "required", "min", "max", "aria-invalid", "aria-describedby"], Sa = ["id"], xa = {
2216
+ key: 2,
2217
+ class: "valid-feedback",
2218
+ style: { display: "block" }
2219
+ }, Va = ["id"], Kl = /* @__PURE__ */ p({
2220
+ __name: "VibeFormDatepicker",
2221
+ props: {
2222
+ modelValue: { type: String, default: "" },
2223
+ id: { type: String, required: !0 },
2224
+ label: { type: String, default: void 0 },
2225
+ disabled: { type: Boolean, default: !1 },
2226
+ readonly: { type: Boolean, default: !1 },
2227
+ required: { type: Boolean, default: !1 },
2228
+ min: { type: String, default: void 0 },
2229
+ max: { type: String, default: void 0 },
2230
+ size: { type: String, default: void 0 },
2231
+ validationState: { type: String, default: null },
2232
+ validationMessage: { type: String, default: void 0 },
2233
+ validationRules: { type: [Array, Function], default: void 0 },
2234
+ validateOn: { type: String, default: "blur" },
2235
+ helpText: { type: String, default: void 0 },
2236
+ type: { type: String, default: "date" }
2237
+ },
2238
+ emits: ["update:modelValue", "validate", "blur", "focus", "input", "change"],
2239
+ setup(e, { emit: o }) {
2240
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2241
+ const b = ["form-control"];
2242
+ return t.size && b.push(`form-control-${t.size}`), a.value === "valid" && b.push("is-valid"), a.value === "invalid" && b.push("is-invalid"), b.join(" ");
2243
+ }), r = (b) => {
2244
+ const g = b.target;
2245
+ i("update:modelValue", g.value), i("input", b), t.validateOn === "input" && i("validate");
2246
+ }, d = (b) => {
2247
+ i("change", b), t.validateOn === "change" && i("validate");
2248
+ }, y = (b) => {
2249
+ i("blur", b), t.validateOn === "blur" && i("validate");
2250
+ }, v = (b) => {
2251
+ i("focus", b);
2252
+ };
2253
+ return (b, g) => (l(), n("div", ga, [
2254
+ e.label ? (l(), n("label", {
2255
+ key: 0,
2256
+ for: e.id,
2257
+ class: "form-label"
2258
+ }, [
2259
+ N(f(e.label) + " ", 1),
2260
+ e.required ? (l(), n("span", $a, "*")) : u("", !0)
2261
+ ], 8, pa)) : u("", !0),
2262
+ m("input", {
2263
+ id: e.id,
2264
+ type: e.type,
2265
+ class: h(s.value),
2266
+ value: e.modelValue,
2267
+ disabled: e.disabled,
2268
+ readonly: e.readonly,
2269
+ required: e.required,
2270
+ min: e.min,
2271
+ max: e.max,
2272
+ "aria-invalid": a.value === "invalid",
2273
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2274
+ onInput: r,
2275
+ onChange: d,
2276
+ onBlur: y,
2277
+ onFocus: v
2278
+ }, null, 42, ka),
2279
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2280
+ key: 1,
2281
+ id: `${e.id}-feedback`,
2282
+ class: "form-text"
2283
+ }, f(e.helpText), 9, Sa)) : u("", !0),
2284
+ a.value === "valid" ? (l(), n("div", xa, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2285
+ a.value === "invalid" ? (l(), n("div", {
2286
+ key: 3,
2287
+ id: `${e.id}-feedback`,
2288
+ class: "invalid-feedback",
2289
+ style: { display: "block" }
2290
+ }, f(e.validationMessage || "Please provide a valid date."), 9, Va)) : u("", !0)
2291
+ ]));
2292
+ }
2293
+ }), Ca = ["id", "checked", "value", "disabled", "required", "indeterminate", "aria-invalid", "aria-describedby"], Ba = ["for"], wa = {
2294
+ key: 0,
2295
+ class: "text-danger"
2296
+ }, Na = ["id"], Ta = {
2297
+ key: 2,
2298
+ class: "valid-feedback",
2299
+ style: { display: "block" }
2300
+ }, Ma = ["id"], Wl = /* @__PURE__ */ p({
2301
+ __name: "VibeFormCheckbox",
2302
+ props: {
2303
+ modelValue: { type: [Boolean, Array], default: !1 },
2304
+ id: { type: String, required: !0 },
2305
+ label: { type: String, default: void 0 },
2306
+ value: { type: [String, Number, Boolean], default: !0 },
2307
+ disabled: { type: Boolean, default: !1 },
2308
+ required: { type: Boolean, default: !1 },
2309
+ inline: { type: Boolean, default: !1 },
2310
+ validationState: { type: String, default: null },
2311
+ validationMessage: { type: String, default: void 0 },
2312
+ validationRules: { type: [Array, Function], default: void 0 },
2313
+ validateOn: { type: String, default: "blur" },
2314
+ helpText: { type: String, default: void 0 },
2315
+ indeterminate: { type: Boolean, default: !1 }
2316
+ },
2317
+ emits: ["update:modelValue", "validate", "blur", "focus", "change"],
2318
+ setup(e, { emit: o }) {
2319
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2320
+ const g = ["form-check-input"];
2321
+ return a.value === "valid" && g.push("is-valid"), a.value === "invalid" && g.push("is-invalid"), g.join(" ");
2322
+ }), r = c(() => {
2323
+ const g = ["form-check"];
2324
+ return t.inline && g.push("form-check-inline"), g.join(" ");
2325
+ }), d = c(() => Array.isArray(t.modelValue) ? t.modelValue.includes(t.value) : t.modelValue === t.value || t.modelValue === !0), y = (g) => {
2326
+ const S = g.target;
2327
+ let M;
2328
+ if (Array.isArray(t.modelValue))
2329
+ if (M = [...t.modelValue], S.checked)
2330
+ M.includes(t.value) || M.push(t.value);
2331
+ else {
2332
+ const j = M.indexOf(t.value);
2333
+ j > -1 && M.splice(j, 1);
2334
+ }
2335
+ else
2336
+ M = S.checked;
2337
+ i("update:modelValue", M), i("change", g), t.validateOn === "change" && i("validate");
2338
+ }, v = (g) => {
2339
+ i("blur", g), t.validateOn === "blur" && i("validate");
2340
+ }, b = (g) => {
2341
+ i("focus", g);
2342
+ };
2343
+ return (g, S) => (l(), n("div", {
2344
+ class: h(r.value)
2345
+ }, [
2346
+ m("input", {
2347
+ id: e.id,
2348
+ type: "checkbox",
2349
+ class: h(s.value),
2350
+ checked: d.value,
2351
+ value: e.value,
2352
+ disabled: e.disabled,
2353
+ required: e.required,
2354
+ indeterminate: e.indeterminate,
2355
+ "aria-invalid": a.value === "invalid",
2356
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2357
+ onChange: y,
2358
+ onBlur: v,
2359
+ onFocus: b
2360
+ }, null, 42, Ca),
2361
+ e.label ? (l(), n("label", {
2362
+ key: 0,
2363
+ for: e.id,
2364
+ class: "form-check-label"
2365
+ }, [
2366
+ N(f(e.label) + " ", 1),
2367
+ e.required ? (l(), n("span", wa, "*")) : u("", !0)
2368
+ ], 8, Ba)) : u("", !0),
2369
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2370
+ key: 1,
2371
+ id: `${e.id}-feedback`,
2372
+ class: "form-text"
2373
+ }, f(e.helpText), 9, Na)) : u("", !0),
2374
+ a.value === "valid" ? (l(), n("div", Ta, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2375
+ a.value === "invalid" ? (l(), n("div", {
2376
+ key: 3,
2377
+ id: `${e.id}-feedback`,
2378
+ class: "invalid-feedback",
2379
+ style: { display: "block" }
2380
+ }, f(e.validationMessage || "You must check this box."), 9, Ma)) : u("", !0)
2381
+ ], 2));
2382
+ }
2383
+ }), qa = ["id", "checked", "value", "name", "disabled", "required", "aria-invalid", "aria-describedby"], Pa = ["for"], za = {
2384
+ key: 0,
2385
+ class: "text-danger"
2386
+ }, Ia = ["id"], Fa = {
2387
+ key: 2,
2388
+ class: "valid-feedback",
2389
+ style: { display: "block" }
2390
+ }, ja = ["id"], Jl = /* @__PURE__ */ p({
2391
+ __name: "VibeFormRadio",
2392
+ props: {
2393
+ modelValue: { type: [String, Number, Boolean], default: void 0 },
2394
+ id: { type: String, required: !0 },
2395
+ label: { type: String, default: void 0 },
2396
+ value: { type: [String, Number, Boolean], required: !0 },
2397
+ name: { type: String, required: !0 },
2398
+ disabled: { type: Boolean, default: !1 },
2399
+ required: { type: Boolean, default: !1 },
2400
+ inline: { type: Boolean, default: !1 },
2401
+ validationState: { type: String, default: null },
2402
+ validationMessage: { type: String, default: void 0 },
2403
+ validationRules: { type: [Array, Function], default: void 0 },
2404
+ validateOn: { type: String, default: "blur" },
2405
+ helpText: { type: String, default: void 0 }
2406
+ },
2407
+ emits: ["update:modelValue", "validate", "blur", "focus", "change"],
2408
+ setup(e, { emit: o }) {
2409
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2410
+ const g = ["form-check-input"];
2411
+ return a.value === "valid" && g.push("is-valid"), a.value === "invalid" && g.push("is-invalid"), g.join(" ");
2412
+ }), r = c(() => {
2413
+ const g = ["form-check"];
2414
+ return t.inline && g.push("form-check-inline"), g.join(" ");
2415
+ }), d = c(() => t.modelValue === t.value), y = (g) => {
2416
+ g.target.checked && i("update:modelValue", t.value), i("change", g), t.validateOn === "change" && i("validate");
2417
+ }, v = (g) => {
2418
+ i("blur", g), t.validateOn === "blur" && i("validate");
2419
+ }, b = (g) => {
2420
+ i("focus", g);
2421
+ };
2422
+ return (g, S) => (l(), n("div", {
2423
+ class: h(r.value)
2424
+ }, [
2425
+ m("input", {
2426
+ id: e.id,
2427
+ type: "radio",
2428
+ class: h(s.value),
2429
+ checked: d.value,
2430
+ value: e.value,
2431
+ name: e.name,
2432
+ disabled: e.disabled,
2433
+ required: e.required,
2434
+ "aria-invalid": a.value === "invalid",
2435
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2436
+ onChange: y,
2437
+ onBlur: v,
2438
+ onFocus: b
2439
+ }, null, 42, qa),
2440
+ e.label ? (l(), n("label", {
2441
+ key: 0,
2442
+ for: e.id,
2443
+ class: "form-check-label"
2444
+ }, [
2445
+ N(f(e.label) + " ", 1),
2446
+ e.required ? (l(), n("span", za, "*")) : u("", !0)
2447
+ ], 8, Pa)) : u("", !0),
2448
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2449
+ key: 1,
2450
+ id: `${e.id}-feedback`,
2451
+ class: "form-text"
2452
+ }, f(e.helpText), 9, Ia)) : u("", !0),
2453
+ a.value === "valid" ? (l(), n("div", Fa, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2454
+ a.value === "invalid" ? (l(), n("div", {
2455
+ key: 3,
2456
+ id: `${e.id}-feedback`,
2457
+ class: "invalid-feedback",
2458
+ style: { display: "block" }
2459
+ }, f(e.validationMessage || "Please select an option."), 9, ja)) : u("", !0)
2460
+ ], 2));
2461
+ }
2462
+ }), Aa = { class: "form-check form-switch" }, La = ["id", "checked", "disabled", "required", "aria-invalid", "aria-describedby"], Oa = ["for"], Xa = {
2463
+ key: 0,
2464
+ class: "text-danger"
2465
+ }, Da = ["id"], Ra = {
2466
+ key: 2,
2467
+ class: "valid-feedback",
2468
+ style: { display: "block" }
2469
+ }, Ea = ["id"], Zl = /* @__PURE__ */ p({
2470
+ __name: "VibeFormSwitch",
2471
+ props: {
2472
+ modelValue: { type: Boolean, default: !1 },
2473
+ id: { type: String, required: !0 },
2474
+ label: { type: String, default: void 0 },
2475
+ disabled: { type: Boolean, default: !1 },
2476
+ required: { type: Boolean, default: !1 },
2477
+ validationState: { type: String, default: null },
2478
+ validationMessage: { type: String, default: void 0 },
2479
+ validationRules: { type: [Array, Function], default: void 0 },
2480
+ validateOn: { type: String, default: "blur" },
2481
+ helpText: { type: String, default: void 0 }
2482
+ },
2483
+ emits: ["update:modelValue", "validate", "blur", "focus", "change"],
2484
+ setup(e, { emit: o }) {
2485
+ const t = e, i = o, a = c(() => t.validationState), s = c(() => {
2486
+ const v = ["form-check-input"];
2487
+ return a.value === "valid" && v.push("is-valid"), a.value === "invalid" && v.push("is-invalid"), v.join(" ");
2488
+ }), r = (v) => {
2489
+ const b = v.target;
2490
+ i("update:modelValue", b.checked), i("change", v), t.validateOn === "change" && i("validate");
2491
+ }, d = (v) => {
2492
+ i("blur", v), t.validateOn === "blur" && i("validate");
2493
+ }, y = (v) => {
2494
+ i("focus", v);
2495
+ };
2496
+ return (v, b) => (l(), n("div", Aa, [
2497
+ m("input", {
2498
+ id: e.id,
2499
+ type: "checkbox",
2500
+ class: h(s.value),
2501
+ checked: e.modelValue,
2502
+ disabled: e.disabled,
2503
+ required: e.required,
2504
+ "aria-invalid": a.value === "invalid",
2505
+ "aria-describedby": e.validationMessage || e.helpText ? `${e.id}-feedback` : void 0,
2506
+ role: "switch",
2507
+ onChange: r,
2508
+ onBlur: d,
2509
+ onFocus: y
2510
+ }, null, 42, La),
2511
+ e.label ? (l(), n("label", {
2512
+ key: 0,
2513
+ for: e.id,
2514
+ class: "form-check-label"
2515
+ }, [
2516
+ N(f(e.label) + " ", 1),
2517
+ e.required ? (l(), n("span", Xa, "*")) : u("", !0)
2518
+ ], 8, Oa)) : u("", !0),
2519
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2520
+ key: 1,
2521
+ id: `${e.id}-feedback`,
2522
+ class: "form-text"
2523
+ }, f(e.helpText), 9, Da)) : u("", !0),
2524
+ a.value === "valid" ? (l(), n("div", Ra, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2525
+ a.value === "invalid" ? (l(), n("div", {
2526
+ key: 3,
2527
+ id: `${e.id}-feedback`,
2528
+ class: "invalid-feedback",
2529
+ style: { display: "block" }
2530
+ }, f(e.validationMessage || "You must toggle this switch."), 9, Ea)) : u("", !0)
2531
+ ]));
2532
+ }
2533
+ }), Ya = ["for"], Ga = {
2534
+ key: 0,
2535
+ class: "text-danger"
2536
+ }, Ha = ["id"], Ua = {
2537
+ key: 1,
2538
+ class: "valid-feedback",
2539
+ style: { display: "block" }
2540
+ }, Qa = ["id"], Ka = ["for"], Wa = {
2541
+ key: 0,
2542
+ class: "text-danger"
2543
+ }, Ja = ["id"], Za = {
2544
+ key: 2,
2545
+ class: "valid-feedback",
2546
+ style: { display: "block" }
2547
+ }, _a = ["id"], _l = /* @__PURE__ */ p({
2548
+ __name: "VibeFormGroup",
2549
+ props: {
2550
+ label: { type: String, default: void 0 },
2551
+ labelFor: { type: String, default: void 0 },
2552
+ required: { type: Boolean, default: !1 },
2553
+ validationState: { type: String, default: null },
2554
+ validationMessage: { type: String, default: void 0 },
2555
+ helpText: { type: String, default: void 0 },
2556
+ floating: { type: Boolean, default: !1 },
2557
+ row: { type: Boolean, default: !1 },
2558
+ labelCols: { type: [Number, String], default: void 0 },
2559
+ labelAlign: { type: String, default: void 0 }
2560
+ },
2561
+ setup(e) {
2562
+ const o = e, t = c(() => {
2563
+ const r = [];
2564
+ return o.floating ? r.push("form-floating") : o.row ? r.push("row", "mb-3") : r.push("mb-3"), r.join(" ");
2565
+ }), i = c(() => {
2566
+ const r = [];
2567
+ return o.floating ? r.push("form-label") : o.row ? (r.push("col-form-label"), o.labelCols && r.push(`col-sm-${o.labelCols}`), o.labelAlign && r.push(`text-${o.labelAlign}`)) : r.push("form-label"), r.join(" ");
2568
+ }), a = c(() => o.row && o.labelCols ? `col-sm-${12 - Number(o.labelCols)}` : ""), s = c(() => o.labelFor ? `${o.labelFor}-feedback` : void 0);
2569
+ return (r, d) => (l(), n("div", {
2570
+ class: h(t.value)
2571
+ }, [
2572
+ e.label && !e.floating ? (l(), n("label", {
2573
+ key: 0,
2574
+ for: e.labelFor,
2575
+ class: h(i.value)
2576
+ }, [
2577
+ N(f(e.label) + " ", 1),
2578
+ e.required ? (l(), n("span", Ga, "*")) : u("", !0)
2579
+ ], 10, Ya)) : u("", !0),
2580
+ e.row && e.labelCols ? (l(), n("div", {
2581
+ key: 1,
2582
+ class: h(a.value)
2583
+ }, [
2584
+ $(r.$slots, "default"),
2585
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2586
+ key: 0,
2587
+ id: s.value,
2588
+ class: "form-text"
2589
+ }, f(e.helpText), 9, Ha)) : u("", !0),
2590
+ e.validationState === "valid" ? (l(), n("div", Ua, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2591
+ e.validationState === "invalid" ? (l(), n("div", {
2592
+ key: 2,
2593
+ id: s.value,
2594
+ class: "invalid-feedback",
2595
+ style: { display: "block" }
2596
+ }, f(e.validationMessage || "Please provide a valid value."), 9, Qa)) : u("", !0)
2597
+ ], 2)) : (l(), n(P, { key: 2 }, [
2598
+ $(r.$slots, "default"),
2599
+ e.label && e.floating ? (l(), n("label", {
2600
+ key: 0,
2601
+ for: e.labelFor,
2602
+ class: h(i.value)
2603
+ }, [
2604
+ N(f(e.label) + " ", 1),
2605
+ e.required ? (l(), n("span", Wa, "*")) : u("", !0)
2606
+ ], 10, Ka)) : u("", !0),
2607
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2608
+ key: 1,
2609
+ id: s.value,
2610
+ class: "form-text"
2611
+ }, f(e.helpText), 9, Ja)) : u("", !0),
2612
+ e.validationState === "valid" ? (l(), n("div", Za, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2613
+ e.validationState === "invalid" ? (l(), n("div", {
2614
+ key: 3,
2615
+ id: s.value,
2616
+ class: "invalid-feedback",
2617
+ style: { display: "block" }
2618
+ }, f(e.validationMessage || "Please provide a valid value."), 9, _a)) : u("", !0)
2619
+ ], 64))
2620
+ ], 2));
2621
+ }
2622
+ }), el = { class: "mb-3" }, tl = ["for"], al = {
2623
+ key: 0,
2624
+ class: "text-danger"
2625
+ }, ll = {
2626
+ key: 1,
2627
+ class: "alert alert-warning",
2628
+ role: "alert"
2629
+ }, il = ["id"], sl = ["id"], nl = {
2630
+ key: 4,
2631
+ class: "valid-feedback",
2632
+ style: { display: "block" }
2633
+ }, dl = ["id"], ol = /* @__PURE__ */ p({
2634
+ __name: "VibeFormWysiwyg",
2635
+ props: {
2636
+ modelValue: { type: String, default: "" },
2637
+ id: { type: String, required: !0 },
2638
+ label: { type: String, default: void 0 },
2639
+ placeholder: { type: String, default: "Write something..." },
2640
+ disabled: { type: Boolean, default: !1 },
2641
+ readonly: { type: Boolean, default: !1 },
2642
+ required: { type: Boolean, default: !1 },
2643
+ theme: { type: String, default: "snow" },
2644
+ toolbar: { type: [Array, String, Boolean], default: void 0 },
2645
+ validationState: { type: String, default: null },
2646
+ validationMessage: { type: String, default: void 0 },
2647
+ validationRules: { type: [Array, Function], default: void 0 },
2648
+ validateOn: { type: String, default: "blur" },
2649
+ helpText: { type: String, default: void 0 },
2650
+ height: { type: String, default: "200px" }
2651
+ },
2652
+ emits: ["update:modelValue", "validate", "blur", "focus", "change", "ready"],
2653
+ setup(e, { emit: o }) {
2654
+ const t = e, i = o, a = z(null), s = z(null), r = z(!1), d = z(null), y = c(() => t.validationState), v = c(() => {
2655
+ const S = ["vibe-wysiwyg-container"];
2656
+ return y.value === "valid" && S.push("is-valid"), y.value === "invalid" && S.push("is-invalid"), t.disabled && S.push("disabled"), S.join(" ");
2657
+ }), b = [
2658
+ [{ header: [1, 2, 3, !1] }],
2659
+ ["bold", "italic", "underline", "strike"],
2660
+ [{ list: "ordered" }, { list: "bullet" }],
2661
+ [{ color: [] }, { background: [] }],
2662
+ ["link", "image"],
2663
+ ["clean"]
2664
+ ], g = () => t.toolbar === !1 ? !1 : t.toolbar === !0 || t.toolbar === void 0 ? b : t.toolbar;
2665
+ return oe(async () => {
2666
+ try {
2667
+ const S = await import("quill"), M = S.default || S;
2668
+ if (await import("quill/dist/quill.snow.css"), a.value) {
2669
+ const j = {
2670
+ theme: t.theme,
2671
+ placeholder: t.placeholder,
2672
+ readOnly: t.readonly || t.disabled,
2673
+ modules: {
2674
+ toolbar: g()
2675
+ }
2676
+ };
2677
+ s.value = new M(a.value, j), t.modelValue && (s.value.root.innerHTML = t.modelValue), s.value.on("text-change", () => {
2678
+ const B = s.value.root.innerHTML, q = s.value.getText().trim().length === 0;
2679
+ i("update:modelValue", q ? "" : B), i("change"), t.validateOn === "change" && i("validate");
2680
+ }), s.value.root.addEventListener("blur", () => {
2681
+ i("blur"), t.validateOn === "blur" && i("validate");
2682
+ }), s.value.root.addEventListener("focus", () => {
2683
+ i("focus");
2684
+ }), r.value = !0, i("ready", s.value);
2685
+ }
2686
+ } catch (S) {
2687
+ console.error("Failed to load Quill editor:", S), d.value = "Failed to load WYSIWYG editor. Please install quill: npm install quill", r.value = !1;
2688
+ }
2689
+ }), re(() => {
2690
+ s.value && (s.value = null);
2691
+ }), O(() => t.modelValue, (S) => {
2692
+ s.value && s.value.root.innerHTML !== S && (s.value.root.innerHTML = S || "");
2693
+ }), O(() => t.disabled, (S) => {
2694
+ s.value && s.value.enable(!S);
2695
+ }), O(() => t.readonly, (S) => {
2696
+ s.value && s.value.enable(!S);
2697
+ }), (S, M) => (l(), n("div", el, [
2698
+ e.label ? (l(), n("label", {
2699
+ key: 0,
2700
+ for: e.id,
2701
+ class: "form-label"
2702
+ }, [
2703
+ N(f(e.label) + " ", 1),
2704
+ e.required ? (l(), n("span", al, "*")) : u("", !0)
2705
+ ], 8, tl)) : u("", !0),
2706
+ d.value ? (l(), n("div", ll, f(d.value), 1)) : (l(), n("div", {
2707
+ key: 2,
2708
+ class: h(v.value),
2709
+ style: R({ minHeight: e.height })
2710
+ }, [
2711
+ m("div", {
2712
+ ref_key: "editorContainer",
2713
+ ref: a,
2714
+ id: e.id
2715
+ }, null, 8, il)
2716
+ ], 6)),
2717
+ e.helpText && !e.validationMessage ? (l(), n("div", {
2718
+ key: 3,
2719
+ id: `${e.id}-feedback`,
2720
+ class: "form-text"
2721
+ }, f(e.helpText), 9, sl)) : u("", !0),
2722
+ y.value === "valid" ? (l(), n("div", nl, f(e.validationMessage || "Looks good!"), 1)) : u("", !0),
2723
+ y.value === "invalid" ? (l(), n("div", {
2724
+ key: 5,
2725
+ id: `${e.id}-feedback`,
2726
+ class: "invalid-feedback",
2727
+ style: { display: "block" }
2728
+ }, f(e.validationMessage || "Please provide valid content."), 9, dl)) : u("", !0)
2729
+ ]));
2730
+ }
2731
+ }), ei = /* @__PURE__ */ U(ol, [["__scopeId", "data-v-2eb8f4ff"]]);
2732
+ function ti(e = "") {
2733
+ const o = z(e), t = z(null), i = z(""), a = z(!1), s = z(!1), r = z(!1), d = async (M) => {
2734
+ if (!M)
2735
+ return t.value = null, i.value = "", { valid: !0 };
2736
+ r.value = !0;
2737
+ try {
2738
+ const j = Array.isArray(M) ? M : [{ validator: M }];
2739
+ for (const B of j) {
2740
+ const q = await B.validator(o.value);
2741
+ if (q === !1 || typeof q == "string")
2742
+ return t.value = "invalid", i.value = typeof q == "string" ? q : B.message || "Invalid value", r.value = !1, { valid: !1, message: i.value };
2743
+ }
2744
+ return t.value = "valid", i.value = "", r.value = !1, { valid: !0 };
2745
+ } catch {
2746
+ return t.value = "invalid", i.value = "Validation error occurred", r.value = !1, { valid: !1, message: i.value };
2747
+ }
2748
+ }, y = () => {
2749
+ o.value = e, t.value = null, i.value = "", a.value = !1, s.value = !1, r.value = !1;
2750
+ }, v = () => {
2751
+ s.value = !0;
2752
+ }, b = () => {
2753
+ a.value = !0;
2754
+ }, g = c(() => t.value === "valid"), S = c(() => t.value === "invalid");
2755
+ return {
2756
+ value: o,
2757
+ validationState: t,
2758
+ validationMessage: i,
2759
+ isDirty: a,
2760
+ isTouched: s,
2761
+ isValidating: r,
2762
+ isValid: g,
2763
+ isInvalid: S,
2764
+ validate: d,
2765
+ reset: y,
2766
+ markAsTouched: v,
2767
+ markAsDirty: b
2768
+ };
2769
+ }
2770
+ const ai = {
2771
+ required: (e = "This field is required") => ({
2772
+ validator: (o) => Array.isArray(o) ? o.length > 0 || e : typeof o == "string" ? o.trim().length > 0 || e : o != null && o !== "" || e,
2773
+ message: e
2774
+ }),
2775
+ email: (e = "Please enter a valid email address") => ({
2776
+ validator: (o) => o ? /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o) || e : !0,
2777
+ message: e
2778
+ }),
2779
+ minLength: (e, o) => ({
2780
+ validator: (t) => t ? t.length >= e || o || `Minimum length is ${e} characters` : !0,
2781
+ message: o
2782
+ }),
2783
+ maxLength: (e, o) => ({
2784
+ validator: (t) => t ? t.length <= e || o || `Maximum length is ${e} characters` : !0,
2785
+ message: o
2786
+ }),
2787
+ min: (e, o) => ({
2788
+ validator: (t) => t == null || t === "" ? !0 : Number(t) >= e || o || `Minimum value is ${e}`,
2789
+ message: o
2790
+ }),
2791
+ max: (e, o) => ({
2792
+ validator: (t) => t == null || t === "" ? !0 : Number(t) <= e || o || `Maximum value is ${e}`,
2793
+ message: o
2794
+ }),
2795
+ pattern: (e, o = "Invalid format") => ({
2796
+ validator: (t) => t ? e.test(t) || o : !0,
2797
+ message: o
2798
+ }),
2799
+ url: (e = "Please enter a valid URL") => ({
2800
+ validator: (o) => {
2801
+ if (!o) return !0;
2802
+ try {
2803
+ return new URL(o), !0;
2804
+ } catch {
2805
+ return e;
2806
+ }
2807
+ },
2808
+ message: e
2809
+ }),
2810
+ // Async validator example for API validation
2811
+ async: (e) => ({
2812
+ validator: e
2813
+ })
2814
+ };
1601
2815
  export {
1602
- ta as VibeAccordion,
1603
- Ne as VibeAccordionItem,
1604
- Lt as VibeAlert,
1605
- qt as VibeBadge,
1606
- Ht as VibeBreadcrumb,
1607
- ye as VibeBreadcrumbItem,
1608
- Ot as VibeButton,
1609
- Mt as VibeButtonGroup,
1610
- Rt as VibeCard,
1611
- ce as VibeCardBody,
1612
- fe as VibeCardFooter,
1613
- ue as VibeCardHeader,
1614
- U as VibeCardImg,
1615
- ve as VibeCardText,
1616
- me as VibeCardTitle,
1617
- na as VibeCarousel,
1618
- tt as VibeCarouselSlide,
1619
- Ft as VibeCloseButton,
1620
- aa as VibeCollapse,
1621
- ca as VibeDataTable,
1622
- sa as VibeDropdown,
1623
- ze as VibeDropdownItem,
1624
- Yt as VibeListGroup,
2816
+ zl as VibeAccordion,
2817
+ ze as VibeAccordionItem,
2818
+ ul as VibeAlert,
2819
+ cl as VibeBadge,
2820
+ kl as VibeBreadcrumb,
2821
+ $e as VibeBreadcrumbItem,
2822
+ fl as VibeButton,
2823
+ vl as VibeButtonGroup,
2824
+ $l as VibeCard,
2825
+ be as VibeCardBody,
2826
+ me as VibeCardFooter,
2827
+ ve as VibeCardHeader,
2828
+ K as VibeCardImg,
2829
+ ge as VibeCardText,
2830
+ he as VibeCardTitle,
2831
+ Ol as VibeCarousel,
2832
+ it as VibeCarouselSlide,
2833
+ bl as VibeCloseButton,
2834
+ pl as VibeCol,
2835
+ Il as VibeCollapse,
2836
+ hl as VibeContainer,
2837
+ Yl as VibeDataTable,
2838
+ Fl as VibeDropdown,
2839
+ je as VibeDropdownItem,
2840
+ Wl as VibeFormCheckbox,
2841
+ Kl as VibeFormDatepicker,
2842
+ _l as VibeFormGroup,
2843
+ Gl as VibeFormInput,
2844
+ Jl as VibeFormRadio,
2845
+ Hl as VibeFormSelect,
2846
+ Ql as VibeFormSpinbutton,
2847
+ Zl as VibeFormSwitch,
2848
+ Ul as VibeFormTextarea,
2849
+ ei as VibeFormWysiwyg,
2850
+ El as VibeIcon,
2851
+ Ml as VibeListGroup,
1625
2852
  Be as VibeListGroupItem,
1626
- la as VibeModal,
1627
- Qt as VibeNav,
1628
- K as VibeNavItem,
1629
- Ut as VibeNavbar,
1630
- Kt as VibeNavbarBrand,
1631
- Wt as VibeNavbarNav,
1632
- Jt as VibeNavbarToggle,
1633
- ra as VibeOffcanvas,
1634
- Xt as VibePagination,
1635
- E as VibePaginationItem,
1636
- Gt as VibePlaceholder,
1637
- da as VibePopover,
1638
- Zt as VibeProgress,
1639
- ea as VibeProgressBar,
1640
- ua as VibeScrollspy,
1641
- Et as VibeSpinner,
1642
- ia as VibeToast,
1643
- oa as VibeTooltip
2853
+ jl as VibeModal,
2854
+ Sl as VibeNav,
2855
+ W as VibeNavItem,
2856
+ xl as VibeNavbar,
2857
+ Vl as VibeNavbarBrand,
2858
+ Bl as VibeNavbarNav,
2859
+ Cl as VibeNavbarToggle,
2860
+ Al as VibeOffcanvas,
2861
+ wl as VibePagination,
2862
+ H as VibePaginationItem,
2863
+ yl as VibePlaceholder,
2864
+ Dl as VibePopover,
2865
+ ql as VibeProgress,
2866
+ Pl as VibeProgressBar,
2867
+ gl as VibeRow,
2868
+ Rl as VibeScrollspy,
2869
+ ml as VibeSpinner,
2870
+ Nl as VibeTabContent,
2871
+ Tl as VibeTabPane,
2872
+ Ll as VibeToast,
2873
+ Xl as VibeTooltip,
2874
+ ti as useFormValidation,
2875
+ ai as validators
1644
2876
  };