cisse-vue-ui 0.7.0 → 0.7.1

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 (30) hide show
  1. package/dist/{TagsInput-C4wBPfrj.js → TagsInput-CFAC_MSw.js} +357 -295
  2. package/dist/TagsInput-CFAC_MSw.js.map +1 -0
  3. package/dist/{TagsInput-ClqgyR9O.cjs → TagsInput-DVebLEH2.cjs} +356 -294
  4. package/dist/TagsInput-DVebLEH2.cjs.map +1 -0
  5. package/dist/cisse-vue-ui.css +4 -4
  6. package/dist/components/form/EmailInput.vue.d.ts +1 -1
  7. package/dist/components/form/MoneyInput.vue.d.ts +1 -1
  8. package/dist/components/form/NumberInput.vue.d.ts +1 -1
  9. package/dist/components/form/OTPInput.vue.d.ts +1 -1
  10. package/dist/components/form/PasswordInput.vue.d.ts +1 -1
  11. package/dist/components/form/PercentInput.vue.d.ts +1 -1
  12. package/dist/components/form/PhoneInput.vue.d.ts +14 -1
  13. package/dist/components/form/QuantityInput.vue.d.ts +1 -1
  14. package/dist/components/form/SearchInput.vue.d.ts +18 -4
  15. package/dist/components/form/TagsInput.vue.d.ts +1 -1
  16. package/dist/components/form/URLInput.vue.d.ts +1 -1
  17. package/dist/components/form/index.cjs +1 -1
  18. package/dist/components/form/index.js +1 -1
  19. package/dist/components/index.cjs +1 -1
  20. package/dist/components/index.js +1 -1
  21. package/dist/{index-CRoTVc47.cjs → index-Bl5eyNdr.cjs} +2 -2
  22. package/dist/{index-CRoTVc47.cjs.map → index-Bl5eyNdr.cjs.map} +1 -1
  23. package/dist/{index-D49k0PP0.js → index-Cke8qLRH.js} +2 -2
  24. package/dist/index-Cke8qLRH.js.map +1 -0
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +2 -2
  27. package/package.json +1 -1
  28. package/dist/TagsInput-C4wBPfrj.js.map +0 -1
  29. package/dist/TagsInput-ClqgyR9O.cjs.map +0 -1
  30. package/dist/index-D49k0PP0.js.map +0 -1
@@ -51,12 +51,80 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
51
51
  });
52
52
  const _hoisted_1$p = {
53
53
  key: 0,
54
- class: "relative"
54
+ class: "absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none text-gray-400"
55
+ };
56
+ const _hoisted_2$h = {
57
+ key: 1,
58
+ class: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1"
55
59
  };
56
- const _hoisted_2$j = ["id", "disabled", "name", "placeholder", "type", "required", "aria-invalid", "aria-required", "aria-describedby"];
57
- const _hoisted_3$g = ["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
60
  const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
61
+ __name: "InputWrapper",
62
+ props: {
63
+ icon: {},
64
+ iconRight: {},
65
+ size: { default: "md" },
66
+ invalid: { type: Boolean },
67
+ disabled: { type: Boolean },
68
+ wrapperClass: {}
69
+ },
70
+ setup(__props, { expose: __expose }) {
71
+ const props = __props;
72
+ const slots = vue.useSlots();
73
+ const hasLeftIcon = vue.computed(() => props.icon || slots.icon);
74
+ const hasRightContent = vue.computed(() => props.iconRight || slots.actions);
75
+ const inputClass = vue.computed(() => [
76
+ // Base styles
77
+ "block w-full rounded-xl border text-sm transition-all",
78
+ "border-gray-200 bg-gray-50 text-gray-900 placeholder-gray-400",
79
+ "focus:border-primary-500 focus:ring-2 focus:ring-primary-500 focus:bg-white focus:outline-hidden",
80
+ "disabled:border-gray-200 disabled:bg-gray-100 disabled:text-gray-500 disabled:cursor-not-allowed",
81
+ // Dark mode
82
+ "dark:border-slate-600 dark:bg-slate-700 dark:text-white dark:placeholder-gray-500",
83
+ "dark:focus:border-primary-500 dark:focus:ring-primary-500 dark:focus:bg-slate-600",
84
+ "dark:disabled:bg-slate-800 dark:disabled:text-gray-500",
85
+ // Padding based on icons/actions
86
+ hasLeftIcon.value ? "pl-10" : "pl-4",
87
+ hasRightContent.value ? "pr-10" : "pr-4",
88
+ // Size
89
+ props.size === "sm" && "py-2 text-xs",
90
+ props.size === "md" && "py-3 text-sm",
91
+ props.size === "lg" && "py-4 text-base",
92
+ // Invalid state
93
+ props.invalid && "border-red-500 focus:border-red-500 focus:ring-red-500 dark:border-red-500"
94
+ ]);
95
+ __expose({ inputClass });
96
+ return (_ctx, _cache) => {
97
+ return vue.openBlock(), vue.createElementBlock("div", {
98
+ class: vue.normalizeClass(["relative", __props.wrapperClass])
99
+ }, [
100
+ hasLeftIcon.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
101
+ vue.renderSlot(_ctx.$slots, "icon", {}, () => [
102
+ __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
103
+ key: 0,
104
+ icon: __props.icon,
105
+ class: "size-5"
106
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
107
+ ])
108
+ ])) : vue.createCommentVNode("", true),
109
+ vue.renderSlot(_ctx.$slots, "default", { inputClass: inputClass.value }),
110
+ hasRightContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$h, [
111
+ vue.renderSlot(_ctx.$slots, "actions", {}, () => [
112
+ __props.iconRight ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
113
+ key: 0,
114
+ icon: __props.iconRight,
115
+ class: "size-5 text-gray-400 pointer-events-none"
116
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
117
+ ])
118
+ ])) : vue.createCommentVNode("", true)
119
+ ], 2);
120
+ };
121
+ }
122
+ });
123
+ const _hoisted_1$o = ["id", "disabled", "name", "placeholder", "type", "required", "aria-invalid", "aria-required", "aria-describedby"];
124
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
125
+ ...{
126
+ inheritAttrs: false
127
+ },
60
128
  __name: "FormInput",
61
129
  props: /* @__PURE__ */ vue.mergeModels({
62
130
  type: { default: "text" },
@@ -79,58 +147,36 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
79
147
  const props = __props;
80
148
  const modelValue = vue.useModel(__props, "modelValue");
81
149
  return (_ctx, _cache) => {
82
- return props.icon || props.iconRight ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
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$j), [
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,
115
- id: props.id ?? props.name ?? "",
116
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event),
150
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
151
+ icon: props.icon,
152
+ "icon-right": props.iconRight,
117
153
  disabled: props.disabled,
118
- name: props.name ?? "",
119
- placeholder: props.placeholder,
120
- type: props.type,
121
- required: props.required,
122
- "aria-invalid": props.invalid || void 0,
123
- "aria-required": props.required || void 0,
124
- "aria-describedby": props.describedBy || void 0,
125
- class: [baseInputClass, "px-4 py-3"]
126
- }, _ctx.$attrs), null, 16, _hoisted_3$g)), [
127
- [vue.vModelDynamic, modelValue.value]
128
- ]);
154
+ invalid: props.invalid
155
+ }, {
156
+ default: vue.withCtx(({ inputClass }) => [
157
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
158
+ id: props.id ?? props.name ?? "",
159
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
160
+ disabled: props.disabled,
161
+ name: props.name ?? "",
162
+ placeholder: props.placeholder,
163
+ type: props.type,
164
+ required: props.required,
165
+ "aria-invalid": props.invalid || void 0,
166
+ "aria-required": props.required || void 0,
167
+ "aria-describedby": props.describedBy || void 0,
168
+ class: inputClass
169
+ }, _ctx.$attrs), null, 16, _hoisted_1$o), [
170
+ [vue.vModelDynamic, modelValue.value]
171
+ ])
172
+ ]),
173
+ _: 1
174
+ }, 8, ["icon", "icon-right", "disabled", "invalid"]);
129
175
  };
