cisse-vue-ui 0.5.33 → 0.6.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 (84) hide show
  1. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js +99 -0
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js.map +1 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs +98 -0
  4. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs.map +1 -0
  5. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs} +2 -2
  6. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs.map} +1 -1
  7. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js} +2 -2
  8. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js.map} +1 -1
  9. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js → FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js} +411 -136
  10. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js.map +1 -0
  11. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs} +398 -123
  12. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs.map +1 -0
  13. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs → FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs} +404 -165
  14. package/dist/FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs.map +1 -0
  15. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js → FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js} +405 -166
  16. package/dist/FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js.map +1 -0
  17. package/dist/{Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js → ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js} +7 -102
  18. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +1 -0
  19. package/dist/{Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs → ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs} +6 -101
  20. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +1 -0
  21. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js → PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js} +244 -97
  22. package/dist/PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js.map +1 -0
  23. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs → PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs} +241 -94
  24. package/dist/PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs.map +1 -0
  25. package/dist/components/core/FilterTabs.stories.d.ts +14 -0
  26. package/dist/components/core/FilterTabs.test.d.ts +1 -0
  27. package/dist/components/core/FilterTabs.vue.d.ts +29 -0
  28. package/dist/components/core/StatsCard.stories.d.ts +15 -0
  29. package/dist/components/core/StatsCard.test.d.ts +1 -0
  30. package/dist/components/core/StatsCard.vue.d.ts +44 -0
  31. package/dist/components/core/StatsGrid.stories.d.ts +12 -0
  32. package/dist/components/core/StatsGrid.test.d.ts +1 -0
  33. package/dist/components/core/StatsGrid.vue.d.ts +16 -0
  34. package/dist/components/core/index.cjs +24 -21
  35. package/dist/components/core/index.cjs.map +1 -1
  36. package/dist/components/core/index.d.ts +5 -0
  37. package/dist/components/core/index.js +5 -2
  38. package/dist/components/feedback/index.cjs +5 -5
  39. package/dist/components/feedback/index.js +5 -5
  40. package/dist/components/form/FormActions.stories.d.ts +18 -0
  41. package/dist/components/form/FormActions.test.d.ts +1 -0
  42. package/dist/components/form/FormActions.vue.d.ts +56 -0
  43. package/dist/components/form/FormInput.vue.d.ts +1 -1
  44. package/dist/components/form/FormSection.stories.d.ts +13 -0
  45. package/dist/components/form/FormSection.test.d.ts +1 -0
  46. package/dist/components/form/FormSection.vue.d.ts +49 -0
  47. package/dist/components/form/index.cjs +18 -16
  48. package/dist/components/form/index.cjs.map +1 -1
  49. package/dist/components/form/index.d.ts +2 -0
  50. package/dist/components/form/index.js +3 -1
  51. package/dist/components/index.cjs +52 -45
  52. package/dist/components/index.cjs.map +1 -1
  53. package/dist/components/index.js +22 -15
  54. package/dist/components/index.js.map +1 -1
  55. package/dist/components/layout/PageHero.stories.d.ts +11 -0
  56. package/dist/components/layout/PageHero.test.d.ts +1 -0
  57. package/dist/components/layout/PageHero.vue.d.ts +51 -0
  58. package/dist/components/layout/index.cjs +5 -4
  59. package/dist/components/layout/index.cjs.map +1 -1
  60. package/dist/components/layout/index.d.ts +2 -0
  61. package/dist/components/layout/index.js +2 -1
  62. package/dist/index-6hQQcCpF.js +84 -0
  63. package/dist/index-6hQQcCpF.js.map +1 -0
  64. package/dist/index-Bp7Mpfbi.cjs +83 -0
  65. package/dist/index-Bp7Mpfbi.cjs.map +1 -0
  66. package/dist/index.cjs +53 -46
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.js +33 -26
  69. package/dist/index.js.map +1 -1
  70. package/dist/style.css +1 -1
  71. package/dist/types/form.d.ts +4 -0
  72. package/package.json +1 -1
  73. package/dist/Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js.map +0 -1
  74. package/dist/Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs.map +0 -1
  75. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js.map +0 -1
  76. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs.map +0 -1
  77. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js.map +0 -1
  78. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs.map +0 -1
  79. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs.map +0 -1
  80. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js.map +0 -1
  81. package/dist/index-BBUxkeI7.js +0 -77
  82. package/dist/index-BBUxkeI7.js.map +0 -1
  83. package/dist/index-BlwU8BWn.cjs +0 -76
  84. package/dist/index-BlwU8BWn.cjs.map +0 -1
@@ -5,8 +5,9 @@ const vue$1 = require("@iconify/vue");
5
5
  const useDropdown = require("./useDropdown-DHFnd259.cjs");
6
6
  const _pluginVue_exportHelper = require("./_plugin-vue_export-helper-DM9IkUGy.cjs");
7
7
  const index = require("./index-D1x3TH9k.cjs");
8
- const _hoisted_1$e = ["data-error", "for"];
9
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
8
+ const Button_vue_vue_type_script_setup_true_lang = require("./Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs");
9
+ const _hoisted_1$g = ["data-error", "for"];
10
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
10
11
  __name: "FormLabel",
11
12
  props: {
12
13
  error: { type: [String, Boolean] },
@@ -20,12 +21,12 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
20
21
  class: "block text-sm font-medium text-gray-700 data-[error=true]:text-red-500 dark:text-gray-300"
21
22
  }, [
22
23
  vue.renderSlot(_ctx.$slots, "default")
23
- ], 8, _hoisted_1$e);
24
+ ], 8, _hoisted_1$g);
24
25
  };
25
26
  }
26
27
  });
27
- const _hoisted_1$d = ["id", "data-error", "role", "aria-live"];
28
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
28
+ const _hoisted_1$f = ["id", "data-error", "role", "aria-live"];
29
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
29
30
  __name: "FormHelp",
30
31
  props: {
31
32
  id: {},
@@ -44,12 +45,18 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
44
45
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
45
46
  vue.createTextVNode(vue.toDisplayString(__props.text ?? ""), 1)
46
47
  ])
47
- ], 8, _hoisted_1$d);
48
+ ], 8, _hoisted_1$f);
48
49
  };
49
50
  }
50
51
  });
51
- const _hoisted_1$c = ["id", "disabled", "name", "placeholder", "type", "required", "aria-invalid", "aria-required", "aria-describedby"];
52
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
52
+ const _hoisted_1$e = {
53
+ key: 0,
54
+ class: "relative"
55
+ };
56
+ const _hoisted_2$c = ["id", "disabled", "name", "placeholder", "type", "required", "aria-invalid", "aria-required", "aria-describedby"];
57
+ const _hoisted_3$b = ["id", "disabled", "name", "placeholder", "type", "required", "aria-invalid", "aria-required", "aria-describedby"];
58
+ const baseInputClass = "block w-full rounded-xl border border-gray-200 bg-gray-50 text-sm text-gray-900 placeholder-gray-400 transition-all focus:border-primary-500 focus:ring-2 focus:ring-primary-500 focus:bg-white focus:outline-hidden disabled:border-gray-200 disabled:bg-gray-100 disabled:text-gray-500 disabled:cursor-not-allowed dark:border-slate-600 dark:bg-slate-700 dark:text-white dark:placeholder-gray-500 dark:focus:border-primary-500 dark:focus:ring-primary-500 dark:focus:bg-slate-600 dark:disabled:bg-slate-800 dark:disabled:text-gray-500";
59
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
53
60
  __name: "FormInput",