130
176
  }
131
177
  });
132
- const _hoisted_1$o = { class: "relative" };
133
- const _hoisted_2$i = ["id", "disabled", "aria-expanded", "aria-controls", "aria-invalid", "aria-describedby"];
178
+ const _hoisted_1$n = { class: "relative" };
179
+ const _hoisted_2$g = ["id", "disabled", "aria-expanded", "aria-controls", "aria-invalid", "aria-describedby"];
134
180
  const _hoisted_3$f = { class: "flex-1 truncate" };
135
181
  const _hoisted_4$b = ["id", "aria-label"];
136
182
  const _hoisted_5$8 = {
@@ -151,7 +197,7 @@ const _hoisted_10$4 = {
151
197
  "aria-hidden": "true"
152
198
  };
153
199
  const _hoisted_11$4 = { class: "flex-1" };
154
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
200
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
155
201
  __name: "FormSelect",
156
202
  props: /* @__PURE__ */ vue.mergeModels({
157
203
  options: {},
@@ -271,7 +317,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
271
317
  return [base, state, text, props.triggerClass];
272
318
  });
273
319
  return (_ctx, _cache) => {
274
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
320
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
275
321
  vue.createElementVNode("button", {
276
322
  id: triggerId.value,
277
323
  ref_key: "triggerRef",
@@ -298,7 +344,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
298
344
  class: vue.normalizeClass(["size-4 shrink-0 text-gray-400 transition-transform", vue.unref(isOpen) && "rotate-180"]),
299
345
  "aria-hidden": "true"
300
346
  }, null, 8, ["class"])
301
- ], 42, _hoisted_2$i),
347
+ ], 42, _hoisted_2$g),
302
348
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
303
349
  to: "body",
304
350
  disabled: !__props.teleport
@@ -389,8 +435,8 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
389
435
  };
390
436
  }
391
437
  });
392
- const _hoisted_1$n = ["hidden"];
393
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
438
+ const _hoisted_1$m = ["hidden"];
439
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
394
440
  __name: "FormGroup",
395
441
  props: /* @__PURE__ */ vue.mergeModels({
396
442
  label: {},
@@ -443,7 +489,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
443
489
  }, 8, ["html-for", "error"])) : vue.createCommentVNode("", true)
444
490
  ]),
445
491
  vue.renderSlot(_ctx.$slots, "input", {}, () => [
446
- isSelect.value ? (vue.openBlock(), vue.createBlock(_sfc_main$o, vue.mergeProps({
492
+ isSelect.value ? (vue.openBlock(), vue.createBlock(_sfc_main$n, vue.mergeProps({
447
493
  key: 0,
448
494
  modelValue: modelValue.value,
449
495
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event)
@@ -451,7 +497,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
451
497
  id: inputId.value,
452
498
  invalid: Boolean(__props.error),
453
499
  "described-by": hasError.value ? helpId.value : void 0
454
- }), null, 16, ["modelValue", "id", "invalid", "described-by"])) : (vue.openBlock(), vue.createBlock(_sfc_main$p, vue.mergeProps({
500
+ }), null, 16, ["modelValue", "id", "invalid", "described-by"])) : (vue.openBlock(), vue.createBlock(_sfc_main$o, vue.mergeProps({
455
501
  key: 1,
456
502
  modelValue: modelValue.value,
457
503
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event)
@@ -472,53 +518,61 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
472
518
  _: 1
473
519
  }, 8, ["id"])) : vue.createCommentVNode("", true)
474
520
  ])
475
- ], 12, _hoisted_1$n);
521
+ ], 12, _hoisted_1$m);
476
522
  };
477
523
  }
478
524
  });
479
- const _hoisted_1$m = { class: "relative" };
480
- const _hoisted_2$h = ["disabled", "placeholder", "value"];
481
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
525
+ const _hoisted_1$l = ["name", "placeholder", "disabled"];
526
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
527
+ ...{
528
+ inheritAttrs: false
529
+ },
482
530
  __name: "SearchInput",
483
- props: {
484
- modelValue: {},
531
+ props: /* @__PURE__ */ vue.mergeModels({
485
532
  placeholder: { default: "Search..." },
486
533
  icon: { default: "lucide:search" },
487
- disabled: { type: Boolean, default: false }
488
- },
534
+ disabled: { type: Boolean },
535
+ size: { default: "md" },
536
+ name: {}
537
+ }, {
538
+ "modelValue": { default: "" },
539
+ "modelModifiers": {}
540
+ }),
489
541
  emits: ["update:modelValue"],
490
- setup(__props, { emit: __emit }) {
491
- const emit = __emit;
492
- const handleInput = (event) => {
493
- const target = event.target;
494
- emit("update:modelValue", target.value);
495
- };
542
+ setup(__props) {
543
+ const props = __props;
544
+ const modelValue = vue.useModel(__props, "modelValue");
496
545
  return (_ctx, _cache) => {
497
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
498
- vue.createVNode(vue.unref(vue$1.Icon), {
499
- icon: __props.icon,
500
- class: "absolute top-1/2 left-3 size-5 -translate-y-1/2 text-gray-400"
501
- }, null, 8, ["icon"]),
502
- vue.createElementVNode("input", {
503
- disabled: __props.disabled,
504
- placeholder: __props.placeholder,
505
- value: __props.modelValue,
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",
507
- type: "text",
508
- onInput: handleInput
509
- }, null, 40, _hoisted_2$h)
510
- ]);
546
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
547
+ icon: props.icon,
548
+ size: props.size,
549
+ disabled: props.disabled
550
+ }, {
551
+ default: vue.withCtx(({ inputClass }) => [
552
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
553
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
554
+ type: "text",
555
+ name: props.name,
556
+ placeholder: props.placeholder,
557
+ disabled: props.disabled,
558
+ class: inputClass
559
+ }, _ctx.$attrs), null, 16, _hoisted_1$l), [
560
+ [vue.vModelText, modelValue.value]
561
+ ])
562
+ ]),
563
+ _: 1
564
+ }, 8, ["icon", "size", "disabled"]);
511
565
  };
512
566
  }
513
567
  });
514
- const _hoisted_1$l = ["id", "aria-checked", "aria-labelledby", "aria-describedby", "disabled"];
515
- const _hoisted_2$g = {
568
+ const _hoisted_1$k = ["id", "aria-checked", "aria-labelledby", "aria-describedby", "disabled"];
569
+ const _hoisted_2$f = {
516
570
  key: 0,
517
571
  class: "flex flex-col"
518
572
  };
519
573
  const _hoisted_3$e = ["id"];
520
574
  const _hoisted_4$a = ["id"];
521
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
575
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
522
576
  __name: "Switch",
523
577
  props: {
524
578
  modelValue: { type: Boolean, default: false },
@@ -582,8 +636,8 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
582
636
  ]),
583
637
  "aria-hidden": "true"
584
638
  }, null, 2)
585
- ], 10, _hoisted_1$l),
586
- __props.label || __props.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$g, [
639
+ ], 10, _hoisted_1$k),
640
+ __props.label || __props.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
587
641
  __props.label ? (vue.openBlock(), vue.createElementBlock("span", {
588
642
  key: 0,
589
643
  id: labelId.value,
@@ -599,8 +653,8 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
599
653
  };
600
654
  }
601
655
  });
602
- const _hoisted_1$k = { class: "w-full" };
603
- const _hoisted_2$f = {
656
+ const _hoisted_1$j = { class: "w-full" };
657
+ const _hoisted_2$e = {
604
658
  key: 0,
605
659
  class: "mb-2 flex justify-between text-sm"
606
660
  };
@@ -610,7 +664,7 @@ const _hoisted_5$7 = { class: "text-gray-600 dark:text-gray-400" };
610
664
  const _hoisted_6$7 = { class: "relative" };
611
665
  const _hoisted_7$6 = ["value", "min", "max", "step", "disabled"];
612
666
  const _hoisted_8$5 = { class: "pointer-events-none absolute inset-y-0 left-0 flex items-center" };
613
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
667
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
614
668
  __name: "Slider",
615
669
  props: /* @__PURE__ */ vue.mergeModels({
616
670
  min: { default: 0 },
@@ -641,8 +695,8 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
641
695
  modelValue.value = Number(target.value);
642
696
  };
643
697
  return (_ctx, _cache) => {
644
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
645
- __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$f, [
698
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
699
+ __props.showValue ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
646
700
  vue.createElementVNode("span", _hoisted_3$d, vue.toDisplayString(__props.min), 1),
647
701
  vue.createElementVNode("span", _hoisted_4$9, vue.toDisplayString(displayValue.value), 1),
648
702
  vue.createElementVNode("span", _hoisted_5$7, vue.toDisplayString(__props.max), 1)
@@ -669,9 +723,9 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
669
723
  };
670
724
  }
671
725
  });
672
- const Slider = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$k, [["__scopeId", "data-v-c25e2c2a"]]);
673
- const _hoisted_1$j = { class: "relative" };
674
- const _hoisted_2$e = ["id", "disabled", "aria-expanded", "aria-controls"];
726
+ const Slider = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$j, [["__scopeId", "data-v-c25e2c2a"]]);
727
+ const _hoisted_1$i = { class: "relative" };
728
+ const _hoisted_2$d = ["id", "disabled", "aria-expanded", "aria-controls"];
675
729
  const _hoisted_3$c = { class: "flex-1 truncate" };
676
730
  const _hoisted_4$8 = { class: "flex items-center gap-1" };
677
731
  const _hoisted_5$6 = ["id", "aria-label"];
@@ -689,7 +743,7 @@ const _hoisted_9$3 = ["abbr"];
689
743
  const _hoisted_10$3 = ["id", "aria-label"];
690
744
  const _hoisted_11$3 = ["aria-label", "aria-selected", "aria-disabled", "disabled", "onClick"];
691
745
  const _hoisted_12$2 = { class: "mt-4 border-t border-gray-200 pt-3 dark:border-gray-700" };
692
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
746
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
693
747
  __name: "DatePicker",
694
748
  props: /* @__PURE__ */ vue.mergeModels({
695
749
  placeholder: { default: "Select date" },
@@ -813,7 +867,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
813
867
  return formatter.format(date);
814
868
  };
815
869
  return (_ctx, _cache) => {
816
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
870
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
817
871
  vue.createElementVNode("button", {
818
872
  id: triggerId.value,
819
873
  ref_key: "triggerRef",
@@ -852,7 +906,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
852
906
  "aria-hidden": "true"
853
907
  })
854
908
  ])
855
- ], 10, _hoisted_2$e),
909
+ ], 10, _hoisted_2$d),
856
910
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
857
911
  to: "body",
858
912
  disabled: !__props.teleport
@@ -957,8 +1011,8 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
957
1011
  };
958
1012
  }
959
1013
  });
960
- const _hoisted_1$i = { class: "space-y-4" };
961
- const _hoisted_2$d = ["accept", "multiple", "disabled"];
1014
+ const _hoisted_1$h = { class: "space-y-4" };
1015
+ const _hoisted_2$c = ["accept", "multiple", "disabled"];
962
1016
  const _hoisted_3$b = { class: "space-y-2" };
963
1017
  const _hoisted_4$7 = { class: "text-sm font-medium text-gray-700 dark:text-gray-300" };
964
1018
  const _hoisted_5$5 = {
@@ -977,7 +1031,7 @@ const _hoisted_8$3 = { class: "flex-1 min-w-0" };
977
1031
  const _hoisted_9$2 = { class: "text-sm font-medium text-gray-700 dark:text-gray-300 truncate" };
978
1032
  const _hoisted_10$2 = { class: "text-xs text-gray-500 dark:text-gray-400" };
979
1033
  const _hoisted_11$2 = ["onClick"];
980
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1034
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
981
1035
  __name: "FileUpload",
982
1036
  props: {
983
1037
  accept: {},
@@ -1105,7 +1159,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1105
1159
  return "heroicons:document";
1106
1160
  };
1107
1161
  return (_ctx, _cache) => {
1108
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
1162
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
1109
1163
  vue.createElementVNode("div", {
1110
1164
  class: vue.normalizeClass(dropzoneClasses.value),
1111
1165
  onDrop: vue.withModifiers(handleDrop, ["prevent"]),
@@ -1122,7 +1176,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1122
1176
  multiple: __props.multiple,
1123
1177
  disabled: __props.disabled,
1124
1178
  onChange: handleInputChange
1125
- }, null, 40, _hoisted_2$d),
1179
+ }, null, 40, _hoisted_2$c),
1126
1180
  vue.createElementVNode("div", _hoisted_3$b, [
1127
1181
  vue.createVNode(vue.unref(vue$1.Icon), {
1128
1182
  icon: "heroicons:cloud-arrow-up",
@@ -1164,13 +1218,13 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1164
1218
  };
1165
1219
  }
1166
1220
  });
1167
- const _hoisted_1$h = { class: "flex items-center gap-1" };
1168
- const _hoisted_2$c = ["disabled", "onClick", "onMousemove"];
1221
+ const _hoisted_1$g = { class: "flex items-center gap-1" };
1222
+ const _hoisted_2$b = ["disabled", "onClick", "onMousemove"];
1169
1223
  const _hoisted_3$a = {
1170
1224
  key: 0,
1171
1225
  class: "ml-2 text-sm font-medium text-gray-700 dark:text-gray-300"
1172
1226
  };
1173
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1227
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1174
1228
  __name: "Rating",
1175
1229
  props: {
1176
1230
  modelValue: { default: 0 },
@@ -1233,7 +1287,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1233
1287
  hoverValue.value = null;
1234
1288
  };
1235
1289
  return (_ctx, _cache) => {
1236
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
1290
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
1237
1291
  vue.createElementVNode("div", {
1238
1292
  class: "flex items-center",
1239
1293
  onMouseleave: handleMouseLeave
@@ -1265,7 +1319,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1265
1319
  class: vue.normalizeClass([sizeClasses.value, __props.color])
1266
1320
  }, null, 8, ["icon", "class"])
1267
1321
  ], 4)
1268
- ], 42, _hoisted_2$c);
1322
+ ], 42, _hoisted_2$b);
1269
1323
  }), 128))
1270
1324
  ], 32),
1271
1325
  __props.showValue ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$a, vue.toDisplayString(__props.modelValue.toFixed(__props.allowHalf ? 1 : 0)), 1)) : vue.createCommentVNode("", true)
@@ -1273,8 +1327,8 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1273
1327
  };
1274
1328
  }
1275
1329
  });
1276
- const _hoisted_1$g = { class: "relative inline-block" };
1277
- const _hoisted_2$b = {
1330
+ const _hoisted_1$f = { class: "relative inline-block" };
1331
+ const _hoisted_2$a = {
1278
1332
  key: 0,
1279
1333
  class: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"
1280
1334
  };
@@ -1287,7 +1341,7 @@ const _hoisted_7$3 = {
1287
1341
  class: "flex items-center gap-2 pt-3 border-t border-gray-200 dark:border-gray-700"
1288
1342
  };
1289
1343
  const _hoisted_8$2 = ["value"];
1290
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1344
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1291
1345
  __name: "ColorPicker",
1292
1346
  props: {
1293
1347
  modelValue: { default: "#3b82f6" },
@@ -1356,8 +1410,8 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1356
1410
  isOpen.value = false;
1357
1411
  };
1358
1412
  return (_ctx, _cache) => {
1359
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
1360
- __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$b, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
1413
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
1414
+ __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_2$a, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
1361
1415
  vue.createElementVNode("button", {
1362
1416
  type: "button",
1363
1417
  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 }]),
@@ -1447,8 +1501,8 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1447
1501
  };