54
61
  props: /* @__PURE__ */ vue.mergeModels({
55
62
  type: { default: "text" },
@@ -60,7 +67,9 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
60
67
  id: {},
61
68
  name: {},
62
69
  required: { type: Boolean },
63
- describedBy: {}
70
+ describedBy: {},
71
+ icon: {},
72
+ iconRight: {}
64
73
  }, {
65
74
  "modelValue": {},
66
75
  "modelModifiers": {}
@@ -70,9 +79,41 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
70
79
  const props = __props;
71
80
  const modelValue = vue.useModel(__props, "modelValue");
72
81
  return (_ctx, _cache) => {
73
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", vue.mergeProps({
82
+ return props.icon || props.iconRight ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
83
+ props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
84
+ key: 0,
85
+ icon: props.icon,
86
+ class: "absolute left-3 top-1/2 -translate-y-1/2 size-5 text-gray-400 pointer-events-none"
87
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
88
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
89
+ id: props.id ?? props.name ?? "",
90
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
91
+ disabled: props.disabled,
92
+ name: props.name ?? "",
93
+ placeholder: props.placeholder,
94
+ type: props.type,
95
+ required: props.required,
96
+ "aria-invalid": props.invalid || void 0,
97
+ "aria-required": props.required || void 0,
98
+ "aria-describedby": props.describedBy || void 0,
99
+ class: [
100
+ baseInputClass,
101
+ "py-3",
102
+ props.icon ? "pl-10" : "pl-4",
103
+ props.iconRight ? "pr-10" : "pr-4"
104
+ ]
105
+ }, _ctx.$attrs), null, 16, _hoisted_2$c), [
106
+ [vue.vModelDynamic, modelValue.value]
107
+ ]),
108
+ props.iconRight ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
109
+ key: 1,
110
+ icon: props.iconRight,
111
+ class: "absolute right-3 top-1/2 -translate-y-1/2 size-5 text-gray-400 pointer-events-none"
112
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
113
+ ])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", vue.mergeProps({
114
+ key: 1,
74
115
  id: props.id ?? props.name ?? "",
75
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
116
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event),
76
117
  disabled: props.disabled,
77
118
  name: props.name ?? "",
78
119
  placeholder: props.placeholder,
@@ -81,22 +122,22 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
81
122
  "aria-invalid": props.invalid || void 0,
82
123
  "aria-required": props.required || void 0,
83
124
  "aria-describedby": props.describedBy || void 0,
84
- class: "mt-1 block w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-800 placeholder-gray-400 shadow-sm user-invalid:border-red-500 user-invalid:text-red-600 focus:border-primary focus:ring-1 focus:ring-primary focus:outline-hidden focus:user-invalid:border-red-500 focus:user-invalid:ring-red-500 disabled:border-gray-200 disabled:bg-gray-50 disabled:text-gray-500 disabled:shadow-none dark:border-gray-700 dark:bg-gray-900 dark:text-gray-200 dark:placeholder-gray-500 dark:focus:border-primary dark:focus:ring-primary dark:disabled:border-gray-800 dark:disabled:bg-gray-950 dark:disabled:text-gray-500"
85
- }, _ctx.$attrs), null, 16, _hoisted_1$c)), [
125
+ class: [baseInputClass, "px-4 py-3"]
126
+ }, _ctx.$attrs), null, 16, _hoisted_3$b)), [
86
127
  [vue.vModelDynamic, modelValue.value]
87
128
  ]);
88
129
  };
89
130
  }
90
131
  });
91
- const _hoisted_1$b = { class: "relative" };
92
- const _hoisted_2$a = ["id", "disabled", "aria-expanded", "aria-controls", "aria-invalid", "aria-describedby"];
93
- const _hoisted_3$9 = { class: "flex-1 truncate" };
94
- const _hoisted_4$7 = ["id", "aria-label"];
95
- const _hoisted_5$6 = {
132
+ const _hoisted_1$d = { class: "relative" };
133
+ const _hoisted_2$b = ["id", "disabled", "aria-expanded", "aria-controls", "aria-invalid", "aria-describedby"];
134
+ const _hoisted_3$a = { class: "flex-1 truncate" };
135
+ const _hoisted_4$8 = ["id", "aria-label"];
136
+ const _hoisted_5$7 = {
96
137
  key: 0,
97
138
  class: "sticky top-0 border-b border-gray-200 bg-white p-2 dark:border-gray-700 dark:bg-gray-800"
98
139
  };
99
- const _hoisted_6$6 = { class: "flex items-center gap-2 rounded-md border border-gray-300 bg-gray-50 px-2 py-1.5 dark:border-gray-600 dark:bg-gray-900" };
140
+ const _hoisted_6$7 = { class: "flex items-center gap-2 rounded-md border border-gray-300 bg-gray-50 px-2 py-1.5 dark:border-gray-600 dark:bg-gray-900" };
100
141
  const _hoisted_7$6 = {
101
142
  key: 1,
102
143
  class: "px-4 py-3 text-sm text-gray-500 dark:text-gray-400",
@@ -110,7 +151,7 @@ const _hoisted_10$3 = {
110
151
  "aria-hidden": "true"
111
152
  };
112
153
  const _hoisted_11$3 = { class: "flex-1" };
113
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
154
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
114
155
  __name: "FormSelect",
115
156
  props: /* @__PURE__ */ vue.mergeModels({
116
157
  options: {},
@@ -123,6 +164,8 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
123
164
  name: {},
124
165
  required: { type: Boolean },
125
166
  describedBy: {},
167
+ icon: {},
168
+ iconRight: {},
126
169
  teleport: { type: Boolean, default: true },
127
170
  searchable: { type: Boolean, default: false },
128
171
  noResultsText: { default: "No results found" },
@@ -228,7 +271,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
228
271
  return [base, state, text, props.triggerClass];
229
272
  });
230
273
  return (_ctx, _cache) => {
231
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
274
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
232
275
  vue.createElementVNode("button", {
233
276
  id: triggerId.value,
234
277
  ref_key: "triggerRef",
@@ -248,14 +291,14 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
248
291
  option: selectedOption.value,
249
292
  placeholder: __props.placeholder
250
293
  }, () => [
251
- vue.createElementVNode("span", _hoisted_3$9, vue.toDisplayString(displayValue.value), 1)
294
+ vue.createElementVNode("span", _hoisted_3$a, vue.toDisplayString(displayValue.value), 1)
252
295
  ]),
253
296
  vue.createVNode(vue.unref(vue$1.Icon), {
254
297
  icon: "lucide:chevron-down",
255
298
  class: vue.normalizeClass(["size-4 shrink-0 text-gray-400 transition-transform", vue.unref(isOpen) && "rotate-180"]),
256
299
  "aria-hidden": "true"
257
300
  }, null, 8, ["class"])
258
- ], 42, _hoisted_2$a),
301
+ ], 42, _hoisted_2$b),
259
302
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
260
303
  to: "body",
261
304
  disabled: !__props.teleport
@@ -282,8 +325,8 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
282
325
  !__props.teleport && "absolute mt-1 w-full"
283
326
  ])
284
327
  }, [
285
- __props.searchable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$6, [
286
- vue.createElementVNode("div", _hoisted_6$6, [
328
+ __props.searchable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$7, [
329
+ vue.createElementVNode("div", _hoisted_6$7, [
287
330
  vue.createVNode(vue.unref(vue$1.Icon), {
288
331
  icon: "lucide:search",
289
332
  class: "size-4 text-gray-400",
@@ -337,7 +380,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
337
380
  ], 42, _hoisted_9$3);
338
381
  }), 128))
339
382
  ])
340
- ], 14, _hoisted_4$7)) : vue.createCommentVNode("", true)
383
+ ], 14, _hoisted_4$8)) : vue.createCommentVNode("", true)
341
384
  ]),
342
385
  _: 3
343
386
  })
@@ -346,8 +389,8 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
346
389
  };
347
390
  }
348
391
  });
349
- const _hoisted_1$a = ["hidden"];
350
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
392
+ const _hoisted_1$c = ["hidden"];
393
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
351
394
  __name: "FormGroup",