1448
1502
  }
1449
1503
  });
1450
- const _hoisted_1$f = { class: "space-y-2" };
1451
- const _hoisted_2$a = {
1504
+ const _hoisted_1$e = { class: "space-y-2" };
1505
+ const _hoisted_2$9 = {
1452
1506
  key: 0,
1453
1507
  class: "flex justify-between text-sm font-medium text-gray-700 dark:text-gray-300"
1454
1508
  };
@@ -1456,7 +1510,7 @@ const _hoisted_3$8 = {
1456
1510
  key: 1,
1457
1511
  class: "flex justify-between text-xs text-gray-500 dark:text-gray-400"
1458
1512
  };
1459
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1513
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
1460
1514
  __name: "RangeSlider",
1461
1515
  props: {
1462
1516
  modelValue: { default: () => [25, 75] },
@@ -1534,8 +1588,8 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1534
1588
  }
1535
1589
  };
1536
1590
  return (_ctx, _cache) => {
1537
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
1538
- __props.showLabels ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
1591
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
1592
+ __props.showLabels ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$9, [
1539
1593
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(minValue.value)), 1),
1540
1594
  vue.createElementVNode("span", null, vue.toDisplayString(__props.formatLabel(maxValue.value)), 1)
1541
1595
  ])) : vue.createCommentVNode("", true),
@@ -1576,8 +1630,8 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1576
1630
  };
1577
1631
  }
1578
1632
  });
1579
- const _hoisted_1$e = ["aria-expanded", "aria-controls"];
1580
- const _hoisted_2$9 = ["id", "name", "placeholder", "disabled", "aria-controls"];
1633
+ const _hoisted_1$d = ["aria-expanded", "aria-controls"];
1634
+ const _hoisted_2$8 = ["id", "name", "placeholder", "disabled", "aria-controls"];
1581
1635
  const _hoisted_3$7 = { class: "flex items-center gap-1" };
1582
1636
  const _hoisted_4$5 = ["id", "aria-label", "aria-multiselectable"];
1583
1637
  const _hoisted_5$3 = ["aria-selected", "aria-disabled", "disabled", "onClick"];
@@ -1587,7 +1641,7 @@ const _hoisted_7$2 = {
1587
1641
  class: "px-3 py-2 text-center text-sm text-gray-500 dark:text-gray-400",
1588
1642
  role: "status"
1589
1643
  };
1590
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
1644
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1591
1645
  __name: "Combobox",
1592
1646
  props: {
1593
1647
  modelValue: {},
@@ -1718,7 +1772,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
1718
1772
  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",
1719
1773
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
1720
1774
  }, ["stop"]))
1721
- }, null, 8, _hoisted_2$9)), [
1775
+ }, null, 8, _hoisted_2$8)), [
1722
1776
  [vue.vModelText, search.value]
1723
1777
  ]),
1724
1778
  vue.createElementVNode("div", _hoisted_3$7, [
@@ -1744,7 +1798,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
1744
1798
  "aria-hidden": "true"
1745
1799
  }, null, 8, ["class"])
1746
1800
  ])
1747
- ], 10, _hoisted_1$e),
1801
+ ], 10, _hoisted_1$d),
1748
1802
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1749
1803
  to: teleportTarget.value,
1750
1804
  disabled: teleportDisabled.value
@@ -1812,8 +1866,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
1812
1866
  };
1813
1867
  }
1814
1868
  });
1815
- const _hoisted_1$d = { class: "relative" };
1816
- const _hoisted_2$8 = {
1869
+ const _hoisted_1$c = { class: "relative" };
1870
+ const _hoisted_2$7 = {
1817
1871
  key: 0,
1818
1872
  class: "text-red-500 ml-0.5"
1819
1873
  };
@@ -1846,7 +1900,7 @@ const _hoisted_13 = {
1846
1900
  const _hoisted_14 = ["title", "onClick"];
1847
1901
  const _hoisted_15 = { class: "mt-4 flex items-center justify-between border-t border-gray-200 pt-4 dark:border-gray-700" };
1848
1902
  const _hoisted_16 = { class: "text-xs text-gray-500" };
1849
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1903
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
1850
1904
  __name: "IconPicker",
1851
1905
  props: /* @__PURE__ */ vue.mergeModels({
1852
1906
  label: {},
@@ -1970,7 +2024,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1970
2024
  searchQuery.value = "";
1971
2025
  }
1972
2026
  return (_ctx, _cache) => {
1973
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
2027
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
1974
2028
  __props.label ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
1975
2029
  key: 0,
1976
2030
  "html-for": inputId.value,
@@ -1978,7 +2032,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1978
2032
  }, {
1979
2033
  default: vue.withCtx(() => [
1980
2034
  vue.createTextVNode(vue.toDisplayString(__props.label) + " ", 1),
1981
- __props.required ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$8, "*")) : vue.createCommentVNode("", true)
2035
+ __props.required ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$7, "*")) : vue.createCommentVNode("", true)
1982
2036
  ]),
1983
2037
  _: 1
1984
2038
  }, 8, ["html-for", "error"])) : vue.createCommentVNode("", true),
@@ -2105,8 +2159,8 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
2105
2159
  };
2106
2160
  }
2107
2161
  });
2108
- const _hoisted_1$c = { class: "flex items-center justify-between" };
2109
- const _hoisted_2$7 = { class: "flex items-center gap-3" };
2162
+ const _hoisted_1$b = { class: "flex items-center justify-between" };
2163
+ const _hoisted_2$6 = { class: "flex items-center gap-3" };
2110
2164
  const _hoisted_3$5 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
2111
2165
  const _hoisted_4$3 = {
2112
2166
  key: 0,
@@ -2117,7 +2171,7 @@ const _hoisted_6$1 = {
2117
2171
  key: 0,
2118
2172
  class: "px-5 py-4 bg-gray-50 dark:bg-slate-800/50 border-t border-gray-100 dark:border-slate-700"
2119
2173
  };
2120
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2174
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2121
2175
  __name: "FormSection",
2122
2176
  props: /* @__PURE__ */ vue.mergeModels({
2123
2177
  title: {},
@@ -2151,8 +2205,8 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2151
2205
  ]),
2152
2206
  onClick: _cache[0] || (_cache[0] = ($event) => __props.collapsible && toggleCollapse())
2153
2207
  }, [
2154
- vue.createElementVNode("div", _hoisted_1$c, [
2155
- vue.createElementVNode("div", _hoisted_2$7, [
2208
+ vue.createElementVNode("div", _hoisted_1$b, [
2209
+ vue.createElementVNode("div", _hoisted_2$6, [
2156
2210
  __props.icon ? (vue.openBlock(), vue.createElementBlock("div", {
2157
2211
  key: 0,
2158
2212
  class: vue.normalizeClass([
@@ -2220,8 +2274,8 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2220
2274
  };
2221
2275
  }
2222
2276
  });
2223
- const _hoisted_1$b = { key: 1 };
2224
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2277
+ const _hoisted_1$a = { key: 1 };
2278
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
2225
2279
  __name: "FormActions",
2226
2280
  props: {
2227
2281
  submitLabel: { default: "Enregistrer" },
@@ -2288,7 +2342,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2288
2342
  class: "w-5 h-5"
2289
2343
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2290
2344
  vue.createTextVNode(" " + vue.toDisplayString(__props.submitLabel), 1)
2291
- ], 64)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$b, vue.toDisplayString(__props.loadingLabel || __props.submitLabel + "..."), 1))
2345
+ ], 64)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$a, vue.toDisplayString(__props.loadingLabel || __props.submitLabel + "..."), 1))
2292
2346
  ]),
2293
2347
  _: 1
2294
2348
  }, 8, ["variant", "disabled", "loading", "class"]),
@@ -2297,79 +2351,11 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2297
2351
  };
2298
2352
  }
2299
2353
  });
2300
- const _hoisted_1$a = {
2301
- key: 0,
2302
- class: "absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none text-gray-400"
2303
- };
2304
- const _hoisted_2$6 = {
2305
- key: 1,
2306
- class: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1"
2307
- };
2308
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
2309
- __name: "InputWrapper",
2310
- props: {
2311
- icon: {},
2312
- iconRight: {},
2313
- size: { default: "md" },
2314
- invalid: { type: Boolean },
2315
- disabled: { type: Boolean },
2316
- wrapperClass: {}
2317
- },
2318
- setup(__props, { expose: __expose }) {
2319
- const props = __props;
2320
- const slots = vue.useSlots();
2321
- const hasLeftIcon = vue.computed(() => props.icon || slots.icon);
2322
- const hasRightContent = vue.computed(() => props.iconRight || slots.actions);
2323
- const inputClass = vue.computed(() => [
2324
- // Base styles
2325
- "block w-full rounded-xl border text-sm transition-all",
2326
- "border-gray-200 bg-gray-50 text-gray-900 placeholder-gray-400",
2327
- "focus:border-primary-500 focus:ring-2 focus:ring-primary-500 focus:bg-white focus:outline-hidden",
2328
- "disabled:border-gray-200 disabled:bg-gray-100 disabled:text-gray-500 disabled:cursor-not-allowed",
2329
- // Dark mode
2330
- "dark:border-slate-600 dark:bg-slate-700 dark:text-white dark:placeholder-gray-500",
2331
- "dark:focus:border-primary-500 dark:focus:ring-primary-500 dark:focus:bg-slate-600",
2332
- "dark:disabled:bg-slate-800 dark:disabled:text-gray-500",
2333
- // Padding based on icons/actions
2334
- hasLeftIcon.value ? "pl-10" : "pl-4",
2335
- hasRightContent.value ? "pr-10" : "pr-4",
2336
- // Size
2337
- props.size === "sm" && "py-2 text-xs",
2338
- props.size === "md" && "py-3 text-sm",
2339
- props.size === "lg" && "py-4 text-base",
2340
- // Invalid state
2341
- props.invalid && "border-red-500 focus:border-red-500 focus:ring-red-500 dark:border-red-500"
2342
- ]);
2343
- __expose({ inputClass });
2344
- return (_ctx, _cache) => {
2345
- return vue.openBlock(), vue.createElementBlock("div", {
2346
- class: vue.normalizeClass(["relative", __props.wrapperClass])
2347
- }, [
2348
- hasLeftIcon.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
2349
- vue.renderSlot(_ctx.$slots, "icon", {}, () => [
2350
- __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2351
- key: 0,
2352
- icon: __props.icon,
2353
- class: "size-5"
2354
- }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
2355
- ])
2356
- ])) : vue.createCommentVNode("", true),
2357
- vue.renderSlot(_ctx.$slots, "default", { inputClass: inputClass.value }),
2358
- hasRightContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
2359
- vue.renderSlot(_ctx.$slots, "actions", {}, () => [
2360
- __props.iconRight ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2361
- key: 0,
2362
- icon: __props.iconRight,
2363
- class: "size-5 text-gray-400 pointer-events-none"
2364
- }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
2365
- ])
2366
- ])) : vue.createCommentVNode("", true)
2367
- ], 2);
2368
- };
2369
- }
2370
- });
2371
2354
  const _hoisted_1$9 = ["id", "name", "placeholder", "disabled", "required", "aria-invalid", "aria-required", "aria-describedby"];
2372
2355
  const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
2356
+ ...{
2357
+ inheritAttrs: false
2358
+ },
2373
2359
  __name: "EmailInput",