352
395
  props: /* @__PURE__ */ vue.mergeModels({
353
396
  label: {},
@@ -364,6 +407,8 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
364
407
  name: {},
365
408
  required: { type: Boolean },
366
409
  describedBy: {},
410
+ icon: {},
411
+ iconRight: {},
367
412
  options: {}
368
413
  }, {
369
414
  "modelValue": {},
@@ -386,7 +431,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
386
431
  }, [
387
432
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
388
433
  vue.renderSlot(_ctx.$slots, "label", {}, () => [
389
- __props.label ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
434
+ __props.label ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
390
435
  key: 0,
391
436
  "html-for": inputId.value,
392
437
  error: __props.error
@@ -398,7 +443,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
398
443
  }, 8, ["html-for", "error"])) : vue.createCommentVNode("", true)
399
444
  ]),
400
445
  vue.renderSlot(_ctx.$slots, "input", {}, () => [
401
- isSelect.value ? (vue.openBlock(), vue.createBlock(_sfc_main$b, vue.mergeProps({
446
+ isSelect.value ? (vue.openBlock(), vue.createBlock(_sfc_main$d, vue.mergeProps({
402
447
  key: 0,
403
448
  modelValue: modelValue.value,
404
449
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event)
@@ -406,7 +451,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
406
451
  id: inputId.value,
407
452
  invalid: Boolean(__props.error),
408
453
  "described-by": hasError.value ? helpId.value : void 0
409
- }), null, 16, ["modelValue", "id", "invalid", "described-by"])) : (vue.openBlock(), vue.createBlock(_sfc_main$c, vue.mergeProps({
454
+ }), null, 16, ["modelValue", "id", "invalid", "described-by"])) : (vue.openBlock(), vue.createBlock(_sfc_main$e, vue.mergeProps({
410
455
  key: 1,
411
456
  modelValue: modelValue.value,
412
457
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event)
@@ -416,7 +461,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
416
461
  "described-by": hasError.value ? helpId.value : void 0
417
462
  }), null, 16, ["modelValue", "id", "invalid", "described-by"]))
418
463
  ]),
419
- hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
464
+ hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
420
465
  key: 0,
421
466
  id: helpId.value,
422
467
  error: true
@@ -427,13 +472,13 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
427
472
  _: 1
428
473
  }, 8, ["id"])) : vue.createCommentVNode("", true)
429
474
  ])
430
- ], 12, _hoisted_1$a);
475
+ ], 12, _hoisted_1$c);
431
476
  };
432
477
  }
433
478
  });
434
- const _hoisted_1$9 = { class: "relative" };
435
- const _hoisted_2$9 = ["disabled", "placeholder", "value"];
436
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
479
+ const _hoisted_1$b = { class: "relative" };
480
+ const _hoisted_2$a = ["disabled", "placeholder", "value"];
481
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
437
482
  __name: "SearchInput",
438
483
  props: {
439
484
  modelValue: {},
@@ -449,7 +494,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
449
494
  emit("update:modelValue", target.value);
450
495
  };
451
496
  return (_ctx, _cache) => {
452
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
497
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
453
498
  vue.createVNode(vue.unref(vue$1.Icon), {
454
499
  icon: __props.icon,
455
500
  class: "absolute top-1/2 left-3 size-5 -translate-y-1/2 text-gray-400"
@@ -461,19 +506,19 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
461
506
  class: "focus:border-primary focus:ring-primary w-full rounded-lg border border-gray-300 bg-white py-2 pr-4 pl-10 text-gray-900 placeholder-gray-400 transition-colors disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-500",
462
507
  type: "text",
463
508
  onInput: handleInput
464
- }, null, 40, _hoisted_2$9)
509
+ }, null, 40, _hoisted_2$a)
465
510
  ]);
466
511
  };
467
512
  }
468
513
  });
469
- const _hoisted_1$8 = ["id", "aria-checked", "aria-labelledby", "aria-describedby", "disabled"];
470
- const _hoisted_2$8 = {
514
+ const _hoisted_1$a = ["id", "aria-checked", "aria-labelledby", "aria-describedby", "disabled"];
515
+ const _hoisted_2$9 = {
471
516
  key: 0,
472
517
  class: "flex flex-col"
473
518
  };
474
- const _hoisted_3$8 = ["id"];
475
- const _hoisted_4$6 = ["id"];
476
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
519
+ const _hoisted_3$9 = ["id"];
520
+ const _hoisted_4$7 = ["id"];
521
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
477
522
  __name: "Switch",
478
523
  props: {
479
524
  modelValue: { type: Boolean, default: false },
@@ -537,35 +582,35 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
537
582
  ]),
538
583
  "aria-hidden": "true"
539
584
  }, null, 2)
540
- ], 10, _hoisted_1$8),
541
- __props.label || __props.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
585
+ ], 10, _hoisted_1$a),
586
+ __props.label || __props.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$9, [
542
587
  __props.label ? (vue.openBlock(), vue.createElementBlock("span", {
543
588
  key: 0,
544
589
  id: labelId.value,
545
590
  class: "text-sm font-medium text-gray-900 dark:text-white"
546
- }, vue.toDisplayString(__props.label), 9, _hoisted_3$8)) : vue.createCommentVNode("", true),
591
+ }, vue.toDisplayString(__props.label), 9, _hoisted_3$9)) : vue.createCommentVNode("", true),
547
592
  __props.description ? (vue.openBlock(), vue.createElementBlock("span", {
548
593
  key: 1,
549
594
  id: descriptionId.value,
550
595
  class: "text-sm text-gray-500 dark:text-gray-400"
551
- }, vue.toDisplayString(__props.description), 9, _hoisted_4$6)) : vue.createCommentVNode("", true)
596
+ }, vue.toDisplayString(__props.description), 9, _hoisted_4$7)) : vue.createCommentVNode("", true)
552
597
  ])) : vue.createCommentVNode("", true)
553
598
  ], 2);
554
599
  };
555
600
  }
556
601
  });
557
- const _hoisted_1$7 = { class: "w-full" };
558
- const _hoisted_2$7 = {
602
+ const _hoisted_1$9 = { class: "w-full" };
603
+ const _hoisted_2$8 = {
559
604
  key: 0,
560
605
  class: "mb-2 flex justify-between text-sm"
561
606
  };
562
- const _hoisted_3$7 = { class: "text-gray-600 dark:text-gray-400" };
563
- const _hoisted_4$5 = { class: "font-medium text-gray-900 dark:text-white" };
564
- const _hoisted_5$5 = { class: "text-gray-600 dark:text-gray-400" };
565
- const _hoisted_6$5 = { class: "relative" };
607
+ const _hoisted_3$8 = { class: "text-gray-600 dark:text-gray-400" };
608
+ const _hoisted_4$6 = { class: "font-medium text-gray-900 dark:text-white" };
609
+ const _hoisted_5$6 = { class: "text-gray-600 dark:text-gray-400" };
610
+ const _hoisted_6$6 = { class: "relative" };
566
611
  const _hoisted_7$5 = ["value", "min", "max", "step", "disabled"];
567
612
  const _hoisted_8$4 = { class: "pointer-events-none absolute inset-y-0 left-0 flex items-center" };
568
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
613
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
569
614
  __name: "Slider",
570
615
  props: /* @__PURE__ */ vue.mergeModels({
571
616
  min: { default: 0 },
@@ -596,13 +641,13 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
596
641
  modelValue.value = Number(target.value);
597
642
  };
598
643
  return (_ctx, _cache) => {
599
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
600
- __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [
601
- vue.createElementVNode("span", _hoisted_3$7, vue.toDisplayString(__props.min), 1),
602
- vue.createElementVNode("span", _hoisted_4$5, vue.toDisplayString(displayValue.value), 1),
603
- vue.createElementVNode("span", _hoisted_5$5, vue.toDisplayString(__props.max), 1)
644
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
645
+ __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
646
+ vue.createElementVNode("span", _hoisted_3$8, vue.toDisplayString(__props.min), 1),
647
+ vue.createElementVNode("span", _hoisted_4$6, vue.toDisplayString(displayValue.value), 1),
648
+ vue.createElementVNode("span", _hoisted_5$6, vue.toDisplayString(__props.max), 1)
604
649
  ])) : vue.createCommentVNode("", true),
605
- vue.createElementVNode("div", _hoisted_6$5, [
650
+ vue.createElementVNode("div", _hoisted_6$6, [
606
651
  vue.createElementVNode("input", {
607
652
  type: "range",
608
653
  value: modelValue.value,
@@ -624,13 +669,13 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
624
669
  };
625
670
  }
626
671
  });
627
- const Slider = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$7, [["__scopeId", "data-v-c25e2c2a"]]);
628
- const _hoisted_1$6 = { class: "relative" };
629
- const _hoisted_2$6 = ["id", "disabled", "aria-expanded", "aria-controls"];
630
- const _hoisted_3$6 = { class: "flex-1 truncate" };
631
- const _hoisted_4$4 = { class: "flex items-center gap-1" };
632
- const _hoisted_5$4 = ["id", "aria-label"];
633
- const _hoisted_6$4 = { class: "mb-4 flex items-center justify-between" };
672
+ const Slider = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$9, [["__scopeId", "data-v-c25e2c2a"]]);
673
+ const _hoisted_1$8 = { class: "relative" };
674
+ const _hoisted_2$7 = ["id", "disabled", "aria-expanded", "aria-controls"];
675
+ const _hoisted_3$7 = { class: "flex-1 truncate" };
676
+ const _hoisted_4$5 = { class: "flex items-center gap-1" };
677
+ const _hoisted_5$5 = ["id", "aria-label"];
678
+ const _hoisted_6$5 = { class: "mb-4 flex items-center justify-between" };
634
679
  const _hoisted_7$4 = {
635
680
  class: "font-medium text-gray-900 dark:text-white",
636
681
  "aria-live": "polite",
@@ -644,7 +689,7 @@ const _hoisted_9$2 = ["abbr"];
644
689
  const _hoisted_10$2 = ["id", "aria-label"];
645
690
  const _hoisted_11$2 = ["aria-label", "aria-selected", "aria-disabled", "disabled", "onClick"];
646
691
  const _hoisted_12$1 = { class: "mt-4 border-t border-gray-200 pt-3 dark:border-gray-700" };
647
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
692
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
648
693
  __name: "DatePicker",
649
694
  props: /* @__PURE__ */ vue.mergeModels({
650
695
  placeholder: { default: "Select date" },
@@ -768,7 +813,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
768
813
  return formatter.format(date);
769
814
  };
770
815
  return (_ctx, _cache) => {
771
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
816
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
772
817
  vue.createElementVNode("button", {
773
818
  id: triggerId.value,
774
819
  ref_key: "triggerRef",
@@ -786,8 +831,8 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
786
831
  onClick: _cache[0] || (_cache[0] = //@ts-ignore
787
832
  (...args) => vue.unref(toggle) && vue.unref(toggle)(...args))
788
833
  }, [
789
- vue.createElementVNode("span", _hoisted_3$6, vue.toDisplayString(displayValue.value || __props.placeholder), 1),
790
- vue.createElementVNode("div", _hoisted_4$4, [
834
+ vue.createElementVNode("span", _hoisted_3$7, vue.toDisplayString(displayValue.value || __props.placeholder), 1),
835
+ vue.createElementVNode("div", _hoisted_4$5, [
791
836
  modelValue.value ? (vue.openBlock(), vue.createElementBlock("button", {
792
837
  key: 0,
793
838
  type: "button",
@@ -807,7 +852,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
807
852
  "aria-hidden": "true"
808
853
  })
809
854
  ])
810
- ], 10, _hoisted_2$6),
855
+ ], 10, _hoisted_2$7),
811
856
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
812
857
  to: "body",
813
858
  disabled: !__props.teleport
@@ -832,7 +877,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
832
877
  style: vue.normalizeStyle(vue.unref(dropdownStyle)),
833
878
  class: "z-9999 w-72 rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-700 dark:bg-gray-800"
834
879
  }, [
835
- vue.createElementVNode("div", _hoisted_6$4, [
880
+ vue.createElementVNode("div", _hoisted_6$5, [
836
881
  vue.createElementVNode("button", {
837
882
  type: "button",
838
883
  class: "rounded p-1 hover:bg-gray-100 dark:hover:bg-gray-700",
@@ -903,7 +948,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
903
948
  onClick: _cache[1] || (_cache[1] = ($event) => selectDate({ date: /* @__PURE__ */ new Date(), isDisabled: false }))
904
949
  }, " Today ")
905
950
  ])
906
- ], 12, _hoisted_5$4)) : vue.createCommentVNode("", true)
951
+ ], 12, _hoisted_5$5)) : vue.createCommentVNode("", true)
907
952
  ]),
908
953
  _: 1
909
954
  })
@@ -912,15 +957,15 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
912
957
  };
913
958
  }
914
959
  });
915
- const _hoisted_1$5 = { class: "space-y-4" };
916
- const _hoisted_2$5 = ["accept", "multiple", "disabled"];
917
- const _hoisted_3$5 = { class: "space-y-2" };
918
- const _hoisted_4$3 = { class: "text-sm font-medium text-gray-700 dark:text-gray-300" };
919
- const _hoisted_5$3 = {
960
+ const _hoisted_1$7 = { class: "space-y-4" };
961
+ const _hoisted_2$6 = ["accept", "multiple", "disabled"];
962
+ const _hoisted_3$6 = { class: "space-y-2" };
963
+ const _hoisted_4$4 = { class: "text-sm font-medium text-gray-700 dark:text-gray-300" };
964
+ const _hoisted_5$4 = {
920
965
  key: 0,
921
966
  class: "text-xs text-gray-500 dark:text-gray-400"
922
967
  };
923
- const _hoisted_6$3 = {
968
+ const _hoisted_6$4 = {
924
969
  key: 1,
925
970
  class: "text-xs text-gray-500 dark:text-gray-400"
926
971
  };
@@ -932,7 +977,7 @@ const _hoisted_8$2 = { class: "flex-1 min-w-0" };
932
977
  const _hoisted_9$1 = { class: "text-sm font-medium text-gray-700 dark:text-gray-300 truncate" };
933
978
  const _hoisted_10$1 = { class: "text-xs text-gray-500 dark:text-gray-400" };
934
979
  const _hoisted_11$1 = ["onClick"];
935
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
980
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
936
981
  __name: "FileUpload",
937
982
  props: {
938
983
  accept: {},
@@ -1060,7 +1105,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1060
1105
  return "heroicons:document";
1061
1106
  };
1062
1107
  return (_ctx, _cache) => {
1063
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1108
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
1064
1109
  vue.createElementVNode("div", {
1065
1110
  class: vue.normalizeClass(dropzoneClasses.value),
1066
1111
  onDrop: vue.withModifiers(handleDrop, ["prevent"]),
@@ -1077,15 +1122,15 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1077
1122
  multiple: __props.multiple,
1078
1123
  disabled: __props.disabled,
1079
1124
  onChange: handleInputChange
1080
- }, null, 40, _hoisted_2$5),
1081
- vue.createElementVNode("div", _hoisted_3$5, [
1125
+ }, null, 40, _hoisted_2$6),
1126
+ vue.createElementVNode("div", _hoisted_3$6, [
1082
1127
  vue.createVNode(vue.unref(vue$1.Icon), {
1083
1128
  icon: "heroicons:cloud-arrow-up",
1084
1129
  class: vue.normalizeClass(["size-12 mx-auto text-gray-400", { "text-primary-500": isDragging.value }])
1085
1130
  }, null, 8, ["class"]),
1086
- vue.createElementVNode("p", _hoisted_4$3, vue.toDisplayString(__props.label), 1),
1087
- __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_5$3, vue.toDisplayString(__props.description), 1)) : vue.createCommentVNode("", true),
1088
- __props.maxSize ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_6$3, " Max size: " + vue.toDisplayString(formatSize(__props.maxSize)), 1)) : vue.createCommentVNode("", true)
1131
+ vue.createElementVNode("p", _hoisted_4$4, vue.toDisplayString(__props.label), 1),
1132
+ __props.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_5$4, vue.toDisplayString(__props.description), 1)) : vue.createCommentVNode("", true),
1133
+ __props.maxSize ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_6$4, " Max size: " + vue.toDisplayString(formatSize(__props.maxSize)), 1)) : vue.createCommentVNode("", true)
1089
1134
  ])