2374
2360
  props: /* @__PURE__ */ vue.mergeModels({
2375
2361
  placeholder: { default: "Enter email address..." },
@@ -2401,14 +2387,14 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
2401
2387
  isTouched.value = true;
2402
2388
  }
2403
2389
  return (_ctx, _cache) => {
2404
- return vue.openBlock(), vue.createBlock(_sfc_main$a, {
2390
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
2405
2391
  icon: "lucide:mail",
2406
2392
  size: __props.size,
2407
2393
  disabled: __props.disabled,
2408
2394
  invalid: showStatus.value && isValid.value === false
2409
2395
  }, {
2410
2396
  default: vue.withCtx(({ inputClass }) => [
2411
- vue.withDirectives(vue.createElementVNode("input", {
2397
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
2412
2398
  id: __props.id ?? __props.name,
2413
2399
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
2414
2400
  type: "email",
@@ -2419,9 +2405,8 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
2419
2405
  "aria-invalid": showStatus.value && isValid.value === false || void 0,
2420
2406
  "aria-required": __props.required || void 0,
2421
2407
  "aria-describedby": __props.describedBy,
2422
- class: vue.normalizeClass(inputClass),
2423
- onBlur: handleBlur
2424
- }, null, 42, _hoisted_1$9), [
2408
+ class: inputClass
2409
+ }, _ctx.$attrs, { onBlur: handleBlur }), null, 16, _hoisted_1$9), [
2425
2410
  [vue.vModelText, modelValue.value]
2426
2411
  ])
2427
2412
  ]),
@@ -2449,6 +2434,9 @@ const _hoisted_3$4 = {
2449
2434
  };
2450
2435
  const _hoisted_4$2 = { class: "h-1.5 w-full rounded-full bg-gray-200 dark:bg-slate-700 overflow-hidden" };
2451
2436
  const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2437
+ ...{
2438
+ inheritAttrs: false
2439
+ },
2452
2440
  __name: "PasswordInput",
2453
2441
  props: /* @__PURE__ */ vue.mergeModels({
2454
2442
  placeholder: { default: "Enter password..." },
@@ -2499,13 +2487,13 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2499
2487
  return (_ctx, _cache) => {
2500
2488
  var _a, _b;
2501
2489
  return vue.openBlock(), vue.createElementBlock("div", null, [
2502
- vue.createVNode(_sfc_main$a, {
2490
+ vue.createVNode(_sfc_main$p, {
2503
2491
  icon: "lucide:lock",
2504
2492
  size: __props.size,
2505
2493
  disabled: __props.disabled
2506
2494
  }, {
2507
2495
  default: vue.withCtx(({ inputClass }) => [
2508
- vue.withDirectives(vue.createElementVNode("input", {
2496
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
2509
2497
  id: __props.id ?? __props.name,
2510
2498
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
2511
2499
  type: showPassword.value ? "text" : "password",
@@ -2515,9 +2503,8 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2515
2503
  required: __props.required,
2516
2504
  "aria-required": __props.required || void 0,
2517
2505
  "aria-describedby": __props.describedBy,
2518
- class: vue.normalizeClass(inputClass),
2519
- autocomplete: "new-password"
2520
- }, null, 10, _hoisted_1$8), [
2506
+ class: inputClass
2507
+ }, _ctx.$attrs, { autocomplete: "new-password" }), null, 16, _hoisted_1$8), [
2521
2508
  [vue.vModelDynamic, modelValue.value]
2522
2509
  ])
2523
2510
  ]),
@@ -2580,29 +2567,52 @@ const _hoisted_12 = {
2580
2567
  class: "px-3 py-4 text-center text-sm text-gray-500"
2581
2568
  };
2582
2569
  const defaultCountries = [
2583
- { code: "FR", name: "France", dialCode: "+33", flag: "🇫🇷" },
2584
- { code: "US", name: "United States", dialCode: "+1", flag: "🇺🇸" },
2585
- { code: "GB", name: "United Kingdom", dialCode: "+44", flag: "🇬🇧" },
2586
- { code: "DE", name: "Germany", dialCode: "+49", flag: "🇩🇪" },
2587
- { code: "ES", name: "Spain", dialCode: "+34", flag: "🇪🇸" },
2588
- { code: "IT", name: "Italy", dialCode: "+39", flag: "🇮🇹" },
2589
- { code: "BE", name: "Belgium", dialCode: "+32", flag: "🇧🇪" },
2590
- { code: "CH", name: "Switzerland", dialCode: "+41", flag: "🇨🇭" },
2591
- { code: "CA", name: "Canada", dialCode: "+1", flag: "🇨🇦" },
2592
- { code: "AU", name: "Australia", dialCode: "+61", flag: "🇦🇺" },
2593
- { code: "ML", name: "Mali", dialCode: "+223", flag: "🇲🇱" },
2594
- { code: "SN", name: "Senegal", dialCode: "+221", flag: "🇸🇳" },
2595
- { code: "CI", name: "Côte d'Ivoire", dialCode: "+225", flag: "🇨🇮" },
2596
- { code: "MA", name: "Morocco", dialCode: "+212", flag: "🇲🇦" },
2597
- { code: "TN", name: "Tunisia", dialCode: "+216", flag: "🇹🇳" },
2598
- { code: "DZ", name: "Algeria", dialCode: "+213", flag: "🇩🇿" }
2570
+ { code: "FR", name: "France", dialCode: "+33", flag: "🇫🇷", format: "# ## ## ## ##" },
2571
+ { code: "US", name: "United States", dialCode: "+1", flag: "🇺🇸", format: "(###) ###-####" },
2572
+ { code: "GB", name: "United Kingdom", dialCode: "+44", flag: "🇬🇧", format: "#### ######" },
2573
+ { code: "DE", name: "Germany", dialCode: "+49", flag: "🇩🇪", format: "### #######" },
2574
+ { code: "ES", name: "Spain", dialCode: "+34", flag: "🇪🇸", format: "### ### ###" },
2575
+ { code: "IT", name: "Italy", dialCode: "+39", flag: "🇮🇹", format: "### ### ####" },
2576
+ { code: "BE", name: "Belgium", dialCode: "+32", flag: "🇧🇪", format: "### ## ## ##" },
2577
+ { code: "CH", name: "Switzerland", dialCode: "+41", flag: "🇨🇭", format: "## ### ## ##" },
2578
+ { code: "CA", name: "Canada", dialCode: "+1", flag: "🇨🇦", format: "(###) ###-####" },
2579
+ { code: "AU", name: "Australia", dialCode: "+61", flag: "🇦🇺", format: "### ### ###" },
2580
+ { code: "ML", name: "Mali", dialCode: "+223", flag: "🇲🇱", format: "## ## ## ##" },
2581
+ { code: "SN", name: "Senegal", dialCode: "+221", flag: "🇸🇳", format: "## ### ## ##" },
2582
+ { code: "CI", name: "Côte d'Ivoire", dialCode: "+225", flag: "🇨🇮", format: "## ## ## ## ##" },
2583
+ { code: "MA", name: "Morocco", dialCode: "+212", flag: "🇲🇦", format: "## ## ## ## ##" },
2584
+ { code: "TN", name: "Tunisia", dialCode: "+216", flag: "🇹🇳", format: "## ### ###" },
2585
+ { code: "DZ", name: "Algeria", dialCode: "+213", flag: "🇩🇿", format: "### ## ## ##" }
2599
2586
  ];
2587
+ function formatPhoneWithPattern(value, pattern) {
2588
+ if (!pattern) return value;
2589
+ const digits = value.replace(/\D/g, "");
2590
+ let result = "";
2591
+ let digitIndex = 0;
2592
+ for (const char of pattern) {
2593
+ if (digitIndex >= digits.length) break;
2594
+ if (char === "#") {
2595
+ result += digits[digitIndex];
2596
+ digitIndex++;
2597
+ } else {
2598
+ result += char;
2599
+ }
2600
+ }
2601
+ return result;
2602
+ }
2603
+ function getPhoneDigits(value) {
2604
+ return value.replace(/\D/g, "");
2605
+ }
2600
2606
  const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2607
+ ...{
2608
+ inheritAttrs: false
2609
+ },
2601
2610
  __name: "PhoneInput",
2602
2611
  props: /* @__PURE__ */ vue.mergeModels({
2603
2612
  placeholder: { default: "Phone number" },
2604
2613
  size: { default: "md" },
2605
2614
  disabled: { type: Boolean },
2615
+ showDialCode: { type: Boolean, default: false },
2606
2616
  name: {},
2607
2617
  id: {},
2608
2618
  required: { type: Boolean },
@@ -2634,19 +2644,50 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2634
2644
  if (!modelValue.value) return "";
2635
2645
  return `${selectedCountry.value.dialCode}${modelValue.value}`;
2636
2646
  });
2647
+ const displayValue = vue.computed(() => {
2648
+ const formatted = formatPhoneWithPattern(modelValue.value, selectedCountry.value.format);
2649
+ if (props.showDialCode && modelValue.value) {
2650
+ return `${selectedCountry.value.dialCode} ${formatted}`;
2651
+ }
2652
+ return formatted;
2653
+ });
2637
2654
  function selectCountry(country) {
2638
2655
  selectedCountry.value = country;
2639
2656
  showDropdown.value = false;
2640
2657
  searchQuery.value = "";
2641
2658
  }
2642
- function formatPhoneNumber(value) {
2643
- const cleaned = value.replace(/\D/g, "");
2644
- return cleaned;
2659
+ function parsePhoneWithDialCode(value) {
2660
+ const cleaned = value.replace(/\s/g, "");
2661
+ if (cleaned.startsWith("+") || cleaned.startsWith("00")) {
2662
+ const withPlus = cleaned.startsWith("00") ? "+" + cleaned.slice(2) : cleaned;
2663
+ for (const country of props.countries) {
2664
+ if (withPlus.startsWith(country.dialCode)) {
2665
+ const digits = withPlus.slice(country.dialCode.length).replace(/\D/g, "");
2666
+ return { digits, country };
2667
+ }
2668
+ }
2669
+ }
2670
+ return { digits: getPhoneDigits(value) };
2645
2671
  }
2646
2672
  function handleInput(event) {
2647
2673
  const target = event.target;
2648
- const formatted = formatPhoneNumber(target.value);
2649
- modelValue.value = formatted;
2674
+ const inputValue = target.value;
2675
+ const { digits, country } = parsePhoneWithDialCode(inputValue);
2676
+ if (country) {
2677
+ selectedCountry.value = country;
2678
+ }
2679
+ modelValue.value = digits;
2680
+ }
2681
+ function handlePaste(event) {
2682
+ var _a;
2683
+ const pastedData = (_a = event.clipboardData) == null ? void 0 : _a.getData("text");
2684
+ if (!pastedData) return;
2685
+ const { digits, country } = parsePhoneWithDialCode(pastedData);
2686
+ if (country) {
2687
+ event.preventDefault();
2688
+ selectedCountry.value = country;
2689
+ modelValue.value = digits;
2690
+ }
2650
2691
  }
2651
2692
  function handleClickOutside(event) {
2652
2693
  if (dropdownRef.value && !dropdownRef.value.contains(event.target)) {
@@ -2668,7 +2709,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2668
2709
  ref_key: "dropdownRef",
2669
2710
  ref: dropdownRef
2670
2711
  }, [
2671
- vue.createVNode(_sfc_main$a, {
2712
+ vue.createVNode(_sfc_main$p, {
2672
2713
  size: __props.size,
2673
2714
  disabled: __props.disabled
2674
2715
  }, {
@@ -2690,9 +2731,9 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2690
2731
  ], 8, _hoisted_1$7)
2691
2732
  ]),
2692
2733
  default: vue.withCtx(({ inputClass }) => [
2693
- vue.createElementVNode("input", {
2734
+ vue.createElementVNode("input", vue.mergeProps({
2694
2735
  id: __props.id ?? __props.name,
2695
- value: modelValue.value,
2736
+ value: displayValue.value,
2696
2737
  type: "tel",
2697
2738
  name: __props.name,
2698
2739
  placeholder: __props.placeholder,
@@ -2700,9 +2741,11 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2700
2741
  required: __props.required,
2701
2742
  "aria-required": __props.required || void 0,
2702
2743
  "aria-describedby": __props.describedBy,
2703
- class: vue.normalizeClass([inputClass, "pl-20"]),
2704
- onInput: handleInput
2705
- }, null, 42, _hoisted_3$3)
2744
+ class: [inputClass, "pl-20"]
2745
+ }, _ctx.$attrs, {
2746
+ onInput: handleInput,
2747
+ onPaste: handlePaste
2748
+ }), null, 16, _hoisted_3$3)
2706
2749
  ]),
2707
2750
  actions: vue.withCtx(() => [
2708
2751
  vue.createElementVNode("span", _hoisted_4$1, vue.toDisplayString(selectedCountry.value.dialCode), 1)
@@ -2755,6 +2798,9 @@ const _hoisted_1$6 = ["disabled"];
2755
2798
  const _hoisted_2$3 = ["id", "value", "name", "placeholder", "disabled", "required", "min", "max", "step", "aria-required", "aria-describedby"];
2756
2799
  const _hoisted_3$2 = ["disabled"];
2757
2800
  const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2801
+ ...{
2802
+ inheritAttrs: false
2803
+ },
2758
2804
  __name: "NumberInput",
2759
2805
  props: /* @__PURE__ */ vue.mergeModels({
2760
2806
  placeholder: { default: "0" },
@@ -2813,12 +2859,12 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2813
2859
  }
2814
2860
  }
2815
2861
  return (_ctx, _cache) => {
2816
- return vue.openBlock(), vue.createBlock(_sfc_main$a, {
2862
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
2817
2863
  size: __props.size,
2818
2864
  disabled: __props.disabled
2819
2865
  }, vue.createSlots({
2820
2866
  default: vue.withCtx(({ inputClass }) => [
2821
- vue.createElementVNode("input", {
2867
+ vue.createElementVNode("input", vue.mergeProps({
2822
2868
  id: __props.id ?? __props.name,
2823
2869
  value: modelValue.value,
2824
2870
  type: "number",
@@ -2831,9 +2877,8 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2831
2877
  step: __props.step,
2832
2878
  "aria-required": __props.required || void 0,
2833
2879
  "aria-describedby": __props.describedBy,
2834
- class: vue.normalizeClass([inputClass, "text-center", __props.showStepper && "pl-12 pr-12"]),
2835
- onInput: handleInput
2836
- }, null, 42, _hoisted_2$3)
2880
+ class: [inputClass, "text-center", __props.showStepper && "pl-12 pr-12"]
2881
+ }, _ctx.$attrs, { onInput: handleInput }), null, 16, _hoisted_2$3)
2837
2882
  ]),
2838
2883
  _: 2
2839
2884
  }, [
@@ -2879,6 +2924,9 @@ const _hoisted_1$5 = { class: "text-sm font-medium text-gray-500 dark:text-gray-
2879
2924
  const _hoisted_2$2 = ["id", "value", "name", "placeholder", "disabled", "required", "aria-required", "aria-describedby"];
2880
2925
  const _hoisted_3$1 = { class: "text-sm font-medium text-gray-500 dark:text-gray-400" };
2881
2926
  const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2927
+ ...{
2928
+ inheritAttrs: false
2929
+ },
2882
2930
  __name: "MoneyInput",
2883
2931
  props: /* @__PURE__ */ vue.mergeModels({
2884
2932
  placeholder: { default: "0.00" },
@@ -2949,12 +2997,12 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2949
2997
  }
2950
2998
  }
2951
2999
  return (_ctx, _cache) => {
2952
- return vue.openBlock(), vue.createBlock(_sfc_main$a, {
3000
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
2953
3001
  size: __props.size,
2954
3002
  disabled: __props.disabled
2955
3003
  }, vue.createSlots({
2956
3004
  default: vue.withCtx(({ inputClass }) => [
2957
- vue.createElementVNode("input", {
3005
+ vue.createElementVNode("input", vue.mergeProps({
2958
3006
  id: __props.id ?? __props.name,
2959
3007
  value: displayValue.value,
2960
3008
  type: "text",
@@ -2965,10 +3013,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2965
3013
  required: __props.required,
2966
3014
  "aria-required": __props.required || void 0,
2967
3015
  "aria-describedby": __props.describedBy,
2968
- class: vue.normalizeClass([inputClass, "text-right"]),
3016
+ class: [inputClass, "text-right"]
3017
+ }, _ctx.$attrs, {
2969
3018
  onInput: handleInput,
2970
3019
  onBlur: handleBlur
2971
- }, null, 42, _hoisted_2$2)
3020
+ }), null, 16, _hoisted_2$2)
2972
3021
  ]),
2973
3022
  _: 2
2974
3023
  }, [
@@ -2992,6 +3041,9 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2992
3041
  });
2993
3042
  const _hoisted_1$4 = ["id", "value", "name", "placeholder", "disabled", "required", "min", "max", "step", "aria-required", "aria-describedby"];
2994
3043
  const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3044
+ ...{
3045
+ inheritAttrs: false
3046
+ },
2995
3047
  __name: "PercentInput",
2996
3048
  props: /* @__PURE__ */ vue.mergeModels({
2997
3049
  placeholder: { default: "0" },
@@ -3033,12 +3085,12 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3033
3085
  displayValue.value = target.value;
3034
3086
  }
3035
3087
  return (_ctx, _cache) => {
3036
- return vue.openBlock(), vue.createBlock(_sfc_main$a, {
3088
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
3037
3089
  size: __props.size,
3038
3090
  disabled: __props.disabled
3039
3091
  }, {
3040
3092
  default: vue.withCtx(({ inputClass }) => [
3041
- vue.createElementVNode("input", {
3093
+ vue.createElementVNode("input", vue.mergeProps({
3042
3094
  id: __props.id ?? __props.name,
3043
3095
  value: displayValue.value,
3044
3096
  type: "number",
@@ -3052,9 +3104,8 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3052
3104
  step: __props.decimals > 0 ? Math.pow(10, -__props.decimals) : 1,
3053
3105
  "aria-required": __props.required || void 0,
3054
3106
  "aria-describedby": __props.describedBy,
3055
- class: vue.normalizeClass([inputClass, "text-right pr-10"]),
3056
- onInput: handleInput
3057
- }, null, 42, _hoisted_1$4)
3107
+ class: [inputClass, "text-right pr-10"]
3108
+ }, _ctx.$attrs, { onInput: handleInput }), null, 16, _hoisted_1$4)
3058
3109
  ]),
3059
3110
  actions: vue.withCtx(() => [..._cache[0] || (_cache[0] = [
3060
3111
  vue.createElementVNode("span", { class: "text-sm font-medium text-gray-500 dark:text-gray-400" }, "%", -1)
@@ -3069,6 +3120,9 @@ const _hoisted_2$1 = ["disabled"];
3069
3120
  const _hoisted_3 = ["id", "value", "name", "disabled", "required", "min", "max"];
3070
3121
  const _hoisted_4 = ["disabled"];
3071
3122
  const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3123
+ ...{
3124
+ inheritAttrs: false
3125
+ },
3072
3126
  __name: "QuantityInput",
3073
3127
  props: /* @__PURE__ */ vue.mergeModels({
3074
3128
  size: { default: "md" },
@@ -3153,7 +3207,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3153
3207
  class: vue.normalizeClass(["text-gray-600 dark:text-gray-300", sizeClasses.value.icon])
3154
3208
  }, null, 8, ["class"])
3155
3209
  ], 10, _hoisted_2$1),
3156
- vue.createElementVNode("input", {
3210
+ vue.createElementVNode("input", vue.mergeProps({
3157
3211
  id: __props.id ?? __props.name,
3158
3212
  value: modelValue.value,
3159
3213
  type: "number",
@@ -3162,15 +3216,14 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3162
3216
  required: __props.required,
3163
3217
  min: __props.min,
3164
3218
  max: __props.max,
3165
- class: vue.normalizeClass([
3219
+ class: [
3166
3220
  "bg-transparent text-center font-semibold text-gray-900 dark:text-white",
3167
3221
  "focus:outline-none appearance-none",
3168
3222
  "[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none",
3169
3223
  "disabled:opacity-50",
3170
3224
  sizeClasses.value.input
3171
- ]),
3172
- onInput: handleInput
3173
- }, null, 42, _hoisted_3),
3225
+ ]
3226
+ }, _ctx.$attrs, { onInput: handleInput }), null, 16, _hoisted_3),
3174
3227
  vue.createElementVNode("button", {
3175
3228
  type: "button",
3176
3229
  disabled: !canIncrement.value,
@@ -3194,6 +3247,9 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3194
3247
  });
3195
3248
  const _hoisted_1$2 = ["id", "name", "placeholder", "disabled", "required", "aria-invalid", "aria-required", "aria-describedby"];
3196
3249
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3250
+ ...{
3251
+ inheritAttrs: false
3252
+ },
3197
3253
  __name: "URLInput",
3198
3254
  props: /* @__PURE__ */ vue.mergeModels({
3199
3255
  placeholder: { default: "https://example.com" },
@@ -3231,14 +3287,14 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3231
3287
  }
3232
3288
  }
3233
3289
  return (_ctx, _cache) => {
3234
- return vue.openBlock(), vue.createBlock(_sfc_main$a, {
3290
+ return vue.openBlock(), vue.createBlock(_sfc_main$p, {
3235
3291
  icon: "lucide:link",
3236
3292
  size: __props.size,
3237
3293
  disabled: __props.disabled,
3238
3294
  invalid: showStatus.value && isValid.value === false
3239
3295
  }, {
3240
3296
  default: vue.withCtx(({ inputClass }) => [
3241
- vue.withDirectives(vue.createElementVNode("input", {
3297
+ vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
3242
3298
  id: __props.id ?? __props.name,
3243
3299
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
3244
3300
  type: "url",
@@ -3249,9 +3305,8 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3249
3305
  "aria-invalid": showStatus.value && isValid.value === false || void 0,
3250
3306
  "aria-required": __props.required || void 0,
3251
3307
  "aria-describedby": __props.describedBy,
3252
- class: vue.normalizeClass(inputClass),
3253
- onBlur: handleBlur
3254
- }, null, 42, _hoisted_1$2), [
3308
+ class: inputClass
3309
+ }, _ctx.$attrs, { onBlur: handleBlur }), null, 16, _hoisted_1$2), [
3255
3310
  [vue.vModelText, modelValue.value]
3256
3311
  ])
3257
3312
  ]),
@@ -3280,6 +3335,9 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3280
3335
  });
3281
3336
  const _hoisted_1$1 = ["value", "type", "name", "disabled", "onInput", "onKeydown"];
3282
3337
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3338
+ ...{
3339
+ inheritAttrs: false
3340
+ },
3283
3341
  __name: "OTPInput",
3284
3342
  props: /* @__PURE__ */ vue.mergeModels({
3285
3343
  length: { default: 6 },
@@ -3430,6 +3488,9 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3430
3488
  const _hoisted_1 = ["onClick"];
3431
3489
  const _hoisted_2 = ["id", "name", "placeholder", "disabled", "required"];
3432
3490
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3491
+ ...{
3492
+ inheritAttrs: false
3493
+ },
3433
3494
  __name: "TagsInput",
3434
3495
  props: /* @__PURE__ */ vue.mergeModels({
3435
3496
  placeholder: { default: "Add tag..." },
@@ -3550,7 +3611,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3550
3611
  ]),
3551
3612
  _: 1
3552
3613
  }),
3553
- canAddMore.value ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
3614
+ canAddMore.value ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", vue.mergeProps({
3554
3615
  key: 0,
3555
3616
  id: __props.id ?? __props.name,
3556
3617
  ref_key: "inputRef",
@@ -3561,47 +3622,48 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3561
3622
  placeholder: modelValue.value.length === 0 ? __props.placeholder : "",
3562
3623
  disabled: __props.disabled,
3563
3624
  required: __props.required && modelValue.value.length === 0,
3564
- class: vue.normalizeClass([
3625
+ class: [
3565
3626
  "flex-1 min-w-20 bg-transparent border-none focus:outline-none",
3566
3627
  "text-gray-900 dark:text-white placeholder-gray-400",
3567
3628
  sizeClasses.value.input
3568
- ]),
3629
+ ]
3630
+ }, _ctx.$attrs, {
3569
3631
  onKeydown: handleKeydown,
3570
3632
  onBlur: handleBlur
3571
- }, null, 42, _hoisted_2)), [
3633
+ }), null, 16, _hoisted_2)), [
3572
3634
  [vue.vModelText, inputValue.value]
3573
3635
  ]) : vue.createCommentVNode("", true)
3574
3636
  ], 2);
3575
3637
  };
3576
3638
  }
3577
3639
  });
3578
- const TagsInput = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-7949bfa4"]]);
3640
+ const TagsInput = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-fcace07c"]]);
3579
3641
  exports.Slider = Slider;
3580
3642
  exports.TagsInput = TagsInput;
3581
3643
  exports._sfc_main = _sfc_main$r;
3582
3644
  exports._sfc_main$1 = _sfc_main$q;
3583
- exports._sfc_main$10 = _sfc_main$g;
3584
- exports._sfc_main$11 = _sfc_main$f;
3585
- exports._sfc_main$12 = _sfc_main$e;
3586
- exports._sfc_main$13 = _sfc_main$d;
3587
- exports._sfc_main$14 = _sfc_main$c;
3588
- exports._sfc_main$15 = _sfc_main$b;
3589
- exports._sfc_main$16 = _sfc_main$a;
3645
+ exports._sfc_main$10 = _sfc_main$f;
3646
+ exports._sfc_main$11 = _sfc_main$e;
3647
+ exports._sfc_main$12 = _sfc_main$d;
3648
+ exports._sfc_main$13 = _sfc_main$c;
3649
+ exports._sfc_main$14 = _sfc_main$b;
3650
+ exports._sfc_main$15 = _sfc_main$a;
3651
+ exports._sfc_main$16 = _sfc_main$p;
3590
3652
  exports._sfc_main$17 = _sfc_main$9;
3591
3653
  exports._sfc_main$18 = _sfc_main$8;
3592
3654
  exports._sfc_main$19 = _sfc_main$7;
3593
- exports._sfc_main$2 = _sfc_main$p;
3655
+ exports._sfc_main$2 = _sfc_main$o;
3594
3656
  exports._sfc_main$20 = _sfc_main$6;
3595
3657
  exports._sfc_main$21 = _sfc_main$5;
3596
3658
  exports._sfc_main$22 = _sfc_main$4;
3597
3659
  exports._sfc_main$23 = _sfc_main$3;
3598
3660
  exports._sfc_main$24 = _sfc_main$2;
3599
3661
  exports._sfc_main$25 = _sfc_main$1;
3600
- exports._sfc_main$3 = _sfc_main$o;
3601
- exports._sfc_main$4 = _sfc_main$n;
3602
- exports._sfc_main$5 = _sfc_main$m;
3603
- exports._sfc_main$6 = _sfc_main$l;
3604
- exports._sfc_main$7 = _sfc_main$j;
3605
- exports._sfc_main$8 = _sfc_main$i;
3606
- exports._sfc_main$9 = _sfc_main$h;
3607
- //# sourceMappingURL=TagsInput-ClqgyR9O.cjs.map
3662
+ exports._sfc_main$3 = _sfc_main$n;
3663
+ exports._sfc_main$4 = _sfc_main$m;
3664
+ exports._sfc_main$5 = _sfc_main$l;
3665
+ exports._sfc_main$6 = _sfc_main$k;
3666
+ exports._sfc_main$7 = _sfc_main$i;
3667
+ exports._sfc_main$8 = _sfc_main$h;
3668
+ exports._sfc_main$9 = _sfc_main$g;
3669
+ //# sourceMappingURL=TagsInput-DVebLEH2.cjs.map