1090
1135
  ], 34),
1091
1136
  files.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_7$3, [
@@ -1119,13 +1164,13 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1119
1164
  };
1120
1165
  }
1121
1166
  });
1122
- const _hoisted_1$4 = { class: "flex items-center gap-1" };
1123
- const _hoisted_2$4 = ["disabled", "onClick", "onMousemove"];
1124
- const _hoisted_3$4 = {
1167
+ const _hoisted_1$6 = { class: "flex items-center gap-1" };
1168
+ const _hoisted_2$5 = ["disabled", "onClick", "onMousemove"];
1169
+ const _hoisted_3$5 = {
1125
1170
  key: 0,
1126
1171
  class: "ml-2 text-sm font-medium text-gray-700 dark:text-gray-300"
1127
1172
  };
1128
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1173
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1129
1174
  __name: "Rating",
1130
1175
  props: {
1131
1176
  modelValue: { default: 0 },
@@ -1188,7 +1233,7 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1188
1233
  hoverValue.value = null;
1189
1234
  };
1190
1235
  return (_ctx, _cache) => {
1191
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
1236
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
1192
1237
  vue.createElementVNode("div", {
1193
1238
  class: "flex items-center",
1194
1239
  onMouseleave: handleMouseLeave
@@ -1220,29 +1265,29 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1220
1265
  class: vue.normalizeClass([sizeClasses.value, __props.color])
1221
1266
  }, null, 8, ["icon", "class"])
1222
1267
  ], 4)
1223
- ], 42, _hoisted_2$4);
1268
+ ], 42, _hoisted_2$5);
1224
1269
  }), 128))
1225
1270
  ], 32),
1226
- __props.showValue ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$4, vue.toDisplayString(__props.modelValue.toFixed(__props.allowHalf ? 1 : 0)), 1)) : vue.createCommentVNode("", true)
1271
+ __props.showValue ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$5, vue.toDisplayString(__props.modelValue.toFixed(__props.allowHalf ? 1 : 0)), 1)) : vue.createCommentVNode("", true)
1227
1272
  ]);
1228
1273
  };
1229
1274
  }
1230
1275
  });
1231
- const _hoisted_1$3 = { class: "relative inline-block" };
1232
- const _hoisted_2$3 = {
1276
+ const _hoisted_1$5 = { class: "relative inline-block" };
1277
+ const _hoisted_2$4 = {
1233
1278
  key: 0,
1234
1279
  class: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"
1235
1280
  };
1236
- const _hoisted_3$3 = ["disabled"];
1237
- const _hoisted_4$2 = { class: "text-sm font-mono text-gray-700 dark:text-gray-300" };
1238
- const _hoisted_5$2 = { class: "grid grid-cols-5 gap-2 mb-3" };
1239
- const _hoisted_6$2 = ["title", "onClick"];
1281
+ const _hoisted_3$4 = ["disabled"];
1282
+ const _hoisted_4$3 = { class: "text-sm font-mono text-gray-700 dark:text-gray-300" };
1283
+ const _hoisted_5$3 = { class: "grid grid-cols-5 gap-2 mb-3" };
1284
+ const _hoisted_6$3 = ["title", "onClick"];
1240
1285
  const _hoisted_7$2 = {
1241
1286
  key: 0,
1242
1287
  class: "flex items-center gap-2 pt-3 border-t border-gray-200 dark:border-gray-700"
1243
1288
  };
1244
1289
  const _hoisted_8$1 = ["value"];
1245
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1290
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1246
1291
  __name: "ColorPicker",
1247
1292
  props: {
1248
1293
  modelValue: { default: "#3b82f6" },
@@ -1311,8 +1356,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1311
1356
  isOpen.value = false;
1312
1357
  };
1313
1358
  return (_ctx, _cache) => {
1314
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
1315
- __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$3, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
1359
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1360
+ __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$4, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
1316
1361
  vue.createElementVNode("button", {
1317
1362
  type: "button",
1318
1363
  class: vue.normalizeClass(["flex items-center gap-2 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors", { "opacity-50 cursor-not-allowed": __props.disabled }]),
@@ -1323,12 +1368,12 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1323
1368
  class: "size-6 rounded border border-gray-200 dark:border-gray-600",
1324
1369
  style: vue.normalizeStyle({ backgroundColor: __props.modelValue })
1325
1370
  }, null, 4),
1326
- vue.createElementVNode("span", _hoisted_4$2, vue.toDisplayString(__props.modelValue), 1),
1371
+ vue.createElementVNode("span", _hoisted_4$3, vue.toDisplayString(__props.modelValue), 1),
1327
1372
  vue.createVNode(vue.unref(vue$1.Icon), {
1328
1373
  icon: "heroicons:chevron-down",
1329
1374
  class: vue.normalizeClass(["size-4 text-gray-400", { "rotate-180": isOpen.value }])
1330
1375
  }, null, 8, ["class"])
1331
- ], 10, _hoisted_3$3),
1376
+ ], 10, _hoisted_3$4),
1332
1377
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1333
1378
  to: teleportTarget.value,
1334
1379
  disabled: teleportDisabled.value
@@ -1348,7 +1393,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1348
1393
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
1349
1394
  }, ["stop"]))
1350
1395
  }, [
1351
- vue.createElementVNode("div", _hoisted_5$2, [
1396
+ vue.createElementVNode("div", _hoisted_5$3, [
1352
1397
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.swatches, (color) => {
1353
1398
  return vue.openBlock(), vue.createElementBlock("button", {
1354
1399
  key: color,
@@ -1367,7 +1412,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1367
1412
  ["#ffffff", "#f9fafb", "#f3f4f6", "#e5e7eb", "#eab308", "#f59e0b"].includes(color) ? "text-gray-800" : "text-white"
1368
1413
  ]])
1369
1414
  }, null, 8, ["class"])) : vue.createCommentVNode("", true)
1370
- ], 14, _hoisted_6$2);
1415
+ ], 14, _hoisted_6$3);
1371
1416
  }), 128))
1372
1417
  ]),
1373
1418
  __props.showInput ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$2, [
@@ -1402,16 +1447,16 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1402
1447
  };
1403
1448
  }
1404
1449
  });
1405
- const _hoisted_1$2 = { class: "space-y-2" };
1406
- const _hoisted_2$2 = {
1450
+ const _hoisted_1$4 = { class: "space-y-2" };
1451
+ const _hoisted_2$3 = {
1407
1452
  key: 0,
1408
1453
  class: "flex justify-between text-sm font-medium text-gray-700 dark:text-gray-300"
1409
1454
  };
1410
- const _hoisted_3$2 = {
1455
+ const _hoisted_3$3 = {
1411
1456
  key: 1,
1412
1457
  class: "flex justify-between text-xs text-gray-500 dark:text-gray-400"
1413
1458
  };
1414
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1459
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1415
1460
  __name: "RangeSlider",
1416
1461
  props: {
1417
1462
  modelValue: { default: () => [25, 75] },
@@ -1489,8 +1534,8 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1489
1534
  }
1490
1535
  };
1491
1536
  return (_ctx, _cache) => {
1492
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
1493
- __props.showLabels ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
1537
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
1538
+ __props.showLabels ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, [
1494
1539
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(minValue.value)), 1),
1495
1540
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(maxValue.value)), 1)
1496
1541
  ])) : vue.createCommentVNode("", true),
@@ -1523,7 +1568,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1523
1568
  onMousedown: _cache[1] || (_cache[1] = ($event) => handleMouseDown("max"))
1524
1569
  }, null, 38)
1525
1570
  ], 2),
1526
- __props.showMinMax ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2, [
1571
+ __props.showMinMax ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3, [
1527
1572
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(__props.min)), 1),
1528
1573
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(__props.max)), 1)
1529
1574
  ])) : vue.createCommentVNode("", true)
@@ -1531,18 +1576,18 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1531
1576
  };
1532
1577
  }
1533
1578
  });
1534
- const _hoisted_1$1 = ["aria-expanded", "aria-controls"];
1535
- const _hoisted_2$1 = ["id", "name", "placeholder", "disabled", "aria-controls"];
1536
- const _hoisted_3$1 = { class: "flex items-center gap-1" };
1537
- const _hoisted_4$1 = ["id", "aria-label", "aria-multiselectable"];
1538
- const _hoisted_5$1 = ["aria-selected", "aria-disabled", "disabled", "onClick"];
1539
- const _hoisted_6$1 = { class: "flex-1" };
1579
+ const _hoisted_1$3 = ["aria-expanded", "aria-controls"];
1580
+ const _hoisted_2$2 = ["id", "name", "placeholder", "disabled", "aria-controls"];
1581
+ const _hoisted_3$2 = { class: "flex items-center gap-1" };
1582
+ const _hoisted_4$2 = ["id", "aria-label", "aria-multiselectable"];
1583
+ const _hoisted_5$2 = ["aria-selected", "aria-disabled", "disabled", "onClick"];
1584
+ const _hoisted_6$2 = { class: "flex-1" };
1540
1585
  const _hoisted_7$1 = {
1541
1586
  key: 1,
1542
1587
  class: "px-3 py-2 text-center text-sm text-gray-500 dark:text-gray-400",
1543
1588
  role: "status"
1544
1589
  };
1545
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1590
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1546
1591
  __name: "Combobox",
1547
1592
  props: {
1548
1593
  modelValue: {},
@@ -1673,10 +1718,10 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1673
1718
  class: "flex-1 border-none bg-transparent text-sm text-gray-900 outline-hidden placeholder:text-gray-400 dark:text-gray-100 dark:placeholder:text-gray-500",
1674
1719
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
1675
1720
  }, ["stop"]))
1676
- }, null, 8, _hoisted_2$1)), [
1721
+ }, null, 8, _hoisted_2$2)), [
1677
1722
  [vue.vModelText, search.value]
1678
1723
  ]),
1679
- vue.createElementVNode("div", _hoisted_3$1, [
1724
+ vue.createElementVNode("div", _hoisted_3$2, [
1680
1725
  __props.clearable && selectedOptions.value.length > 0 && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
1681
1726
  key: 0,
1682
1727
  type: "button",
@@ -1699,7 +1744,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1699
1744
  "aria-hidden": "true"
1700
1745
  }, null, 8, ["class"])
1701
1746
  ])
1702
- ], 10, _hoisted_1$1),
1747
+ ], 10, _hoisted_1$3),
1703
1748
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1704
1749
  to: teleportTarget.value,
1705
1750
  disabled: teleportDisabled.value
@@ -1749,16 +1794,16 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1749
1794
  class: "size-3"
1750
1795
  })) : vue.createCommentVNode("", true)
1751
1796
  ], 2)) : vue.createCommentVNode("", true),
1752
- vue.createElementVNode("span", _hoisted_6$1, vue.toDisplayString(option.label), 1),
1797
+ vue.createElementVNode("span", _hoisted_6$2, vue.toDisplayString(option.label), 1),
1753
1798
  !__props.multiple && isSelected(option) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1754
1799
  key: 1,
1755
1800
  icon: "lucide:check",
1756
1801
  class: "size-4 text-primary",
1757
1802
  "aria-hidden": "true"
1758
1803
  })) : vue.createCommentVNode("", true)
1759
- ], 10, _hoisted_5$1);
1804
+ ], 10, _hoisted_5$2);
1760
1805
  }), 128)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1, vue.toDisplayString(__props.noResultsText), 1))
1761
- ], 8, _hoisted_4$1)) : vue.createCommentVNode("", true)
1806
+ ], 8, _hoisted_4$2)) : vue.createCommentVNode("", true)
1762
1807
  ]),
1763
1808
  _: 1
1764
1809
  })
@@ -1767,18 +1812,18 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1767
1812
  };
1768
1813
  }
1769
1814
  });
1770
- const _hoisted_1 = { class: "relative" };
1771
- const _hoisted_2 = {
1815
+ const _hoisted_1$2 = { class: "relative" };
1816
+ const _hoisted_2$1 = {
1772
1817
  key: 0,
1773
1818
  class: "text-red-500 ml-0.5"
1774
1819
  };
1775
- const _hoisted_3 = ["id", "disabled", "aria-invalid", "aria-describedby"];
1776
- const _hoisted_4 = {
1820
+ const _hoisted_3$1 = ["id", "disabled", "aria-invalid", "aria-describedby"];
1821
+ const _hoisted_4$1 = {
1777
1822
  key: 0,
1778
1823
  class: "flex items-center gap-2 flex-1"
1779
1824
  };
1780
- const _hoisted_5 = { class: "flex h-8 w-8 items-center justify-center rounded bg-gray-100 dark:bg-gray-800" };
1781
- const _hoisted_6 = { class: "text-gray-700 dark:text-gray-300 font-mono text-xs truncate" };
1825
+ const _hoisted_5$1 = { class: "flex size-8 items-center justify-center rounded bg-gray-100 dark:bg-gray-800" };
1826
+ const _hoisted_6$1 = { class: "text-gray-700 dark:text-gray-300 font-mono text-xs truncate" };
1782
1827
  const _hoisted_7 = {
1783
1828
  key: 1,
1784
1829
  class: "flex-1 text-gray-400 dark:text-gray-500"
@@ -1801,7 +1846,7 @@ const _hoisted_13 = {
1801
1846
  const _hoisted_14 = ["title", "onClick"];
1802
1847
  const _hoisted_15 = { class: "mt-4 flex items-center justify-between border-t border-gray-200 pt-4 dark:border-gray-700" };
1803
1848
  const _hoisted_16 = { class: "text-xs text-gray-500" };
1804
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1849
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1805
1850
  __name: "IconPicker",
1806
1851
  props: /* @__PURE__ */ vue.mergeModels({
1807
1852
  label: {},
@@ -1925,15 +1970,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1925
1970
  searchQuery.value = "";
1926
1971
  }
1927
1972
  return (_ctx, _cache) => {
1928
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
1929
- __props.label ? (vue.openBlock(), vue.createBlock(_sfc_main$e, {
1973
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
1974
+ __props.label ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
1930
1975
  key: 0,
1931
1976
  "html-for": inputId.value,
1932
1977
  error: __props.error
1933
1978
  }, {
1934
1979
  default: vue.withCtx(() => [
1935
1980
  vue.createTextVNode(vue.toDisplayString(__props.label) + " ", 1),
1936
- __props.required ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, "*")) : vue.createCommentVNode("", true)
1981
+ __props.required ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, "*")) : vue.createCommentVNode("", true)
1937
1982
  ]),
1938
1983
  _: 1
1939
1984
  }, 8, ["html-for", "error"])) : vue.createCommentVNode("", true),
@@ -1949,14 +1994,14 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1949
1994
  ]]),
1950
1995
  onClick: openPicker
1951
1996
  }, [
1952
- modelValue.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
1953
- vue.createElementVNode("div", _hoisted_5, [
1997
+ modelValue.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, [
1998
+ vue.createElementVNode("div", _hoisted_5$1, [
1954
1999
  vue.createVNode(vue.unref(vue$1.Icon), {
1955
2000
  icon: modelValue.value,
1956
- class: "h-5 w-5 text-gray-700 dark:text-gray-300"
2001
+ class: "size-5 text-gray-700 dark:text-gray-300"
1957
2002
  }, null, 8, ["icon"])
1958
2003
  ]),
1959
- vue.createElementVNode("span", _hoisted_6, vue.toDisplayString(modelValue.value), 1)
2004
+ vue.createElementVNode("span", _hoisted_6$1, vue.toDisplayString(modelValue.value), 1)
1960
2005
  ])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_7, vue.toDisplayString(__props.placeholder), 1)),
1961
2006
  modelValue.value && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
1962
2007
  key: 2,
@@ -1966,15 +2011,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1966
2011
  }, [
1967
2012
  vue.createVNode(vue.unref(vue$1.Icon), {
1968
2013
  icon: "lucide:x",
1969
- class: "h-4 w-4"
2014
+ class: "size-4"
1970
2015
  })
1971
2016
  ])) : vue.createCommentVNode("", true),
1972
2017
  vue.createVNode(vue.unref(vue$1.Icon), {
1973
2018
  icon: "lucide:chevron-down",
1974
- class: "h-4 w-4 text-gray-400"
2019
+ class: "size-4 text-gray-400"
1975
2020
  })
1976
- ], 10, _hoisted_3),
1977
- __props.help && !hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
2021
+ ], 10, _hoisted_3$1),
2022
+ __props.help && !hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
1978
2023
  key: 1,
1979
2024
  id: helpId.value
1980
2025
  }, {
@@ -1983,7 +2028,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1983
2028
  ]),
1984
2029
  _: 1
1985
2030
  }, 8, ["id"])) : vue.createCommentVNode("", true),
1986
- hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
2031
+ hasError.value ? (vue.openBlock(), vue.createBlock(_sfc_main$f, {
1987
2032
  key: 2,
1988
2033
  id: helpId.value,
1989
2034
  error: true
@@ -2007,7 +2052,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2007
2052
  vue.createElementVNode("div", _hoisted_8, [
2008
2053
  vue.createVNode(vue.unref(vue$1.Icon), {
2009
2054
  icon: "lucide:search",
2010
- class: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"
2055
+ class: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-gray-400"
2011
2056
  }),
2012
2057
  vue.withDirectives(vue.createElementVNode("input", {
2013
2058
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
@@ -2021,7 +2066,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2021
2066
  isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
2022
2067
  vue.createVNode(vue.unref(vue$1.Icon), {
2023
2068
  icon: "lucide:loader-2",
2024
- class: "h-4 w-4 animate-spin text-gray-400"
2069
+ class: "size-4 animate-spin text-gray-400"
2025
2070
  })
2026
2071
  ])) : vue.createCommentVNode("", true)
2027
2072
  ]),
@@ -2031,7 +2076,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2031
2076
  return vue.openBlock(), vue.createElementBlock("button", {
2032
2077
  key: icon,
2033
2078
  type: "button",
2034
- class: vue.normalizeClass(["flex h-9 w-9 items-center justify-center rounded transition-colors", [
2079
+ class: vue.normalizeClass(["flex size-9 items-center justify-center rounded transition-colors", [
2035
2080
  modelValue.value === icon ? "bg-primary text-white" : "hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300"
2036
2081
  ]]),
2037
2082
  title: icon,
@@ -2039,7 +2084,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2039
2084
  }, [
2040
2085
  vue.createVNode(vue.unref(vue$1.Icon), {
2041
2086
  icon,
2042
- class: "h-5 w-5"
2087
+ class: "size-5"
2043
2088
  }, null, 8, ["icon"])
2044
2089
  ], 10, _hoisted_14);
2045
2090
  }), 128))
@@ -2060,19 +2105,213 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2060
2105
  };
2061
2106
  }
2062
2107
  });
2108
+ const _hoisted_1$1 = { class: "flex items-center justify-between" };
2109
+ const _hoisted_2 = { class: "flex items-center gap-3" };
2110
+ const _hoisted_3 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
2111
+ const _hoisted_4 = {
2112
+ key: 0,
2113
+ class: "text-sm text-gray-500 dark:text-gray-400"
2114
+ };
2115
+ const _hoisted_5 = { class: "p-5 sm:p-6" };
2116
+ const _hoisted_6 = {
2117
+ key: 0,
2118
+ class: "px-5 py-4 bg-gray-50 dark:bg-slate-800/50 border-t border-gray-100 dark:border-slate-700"
2119
+ };
2120
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2121
+ __name: "FormSection",
2122
+ props: /* @__PURE__ */ vue.mergeModels({
2123
+ title: {},
2124
+ subtitle: {},
2125
+ icon: {},
2126
+ iconColor: { default: "primary" },
2127
+ bordered: { type: Boolean, default: true },
2128
+ collapsible: { type: Boolean, default: false },
2129
+ collapsed: { type: Boolean, default: false }
2130
+ }, {
2131
+ "collapsed": { type: Boolean, ...{ default: false } },
2132
+ "collapsedModifiers": {}
2133
+ }),
2134
+ emits: ["update:collapsed"],
2135
+ setup(__props) {
2136
+ const isCollapsed = vue.useModel(__props, "collapsed");
2137
+ function toggleCollapse() {
2138
+ isCollapsed.value = !isCollapsed.value;
2139
+ }
2140
+ return (_ctx, _cache) => {
2141
+ return vue.openBlock(), vue.createElementBlock("div", {
2142
+ class: vue.normalizeClass([
2143
+ "bg-white dark:bg-slate-800 rounded-2xl overflow-hidden",
2144
+ __props.bordered && "border border-gray-100 dark:border-slate-700 shadow-sm"
2145
+ ])
2146
+ }, [
2147
+ vue.createElementVNode("div", {
2148
+ class: vue.normalizeClass([
2149
+ "p-5 border-b border-gray-100 dark:border-slate-700 bg-linear-to-r from-gray-50 to-white dark:from-slate-800 dark:to-slate-800",
2150
+ __props.collapsible && "cursor-pointer hover:bg-gray-50 dark:hover:bg-slate-700/50 transition-colors"
2151
+ ]),
2152
+ onClick: _cache[0] || (_cache[0] = ($event) => __props.collapsible && toggleCollapse())
2153
+ }, [
2154
+ vue.createElementVNode("div", _hoisted_1$1, [
2155
+ vue.createElementVNode("div", _hoisted_2, [
2156
+ __props.icon ? (vue.openBlock(), vue.createElementBlock("div", {
2157
+ key: 0,
2158
+ class: vue.normalizeClass([
2159
+ "size-10 rounded-xl flex items-center justify-center",
2160
+ __props.iconColor === "primary" && "bg-primary-100 dark:bg-primary-900/30",
2161
+ __props.iconColor === "gray" && "bg-gray-100 dark:bg-slate-700",
2162
+ __props.iconColor === "success" && "bg-emerald-100 dark:bg-emerald-900/30",
2163
+ __props.iconColor === "warning" && "bg-amber-100 dark:bg-amber-900/30",
2164
+ __props.iconColor === "danger" && "bg-red-100 dark:bg-red-900/30"
2165
+ ])
2166
+ }, [
2167
+ vue.createVNode(vue.unref(vue$1.Icon), {
2168
+ icon: __props.icon,
2169
+ class: vue.normalizeClass([
2170
+ "size-5",
2171
+ __props.iconColor === "primary" && "text-primary-600 dark:text-primary-400",
2172
+ __props.iconColor === "gray" && "text-gray-600 dark:text-gray-400",
2173
+ __props.iconColor === "success" && "text-emerald-600 dark:text-emerald-400",
2174
+ __props.iconColor === "warning" && "text-amber-600 dark:text-amber-400",
2175
+ __props.iconColor === "danger" && "text-red-600 dark:text-red-400"
2176
+ ])
2177
+ }, null, 8, ["icon", "class"])
2178
+ ], 2)) : vue.createCommentVNode("", true),
2179
+ vue.createElementVNode("div", null, [
2180
+ vue.createElementVNode("h2", _hoisted_3, [
2181
+ vue.renderSlot(_ctx.$slots, "title", {}, () => [
2182
+ vue.createTextVNode(vue.toDisplayString(__props.title), 1)
2183
+ ])
2184
+ ]),
2185
+ __props.subtitle ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4, [
2186
+ vue.renderSlot(_ctx.$slots, "subtitle", {}, () => [
2187
+ vue.createTextVNode(vue.toDisplayString(__props.subtitle), 1)
2188
+ ])
2189
+ ])) : vue.createCommentVNode("", true)
2190
+ ])
2191
+ ]),
2192
+ __props.collapsible ? (vue.openBlock(), vue.createElementBlock("button", {
2193
+ key: 0,
2194
+ type: "button",
2195
+ class: "p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-slate-700 transition-colors",
2196
+ onClick: vue.withModifiers(toggleCollapse, ["stop"])
2197
+ }, [
2198
+ vue.createVNode(vue.unref(vue$1.Icon), {
2199
+ icon: "heroicons:chevron-down",
2200
+ class: vue.normalizeClass([
2201
+ "w-5 h-5 text-gray-400 transition-transform duration-200",
2202
+ isCollapsed.value && "-rotate-90"
2203
+ ])
2204
+ }, null, 8, ["class"])
2205
+ ])) : vue.createCommentVNode("", true),
2206
+ vue.renderSlot(_ctx.$slots, "header-actions")
2207
+ ])
2208
+ ], 2),
2209
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_5, [
2210
+ vue.renderSlot(_ctx.$slots, "default")
2211
+ ], 512), [
2212
+ [vue.vShow, !isCollapsed.value]
2213
+ ]),
2214
+ _ctx.$slots.footer ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
2215
+ vue.renderSlot(_ctx.$slots, "footer")
2216
+ ], 512)), [
2217
+ [vue.vShow, !isCollapsed.value]
2218
+ ]) : vue.createCommentVNode("", true)
2219
+ ], 2);
2220
+ };
2221
+ }
2222
+ });
2223
+ const _hoisted_1 = { key: 1 };
2224
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2225
+ __name: "FormActions",
2226
+ props: {
2227
+ submitLabel: { default: "Enregistrer" },
2228
+ cancelLabel: { default: "Annuler" },
2229
+ submitIcon: { default: "heroicons:check" },
2230
+ cancelIcon: { default: "heroicons:x-mark" },
2231
+ loading: { type: Boolean },
2232
+ loadingLabel: {},
2233
+ disabled: { type: Boolean },
2234
+ showCancel: { type: Boolean, default: true },
2235
+ align: { default: "right" },
2236
+ stackOnMobile: { type: Boolean, default: false },
2237
+ submitVariant: { default: "primary" }
2238
+ },
2239
+ emits: ["submit", "cancel"],
2240
+ setup(__props, { emit: __emit }) {
2241
+ const emit = __emit;
2242
+ return (_ctx, _cache) => {
2243
+ return vue.openBlock(), vue.createElementBlock("div", {
2244
+ class: vue.normalizeClass([
2245
+ "flex gap-3 pt-2",
2246
+ __props.align === "left" && "justify-start",
2247
+ __props.align === "center" && "justify-center",
2248
+ __props.align === "right" && "justify-end",
2249
+ __props.align === "stretch" && "[&>*]:flex-1",
2250
+ __props.stackOnMobile && "flex-col sm:flex-row"
2251
+ ])
2252
+ }, [
2253
+ __props.showCancel ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main, {
2254
+ key: 0,
2255
+ type: "button",
2256
+ variant: "outline",
2257
+ disabled: __props.loading,
2258
+ class: vue.normalizeClass([
2259
+ __props.stackOnMobile && "order-2 sm:order-1"
2260
+ ]),
2261
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("cancel"))
2262
+ }, {
2263
+ default: vue.withCtx(() => [
2264
+ __props.cancelIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2265
+ key: 0,
2266
+ icon: __props.cancelIcon,
2267
+ class: "w-5 h-5"
2268
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2269
+ vue.createTextVNode(" " + vue.toDisplayString(__props.cancelLabel), 1)
2270
+ ]),
2271
+ _: 1
2272
+ }, 8, ["disabled", "class"])) : vue.createCommentVNode("", true),
2273
+ vue.createVNode(Button_vue_vue_type_script_setup_true_lang._sfc_main, {
2274
+ type: "submit",
2275
+ variant: __props.submitVariant,
2276
+ disabled: __props.disabled || __props.loading,
2277
+ loading: __props.loading,
2278
+ class: vue.normalizeClass([
2279
+ __props.stackOnMobile && "order-1 sm:order-2"
2280
+ ]),
2281
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("submit"))
2282
+ }, {
2283
+ default: vue.withCtx(() => [
2284
+ !__props.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
2285
+ __props.submitIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2286
+ key: 0,
2287
+ icon: __props.submitIcon,
2288
+ class: "w-5 h-5"
2289
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2290
+ vue.createTextVNode(" " + vue.toDisplayString(__props.submitLabel), 1)
2291
+ ], 64)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1, vue.toDisplayString(__props.loadingLabel || __props.submitLabel + "..."), 1))
2292
+ ]),
2293
+ _: 1
2294
+ }, 8, ["variant", "disabled", "loading", "class"]),
2295
+ vue.renderSlot(_ctx.$slots, "extra")
2296
+ ], 2);
2297
+ };
2298
+ }
2299
+ });
2063
2300
  exports.Slider = Slider;
2064
- exports._sfc_main = _sfc_main$e;
2065
- exports._sfc_main$1 = _sfc_main$d;
2066
- exports._sfc_main$10 = _sfc_main$3;
2067
- exports._sfc_main$11 = _sfc_main$2;
2068
- exports._sfc_main$12 = _sfc_main$1;
2069
- exports._sfc_main$13 = _sfc_main;
2070
- exports._sfc_main$2 = _sfc_main$c;
2071
- exports._sfc_main$3 = _sfc_main$b;
2072
- exports._sfc_main$4 = _sfc_main$a;
2073
- exports._sfc_main$5 = _sfc_main$9;
2074
- exports._sfc_main$6 = _sfc_main$8;
2075
- exports._sfc_main$7 = _sfc_main$6;
2076
- exports._sfc_main$8 = _sfc_main$5;
2077
- exports._sfc_main$9 = _sfc_main$4;
2078
- //# sourceMappingURL=IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs.map
2301
+ exports._sfc_main = _sfc_main$g;
2302
+ exports._sfc_main$1 = _sfc_main$f;
2303
+ exports._sfc_main$10 = _sfc_main$5;
2304
+ exports._sfc_main$11 = _sfc_main$4;
2305
+ exports._sfc_main$12 = _sfc_main$3;
2306
+ exports._sfc_main$13 = _sfc_main$2;
2307
+ exports._sfc_main$14 = _sfc_main$1;
2308
+ exports._sfc_main$15 = _sfc_main;
2309
+ exports._sfc_main$2 = _sfc_main$e;
2310
+ exports._sfc_main$3 = _sfc_main$d;
2311
+ exports._sfc_main$4 = _sfc_main$c;
2312
+ exports._sfc_main$5 = _sfc_main$b;
2313
+ exports._sfc_main$6 = _sfc_main$a;
2314
+ exports._sfc_main$7 = _sfc_main$8;
2315
+ exports._sfc_main$8 = _sfc_main$7;
2316
+ exports._sfc_main$9 = _sfc_main$6;
2317
+ //# sourceMappingURL=FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs.map