@enos5/enos-vue-default 1.16.7 → 1.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.md +128 -86
  2. package/dist/{code-BcyERX8s.js → code-Cm7MgQif.js} +2 -2
  3. package/dist/{code-BcyERX8s.js.map → code-Cm7MgQif.js.map} +1 -1
  4. package/dist/components/TableColumnVisibility.vue.d.ts +81 -0
  5. package/dist/components/TableList.vue.d.ts +83 -0
  6. package/dist/components/TableListForm.vue.d.ts +10 -1
  7. package/dist/{default-BlbQaebe.js → default-Cgs8Tahv.js} +2 -2
  8. package/dist/{default-BlbQaebe.js.map → default-Cgs8Tahv.js.map} +1 -1
  9. package/dist/{dom-Dr7aAHqE.js → dom-BeRggs56.js} +2 -2
  10. package/dist/{dom-Dr7aAHqE.js.map → dom-BeRggs56.js.map} +1 -1
  11. package/dist/{image-BJntlUOW.js → image-wVCnQh0h.js} +2 -2
  12. package/dist/{image-BJntlUOW.js.map → image-wVCnQh0h.js.map} +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/index.node.js +1 -1
  15. package/dist/{link-BqipZiMo.js → link-KJRFTy--.js} +2 -2
  16. package/dist/{link-BqipZiMo.js.map → link-KJRFTy--.js.map} +1 -1
  17. package/dist/{lists-B4tl_VfV.js → lists-BzJs5oD0.js} +2 -2
  18. package/dist/{lists-B4tl_VfV.js.map → lists-BzJs5oD0.js.map} +1 -1
  19. package/dist/{plugin-IFyVg9Jx.js → plugin-TP7ra_6S.js} +968 -571
  20. package/dist/plugin-TP7ra_6S.js.map +1 -0
  21. package/dist/{silver-B-eQlbVa.js → silver-Y-RHxZ9j.js} +2 -2
  22. package/dist/{silver-B-eQlbVa.js.map → silver-Y-RHxZ9j.js.map} +1 -1
  23. package/dist/styles.css +126 -33
  24. package/dist/{table-2QVKcjlJ.js → table-CV-zOVUh.js} +2 -2
  25. package/dist/{table-2QVKcjlJ.js.map → table-CV-zOVUh.js.map} +1 -1
  26. package/dist/{tinymce-Cux5-LNK.js → tinymce-C8b0wRwA.js} +2 -2
  27. package/dist/{tinymce-Cux5-LNK.js.map → tinymce-C8b0wRwA.js.map} +1 -1
  28. package/package.json +1 -1
  29. package/dist/plugin-IFyVg9Jx.js.map +0 -1
@@ -36,18 +36,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
36
36
  }) : target, mod));
37
37
  //#endregion
38
38
  //#region src/components/CardTabs.vue
39
- var _hoisted_1$38 = { class: "border-b border-neutral-200 bg-neutral-50/80 p-2 dark:border-neutral-800 dark:bg-neutral-900/80" };
40
- var _hoisted_2$21 = {
39
+ var _hoisted_1$39 = { class: "border-b border-neutral-200 bg-neutral-50/80 p-2 dark:border-neutral-800 dark:bg-neutral-900/80" };
40
+ var _hoisted_2$22 = {
41
41
  role: "tablist",
42
42
  class: "flex overflow-hidden rounded-lg bg-white shadow-sm ring-1 ring-neutral-200 dark:bg-neutral-950 dark:ring-neutral-800"
43
43
  };
44
- var _hoisted_3$16 = [
44
+ var _hoisted_3$17 = [
45
45
  "aria-selected",
46
46
  "tabindex",
47
47
  "onClick",
48
48
  "onKeydown"
49
49
  ];
50
- var _sfc_main$40 = {
50
+ var _sfc_main$41 = {
51
51
  __name: "CardTabs",
52
52
  props: {
53
53
  tabs: {
@@ -106,7 +106,7 @@ var _sfc_main$40 = {
106
106
  focusTabAtIndex(targetIndex);
107
107
  };
108
108
  return (_ctx, _cache) => {
109
- return openBlock(), createElementBlock("div", _hoisted_1$38, [createElementVNode("div", _hoisted_2$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
109
+ return openBlock(), createElementBlock("div", _hoisted_1$39, [createElementVNode("div", _hoisted_2$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
110
110
  return openBlock(), createElementBlock("button", {
111
111
  key: tab.value,
112
112
  ref_for: true,
@@ -123,22 +123,22 @@ var _sfc_main$40 = {
123
123
  ]),
124
124
  onClick: ($event) => activateTab(tab.value),
125
125
  onKeydown: ($event) => onTabKeydown($event, index)
126
- }, toDisplayString(tab.label), 47, _hoisted_3$16);
126
+ }, toDisplayString(tab.label), 47, _hoisted_3$17);
127
127
  }), 128))])]);
128
128
  };
129
129
  }
130
130
  };
131
131
  //#endregion
132
132
  //#region src/components/Card.vue
133
- var _hoisted_1$37 = {
133
+ var _hoisted_1$38 = {
134
134
  key: 0,
135
135
  class: "mb-4"
136
136
  };
137
- var _hoisted_2$20 = {
137
+ var _hoisted_2$21 = {
138
138
  key: 1,
139
139
  class: "mb-4 text-xl font-semibold tracking-tight text-neutral-950 dark:text-neutral-50"
140
140
  };
141
- var _sfc_main$39 = {
141
+ var _sfc_main$40 = {
142
142
  __name: "Card",
143
143
  props: {
144
144
  title: {
@@ -198,13 +198,13 @@ var _sfc_main$39 = {
198
198
  __props.overflowClass,
199
199
  { "sticky top-6 self-start": __props.sticky },
200
200
  __props.cardClass
201
- ]) }, [__props.tabs.length > 0 ? (openBlock(), createBlock(_sfc_main$40, {
201
+ ]) }, [__props.tabs.length > 0 ? (openBlock(), createBlock(_sfc_main$41, {
202
202
  key: 0,
203
203
  tabs: __props.tabs,
204
204
  "active-tab": __props.activeTab,
205
205
  "onUpdate:activeTab": _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:activeTab", $event)),
206
206
  onTabClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("tab-click", $event))
207
- }, null, 8, ["tabs", "active-tab"])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(__props.paddingClass) }, [_ctx.$slots.customTitle ? (openBlock(), createElementBlock("div", _hoisted_1$37, [renderSlot(_ctx.$slots, "customTitle")])) : __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2$20, toDisplayString(__props.title), 1)) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(["relative", __props.tabs.length > 0 ? "overflow-hidden" : "overflow-visible"]) }, [createVNode(Transition, {
207
+ }, null, 8, ["tabs", "active-tab"])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(__props.paddingClass) }, [_ctx.$slots.customTitle ? (openBlock(), createElementBlock("div", _hoisted_1$38, [renderSlot(_ctx.$slots, "customTitle")])) : __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2$21, toDisplayString(__props.title), 1)) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(["relative", __props.tabs.length > 0 ? "overflow-hidden" : "overflow-visible"]) }, [createVNode(Transition, {
208
208
  "enter-active-class": "transition-all duration-200 ease-in-out",
209
209
  "enter-from-class": slideDirection.value === "right" ? "translate-x-full opacity-0" : "-translate-x-full opacity-0",
210
210
  "enter-to-class": "translate-x-0 opacity-100",
@@ -228,7 +228,7 @@ var _sfc_main$39 = {
228
228
  };
229
229
  //#endregion
230
230
  //#region src/components/Divider.vue
231
- var _sfc_main$38 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
231
+ var _sfc_main$39 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
232
232
  __name: "Divider",
233
233
  setup(__props) {
234
234
  return (_ctx, _cache) => {
@@ -238,7 +238,7 @@ var _sfc_main$38 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
238
238
  });
239
239
  //#endregion
240
240
  //#region src/components/ActionCard.vue
241
- var _sfc_main$37 = {
241
+ var _sfc_main$38 = {
242
242
  __name: "ActionCard",
243
243
  props: {
244
244
  title: {
@@ -253,11 +253,11 @@ var _sfc_main$37 = {
253
253
  setup(__props) {
254
254
  const slots = useSlots();
255
255
  return (_ctx, _cache) => {
256
- return openBlock(), createBlock(_sfc_main$39, {
256
+ return openBlock(), createBlock(_sfc_main$40, {
257
257
  title: __props.title,
258
258
  "content-class": __props.actionsClass
259
259
  }, {
260
- default: withCtx(() => [renderSlot(_ctx.$slots, "default"), unref(slots).danger ? (openBlock(), createBlock(_sfc_main$38, {
260
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default"), unref(slots).danger ? (openBlock(), createBlock(_sfc_main$39, {
261
261
  key: 0,
262
262
  class: "mt-6 pt-4"
263
263
  }, {
@@ -271,8 +271,8 @@ var _sfc_main$37 = {
271
271
  };
272
272
  //#endregion
273
273
  //#region src/components/ActionMessage.vue
274
- var _hoisted_1$36 = { class: "text-sm text-gray-600" };
275
- var _sfc_main$36 = {
274
+ var _hoisted_1$37 = { class: "text-sm text-gray-600" };
275
+ var _sfc_main$37 = {
276
276
  __name: "ActionMessage",
277
277
  props: { on: Boolean },
278
278
  setup(__props) {
@@ -282,7 +282,7 @@ var _sfc_main$36 = {
282
282
  "leave-from-class": "opacity-100",
283
283
  "leave-to-class": "opacity-0"
284
284
  }, {
285
- default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_1$36, [renderSlot(_ctx.$slots, "default")], 512), [[vShow, __props.on]])]),
285
+ default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_1$37, [renderSlot(_ctx.$slots, "default")], 512), [[vShow, __props.on]])]),
286
286
  _: 3
287
287
  })]);
288
288
  };
@@ -297,37 +297,37 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
297
297
  };
298
298
  //#endregion
299
299
  //#region src/components/SectionTitle.vue
300
- var _sfc_main$35 = {};
301
- var _hoisted_1$35 = { class: "md:col-span-1 flex justify-between" };
302
- var _hoisted_2$19 = { class: "px-4 sm:px-0" };
303
- var _hoisted_3$15 = { class: "text-xl font-semibold tracking-tight text-neutral-950 dark:text-neutral-50" };
304
- var _hoisted_4$11 = { class: "mt-1 max-w-2xl text-sm text-neutral-600 dark:text-neutral-200" };
305
- var _hoisted_5$8 = { class: "px-4 sm:px-0" };
300
+ var _sfc_main$36 = {};
301
+ var _hoisted_1$36 = { class: "md:col-span-1 flex justify-between" };
302
+ var _hoisted_2$20 = { class: "px-4 sm:px-0" };
303
+ var _hoisted_3$16 = { class: "text-xl font-semibold tracking-tight text-neutral-950 dark:text-neutral-50" };
304
+ var _hoisted_4$12 = { class: "mt-1 max-w-2xl text-sm text-neutral-600 dark:text-neutral-200" };
305
+ var _hoisted_5$9 = { class: "px-4 sm:px-0" };
306
306
  function _sfc_render(_ctx, _cache) {
307
- return openBlock(), createElementBlock("div", _hoisted_1$35, [createElementVNode("div", _hoisted_2$19, [createElementVNode("h3", _hoisted_3$15, [renderSlot(_ctx.$slots, "title")]), createElementVNode("p", _hoisted_4$11, [renderSlot(_ctx.$slots, "description")])]), createElementVNode("div", _hoisted_5$8, [renderSlot(_ctx.$slots, "aside")])]);
307
+ return openBlock(), createElementBlock("div", _hoisted_1$36, [createElementVNode("div", _hoisted_2$20, [createElementVNode("h3", _hoisted_3$16, [renderSlot(_ctx.$slots, "title")]), createElementVNode("p", _hoisted_4$12, [renderSlot(_ctx.$slots, "description")])]), createElementVNode("div", _hoisted_5$9, [renderSlot(_ctx.$slots, "aside")])]);
308
308
  }
309
- var SectionTitle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main$35, [["render", _sfc_render]]);
309
+ var SectionTitle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main$36, [["render", _sfc_render]]);
310
310
  //#endregion
311
311
  //#region src/components/ActionSection.vue
312
- var _hoisted_1$34 = { class: "md:grid md:grid-cols-3 md:gap-6" };
313
- var _hoisted_2$18 = { class: "mt-5 md:mt-0 md:col-span-2" };
314
- var _hoisted_3$14 = { class: "rounded-lg border border-neutral-200 bg-white px-4 py-5 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 sm:p-6" };
315
- var _sfc_main$34 = {
312
+ var _hoisted_1$35 = { class: "md:grid md:grid-cols-3 md:gap-6" };
313
+ var _hoisted_2$19 = { class: "mt-5 md:mt-0 md:col-span-2" };
314
+ var _hoisted_3$15 = { class: "rounded-lg border border-neutral-200 bg-white px-4 py-5 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 sm:p-6" };
315
+ var _sfc_main$35 = {
316
316
  __name: "ActionSection",
317
317
  setup(__props) {
318
318
  return (_ctx, _cache) => {
319
- return openBlock(), createElementBlock("div", _hoisted_1$34, [createVNode(SectionTitle_default, null, {
319
+ return openBlock(), createElementBlock("div", _hoisted_1$35, [createVNode(SectionTitle_default, null, {
320
320
  title: withCtx(() => [renderSlot(_ctx.$slots, "title")]),
321
321
  description: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
322
322
  _: 3
323
- }), createElementVNode("div", _hoisted_2$18, [createElementVNode("div", _hoisted_3$14, [renderSlot(_ctx.$slots, "content")])])]);
323
+ }), createElementVNode("div", _hoisted_2$19, [createElementVNode("div", _hoisted_3$15, [renderSlot(_ctx.$slots, "content")])])]);
324
324
  };
325
325
  }
326
326
  };
327
327
  //#endregion
328
328
  //#region src/components/Badge.vue
329
- var _hoisted_1$33 = { class: "sr-only" };
330
- var _sfc_main$33 = {
329
+ var _hoisted_1$34 = { class: "sr-only" };
330
+ var _sfc_main$34 = {
331
331
  __name: "Badge",
332
332
  props: {
333
333
  type: {
@@ -431,7 +431,7 @@ var _sfc_main$33 = {
431
431
  return __props.type === "dot" ? (openBlock(), createElementBlock("span", {
432
432
  key: 0,
433
433
  class: normalizeClass(["inline-flex items-center justify-center w-6 h-6 rounded-full", colorClasses[__props.color].bg])
434
- }, [createElementVNode("span", { class: normalizeClass(["w-2 h-2 rounded-full", colorClasses[__props.color].dot]) }, null, 2), createElementVNode("span", _hoisted_1$33, [renderSlot(_ctx.$slots, "default")])], 2)) : (openBlock(), createElementBlock("span", {
434
+ }, [createElementVNode("span", { class: normalizeClass(["w-2 h-2 rounded-full", colorClasses[__props.color].dot]) }, null, 2), createElementVNode("span", _hoisted_1$34, [renderSlot(_ctx.$slots, "default")])], 2)) : (openBlock(), createElementBlock("span", {
435
435
  key: 1,
436
436
  class: normalizeClass(["inline-flex items-center font-medium", [
437
437
  colorClasses[__props.color].bg,
@@ -445,8 +445,8 @@ var _sfc_main$33 = {
445
445
  };
446
446
  //#endregion
447
447
  //#region src/components/Button.vue
448
- var _hoisted_1$32 = ["type", "disabled"];
449
- var _sfc_main$32 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
448
+ var _hoisted_1$33 = ["type", "disabled"];
449
+ var _sfc_main$33 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
450
450
  __name: "Button",
451
451
  props: {
452
452
  type: {
@@ -509,14 +509,14 @@ var _sfc_main$32 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
509
509
  type: __props.type,
510
510
  disabled: __props.disabled,
511
511
  class: buttonClasses.value
512
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$32);
512
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$33);
513
513
  };
514
514
  }
515
515
  });
516
516
  //#endregion
517
517
  //#region src/components/Checkbox.vue
518
- var _hoisted_1$31 = ["value"];
519
- var _sfc_main$31 = {
518
+ var _hoisted_1$32 = ["value"];
519
+ var _sfc_main$32 = {
520
520
  __name: "Checkbox",
521
521
  props: {
522
522
  checked: {
@@ -546,18 +546,18 @@ var _sfc_main$31 = {
546
546
  type: "checkbox",
547
547
  value: __props.value,
548
548
  class: "rounded border-neutral-300 text-neutral-900 shadow-sm focus:ring-neutral-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-100 dark:focus:ring-neutral-100"
549
- }, null, 8, _hoisted_1$31)), [[vModelCheckbox, proxyChecked.value]]);
549
+ }, null, 8, _hoisted_1$32)), [[vModelCheckbox, proxyChecked.value]]);
550
550
  };
551
551
  }
552
552
  };
553
553
  //#endregion
554
554
  //#region src/components/CheckboxInput.vue
555
- var _hoisted_1$30 = [
555
+ var _hoisted_1$31 = [
556
556
  "name",
557
557
  "checked",
558
558
  "disabled"
559
559
  ];
560
- var _sfc_main$30 = {
560
+ var _sfc_main$31 = {
561
561
  __name: "CheckboxInput",
562
562
  props: {
563
563
  modelValue: {
@@ -637,7 +637,7 @@ var _sfc_main$30 = {
637
637
  onChange,
638
638
  onFocus: handleFocus,
639
639
  onBlur: handleBlur
640
- }, null, 40, _hoisted_1$30),
640
+ }, null, 40, _hoisted_1$31),
641
641
  createElementVNode("span", { class: normalizeClass([
642
642
  "inline-flex h-4 w-4 items-center justify-center border text-[10px] font-bold leading-none",
643
643
  props.ui.control,
@@ -651,20 +651,20 @@ var _sfc_main$30 = {
651
651
  };
652
652
  //#endregion
653
653
  //#region src/components/TextInput.vue
654
- var _hoisted_1$29 = [
654
+ var _hoisted_1$30 = [
655
655
  "type",
656
656
  "value",
657
657
  "disabled"
658
658
  ];
659
- var _hoisted_2$17 = ["aria-label"];
660
- var _hoisted_3$13 = {
659
+ var _hoisted_2$18 = ["aria-label"];
660
+ var _hoisted_3$14 = {
661
661
  key: 0,
662
662
  class: "h-5 w-5",
663
663
  fill: "none",
664
664
  stroke: "currentColor",
665
665
  viewBox: "0 0 24 24"
666
666
  };
667
- var _hoisted_4$10 = {
667
+ var _hoisted_4$11 = {
668
668
  key: 1,
669
669
  class: "h-5 w-5",
670
670
  fill: "none",
@@ -672,7 +672,7 @@ var _hoisted_4$10 = {
672
672
  viewBox: "0 0 24 24"
673
673
  };
674
674
  var DEFAULT_MAX_LENGTH$1 = 254;
675
- var _sfc_main$29 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
675
+ var _sfc_main$30 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
676
676
  __name: "TextInput",
677
677
  props: {
678
678
  modelValue: {
@@ -748,19 +748,19 @@ var _sfc_main$29 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
748
748
  onInput: _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", $event.target.value)),
749
749
  onBlur: _cache[1] || (_cache[1] = ($event) => emit("blur", $event)),
750
750
  onWheel: handleWheel
751
- }), null, 16, _hoisted_1$29),
751
+ }), null, 16, _hoisted_1$30),
752
752
  isPasswordField.value ? (openBlock(), createElementBlock("button", {
753
753
  key: 1,
754
754
  type: "button",
755
755
  class: normalizeClass(["absolute inset-y-0 right-0 flex items-center pr-3 text-neutral-400 transition-colors hover:text-neutral-700 focus:outline-none dark:text-neutral-200 dark:hover:text-neutral-50", props.ui.trailingAction]),
756
756
  "aria-label": revealed.value ? "Hide password" : "Show password",
757
757
  onClick: toggleVisibility
758
- }, [revealed.value ? (openBlock(), createElementBlock("svg", _hoisted_3$13, [..._cache[2] || (_cache[2] = [createElementVNode("path", {
758
+ }, [revealed.value ? (openBlock(), createElementBlock("svg", _hoisted_3$14, [..._cache[2] || (_cache[2] = [createElementVNode("path", {
759
759
  "stroke-linecap": "round",
760
760
  "stroke-linejoin": "round",
761
761
  "stroke-width": "2",
762
762
  d: "M13.875 18.825A10.05 10.05 0 0112 19c-5 0-9.27-3.11-11-7 1.01-2.27 2.78-4.1 5-5.32m3.08-1.3A9.96 9.96 0 0112 5c5 0 9.27 3.11 11 7a11.03 11.03 0 01-4.16 4.91M15 12a3 3 0 00-3-3m0 0a3 3 0 00-2.94 3.59M3 3l18 18"
763
- }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_4$10, [..._cache[3] || (_cache[3] = [createElementVNode("path", {
763
+ }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_4$11, [..._cache[3] || (_cache[3] = [createElementVNode("path", {
764
764
  "stroke-linecap": "round",
765
765
  "stroke-linejoin": "round",
766
766
  "stroke-width": "2",
@@ -770,16 +770,16 @@ var _sfc_main$29 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
770
770
  "stroke-linejoin": "round",
771
771
  "stroke-width": "2",
772
772
  d: "M2.458 12C3.732 7.943 7.523 5 12 5s8.268 2.943 9.542 7c-1.274 4.057-5.065 7-9.542 7S3.732 16.057 2.458 12z"
773
- }, null, -1)])]))], 10, _hoisted_2$17)) : createCommentVNode("", true)
773
+ }, null, -1)])]))], 10, _hoisted_2$18)) : createCommentVNode("", true)
774
774
  ], 2);
775
775
  };
776
776
  }
777
777
  });
778
778
  //#endregion
779
779
  //#region src/components/TextArea.vue
780
- var _hoisted_1$28 = ["value", "disabled"];
780
+ var _hoisted_1$29 = ["value", "disabled"];
781
781
  var DEFAULT_MAX_LENGTH = 1e3;
782
- var _sfc_main$28 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
782
+ var _sfc_main$29 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
783
783
  __name: "TextArea",
784
784
  props: {
785
785
  modelValue: String,
@@ -850,30 +850,30 @@ var _sfc_main$28 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
850
850
  value: props.modelValue,
851
851
  disabled: props.disabled,
852
852
  onInput: updateValue
853
- }), null, 16, _hoisted_1$28)], 2);
853
+ }), null, 16, _hoisted_1$29)], 2);
854
854
  };
855
855
  }
856
856
  });
857
857
  //#endregion
858
858
  //#region src/components/CustomSelect.vue
859
- var _hoisted_1$27 = { class: "flex h-5 shrink-0 items-center gap-1" };
860
- var _hoisted_2$16 = ["placeholder"];
861
- var _hoisted_3$12 = [
859
+ var _hoisted_1$28 = { class: "flex h-5 shrink-0 items-center gap-1" };
860
+ var _hoisted_2$17 = ["placeholder"];
861
+ var _hoisted_3$13 = [
862
862
  "data-option-value",
863
863
  "onClick",
864
864
  "onFocus",
865
865
  "onKeydown"
866
866
  ];
867
- var _hoisted_4$9 = {
867
+ var _hoisted_4$10 = {
868
868
  key: 0,
869
869
  class: "flex items-center gap-3"
870
870
  };
871
- var _hoisted_5$7 = [
871
+ var _hoisted_5$8 = [
872
872
  "checked",
873
873
  "disabled",
874
874
  "onChange"
875
875
  ];
876
- var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
876
+ var _sfc_main$28 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
877
877
  __name: "CustomSelect",
878
878
  props: {
879
879
  modelValue: {
@@ -1603,7 +1603,7 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1603
1603
  class: normalizeClass(triggerValueClasses.value),
1604
1604
  style: normalizeStyle(darkTextStyle.value),
1605
1605
  onPointerdown: handleTriggerValuePointerDown
1606
- }, toDisplayString(displayText.value), 39), createElementVNode("div", _hoisted_1$27, [canClearSelection.value ? (openBlock(), createElementBlock("button", {
1606
+ }, toDisplayString(displayText.value), 39), createElementVNode("div", _hoisted_1$28, [canClearSelection.value ? (openBlock(), createElementBlock("button", {
1607
1607
  key: 0,
1608
1608
  type: "button",
1609
1609
  class: normalizeClass(clearButtonClasses.value),
@@ -1641,7 +1641,7 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1641
1641
  class: normalizeClass(searchInputClasses.value),
1642
1642
  onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
1643
1643
  onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
1644
- }, null, 42, _hoisted_2$16)), [[vModelText, searchQuery.value]]) : createCommentVNode("", true),
1644
+ }, null, 42, _hoisted_2$17)), [[vModelText, searchQuery.value]]) : createCommentVNode("", true),
1645
1645
  selectedDeletedOption.value ? (openBlock(), createElementBlock("div", {
1646
1646
  key: 1,
1647
1647
  class: normalizeClass([
@@ -1665,7 +1665,7 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1665
1665
  onClick: withModifiers(($event) => __props.multiple ? toggleMultipleOption(option) : selectOption(option), ["stop"]),
1666
1666
  onFocus: ($event) => highlightedOptionValue.value = String(optionValue(option) ?? ""),
1667
1667
  onKeydown: ($event) => handleOptionKeydown($event, option)
1668
- }, [__props.multiple ? (openBlock(), createElementBlock("div", _hoisted_4$9, [createElementVNode("input", {
1668
+ }, [__props.multiple ? (openBlock(), createElementBlock("div", _hoisted_4$10, [createElementVNode("input", {
1669
1669
  type: "checkbox",
1670
1670
  class: normalizeClass(["h-4 w-4 rounded border-neutral-300 text-neutral-900 focus:ring-neutral-900", props.ui.optionControl]),
1671
1671
  checked: optionIsSelected(option),
@@ -1673,14 +1673,14 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1673
1673
  tabindex: "-1",
1674
1674
  onClick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"])),
1675
1675
  onChange: withModifiers(($event) => toggleMultipleOption(option), ["stop"])
1676
- }, null, 42, _hoisted_5$7), createElementVNode("span", {
1676
+ }, null, 42, _hoisted_5$8), createElementVNode("span", {
1677
1677
  class: "shrink-0 whitespace-nowrap",
1678
1678
  style: normalizeStyle(darkTextStyle.value)
1679
1679
  }, toDisplayString(optionText(option)), 5)])) : (openBlock(), createElementBlock("span", {
1680
1680
  key: 1,
1681
1681
  class: "whitespace-nowrap",
1682
1682
  style: normalizeStyle(darkTextStyle.value)
1683
- }, toDisplayString(optionText(option)), 5))], 42, _hoisted_3$12);
1683
+ }, toDisplayString(optionText(option)), 5))], 42, _hoisted_3$13);
1684
1684
  }), 128))
1685
1685
  ], 6)], 6)) : createCommentVNode("", true)]),
1686
1686
  _: 1
@@ -1690,7 +1690,7 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1690
1690
  });
1691
1691
  //#endregion
1692
1692
  //#region src/components/SelectInput.vue
1693
- var _sfc_main$26 = {
1693
+ var _sfc_main$27 = {
1694
1694
  __name: "SelectInput",
1695
1695
  props: {
1696
1696
  modelValue: {
@@ -1856,7 +1856,7 @@ var _sfc_main$26 = {
1856
1856
  setup(__props, { emit: __emit }) {
1857
1857
  const emit = __emit;
1858
1858
  return (_ctx, _cache) => {
1859
- return openBlock(), createBlock(_sfc_main$27, mergeProps({
1859
+ return openBlock(), createBlock(_sfc_main$28, mergeProps({
1860
1860
  "model-value": __props.modelValue,
1861
1861
  "model-modifiers": __props.modelModifiers,
1862
1862
  options: __props.options,
@@ -1919,7 +1919,7 @@ var _sfc_main$26 = {
1919
1919
  };
1920
1920
  //#endregion
1921
1921
  //#region src/components/DateInput.vue
1922
- var _hoisted_1$26 = [
1922
+ var _hoisted_1$27 = [
1923
1923
  "type",
1924
1924
  "lang",
1925
1925
  "max",
@@ -2014,22 +2014,22 @@ var DateInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2014
2014
  disabled: props.disabled,
2015
2015
  onInput: handleDateInput,
2016
2016
  onChange: handleDateInput
2017
- }), null, 16, _hoisted_1$26);
2017
+ }), null, 16, _hoisted_1$27);
2018
2018
  };
2019
2019
  }
2020
2020
  }), [["__scopeId", "data-v-8a975d48"]]);
2021
2021
  //#endregion
2022
2022
  //#region src/components/DateRangeInput.vue
2023
- var _hoisted_1$25 = ["value", "disabled"];
2024
- var _hoisted_2$15 = { class: "grid grid-cols-7 gap-1" };
2025
- var _hoisted_3$11 = [
2023
+ var _hoisted_1$26 = ["value", "disabled"];
2024
+ var _hoisted_2$16 = { class: "grid grid-cols-7 gap-1" };
2025
+ var _hoisted_3$12 = [
2026
2026
  "disabled",
2027
2027
  "onClick",
2028
2028
  "onMouseenter"
2029
2029
  ];
2030
- var _hoisted_4$8 = { class: "flex items-center justify-between" };
2031
- var _hoisted_5$6 = { key: 0 };
2032
- var _hoisted_6$6 = { key: 1 };
2030
+ var _hoisted_4$9 = { class: "flex items-center justify-between" };
2031
+ var _hoisted_5$7 = { key: 0 };
2032
+ var _hoisted_6$7 = { key: 1 };
2033
2033
  var _hoisted_7$5 = { key: 2 };
2034
2034
  var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ Object.assign({ inheritAttrs: false }, {
2035
2035
  __name: "DateRangeInput",
@@ -2304,7 +2304,7 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2304
2304
  value: displayText.value,
2305
2305
  disabled: props.disabled,
2306
2306
  onClick: toggleCalendar
2307
- }, null, 10, _hoisted_1$25),
2307
+ }, null, 10, _hoisted_1$26),
2308
2308
  isOpen.value ? (openBlock(), createElementBlock("div", {
2309
2309
  key: 1,
2310
2310
  ref_key: "calendarRef",
@@ -2351,7 +2351,7 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2351
2351
  class: normalizeClass(["text-xs font-medium text-neutral-500 dark:text-neutral-400 text-center py-1", props.ui.weekday])
2352
2352
  }, toDisplayString(day), 3);
2353
2353
  }), 128))], 2),
2354
- createElementVNode("div", _hoisted_2$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day) => {
2354
+ createElementVNode("div", _hoisted_2$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day) => {
2355
2355
  return openBlock(), createElementBlock("div", {
2356
2356
  key: day.date.toISOString(),
2357
2357
  class: "relative"
@@ -2383,9 +2383,9 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2383
2383
  onClick: ($event) => selectDate(day.date),
2384
2384
  onMouseenter: ($event) => handleDateHover(day.date),
2385
2385
  onMouseleave: handleDateLeave
2386
- }, toDisplayString(day.date.getDate()), 43, _hoisted_3$11)]);
2386
+ }, toDisplayString(day.date.getDate()), 43, _hoisted_3$12)]);
2387
2387
  }), 128))]),
2388
- createElementVNode("div", { class: normalizeClass(["mt-4 pt-4 border-t border-neutral-200 dark:border-neutral-800", props.ui.footer]) }, [createElementVNode("div", _hoisted_4$8, [createElementVNode("div", { class: normalizeClass(["text-xs text-neutral-500 dark:text-neutral-400", props.ui.footerText]) }, [startDate.value && endDate.value ? (openBlock(), createElementBlock("div", _hoisted_5$6, " Range: " + toDisplayString(daysBetween.value) + " days ", 1)) : startDate.value ? (openBlock(), createElementBlock("div", _hoisted_6$6, " Select end date ")) : (openBlock(), createElementBlock("div", _hoisted_7$5, " Select start date "))], 2), startDate.value || endDate.value ? (openBlock(), createElementBlock("button", {
2388
+ createElementVNode("div", { class: normalizeClass(["mt-4 pt-4 border-t border-neutral-200 dark:border-neutral-800", props.ui.footer]) }, [createElementVNode("div", _hoisted_4$9, [createElementVNode("div", { class: normalizeClass(["text-xs text-neutral-500 dark:text-neutral-400", props.ui.footerText]) }, [startDate.value && endDate.value ? (openBlock(), createElementBlock("div", _hoisted_5$7, " Range: " + toDisplayString(daysBetween.value) + " days ", 1)) : startDate.value ? (openBlock(), createElementBlock("div", _hoisted_6$7, " Select end date ")) : (openBlock(), createElementBlock("div", _hoisted_7$5, " Select start date "))], 2), startDate.value || endDate.value ? (openBlock(), createElementBlock("button", {
2389
2389
  key: 0,
2390
2390
  type: "button",
2391
2391
  class: normalizeClass(["text-xs text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 transition-colors", props.ui.clearButton]),
@@ -2398,10 +2398,10 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2398
2398
  }), [["__scopeId", "data-v-0d27aeda"]]);
2399
2399
  //#endregion
2400
2400
  //#region src/components/ImageInput.vue
2401
- var _hoisted_1$24 = ["accept"];
2402
- var _hoisted_2$14 = { class: "flex items-center space-x-4" };
2403
- var _hoisted_3$10 = ["src"];
2404
- var _sfc_main$23 = {
2401
+ var _hoisted_1$25 = ["accept"];
2402
+ var _hoisted_2$15 = { class: "flex items-center space-x-4" };
2403
+ var _hoisted_3$11 = ["src"];
2404
+ var _sfc_main$24 = {
2405
2405
  __name: "ImageInput",
2406
2406
  props: {
2407
2407
  currentImageUrl: {
@@ -2442,21 +2442,21 @@ var _sfc_main$23 = {
2442
2442
  accept: __props.accept,
2443
2443
  class: ["block h-[48px] w-full cursor-pointer rounded-lg border border-neutral-200 bg-white py-[7px] pl-10 pr-4 text-sm text-neutral-700 align-middle shadow-sm transition-all duration-200 file:mr-3 file:h-[34px] file:align-middle file:rounded-md file:border-0 file:bg-neutral-900 file:px-4 file:py-0 file:text-sm file:font-medium file:leading-[34px] file:text-neutral-50 hover:file:bg-neutral-800 focus:border-neutral-900 focus:outline-none focus:ring-2 focus:ring-neutral-950/10 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-100 dark:file:bg-neutral-800 dark:file:text-neutral-50 dark:hover:file:bg-neutral-700 dark:focus:border-neutral-100 dark:focus:ring-neutral-100/10", props.ui.input],
2444
2444
  onChange: handleFileChange
2445
- }), null, 16, _hoisted_1$24)], 2), props.currentImageUrl ? (openBlock(), createElementBlock("div", {
2445
+ }), null, 16, _hoisted_1$25)], 2), props.currentImageUrl ? (openBlock(), createElementBlock("div", {
2446
2446
  key: 0,
2447
2447
  class: normalizeClass(["mt-4 rounded-lg border border-neutral-200 bg-neutral-50 p-4 dark:border-neutral-800 dark:bg-neutral-900/50", props.ui.previewCard])
2448
- }, [createElementVNode("div", _hoisted_2$14, [createElementVNode("img", {
2448
+ }, [createElementVNode("div", _hoisted_2$15, [createElementVNode("img", {
2449
2449
  src: props.currentImageUrl,
2450
2450
  alt: "Current logo",
2451
2451
  class: normalizeClass(["h-16 w-auto max-w-24 object-contain rounded-lg shadow-sm", props.ui.previewImage])
2452
- }, null, 10, _hoisted_3$10), createElementVNode("div", null, [createElementVNode("p", { class: normalizeClass(["text-sm font-medium text-neutral-900 dark:text-neutral-50", props.ui.previewTitle]) }, toDisplayString(props.currentLabel), 3), createElementVNode("p", { class: normalizeClass(["text-xs text-neutral-500 dark:text-neutral-200", props.ui.previewText]) }, toDisplayString(props.currentSubtext), 3)])])], 2)) : createCommentVNode("", true)], 2);
2452
+ }, null, 10, _hoisted_3$11), createElementVNode("div", null, [createElementVNode("p", { class: normalizeClass(["text-sm font-medium text-neutral-900 dark:text-neutral-50", props.ui.previewTitle]) }, toDisplayString(props.currentLabel), 3), createElementVNode("p", { class: normalizeClass(["text-xs text-neutral-500 dark:text-neutral-200", props.ui.previewText]) }, toDisplayString(props.currentSubtext), 3)])])], 2)) : createCommentVNode("", true)], 2);
2453
2453
  };
2454
2454
  }
2455
2455
  };
2456
2456
  //#endregion
2457
2457
  //#region src/components/NotationInput.vue
2458
- var _hoisted_1$23 = ["disabled", "onClick"];
2459
- var _sfc_main$22 = {
2458
+ var _hoisted_1$24 = ["disabled", "onClick"];
2459
+ var _sfc_main$23 = {
2460
2460
  __name: "NotationInput",
2461
2461
  props: {
2462
2462
  modelValue: {
@@ -2505,20 +2505,20 @@ var _sfc_main$22 = {
2505
2505
  ]),
2506
2506
  disabled: __props.disabled,
2507
2507
  onClick: ($event) => selectOption(option)
2508
- }, toDisplayString(option), 11, _hoisted_1$23);
2508
+ }, toDisplayString(option), 11, _hoisted_1$24);
2509
2509
  }), 128))], 2);
2510
2510
  };
2511
2511
  }
2512
2512
  };
2513
2513
  //#endregion
2514
2514
  //#region src/components/RadioInput.vue
2515
- var _hoisted_1$22 = [
2515
+ var _hoisted_1$23 = [
2516
2516
  "name",
2517
2517
  "value",
2518
2518
  "checked",
2519
2519
  "disabled"
2520
2520
  ];
2521
- var _sfc_main$21 = {
2521
+ var _sfc_main$22 = {
2522
2522
  __name: "RadioInput",
2523
2523
  props: {
2524
2524
  modelValue: {
@@ -2587,18 +2587,18 @@ var _sfc_main$21 = {
2587
2587
  onChange,
2588
2588
  onFocus: handleFocus,
2589
2589
  onBlur: handleBlur
2590
- }, null, 40, _hoisted_1$22), createElementVNode("span", { class: normalizeClass(props.ui.label) }, [createElementVNode("span", { class: normalizeClass(props.ui.indicator) }, toDisplayString(isChecked.value ? "✓" : "○"), 3), createTextVNode(" " + toDisplayString(__props.label), 1)], 2)], 2);
2590
+ }, null, 40, _hoisted_1$23), createElementVNode("span", { class: normalizeClass(props.ui.label) }, [createElementVNode("span", { class: normalizeClass(props.ui.indicator) }, toDisplayString(isChecked.value ? "✓" : "○"), 3), createTextVNode(" " + toDisplayString(__props.label), 1)], 2)], 2);
2591
2591
  };
2592
2592
  }
2593
2593
  };
2594
2594
  //#endregion
2595
2595
  //#region src/components/ToggleInput.vue
2596
- var _hoisted_1$21 = [
2596
+ var _hoisted_1$22 = [
2597
2597
  "name",
2598
2598
  "checked",
2599
2599
  "disabled"
2600
2600
  ];
2601
- var _sfc_main$20 = {
2601
+ var _sfc_main$21 = {
2602
2602
  __name: "ToggleInput",
2603
2603
  props: {
2604
2604
  modelValue: {
@@ -2677,7 +2677,7 @@ var _sfc_main$20 = {
2677
2677
  onChange,
2678
2678
  onFocus: handleFocus,
2679
2679
  onBlur: handleBlur
2680
- }, null, 40, _hoisted_1$21),
2680
+ }, null, 40, _hoisted_1$22),
2681
2681
  createElementVNode("span", {
2682
2682
  "aria-hidden": "true",
2683
2683
  class: normalizeClass([
@@ -2701,7 +2701,7 @@ var _sfc_main$20 = {
2701
2701
  };
2702
2702
  //#endregion
2703
2703
  //#region src/components/RadioMultipleInput.vue
2704
- var _sfc_main$19 = {
2704
+ var _sfc_main$20 = {
2705
2705
  __name: "RadioMultipleInput",
2706
2706
  props: {
2707
2707
  modelValue: {
@@ -2739,7 +2739,7 @@ var _sfc_main$19 = {
2739
2739
  const selectOption = (option) => emit("update:modelValue", option);
2740
2740
  return (_ctx, _cache) => {
2741
2741
  return openBlock(), createElementBlock("div", { class: normalizeClass(["flex flex-wrap gap-3", props.ui.group]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedOptions.value, (option) => {
2742
- return openBlock(), createBlock(_sfc_main$16, {
2742
+ return openBlock(), createBlock(_sfc_main$17, {
2743
2743
  key: `radio-${__props.name ?? "group"}-${option}`,
2744
2744
  type: "radio-input",
2745
2745
  "model-value": props.modelValue,
@@ -2763,7 +2763,7 @@ var _sfc_main$19 = {
2763
2763
  };
2764
2764
  //#endregion
2765
2765
  //#region src/components/TinyEditor.vue
2766
- var _sfc_main$18 = {
2766
+ var _sfc_main$19 = {
2767
2767
  __name: "TinyEditor",
2768
2768
  props: {
2769
2769
  modelValue: {
@@ -2840,18 +2840,18 @@ var _sfc_main$18 = {
2840
2840
  });
2841
2841
  };
2842
2842
  const loadTinyMce = async () => {
2843
- const tinymceModule = await import("./tinymce-Cux5-LNK.js").then((m) => /* @__PURE__ */ __toESM(m.default));
2843
+ const tinymceModule = await import("./tinymce-C8b0wRwA.js").then((m) => /* @__PURE__ */ __toESM(m.default));
2844
2844
  const tinymce = tinymceModule.default ?? tinymceModule;
2845
2845
  if (typeof globalThis !== "undefined" && !globalThis.tinymce) globalThis.tinymce = tinymce;
2846
2846
  await Promise.all([
2847
- import("./dom-Dr7aAHqE.js"),
2848
- import("./default-BlbQaebe.js"),
2849
- import("./silver-B-eQlbVa.js"),
2850
- import("./code-BcyERX8s.js"),
2851
- import("./image-BJntlUOW.js"),
2852
- import("./link-BqipZiMo.js"),
2853
- import("./lists-B4tl_VfV.js"),
2854
- import("./table-2QVKcjlJ.js")
2847
+ import("./dom-BeRggs56.js"),
2848
+ import("./default-Cgs8Tahv.js"),
2849
+ import("./silver-Y-RHxZ9j.js"),
2850
+ import("./code-Cm7MgQif.js"),
2851
+ import("./image-wVCnQh0h.js"),
2852
+ import("./link-KJRFTy--.js"),
2853
+ import("./lists-BzJs5oD0.js"),
2854
+ import("./table-CV-zOVUh.js")
2855
2855
  ]);
2856
2856
  isEditorReady.value = true;
2857
2857
  };
@@ -2962,17 +2962,17 @@ var _sfc_main$18 = {
2962
2962
  };
2963
2963
  //#endregion
2964
2964
  //#region src/components/ColorPicker.vue
2965
- var _hoisted_1$20 = [
2965
+ var _hoisted_1$21 = [
2966
2966
  "name",
2967
2967
  "value",
2968
2968
  "disabled",
2969
2969
  "required"
2970
2970
  ];
2971
- var _hoisted_2$13 = ["disabled", "aria-expanded"];
2972
- var _hoisted_3$9 = { class: "min-w-0 flex-1" };
2973
- var _hoisted_4$7 = { class: "flex items-start gap-3" };
2974
- var _hoisted_5$5 = { class: "min-w-0 flex-1" };
2975
- var _hoisted_6$5 = ["disabled", "aria-label"];
2971
+ var _hoisted_2$14 = ["disabled", "aria-expanded"];
2972
+ var _hoisted_3$10 = { class: "min-w-0 flex-1" };
2973
+ var _hoisted_4$8 = { class: "flex items-start gap-3" };
2974
+ var _hoisted_5$6 = { class: "min-w-0 flex-1" };
2975
+ var _hoisted_6$6 = ["disabled", "aria-label"];
2976
2976
  var _hoisted_7$4 = { class: "mt-4 space-y-4" };
2977
2977
  var _hoisted_8$2 = ["aria-label", "aria-valuenow"];
2978
2978
  var _hoisted_9$2 = {
@@ -2989,24 +2989,24 @@ var _hoisted_12$2 = {
2989
2989
  class: "space-y-2"
2990
2990
  };
2991
2991
  var _hoisted_13$2 = ["for"];
2992
- var _hoisted_14$1 = [
2992
+ var _hoisted_14$2 = [
2993
2993
  "id",
2994
2994
  "disabled",
2995
2995
  "value"
2996
2996
  ];
2997
- var _hoisted_15$1 = {
2997
+ var _hoisted_15$2 = {
2998
2998
  key: 1,
2999
2999
  class: "space-y-2"
3000
3000
  };
3001
- var _hoisted_16$1 = ["for"];
3002
- var _hoisted_17 = [
3001
+ var _hoisted_16$2 = ["for"];
3002
+ var _hoisted_17$2 = [
3003
3003
  "id",
3004
3004
  "disabled",
3005
3005
  "value"
3006
3006
  ];
3007
- var _hoisted_18 = { class: "space-y-2" };
3008
- var _hoisted_19 = ["for"];
3009
- var _hoisted_20 = [
3007
+ var _hoisted_18$2 = { class: "space-y-2" };
3008
+ var _hoisted_19$1 = ["for"];
3009
+ var _hoisted_20$1 = [
3010
3010
  "id",
3011
3011
  "maxlength",
3012
3012
  "placeholder",
@@ -3472,7 +3472,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3472
3472
  value: emittedValue.value,
3473
3473
  disabled: props.disabled,
3474
3474
  required: hiddenInputRequired.value
3475
- }, null, 8, _hoisted_1$20)) : createCommentVNode("", true),
3475
+ }, null, 8, _hoisted_1$21)) : createCommentVNode("", true),
3476
3476
  createElementVNode("button", mergeProps({
3477
3477
  ref_key: "triggerRef",
3478
3478
  ref: triggerRef
@@ -3488,13 +3488,13 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3488
3488
  class: "absolute inset-0",
3489
3489
  style: normalizeStyle({ backgroundColor: swatchColor.value })
3490
3490
  }, null, 4)], 2),
3491
- createElementVNode("span", _hoisted_3$9, [createElementVNode("span", { class: normalizeClass(["block text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, toDisplayString(unref(t)("Color")), 3), createElementVNode("span", { class: normalizeClass(["block truncate font-mono text-sm text-neutral-900 dark:text-neutral-50", props.ui.value]) }, toDisplayString(emittedValue.value), 3)]),
3491
+ createElementVNode("span", _hoisted_3$10, [createElementVNode("span", { class: normalizeClass(["block text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, toDisplayString(unref(t)("Color")), 3), createElementVNode("span", { class: normalizeClass(["block truncate font-mono text-sm text-neutral-900 dark:text-neutral-50", props.ui.value]) }, toDisplayString(emittedValue.value), 3)]),
3492
3492
  createVNode(unref(ChevronDownIcon), { class: normalizeClass([
3493
3493
  "size-4 shrink-0 text-neutral-400 transition-transform dark:text-neutral-500",
3494
3494
  isOpen.value ? "rotate-180" : "",
3495
3495
  props.ui.chevron
3496
3496
  ]) }, null, 8, ["class"])
3497
- ], 16, _hoisted_2$13),
3497
+ ], 16, _hoisted_2$14),
3498
3498
  (openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, {
3499
3499
  "enter-active-class": "transition duration-150 ease-out",
3500
3500
  "enter-from-class": "opacity-0 translate-y-1",
@@ -3509,12 +3509,12 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3509
3509
  ref: panelRef,
3510
3510
  class: normalizeClass(["z-50", props.ui.panelRoot]),
3511
3511
  style: normalizeStyle(panelStyle.value)
3512
- }, [createElementVNode("div", { class: normalizeClass(["rounded-2xl border border-neutral-200 bg-white/96 p-4 shadow-2xl shadow-neutral-950/12 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/96 dark:shadow-black/30", props.ui.panel]) }, [createElementVNode("div", _hoisted_4$7, [
3512
+ }, [createElementVNode("div", { class: normalizeClass(["rounded-2xl border border-neutral-200 bg-white/96 p-4 shadow-2xl shadow-neutral-950/12 backdrop-blur dark:border-neutral-800 dark:bg-neutral-950/96 dark:shadow-black/30", props.ui.panel]) }, [createElementVNode("div", _hoisted_4$8, [
3513
3513
  createElementVNode("div", { class: normalizeClass(["color-picker-checker relative size-14 shrink-0 overflow-hidden rounded-xl border border-neutral-200 dark:border-neutral-700", props.ui.previewSwatch]) }, [createElementVNode("span", {
3514
3514
  class: "absolute inset-0",
3515
3515
  style: normalizeStyle({ backgroundColor: swatchColor.value })
3516
3516
  }, null, 4)], 2),
3517
- createElementVNode("div", _hoisted_5$5, [createElementVNode("p", { class: normalizeClass(["text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, toDisplayString(unref(t)("Selected color")), 3), createElementVNode("p", { class: normalizeClass(["truncate font-mono text-base text-neutral-900 dark:text-neutral-50", props.ui.value]) }, toDisplayString(emittedValue.value), 3)]),
3517
+ createElementVNode("div", _hoisted_5$6, [createElementVNode("p", { class: normalizeClass(["text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, toDisplayString(unref(t)("Selected color")), 3), createElementVNode("p", { class: normalizeClass(["truncate font-mono text-base text-neutral-900 dark:text-neutral-50", props.ui.value]) }, toDisplayString(emittedValue.value), 3)]),
3518
3518
  supportsEyeDropper.value ? (openBlock(), createElementBlock("button", {
3519
3519
  key: 0,
3520
3520
  type: "button",
@@ -3526,7 +3526,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3526
3526
  disabled: props.disabled,
3527
3527
  "aria-label": unref(t)("Pick color from screen"),
3528
3528
  onClick: pickFromScreen
3529
- }, [createVNode(unref(EyeDropperIcon), { class: "size-5" })], 10, _hoisted_6$5)) : createCommentVNode("", true)
3529
+ }, [createVNode(unref(EyeDropperIcon), { class: "size-5" })], 10, _hoisted_6$6)) : createCommentVNode("", true)
3530
3530
  ]), createElementVNode("div", _hoisted_7$4, [
3531
3531
  createElementVNode("div", {
3532
3532
  ref_key: "saturationRef",
@@ -3560,7 +3560,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3560
3560
  value: hue.value,
3561
3561
  style: { "background": "linear-gradient(90deg, #FF0000 0%, #FFFF00 17%, #00FF00 33%, #00FFFF 50%, #0000FF 67%, #FF00FF 83%, #FF0000 100%)" },
3562
3562
  onInput: handleHueInput
3563
- }, null, 42, _hoisted_14$1)])) : createCommentVNode("", true), props.allowAlpha ? (openBlock(), createElementBlock("div", _hoisted_15$1, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-alpha` : void 0 }, toDisplayString(unref(t)("Opacity")), 9, _hoisted_16$1), createElementVNode("span", null, toDisplayString(opacityPercent.value) + "%", 1)], 2), createElementVNode("input", {
3563
+ }, null, 42, _hoisted_14$2)])) : createCommentVNode("", true), props.allowAlpha ? (openBlock(), createElementBlock("div", _hoisted_15$2, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-alpha` : void 0 }, toDisplayString(unref(t)("Opacity")), 9, _hoisted_16$2), createElementVNode("span", null, toDisplayString(opacityPercent.value) + "%", 1)], 2), createElementVNode("input", {
3564
3564
  id: fieldId.value ? `${fieldId.value}-alpha` : void 0,
3565
3565
  type: "range",
3566
3566
  min: "0",
@@ -3571,11 +3571,11 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3571
3571
  value: opacityPercent.value,
3572
3572
  style: normalizeStyle({ background: alphaGradient.value }),
3573
3573
  onInput: handleAlphaInput
3574
- }, null, 46, _hoisted_17)])) : createCommentVNode("", true)]),
3575
- createElementVNode("div", _hoisted_18, [createElementVNode("label", {
3574
+ }, null, 46, _hoisted_17$2)])) : createCommentVNode("", true)]),
3575
+ createElementVNode("div", _hoisted_18$2, [createElementVNode("label", {
3576
3576
  for: fieldId.value ? `${fieldId.value}-hex` : void 0,
3577
3577
  class: normalizeClass(["text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel])
3578
- }, toDisplayString(unref(t)("Hex value")), 11, _hoisted_19), createElementVNode("input", {
3578
+ }, toDisplayString(unref(t)("Hex value")), 11, _hoisted_19$1), createElementVNode("input", {
3579
3579
  id: fieldId.value ? `${fieldId.value}-hex` : void 0,
3580
3580
  ref_key: "hexInputRef",
3581
3581
  ref: hexInputRef,
@@ -3590,7 +3590,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3590
3590
  disabled: props.disabled,
3591
3591
  onInput: handleHexInput,
3592
3592
  onBlur: handleHexBlur
3593
- }, null, 42, _hoisted_20)])
3593
+ }, null, 42, _hoisted_20$1)])
3594
3594
  ])], 2)], 6)) : createCommentVNode("", true)]),
3595
3595
  _: 1
3596
3596
  })]))
@@ -3600,8 +3600,8 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3600
3600
  }), [["__scopeId", "data-v-ce146146"]]);
3601
3601
  //#endregion
3602
3602
  //#region src/components/InputGroup.vue
3603
- var _hoisted_1$19 = ["for"];
3604
- var _hoisted_2$12 = {
3603
+ var _hoisted_1$20 = ["for"];
3604
+ var _hoisted_2$13 = {
3605
3605
  key: 3,
3606
3606
  class: "relative"
3607
3607
  };
@@ -3610,7 +3610,7 @@ var defaultLabelClass = "mb-1 block text-base font-semibold text-gray-900 dark:t
3610
3610
  var defaultHelperTextClass = "mb-1 block text-xs text-gray-500";
3611
3611
  var defaultErrorClass = "mt-2 flex items-center text-sm text-red-600";
3612
3612
  var defaultErrorIconClass = "mr-1 h-4 w-4 flex-shrink-0";
3613
- var _sfc_main$16 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
3613
+ var _sfc_main$17 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
3614
3614
  __name: "InputGroup",
3615
3615
  props: {
3616
3616
  type: {
@@ -4146,20 +4146,20 @@ var _sfc_main$16 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4146
4146
  ui: props.ui
4147
4147
  }));
4148
4148
  const resolvedFieldComponent = computed(() => {
4149
- if (isTextareaType.value) return _sfc_main$28;
4150
- if (isTinyEditorType.value) return _sfc_main$18;
4149
+ if (isTextareaType.value) return _sfc_main$29;
4150
+ if (isTinyEditorType.value) return _sfc_main$19;
4151
4151
  if (isColorPickerType.value) return ColorPicker_default;
4152
- if (isSelectType.value) return _sfc_main$26;
4152
+ if (isSelectType.value) return _sfc_main$27;
4153
4153
  if (isDateType.value) return DateInput_default;
4154
4154
  if (isDateRangeType.value) return DateRangeInput_default;
4155
- if (isTextLikeType.value) return _sfc_main$29;
4156
- if (isImageType.value) return _sfc_main$23;
4157
- if (isCheckboxSingleType.value) return _sfc_main$30;
4158
- if (isRadioSingleType.value) return _sfc_main$21;
4159
- if (isToggleSingleType.value) return _sfc_main$20;
4160
- if (isNotationType.value) return _sfc_main$22;
4161
- if (isCheckboxType.value) return _sfc_main$15;
4162
- if (isRadioType.value) return _sfc_main$19;
4155
+ if (isTextLikeType.value) return _sfc_main$30;
4156
+ if (isImageType.value) return _sfc_main$24;
4157
+ if (isCheckboxSingleType.value) return _sfc_main$31;
4158
+ if (isRadioSingleType.value) return _sfc_main$22;
4159
+ if (isToggleSingleType.value) return _sfc_main$21;
4160
+ if (isNotationType.value) return _sfc_main$23;
4161
+ if (isCheckboxType.value) return _sfc_main$16;
4162
+ if (isRadioType.value) return _sfc_main$20;
4163
4163
  return null;
4164
4164
  });
4165
4165
  const resolvedFieldBindings = computed(() => {
@@ -4211,13 +4211,13 @@ var _sfc_main$16 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4211
4211
  key: 0,
4212
4212
  for: fieldId.value,
4213
4213
  class: normalizeClass(props.labelClass ?? defaultLabelClass)
4214
- }, toDisplayString(__props.label), 11, _hoisted_1$19)) : createCommentVNode("", true)]) : createCommentVNode("", true),
4214
+ }, toDisplayString(__props.label), 11, _hoisted_1$20)) : createCommentVNode("", true)]) : createCommentVNode("", true),
4215
4215
  __props.helperText && !showsInlineChoiceControl.value ? renderSlot(_ctx.$slots, "helper", {
4216
4216
  key: 1,
4217
4217
  helperText: __props.helperText,
4218
4218
  helperTextClass: props.helperTextClass ?? defaultHelperTextClass
4219
4219
  }, () => [createElementVNode("span", { class: normalizeClass(props.helperTextClass ?? defaultHelperTextClass) }, toDisplayString(__props.helperText), 3)]) : createCommentVNode("", true),
4220
- resolvedFieldComponent.value && !showsLeadingIcon.value && !showsTrailingIcon.value ? (openBlock(), createBlock(resolveDynamicComponent(resolvedFieldComponent.value), mergeProps({ key: 2 }, resolvedFieldBindings.value, toHandlers(fieldListeners)), null, 16)) : resolvedFieldComponent.value ? (openBlock(), createElementBlock("div", _hoisted_2$12, [
4220
+ resolvedFieldComponent.value && !showsLeadingIcon.value && !showsTrailingIcon.value ? (openBlock(), createBlock(resolveDynamicComponent(resolvedFieldComponent.value), mergeProps({ key: 2 }, resolvedFieldBindings.value, toHandlers(fieldListeners)), null, 16)) : resolvedFieldComponent.value ? (openBlock(), createElementBlock("div", _hoisted_2$13, [
4221
4221
  showsLeadingIcon.value ? (openBlock(), createElementBlock("div", {
4222
4222
  key: 0,
4223
4223
  class: normalizeClass(["pointer-events-none absolute inset-y-0 left-0 z-10 flex items-center pl-3 text-neutral-400 dark:text-neutral-200", props.leadingIconClass])
@@ -4259,7 +4259,7 @@ var _sfc_main$16 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4259
4259
  });
4260
4260
  //#endregion
4261
4261
  //#region src/components/CheckboxMultipleInput.vue
4262
- var _sfc_main$15 = {
4262
+ var _sfc_main$16 = {
4263
4263
  __name: "CheckboxMultipleInput",
4264
4264
  props: {
4265
4265
  modelValue: {
@@ -4302,7 +4302,7 @@ var _sfc_main$15 = {
4302
4302
  };
4303
4303
  return (_ctx, _cache) => {
4304
4304
  return openBlock(), createElementBlock("div", { class: normalizeClass(["flex flex-wrap gap-3", props.ui.group]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedOptions.value, (option) => {
4305
- return openBlock(), createBlock(_sfc_main$16, {
4305
+ return openBlock(), createBlock(_sfc_main$17, {
4306
4306
  key: `checkbox-${option}`,
4307
4307
  type: "checkbox-input",
4308
4308
  name: __props.name,
@@ -4327,7 +4327,7 @@ var _sfc_main$15 = {
4327
4327
  };
4328
4328
  //#endregion
4329
4329
  //#region src/components/Modal.vue
4330
- var _sfc_main$14 = {
4330
+ var _sfc_main$15 = {
4331
4331
  __name: "Modal",
4332
4332
  props: {
4333
4333
  show: {
@@ -4455,14 +4455,14 @@ var _sfc_main$14 = {
4455
4455
  };
4456
4456
  //#endregion
4457
4457
  //#region src/components/ConfirmationModal.vue
4458
- var _hoisted_1$18 = { class: "bg-white px-4 pb-4 pt-5 dark:bg-neutral-950 sm:p-6 sm:pb-4" };
4459
- var _hoisted_2$11 = { class: "sm:flex sm:items-start" };
4460
- var _hoisted_3$8 = { class: "mx-auto flex size-12 shrink-0 items-center justify-center rounded-full bg-red-100 dark:bg-red-950/60 sm:mx-0 sm:size-10" };
4461
- var _hoisted_4$6 = { class: "mt-3 text-center sm:mt-0 sm:ms-4 sm:text-start" };
4462
- var _hoisted_5$4 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4463
- var _hoisted_6$4 = { class: "mt-4 text-sm text-neutral-600 dark:text-neutral-200" };
4458
+ var _hoisted_1$19 = { class: "bg-white px-4 pb-4 pt-5 dark:bg-neutral-950 sm:p-6 sm:pb-4" };
4459
+ var _hoisted_2$12 = { class: "sm:flex sm:items-start" };
4460
+ var _hoisted_3$9 = { class: "mx-auto flex size-12 shrink-0 items-center justify-center rounded-full bg-red-100 dark:bg-red-950/60 sm:mx-0 sm:size-10" };
4461
+ var _hoisted_4$7 = { class: "mt-3 text-center sm:mt-0 sm:ms-4 sm:text-start" };
4462
+ var _hoisted_5$5 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4463
+ var _hoisted_6$5 = { class: "mt-4 text-sm text-neutral-600 dark:text-neutral-200" };
4464
4464
  var _hoisted_7$3 = { class: "flex flex-col-reverse gap-4 border-t border-neutral-200 bg-neutral-50 px-6 py-4 text-end dark:border-neutral-800 dark:bg-neutral-900/60 lg:flex-row lg:justify-end lg:gap-0" };
4465
- var _sfc_main$13 = {
4465
+ var _sfc_main$14 = {
4466
4466
  __name: "ConfirmationModal",
4467
4467
  props: {
4468
4468
  show: {
@@ -4494,14 +4494,14 @@ var _sfc_main$13 = {
4494
4494
  emit("close");
4495
4495
  };
4496
4496
  return (_ctx, _cache) => {
4497
- return openBlock(), createBlock(_sfc_main$14, {
4497
+ return openBlock(), createBlock(_sfc_main$15, {
4498
4498
  show: __props.show,
4499
4499
  "max-width": __props.maxWidth,
4500
4500
  closeable: __props.closeable,
4501
4501
  position: __props.position,
4502
4502
  onClose: close
4503
4503
  }, {
4504
- default: withCtx(() => [createElementVNode("div", _hoisted_1$18, [createElementVNode("div", _hoisted_2$11, [createElementVNode("div", _hoisted_3$8, [createVNode(unref(ExclamationTriangleIcon), { class: "size-6 text-red-600 dark:text-neutral-100" })]), createElementVNode("div", _hoisted_4$6, [createElementVNode("h3", _hoisted_5$4, [renderSlot(_ctx.$slots, "title")]), createElementVNode("div", _hoisted_6$4, [renderSlot(_ctx.$slots, "content")])])])]), createElementVNode("div", _hoisted_7$3, [renderSlot(_ctx.$slots, "footer")])]),
4504
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$19, [createElementVNode("div", _hoisted_2$12, [createElementVNode("div", _hoisted_3$9, [createVNode(unref(ExclamationTriangleIcon), { class: "size-6 text-red-600 dark:text-neutral-100" })]), createElementVNode("div", _hoisted_4$7, [createElementVNode("h3", _hoisted_5$5, [renderSlot(_ctx.$slots, "title")]), createElementVNode("div", _hoisted_6$5, [renderSlot(_ctx.$slots, "content")])])])]), createElementVNode("div", _hoisted_7$3, [renderSlot(_ctx.$slots, "footer")])]),
4505
4505
  _: 3
4506
4506
  }, 8, [
4507
4507
  "show",
@@ -4514,11 +4514,11 @@ var _sfc_main$13 = {
4514
4514
  };
4515
4515
  //#endregion
4516
4516
  //#region src/components/DialogModal.vue
4517
- var _hoisted_1$17 = { class: "px-6 py-4" };
4518
- var _hoisted_2$10 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4519
- var _hoisted_3$7 = { class: "mt-4 text-sm text-neutral-600 dark:text-neutral-200" };
4520
- var _hoisted_4$5 = { class: "flex flex-row justify-end border-t border-neutral-200 bg-neutral-50 px-6 py-4 text-end dark:border-neutral-800 dark:bg-neutral-900/60" };
4521
- var _sfc_main$12 = {
4517
+ var _hoisted_1$18 = { class: "px-6 py-4" };
4518
+ var _hoisted_2$11 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4519
+ var _hoisted_3$8 = { class: "mt-4 text-sm text-neutral-600 dark:text-neutral-200" };
4520
+ var _hoisted_4$6 = { class: "flex flex-row justify-end border-t border-neutral-200 bg-neutral-50 px-6 py-4 text-end dark:border-neutral-800 dark:bg-neutral-900/60" };
4521
+ var _sfc_main$13 = {
4522
4522
  __name: "DialogModal",
4523
4523
  props: {
4524
4524
  show: {
@@ -4541,13 +4541,13 @@ var _sfc_main$12 = {
4541
4541
  emit("close");
4542
4542
  };
4543
4543
  return (_ctx, _cache) => {
4544
- return openBlock(), createBlock(_sfc_main$14, {
4544
+ return openBlock(), createBlock(_sfc_main$15, {
4545
4545
  show: __props.show,
4546
4546
  "max-width": __props.maxWidth,
4547
4547
  closeable: __props.closeable,
4548
4548
  onClose: close
4549
4549
  }, {
4550
- default: withCtx(() => [createElementVNode("div", _hoisted_1$17, [createElementVNode("div", _hoisted_2$10, [renderSlot(_ctx.$slots, "title")]), createElementVNode("div", _hoisted_3$7, [renderSlot(_ctx.$slots, "content")])]), createElementVNode("div", _hoisted_4$5, [renderSlot(_ctx.$slots, "footer")])]),
4550
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$18, [createElementVNode("div", _hoisted_2$11, [renderSlot(_ctx.$slots, "title")]), createElementVNode("div", _hoisted_3$8, [renderSlot(_ctx.$slots, "content")])]), createElementVNode("div", _hoisted_4$6, [renderSlot(_ctx.$slots, "footer")])]),
4551
4551
  _: 3
4552
4552
  }, 8, [
4553
4553
  "show",
@@ -4559,8 +4559,8 @@ var _sfc_main$12 = {
4559
4559
  };
4560
4560
  //#endregion
4561
4561
  //#region src/components/Dropdown.vue
4562
- var _hoisted_1$16 = { class: "relative inline-block w-fit" };
4563
- var _sfc_main$11 = {
4562
+ var _hoisted_1$17 = { class: "relative inline-block w-fit" };
4563
+ var _sfc_main$12 = {
4564
4564
  __name: "Dropdown",
4565
4565
  props: {
4566
4566
  align: {
@@ -4679,7 +4679,7 @@ var _sfc_main$11 = {
4679
4679
  window.removeEventListener("scroll", handleViewportChange, true);
4680
4680
  });
4681
4681
  return (_ctx, _cache) => {
4682
- return openBlock(), createElementBlock("div", _hoisted_1$16, [createElementVNode("div", {
4682
+ return openBlock(), createElementBlock("div", _hoisted_1$17, [createElementVNode("div", {
4683
4683
  ref_key: "triggerRef",
4684
4684
  ref: triggerRef,
4685
4685
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
@@ -4706,13 +4706,13 @@ var _sfc_main$11 = {
4706
4706
  };
4707
4707
  //#endregion
4708
4708
  //#region src/components/DropdownLink.vue
4709
- var _hoisted_1$15 = {
4709
+ var _hoisted_1$16 = {
4710
4710
  key: 0,
4711
4711
  type: "submit",
4712
4712
  class: "block w-full px-4 py-2 text-start text-sm leading-5 text-neutral-700 transition duration-150 ease-in-out hover:bg-neutral-100 focus:bg-neutral-100 focus:outline-none dark:text-neutral-100 dark:hover:bg-neutral-900 dark:focus:bg-neutral-900"
4713
4713
  };
4714
- var _hoisted_2$9 = ["href"];
4715
- var _sfc_main$10 = {
4714
+ var _hoisted_2$10 = ["href"];
4715
+ var _sfc_main$11 = {
4716
4716
  __name: "DropdownLink",
4717
4717
  props: {
4718
4718
  href: String,
@@ -4720,11 +4720,11 @@ var _sfc_main$10 = {
4720
4720
  },
4721
4721
  setup(__props) {
4722
4722
  return (_ctx, _cache) => {
4723
- return openBlock(), createElementBlock("div", null, [__props.as == "button" ? (openBlock(), createElementBlock("button", _hoisted_1$15, [renderSlot(_ctx.$slots, "default")])) : __props.as == "a" ? (openBlock(), createElementBlock("a", {
4723
+ return openBlock(), createElementBlock("div", null, [__props.as == "button" ? (openBlock(), createElementBlock("button", _hoisted_1$16, [renderSlot(_ctx.$slots, "default")])) : __props.as == "a" ? (openBlock(), createElementBlock("a", {
4724
4724
  key: 1,
4725
4725
  href: __props.href,
4726
4726
  class: "block px-4 py-2 text-sm leading-5 text-neutral-700 transition duration-150 ease-in-out hover:bg-neutral-100 focus:bg-neutral-100 focus:outline-none dark:text-neutral-100 dark:hover:bg-neutral-900 dark:focus:bg-neutral-900"
4727
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$9)) : (openBlock(), createBlock(unref(Link), {
4727
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$10)) : (openBlock(), createBlock(unref(Link), {
4728
4728
  key: 2,
4729
4729
  href: __props.href,
4730
4730
  class: "block px-4 py-2 text-sm leading-5 text-neutral-700 transition duration-150 ease-in-out hover:bg-neutral-100 focus:bg-neutral-100 focus:outline-none dark:text-neutral-100 dark:hover:bg-neutral-900 dark:focus:bg-neutral-900"
@@ -4737,62 +4737,62 @@ var _sfc_main$10 = {
4737
4737
  };
4738
4738
  //#endregion
4739
4739
  //#region src/components/FormSection.vue
4740
- var _hoisted_1$14 = { class: "md:grid md:grid-cols-3 md:gap-6" };
4741
- var _hoisted_2$8 = { class: "mt-5 md:col-span-2 md:mt-0" };
4742
- var _hoisted_3$6 = { class: "grid grid-cols-6 gap-6" };
4743
- var _hoisted_4$4 = {
4740
+ var _hoisted_1$15 = { class: "md:grid md:grid-cols-3 md:gap-6" };
4741
+ var _hoisted_2$9 = { class: "mt-5 md:col-span-2 md:mt-0" };
4742
+ var _hoisted_3$7 = { class: "grid grid-cols-6 gap-6" };
4743
+ var _hoisted_4$5 = {
4744
4744
  key: 0,
4745
4745
  class: "flex items-center justify-start rounded-b-lg border border-t-0 border-neutral-200 bg-neutral-50 px-3 pb-6 text-end dark:border-neutral-800 dark:bg-neutral-900/60 sm:rounded-bl-md sm:rounded-br-md"
4746
4746
  };
4747
- var _sfc_main$9 = {
4747
+ var _sfc_main$10 = {
4748
4748
  __name: "FormSection",
4749
4749
  emits: ["submitted"],
4750
4750
  setup(__props) {
4751
4751
  const hasActions = computed(() => !!useSlots().actions);
4752
4752
  return (_ctx, _cache) => {
4753
- return openBlock(), createElementBlock("div", _hoisted_1$14, [createVNode(SectionTitle_default, null, {
4753
+ return openBlock(), createElementBlock("div", _hoisted_1$15, [createVNode(SectionTitle_default, null, {
4754
4754
  title: withCtx(() => [renderSlot(_ctx.$slots, "title")]),
4755
4755
  description: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
4756
4756
  _: 3
4757
- }), createElementVNode("div", _hoisted_2$8, [createElementVNode("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$emit("submitted"), ["prevent"])) }, [createElementVNode("div", { class: normalizeClass(["rounded-lg border border-neutral-200 bg-white px-4 py-5 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 sm:p-6", hasActions.value ? "sm:rounded-tl-md sm:rounded-tr-md" : "sm:rounded-md"]) }, [createElementVNode("div", _hoisted_3$6, [renderSlot(_ctx.$slots, "form")])], 2), hasActions.value ? (openBlock(), createElementBlock("div", _hoisted_4$4, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)], 32)])]);
4757
+ }), createElementVNode("div", _hoisted_2$9, [createElementVNode("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$emit("submitted"), ["prevent"])) }, [createElementVNode("div", { class: normalizeClass(["rounded-lg border border-neutral-200 bg-white px-4 py-5 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 sm:p-6", hasActions.value ? "sm:rounded-tl-md sm:rounded-tr-md" : "sm:rounded-md"]) }, [createElementVNode("div", _hoisted_3$7, [renderSlot(_ctx.$slots, "form")])], 2), hasActions.value ? (openBlock(), createElementBlock("div", _hoisted_4$5, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)], 32)])]);
4758
4758
  };
4759
4759
  }
4760
4760
  };
4761
4761
  //#endregion
4762
4762
  //#region src/components/InputError.vue
4763
- var _hoisted_1$13 = { class: "text-sm text-red-600 dark:text-neutral-100" };
4764
- var _sfc_main$8 = {
4763
+ var _hoisted_1$14 = { class: "text-sm text-red-600 dark:text-neutral-100" };
4764
+ var _sfc_main$9 = {
4765
4765
  __name: "InputError",
4766
4766
  props: { message: String },
4767
4767
  setup(__props) {
4768
4768
  return (_ctx, _cache) => {
4769
- return withDirectives((openBlock(), createElementBlock("div", null, [createElementVNode("p", _hoisted_1$13, toDisplayString(__props.message), 1)], 512)), [[vShow, __props.message]]);
4769
+ return withDirectives((openBlock(), createElementBlock("div", null, [createElementVNode("p", _hoisted_1$14, toDisplayString(__props.message), 1)], 512)), [[vShow, __props.message]]);
4770
4770
  };
4771
4771
  }
4772
4772
  };
4773
4773
  //#endregion
4774
4774
  //#region src/components/InputLabel.vue
4775
- var _hoisted_1$12 = { class: "block text-sm font-medium text-neutral-700 dark:text-neutral-100" };
4776
- var _hoisted_2$7 = { key: 0 };
4777
- var _hoisted_3$5 = { key: 1 };
4778
- var _sfc_main$7 = {
4775
+ var _hoisted_1$13 = { class: "block text-sm font-medium text-neutral-700 dark:text-neutral-100" };
4776
+ var _hoisted_2$8 = { key: 0 };
4777
+ var _hoisted_3$6 = { key: 1 };
4778
+ var _sfc_main$8 = {
4779
4779
  __name: "InputLabel",
4780
4780
  props: { value: String },
4781
4781
  setup(__props) {
4782
4782
  return (_ctx, _cache) => {
4783
- return openBlock(), createElementBlock("label", _hoisted_1$12, [__props.value ? (openBlock(), createElementBlock("span", _hoisted_2$7, toDisplayString(__props.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, [renderSlot(_ctx.$slots, "default")]))]);
4783
+ return openBlock(), createElementBlock("label", _hoisted_1$13, [__props.value ? (openBlock(), createElementBlock("span", _hoisted_2$8, toDisplayString(__props.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$6, [renderSlot(_ctx.$slots, "default")]))]);
4784
4784
  };
4785
4785
  }
4786
4786
  };
4787
4787
  //#endregion
4788
4788
  //#region src/components/LinkButton.vue
4789
- var _hoisted_1$11 = [
4789
+ var _hoisted_1$12 = [
4790
4790
  "href",
4791
4791
  "title",
4792
4792
  "target",
4793
4793
  "rel"
4794
4794
  ];
4795
- var _sfc_main$6 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4795
+ var _sfc_main$7 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4796
4796
  __name: "LinkButton",
4797
4797
  props: {
4798
4798
  href: {
@@ -4859,19 +4859,19 @@ var _sfc_main$6 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4859
4859
  target: __props.target,
4860
4860
  rel: __props.rel,
4861
4861
  class: linkClasses.value
4862
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$11));
4862
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$12));
4863
4863
  };
4864
4864
  }
4865
4865
  });
4866
4866
  //#endregion
4867
4867
  //#region src/components/SectionBorder.vue
4868
- var _hoisted_1$10 = { class: "hidden sm:block" };
4869
- var _hoisted_2$6 = { class: "py-8" };
4870
- var _sfc_main$5 = {
4868
+ var _hoisted_1$11 = { class: "hidden sm:block" };
4869
+ var _hoisted_2$7 = { class: "py-8" };
4870
+ var _sfc_main$6 = {
4871
4871
  __name: "SectionBorder",
4872
4872
  setup(__props) {
4873
4873
  return (_ctx, _cache) => {
4874
- return openBlock(), createElementBlock("div", _hoisted_1$10, [createElementVNode("div", _hoisted_2$6, [createVNode(_sfc_main$38)])]);
4874
+ return openBlock(), createElementBlock("div", _hoisted_1$11, [createElementVNode("div", _hoisted_2$7, [createVNode(_sfc_main$39)])]);
4875
4875
  };
4876
4876
  }
4877
4877
  };
@@ -4921,13 +4921,13 @@ function useSidebar() {
4921
4921
  }
4922
4922
  //#endregion
4923
4923
  //#region src/components/Sidebar.vue?vue&type=script&setup=true&lang.ts
4924
- var _hoisted_1$9 = [
4924
+ var _hoisted_1$10 = [
4925
4925
  "data-state",
4926
4926
  "data-collapsible",
4927
4927
  "data-variant",
4928
4928
  "data-side"
4929
4929
  ];
4930
- var _hoisted_2$5 = {
4930
+ var _hoisted_2$6 = {
4931
4931
  "data-sidebar": "sidebar",
4932
4932
  class: "bg-sidebar text-sidebar-foreground flex h-full w-full flex-col group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm"
4933
4933
  };
@@ -4978,7 +4978,7 @@ var Sidebar_default = /* @__PURE__ */ defineComponent({
4978
4978
  __props.side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
4979
4979
  __props.variant === "floating" || __props.variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
4980
4980
  props.class
4981
- ] }, _ctx.$attrs), [createElementVNode("div", _hoisted_2$5, [renderSlot(_ctx.$slots, "default")])], 16)], 8, _hoisted_1$9));
4981
+ ] }, _ctx.$attrs), [createElementVNode("div", _hoisted_2$6, [renderSlot(_ctx.$slots, "default")])], 16)], 8, _hoisted_1$10));
4982
4982
  };
4983
4983
  }
4984
4984
  });
@@ -5194,7 +5194,7 @@ var SidebarMenu_default = /* @__PURE__ */ defineComponent({
5194
5194
  });
5195
5195
  //#endregion
5196
5196
  //#region src/components/SidebarMenuButton.vue?vue&type=script&setup=true&lang.ts
5197
- var _hoisted_1$8 = [
5197
+ var _hoisted_1$9 = [
5198
5198
  "href",
5199
5199
  "target",
5200
5200
  "rel"
@@ -5280,7 +5280,7 @@ var SidebarMenuButton_default = /* @__PURE__ */ defineComponent({
5280
5280
  href: __props.href,
5281
5281
  target: __props.target,
5282
5282
  rel: __props.rel
5283
- }, sharedAttrs.value), [__props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), { key: 0 })) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 16, _hoisted_1$8)) : (openBlock(), createElementBlock("button", mergeProps({
5283
+ }, sharedAttrs.value), [__props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), { key: 0 })) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 16, _hoisted_1$9)) : (openBlock(), createElementBlock("button", mergeProps({
5284
5284
  key: 3,
5285
5285
  type: "button"
5286
5286
  }, sharedAttrs.value), [__props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), { key: 0 })) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 16));
@@ -5474,6 +5474,30 @@ var createLucideIcon = (iconName, iconNode) => (props, { slots, attrs }) => h(Ic
5474
5474
  * This source code is licensed under the ISC license.
5475
5475
  * See the LICENSE file in the root directory of this source tree.
5476
5476
  */
5477
+ var Columns3 = createLucideIcon("columns-3", [
5478
+ ["rect", {
5479
+ width: "18",
5480
+ height: "18",
5481
+ x: "3",
5482
+ y: "3",
5483
+ rx: "2",
5484
+ key: "afitv7"
5485
+ }],
5486
+ ["path", {
5487
+ d: "M9 3v18",
5488
+ key: "fh3hqa"
5489
+ }],
5490
+ ["path", {
5491
+ d: "M15 3v18",
5492
+ key: "14nvp0"
5493
+ }]
5494
+ ]);
5495
+ /**
5496
+ * @license @lucide/vue v1.7.0 - ISC
5497
+ *
5498
+ * This source code is licensed under the ISC license.
5499
+ * See the LICENSE file in the root directory of this source tree.
5500
+ */
5477
5501
  var GripVertical = createLucideIcon("grip-vertical", [
5478
5502
  ["circle", {
5479
5503
  cx: "9",
@@ -5590,7 +5614,7 @@ var SidebarTrigger_default = /* @__PURE__ */ defineComponent({
5590
5614
  const props = __props;
5591
5615
  const { state, toggleSidebar } = useSidebar();
5592
5616
  return (_ctx, _cache) => {
5593
- return openBlock(), createBlock(_sfc_main$32, {
5617
+ return openBlock(), createBlock(_sfc_main$33, {
5594
5618
  "data-sidebar": "trigger",
5595
5619
  "data-slot": "sidebar-trigger",
5596
5620
  variant: "ghost",
@@ -5722,7 +5746,7 @@ var unregisterSlidePanel = (id, lockBody) => {
5722
5746
  var isTopSlidePanel = (id) => stack[stack.length - 1] === id;
5723
5747
  //#endregion
5724
5748
  //#region src/components/SlidePanel.vue?vue&type=script&setup=true&lang.ts
5725
- var _hoisted_1$7 = ["aria-modal"];
5749
+ var _hoisted_1$8 = ["aria-modal"];
5726
5750
  //#endregion
5727
5751
  //#region src/components/SlidePanel.vue
5728
5752
  var SlidePanel_default = /* @__PURE__ */ defineComponent({
@@ -5953,7 +5977,7 @@ var SlidePanel_default = /* @__PURE__ */ defineComponent({
5953
5977
  "aria-modal": __props.backdrop ? "true" : void 0,
5954
5978
  tabindex: "-1",
5955
5979
  onAfterLeave: finishClose
5956
- }, [renderSlot(_ctx.$slots, "default")], 44, _hoisted_1$7)), [[vShow, visible.value]]) : createCommentVNode("", true)]),
5980
+ }, [renderSlot(_ctx.$slots, "default")], 44, _hoisted_1$8)), [[vShow, visible.value]]) : createCommentVNode("", true)]),
5957
5981
  _: 3
5958
5982
  }, 8, ["enter-from-class", "leave-to-class"])]);
5959
5983
  };
@@ -5961,14 +5985,14 @@ var SlidePanel_default = /* @__PURE__ */ defineComponent({
5961
5985
  });
5962
5986
  //#endregion
5963
5987
  //#region src/components/SortControls.vue
5964
- var _hoisted_1$6 = { class: "rounded-xl border border-neutral-200 bg-white/80 px-6 py-4 backdrop-blur-sm dark:border-neutral-800 dark:bg-neutral-950/80" };
5965
- var _hoisted_2$4 = { class: "flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center" };
5966
- var _hoisted_3$4 = { class: "flex items-center gap-3" };
5967
- var _hoisted_4$3 = { class: "text-sm font-medium text-neutral-700 dark:text-neutral-100" };
5968
- var _hoisted_5$3 = { class: "flex flex-wrap items-center gap-2" };
5969
- var _hoisted_6$3 = ["onClick"];
5988
+ var _hoisted_1$7 = { class: "rounded-xl border border-neutral-200 bg-white/80 px-6 py-4 backdrop-blur-sm dark:border-neutral-800 dark:bg-neutral-950/80" };
5989
+ var _hoisted_2$5 = { class: "flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center" };
5990
+ var _hoisted_3$5 = { class: "flex items-center gap-3" };
5991
+ var _hoisted_4$4 = { class: "text-sm font-medium text-neutral-700 dark:text-neutral-100" };
5992
+ var _hoisted_5$4 = { class: "flex flex-wrap items-center gap-2" };
5993
+ var _hoisted_6$4 = ["onClick"];
5970
5994
  var _hoisted_7$2 = { class: "text-xs text-neutral-500 dark:text-neutral-200" };
5971
- var _sfc_main$4 = {
5995
+ var _sfc_main$5 = {
5972
5996
  __name: "SortControls",
5973
5997
  props: {
5974
5998
  fields: {
@@ -6007,7 +6031,7 @@ var _sfc_main$4 = {
6007
6031
  emit("sort", fieldKey);
6008
6032
  };
6009
6033
  return (_ctx, _cache) => {
6010
- return openBlock(), createElementBlock("div", _hoisted_1$6, [createElementVNode("div", _hoisted_2$4, [createElementVNode("div", _hoisted_3$4, [createElementVNode("label", _hoisted_4$3, toDisplayString(__props.sortByLabel) + ":", 1), createElementVNode("div", _hoisted_5$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fields, (field) => {
6034
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [createElementVNode("div", _hoisted_2$5, [createElementVNode("div", _hoisted_3$5, [createElementVNode("label", _hoisted_4$4, toDisplayString(__props.sortByLabel) + ":", 1), createElementVNode("div", _hoisted_5$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.fields, (field) => {
6011
6035
  return openBlock(), createElementBlock("button", {
6012
6036
  key: field.key,
6013
6037
  onClick: ($event) => handleSort(field.key),
@@ -6022,15 +6046,15 @@ var _sfc_main$4 = {
6022
6046
  key: 1,
6023
6047
  class: "w-3 h-3 ml-1 inline"
6024
6048
  })) : createCommentVNode("", true)
6025
- ], 10, _hoisted_6$3);
6049
+ ], 10, _hoisted_6$4);
6026
6050
  }), 128))])]), createElementVNode("div", _hoisted_7$2, toDisplayString(__props.count) + " " + toDisplayString(__props.countLabel), 1)])]);
6027
6051
  };
6028
6052
  }
6029
6053
  };
6030
6054
  //#endregion
6031
6055
  //#region src/components/ThSortable.vue
6032
- var _hoisted_1$5 = { class: "flex flex-col" };
6033
- var _sfc_main$3 = {
6056
+ var _hoisted_1$6 = { class: "flex flex-col" };
6057
+ var _sfc_main$4 = {
6034
6058
  __name: "ThSortable",
6035
6059
  props: {
6036
6060
  field: {
@@ -6076,7 +6100,7 @@ var _sfc_main$3 = {
6076
6100
  class: normalizeClass(__props.headerClass),
6077
6101
  style: normalizeStyle(__props.headerStyle),
6078
6102
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("sort", __props.field))
6079
- }, [createElementVNode("div", { class: normalizeClass(__props.contentClass) }, [createElementVNode("span", null, [renderSlot(_ctx.$slots, "default")]), createElementVNode("div", _hoisted_1$5, [isCurrentSort.value && __props.currentDirection === "asc" ? (openBlock(), createBlock(unref(ChevronUpIcon), {
6103
+ }, [createElementVNode("div", { class: normalizeClass(__props.contentClass) }, [createElementVNode("span", null, [renderSlot(_ctx.$slots, "default")]), createElementVNode("div", _hoisted_1$6, [isCurrentSort.value && __props.currentDirection === "asc" ? (openBlock(), createBlock(unref(ChevronUpIcon), {
6080
6104
  key: 0,
6081
6105
  class: normalizeClass([sortIconClass.value, "w-3 h-3"])
6082
6106
  }, null, 8, ["class"])) : createCommentVNode("", true), isCurrentSort.value && __props.currentDirection === "desc" ? (openBlock(), createBlock(unref(ChevronDownIcon), {
@@ -6088,25 +6112,25 @@ var _sfc_main$3 = {
6088
6112
  };
6089
6113
  //#endregion
6090
6114
  //#region src/components/TableSearch.vue
6091
- var _hoisted_1$4 = { class: "flex flex-col items-start gap-4 lg:flex-row lg:flex-wrap lg:items-center lg:justify-between" };
6092
- var _hoisted_2$3 = {
6115
+ var _hoisted_1$5 = { class: "flex flex-col items-start gap-4 lg:flex-row lg:flex-wrap lg:items-center lg:justify-between" };
6116
+ var _hoisted_2$4 = {
6093
6117
  key: 0,
6094
6118
  class: "flex shrink-0 flex-col items-start gap-3 sm:flex-row sm:items-center lg:w-auto"
6095
6119
  };
6096
- var _hoisted_3$3 = {
6120
+ var _hoisted_3$4 = {
6097
6121
  key: 0,
6098
6122
  class: "flex items-center"
6099
6123
  };
6100
- var _hoisted_4$2 = {
6124
+ var _hoisted_4$3 = {
6101
6125
  key: 1,
6102
6126
  class: "flex items-center text-xs text-neutral-500 dark:text-neutral-400 sm:w-auto sm:text-sm lg:w-auto"
6103
6127
  };
6104
- var _hoisted_5$2 = {
6128
+ var _hoisted_5$3 = {
6105
6129
  key: 0,
6106
6130
  class: "ml-2"
6107
6131
  };
6108
- var _hoisted_6$2 = { class: "font-medium text-neutral-700 dark:text-neutral-200" };
6109
- var _sfc_main$2 = {
6132
+ var _hoisted_6$3 = { class: "font-medium text-neutral-700 dark:text-neutral-200" };
6133
+ var _sfc_main$3 = {
6110
6134
  __name: "TableSearch",
6111
6135
  props: {
6112
6136
  modelValue: {
@@ -6175,7 +6199,7 @@ var _sfc_main$2 = {
6175
6199
  const searchContentClasses = computed(() => props.searchFieldsLayout === "stacked" ? "flex w-full min-w-0 flex-1 flex-col gap-3" : "flex w-full min-w-0 flex-1 flex-col gap-3 lg:flex-row lg:items-center");
6176
6200
  const searchFieldsClasses = computed(() => props.searchFieldsLayout === "stacked" ? "w-full min-w-0" : "min-w-0 flex-1");
6177
6201
  return (_ctx, _cache) => {
6178
- return openBlock(), createElementBlock("div", { class: normalizeClass(__props.cardClass) }, [createElementVNode("div", _hoisted_1$4, [createElementVNode("div", { class: normalizeClass(searchContentClasses.value) }, [__props.searchbar ? (openBlock(), createBlock(_sfc_main$16, {
6202
+ return openBlock(), createElementBlock("div", { class: normalizeClass(__props.cardClass) }, [createElementVNode("div", _hoisted_1$5, [createElementVNode("div", { class: normalizeClass(searchContentClasses.value) }, [__props.searchbar ? (openBlock(), createBlock(_sfc_main$17, {
6179
6203
  key: 0,
6180
6204
  modelValue: model.value,
6181
6205
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
@@ -6185,19 +6209,156 @@ var _sfc_main$2 = {
6185
6209
  }, {
6186
6210
  "leading-icon": withCtx(() => [createVNode(unref(Search), { class: "h-5 w-5" })]),
6187
6211
  _: 1
6188
- }, 8, ["modelValue", "placeholder"])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(searchFieldsClasses.value) }, [renderSlot(_ctx.$slots, "search-fields")], 2)], 2), __props.showDeletedToggle || __props.count !== null || _ctx.$slots.controls ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
6189
- __props.showDeletedToggle ? (openBlock(), createElementBlock("div", _hoisted_3$3, [createVNode(_sfc_main$20, {
6212
+ }, 8, ["modelValue", "placeholder"])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(searchFieldsClasses.value) }, [renderSlot(_ctx.$slots, "search-fields")], 2)], 2), __props.showDeletedToggle || __props.count !== null || _ctx.$slots.controls ? (openBlock(), createElementBlock("div", _hoisted_2$4, [
6213
+ __props.showDeletedToggle ? (openBlock(), createElementBlock("div", _hoisted_3$4, [createVNode(_sfc_main$21, {
6190
6214
  modelValue: showDeletedModel.value,
6191
6215
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showDeletedModel.value = $event),
6192
6216
  label: __props.showDeletedLabel
6193
6217
  }, null, 8, ["modelValue", "label"])])) : createCommentVNode("", true),
6194
6218
  renderSlot(_ctx.$slots, "controls"),
6195
- __props.count !== null ? (openBlock(), createElementBlock("div", _hoisted_4$2, [createElementVNode("span", null, toDisplayString(__props.count) + " " + toDisplayString(__props.countLabel), 1), model.value ? (openBlock(), createElementBlock("span", _hoisted_5$2, [createTextVNode(toDisplayString(__props.queryLabel) + " ", 1), createElementVNode("span", _hoisted_6$2, " \"" + toDisplayString(model.value) + "\" ", 1)])) : createCommentVNode("", true)])) : createCommentVNode("", true)
6219
+ __props.count !== null ? (openBlock(), createElementBlock("div", _hoisted_4$3, [createElementVNode("span", null, toDisplayString(__props.count) + " " + toDisplayString(__props.countLabel), 1), model.value ? (openBlock(), createElementBlock("span", _hoisted_5$3, [createTextVNode(toDisplayString(__props.queryLabel) + " ", 1), createElementVNode("span", _hoisted_6$3, " \"" + toDisplayString(model.value) + "\" ", 1)])) : createCommentVNode("", true)])) : createCommentVNode("", true)
6196
6220
  ])) : createCommentVNode("", true)])], 2);
6197
6221
  };
6198
6222
  }
6199
6223
  };
6200
6224
  //#endregion
6225
+ //#region src/components/TableColumnVisibility.vue
6226
+ var _hoisted_1$4 = { class: "mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4" };
6227
+ var _hoisted_2$3 = { class: "sr-only" };
6228
+ var _hoisted_3$3 = ["checked", "onChange"];
6229
+ var _hoisted_4$2 = { class: "min-w-0 truncate" };
6230
+ var _hoisted_5$2 = { class: "flex w-full items-center justify-between gap-3" };
6231
+ var _hoisted_6$2 = { class: "flex gap-3" };
6232
+ var _sfc_main$2 = {
6233
+ __name: "TableColumnVisibility",
6234
+ props: {
6235
+ columns: {
6236
+ type: Array,
6237
+ required: true
6238
+ },
6239
+ hiddenColumns: {
6240
+ type: Array,
6241
+ default: () => []
6242
+ },
6243
+ buttonLabel: {
6244
+ type: String,
6245
+ default: "Columns"
6246
+ },
6247
+ title: {
6248
+ type: String,
6249
+ default: "Visible columns"
6250
+ },
6251
+ description: {
6252
+ type: String,
6253
+ default: "Choose the columns displayed in the table."
6254
+ },
6255
+ showAllLabel: {
6256
+ type: String,
6257
+ default: "Show all"
6258
+ },
6259
+ applyLabel: {
6260
+ type: String,
6261
+ default: "OK"
6262
+ },
6263
+ cancelLabel: {
6264
+ type: String,
6265
+ default: "Cancel"
6266
+ }
6267
+ },
6268
+ emits: ["update:hiddenColumns"],
6269
+ setup(__props, { emit: __emit }) {
6270
+ const props = __props;
6271
+ const emit = __emit;
6272
+ const isOpen = ref(false);
6273
+ const trigger = ref(null);
6274
+ const draftHiddenColumns = ref([]);
6275
+ const open = () => {
6276
+ draftHiddenColumns.value = [...props.hiddenColumns];
6277
+ isOpen.value = true;
6278
+ };
6279
+ const close = () => {
6280
+ isOpen.value = false;
6281
+ window.setTimeout(() => trigger.value?.$el?.focus(), 220);
6282
+ };
6283
+ const cancel = () => {
6284
+ draftHiddenColumns.value = [];
6285
+ close();
6286
+ };
6287
+ const apply = () => {
6288
+ emit("update:hiddenColumns", [...draftHiddenColumns.value]);
6289
+ close();
6290
+ };
6291
+ const isVisible = (column) => !draftHiddenColumns.value.includes(column.key);
6292
+ const updateColumn = (column, visible) => {
6293
+ const hiddenColumns = new Set(draftHiddenColumns.value);
6294
+ if (visible) hiddenColumns.delete(column.key);
6295
+ else hiddenColumns.add(column.key);
6296
+ draftHiddenColumns.value = Array.from(hiddenColumns);
6297
+ };
6298
+ const showAll = () => {
6299
+ draftHiddenColumns.value = [];
6300
+ };
6301
+ return (_ctx, _cache) => {
6302
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(_sfc_main$33, {
6303
+ ref_key: "trigger",
6304
+ ref: trigger,
6305
+ type: "button",
6306
+ variant: "outline",
6307
+ size: "sm",
6308
+ "aria-haspopup": "dialog",
6309
+ "aria-expanded": isOpen.value,
6310
+ "aria-label": __props.buttonLabel,
6311
+ onClick: open
6312
+ }, {
6313
+ default: withCtx(() => [createVNode(unref(Columns3), {
6314
+ class: "size-4",
6315
+ "aria-hidden": "true"
6316
+ }), createTextVNode(" " + toDisplayString(__props.buttonLabel), 1)]),
6317
+ _: 1
6318
+ }, 8, ["aria-expanded", "aria-label"]), createVNode(_sfc_main$13, {
6319
+ show: isOpen.value,
6320
+ "max-width": "4xl",
6321
+ onClose: cancel
6322
+ }, {
6323
+ title: withCtx(() => [createTextVNode(toDisplayString(__props.title), 1)]),
6324
+ content: withCtx(() => [createElementVNode("p", null, toDisplayString(__props.description), 1), createElementVNode("fieldset", _hoisted_1$4, [createElementVNode("legend", _hoisted_2$3, toDisplayString(__props.title), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6325
+ return openBlock(), createElementBlock("label", {
6326
+ key: column.key,
6327
+ class: "flex min-w-0 items-center gap-2"
6328
+ }, [createElementVNode("input", {
6329
+ type: "checkbox",
6330
+ class: "size-4 shrink-0 rounded border-neutral-300 text-primary-600 shadow-sm focus:ring-primary-500 dark:border-neutral-700 dark:bg-neutral-900",
6331
+ checked: isVisible(column),
6332
+ onChange: ($event) => updateColumn(column, $event.target.checked)
6333
+ }, null, 40, _hoisted_3$3), createElementVNode("span", _hoisted_4$2, toDisplayString(column.label), 1)]);
6334
+ }), 128))])]),
6335
+ footer: withCtx(() => [createElementVNode("div", _hoisted_5$2, [createVNode(_sfc_main$33, {
6336
+ type: "button",
6337
+ variant: "ghost",
6338
+ onClick: showAll
6339
+ }, {
6340
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.showAllLabel), 1)]),
6341
+ _: 1
6342
+ }), createElementVNode("div", _hoisted_6$2, [createVNode(_sfc_main$33, {
6343
+ type: "button",
6344
+ variant: "outline",
6345
+ onClick: cancel
6346
+ }, {
6347
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelLabel), 1)]),
6348
+ _: 1
6349
+ }), createVNode(_sfc_main$33, {
6350
+ type: "button",
6351
+ onClick: apply
6352
+ }, {
6353
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.applyLabel), 1)]),
6354
+ _: 1
6355
+ })])])]),
6356
+ _: 1
6357
+ }, 8, ["show"])], 64);
6358
+ };
6359
+ }
6360
+ };
6361
+ //#endregion
6201
6362
  //#region src/components/tableListOrdering.js
6202
6363
  var getNestedValue = (object, path) => {
6203
6364
  if (!path || typeof path !== "string") return object;
@@ -6237,40 +6398,50 @@ var reorderRows = ({ data, fromIndex, toIndex, orderField, mutateRows }) => {
6237
6398
  };
6238
6399
  //#endregion
6239
6400
  //#region src/components/TableList.vue
6240
- var _hoisted_1$3 = { class: "space-y-6" };
6401
+ var _hoisted_1$3 = { class: "min-w-0 max-w-full space-y-6" };
6241
6402
  var _hoisted_2$2 = {
6403
+ key: 1,
6404
+ class: "flex justify-end"
6405
+ };
6406
+ var _hoisted_3$2 = {
6242
6407
  key: 0,
6243
6408
  class: "w-10 px-2 py-3 text-center text-[11px] font-semibold uppercase tracking-[0.12em] text-neutral-600 dark:text-neutral-200"
6244
6409
  };
6245
- var _hoisted_3$2 = [
6246
- "data-row-index",
6247
- "onDragenter",
6248
- "onDragover",
6249
- "onDrop"
6250
- ];
6251
- var _hoisted_4$1 = {
6410
+ var _hoisted_4$1 = ["data-table-sticky-key"];
6411
+ var _hoisted_5$1 = ["data-table-sticky-key"];
6412
+ var _hoisted_6$1 = {
6413
+ key: 0,
6414
+ "data-table-list-placeholder": "",
6415
+ class: "bg-blue-50/60 dark:bg-blue-950/20"
6416
+ };
6417
+ var _hoisted_7$1 = ["colspan"];
6418
+ var _hoisted_8$1 = ["data-row-index"];
6419
+ var _hoisted_9$1 = {
6252
6420
  key: 0,
6253
6421
  class: "w-10 whitespace-nowrap px-2 py-4 text-center text-sm text-neutral-500 dark:text-neutral-400"
6254
6422
  };
6255
- var _hoisted_5$1 = { class: "inline-flex items-center gap-1" };
6256
- var _hoisted_6$1 = [
6257
- "draggable",
6258
- "aria-label",
6259
- "onDragstart"
6260
- ];
6261
- var _hoisted_7$1 = ["title"];
6262
- var _hoisted_8$1 = {
6423
+ var _hoisted_10$1 = { class: "inline-flex items-center gap-1" };
6424
+ var _hoisted_11$1 = ["aria-label", "onPointerdown"];
6425
+ var _hoisted_12$1 = ["title"];
6426
+ var _hoisted_13$1 = {
6263
6427
  key: 0,
6264
6428
  class: "ml-2 inline-flex items-center rounded-full bg-red-100 px-2 py-1 text-xs font-medium text-red-700 dark:bg-red-950/60 dark:text-neutral-100"
6265
6429
  };
6266
- var _hoisted_9$1 = ["innerHTML"];
6267
- var _hoisted_10$1 = {
6430
+ var _hoisted_14$1 = ["innerHTML"];
6431
+ var _hoisted_15$1 = { class: "ml-auto flex w-max min-w-max flex-nowrap items-center justify-end" };
6432
+ var _hoisted_16$1 = {
6433
+ key: 0,
6434
+ "data-table-list-placeholder": "",
6435
+ class: "bg-blue-50/60 dark:bg-blue-950/20"
6436
+ };
6437
+ var _hoisted_17$1 = ["colspan"];
6438
+ var _hoisted_18$1 = {
6268
6439
  key: 0,
6269
6440
  class: "py-12 text-center"
6270
6441
  };
6271
- var _hoisted_11$1 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
6272
- var _hoisted_12$1 = { class: "mb-2 text-lg font-semibold text-neutral-950 dark:text-neutral-50" };
6273
- var _hoisted_13$1 = { class: "mb-4 text-neutral-600 dark:text-neutral-200" };
6442
+ var _hoisted_19 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
6443
+ var _hoisted_20 = { class: "mb-2 text-lg font-semibold text-neutral-950 dark:text-neutral-50" };
6444
+ var _hoisted_21 = { class: "mb-4 text-neutral-600 dark:text-neutral-200" };
6274
6445
  var _sfc_main$1 = {
6275
6446
  __name: "TableList",
6276
6447
  props: {
@@ -6318,7 +6489,7 @@ var _sfc_main$1 = {
6318
6489
  },
6319
6490
  rowClasses: {
6320
6491
  type: Function,
6321
- default: (item, index) => ["transition-colors duration-150", item.deleted_at ? "bg-red-50 hover:bg-red-100 dark:bg-red-950/30 dark:hover:bg-red-950/50" : "odd:bg-white even:bg-neutral-50 hover:bg-neutral-100 dark:odd:bg-neutral-950 dark:even:bg-neutral-900/70 dark:hover:bg-neutral-900"]
6492
+ default: (item, index) => ["transition-colors duration-150", item.deleted_at ? "bg-red-50 hover:bg-red-100 dark:bg-[#1c0c0b] dark:hover:bg-[#280d0b]" : "odd:bg-white even:bg-neutral-50 hover:bg-neutral-100 dark:odd:bg-neutral-950 dark:even:bg-neutral-900 dark:hover:bg-neutral-800"]
6322
6493
  },
6323
6494
  maxTextLength: {
6324
6495
  type: Number,
@@ -6352,6 +6523,42 @@ var _sfc_main$1 = {
6352
6523
  type: String,
6353
6524
  default: "Actions"
6354
6525
  },
6526
+ stickyActions: {
6527
+ type: Boolean,
6528
+ default: false
6529
+ },
6530
+ columnVisibility: {
6531
+ type: Boolean,
6532
+ default: false
6533
+ },
6534
+ hiddenColumns: {
6535
+ type: Array,
6536
+ default: void 0
6537
+ },
6538
+ columnVisibilityLabel: {
6539
+ type: String,
6540
+ default: "Columns"
6541
+ },
6542
+ columnVisibilityTitle: {
6543
+ type: String,
6544
+ default: "Visible columns"
6545
+ },
6546
+ columnVisibilityDescription: {
6547
+ type: String,
6548
+ default: "Choose the columns displayed in the table."
6549
+ },
6550
+ columnVisibilityShowAllLabel: {
6551
+ type: String,
6552
+ default: "Show all"
6553
+ },
6554
+ columnVisibilityApplyLabel: {
6555
+ type: String,
6556
+ default: "OK"
6557
+ },
6558
+ columnVisibilityCancelLabel: {
6559
+ type: String,
6560
+ default: "Cancel"
6561
+ },
6355
6562
  deletedLabel: {
6356
6563
  type: String,
6357
6564
  default: "Deleted"
@@ -6407,7 +6614,8 @@ var _sfc_main$1 = {
6407
6614
  "sort",
6408
6615
  "reorder",
6409
6616
  "update:searchShowDeleted",
6410
- "update:searchValue"
6617
+ "update:searchValue",
6618
+ "update:hiddenColumns"
6411
6619
  ],
6412
6620
  setup(__props, { emit: __emit }) {
6413
6621
  const slots = useSlots();
@@ -6417,7 +6625,15 @@ var _sfc_main$1 = {
6417
6625
  watch(() => props.data, (value) => {
6418
6626
  localData.value = value;
6419
6627
  });
6420
- computed(() => !!slots.actions);
6628
+ const hasActionsSlot = computed(() => !!slots.actions);
6629
+ const internalHiddenColumns = ref(props.columns.filter((column) => column.hidden === true).map((column) => column.key));
6630
+ const resolvedHiddenColumns = computed(() => props.hiddenColumns ?? internalHiddenColumns.value);
6631
+ const visibleColumns = computed(() => props.columns.filter((column) => !resolvedHiddenColumns.value.includes(column.key)));
6632
+ const visibilityColumns = computed(() => props.columns.filter((column) => column.hideable !== false));
6633
+ const updateHiddenColumns = (hiddenColumns) => {
6634
+ internalHiddenColumns.value = hiddenColumns;
6635
+ emit("update:hiddenColumns", hiddenColumns);
6636
+ };
6421
6637
  const internalSearchQuery = ref("");
6422
6638
  const searchQuery = computed({
6423
6639
  get: () => props.searchValue ?? internalSearchQuery.value,
@@ -6443,80 +6659,60 @@ var _sfc_main$1 = {
6443
6659
  return props.searchCount ?? filteredData.value.length;
6444
6660
  });
6445
6661
  const draggedIndex = ref(null);
6446
- const dragOverIndex = ref(null);
6662
+ const insertionIndex = ref(null);
6663
+ const isDragging = ref(false);
6447
6664
  const dragPreview = ref(null);
6448
6665
  const dragRowHeight = ref(0);
6449
6666
  const tableRef = ref(null);
6667
+ const stickyOffsets = ref({});
6668
+ let stickyResizeObserver = null;
6669
+ const activePointerId = ref(null);
6670
+ const dragStartPosition = ref(null);
6671
+ const dragHandle = ref(null);
6672
+ const previousUserSelect = ref("");
6450
6673
  const canReorder = computed(() => {
6451
6674
  return props.orderable && !searchQuery.value.trim();
6452
6675
  });
6453
- const startDrag = (index, event) => {
6454
- if (!canReorder.value) {
6455
- event.preventDefault();
6456
- return;
6457
- }
6458
- draggedIndex.value = index;
6459
- dragOverIndex.value = index;
6460
- const row = event.currentTarget?.closest("tr");
6461
- if (row) {
6462
- dragRowHeight.value = row.offsetHeight;
6463
- const preview = document.createElement("div");
6464
- const previewTable = document.createElement("table");
6465
- const previewBody = document.createElement("tbody");
6466
- const previewRow = row.cloneNode(true);
6467
- previewTable.className = row.closest("table")?.className ?? "";
6468
- previewTable.style.width = `${row.getBoundingClientRect().width}px`;
6469
- previewTable.style.borderCollapse = "collapse";
6470
- previewTable.style.background = "white";
6471
- previewRow.classList.remove("opacity-0");
6472
- previewRow.style.background = "white";
6473
- previewRow.querySelectorAll("td").forEach((cell) => {
6474
- cell.style.background = "white";
6475
- });
6476
- previewBody.appendChild(previewRow);
6477
- previewTable.appendChild(previewBody);
6478
- preview.appendChild(previewTable);
6479
- dragPreview.value = preview;
6480
- dragPreview.value.style.position = "fixed";
6481
- dragPreview.value.style.top = "0";
6482
- dragPreview.value.style.left = "0";
6483
- dragPreview.value.style.background = "white";
6484
- dragPreview.value.style.borderRadius = "0.5rem";
6485
- dragPreview.value.style.boxShadow = "0 10px 25px rgb(15 23 42 / 0.18)";
6486
- dragPreview.value.style.opacity = "0.96";
6487
- dragPreview.value.style.pointerEvents = "none";
6488
- dragPreview.value.style.zIndex = "1000";
6489
- document.body.appendChild(dragPreview.value);
6490
- updateDragPreviewPosition(event);
6491
- document.addEventListener("dragover", handleDocumentDragOver, true);
6492
- document.addEventListener("drop", handleDocumentDrop, true);
6493
- const transparentDragImage = document.createElement("canvas");
6494
- transparentDragImage.width = 1;
6495
- transparentDragImage.height = 1;
6496
- event.dataTransfer.setDragImage(transparentDragImage, 0, 0);
6497
- }
6498
- event.dataTransfer.effectAllowed = "move";
6499
- event.dataTransfer.setData("text/plain", String(index));
6500
- };
6501
- const endDrag = () => {
6502
- document.removeEventListener("dragover", handleDocumentDragOver, true);
6503
- document.removeEventListener("drop", handleDocumentDrop, true);
6504
- dragPreview.value?.remove();
6505
- dragPreview.value = null;
6506
- draggedIndex.value = null;
6507
- dragOverIndex.value = null;
6508
- dragRowHeight.value = 0;
6676
+ const placeholderColumnCount = computed(() => {
6677
+ return visibleColumns.value.length + 1 + (hasActionsSlot.value ? 1 : 0);
6678
+ });
6679
+ const isStickyColumn = (column) => column.sticky === true || column.sticky === "right";
6680
+ const updateStickyOffsets = async () => {
6681
+ await nextTick();
6682
+ const stickyHeaders = Array.from(tableRef.value?.querySelectorAll("thead [data-table-sticky-key]") ?? []);
6683
+ let right = 0;
6684
+ const offsets = {};
6685
+ stickyHeaders.reverse().forEach((header) => {
6686
+ offsets[header.dataset.tableStickyKey] = right;
6687
+ right += header.getBoundingClientRect().width;
6688
+ });
6689
+ stickyOffsets.value = offsets;
6509
6690
  };
6510
- const handleDocumentDragOver = (event) => {
6511
- if (!canReorder.value || draggedIndex.value === null) return;
6512
- event.preventDefault();
6513
- updateDragPreviewPosition(event);
6691
+ watch(() => [
6692
+ visibleColumns.value.map((column) => column.key).join("|"),
6693
+ props.stickyActions,
6694
+ hasActionsSlot.value
6695
+ ], updateStickyOffsets);
6696
+ onMounted(() => {
6697
+ updateStickyOffsets();
6698
+ if (typeof ResizeObserver !== "undefined" && tableRef.value) {
6699
+ stickyResizeObserver = new ResizeObserver(updateStickyOffsets);
6700
+ stickyResizeObserver.observe(tableRef.value);
6701
+ } else if (typeof window !== "undefined") window.addEventListener("resize", updateStickyOffsets);
6702
+ });
6703
+ onBeforeUnmount(() => {
6704
+ stickyResizeObserver?.disconnect();
6705
+ if (typeof window !== "undefined") window.removeEventListener("resize", updateStickyOffsets);
6706
+ });
6707
+ const insertionPositionForRow = (index) => {
6708
+ if (draggedIndex.value === null || index < draggedIndex.value) return index;
6709
+ return index - 1;
6514
6710
  };
6515
- const handleDocumentDrop = (event) => {
6516
- if (!canReorder.value || draggedIndex.value === null || !tableRef.value?.contains(event.target)) return;
6517
- if (event.target instanceof Element && event.target.closest("tr")) return;
6518
- event.preventDefault();
6519
- dropRow(dragOverIndex.value ?? draggedIndex.value, event);
6711
+ const isPointerWithinTable = (event) => {
6712
+ const table = tableRef.value;
6713
+ if (!table) return false;
6714
+ const rect = table.getBoundingClientRect();
6715
+ return event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom;
6520
6716
  };
6521
6717
  const updateDragPreviewPosition = (event) => {
6522
6718
  if (!dragPreview.value) return;
@@ -6524,44 +6720,71 @@ var _sfc_main$1 = {
6524
6720
  const offsetY = dragRowHeight.value / 2;
6525
6721
  dragPreview.value.style.transform = `translate3d(${event.clientX - offsetX}px, ${event.clientY - offsetY}px, 0)`;
6526
6722
  };
6527
- const updateDragOver = (index, event) => {
6528
- if (canReorder.value) {
6529
- dragOverIndex.value = index;
6530
- updateDragPreviewPosition(event);
6723
+ const createDragPreview = (row) => {
6724
+ const preview = document.createElement("div");
6725
+ const previewTable = document.createElement("table");
6726
+ const previewBody = document.createElement("tbody");
6727
+ const previewRow = row.cloneNode(true);
6728
+ previewTable.className = row.closest("table")?.className ?? "";
6729
+ previewTable.style.width = `${row.getBoundingClientRect().width}px`;
6730
+ previewTable.style.borderCollapse = "collapse";
6731
+ previewTable.style.background = "white";
6732
+ previewRow.style.background = "white";
6733
+ previewRow.querySelectorAll("td").forEach((cell) => {
6734
+ cell.style.background = "white";
6735
+ });
6736
+ previewBody.appendChild(previewRow);
6737
+ previewTable.appendChild(previewBody);
6738
+ preview.appendChild(previewTable);
6739
+ preview.style.position = "fixed";
6740
+ preview.style.top = "0";
6741
+ preview.style.left = "0";
6742
+ preview.style.background = "white";
6743
+ preview.style.borderRadius = "0.5rem";
6744
+ preview.style.boxShadow = "0 10px 25px rgb(15 23 42 / 0.18)";
6745
+ preview.style.opacity = "0.96";
6746
+ preview.style.pointerEvents = "none";
6747
+ preview.style.zIndex = "1000";
6748
+ document.body.appendChild(preview);
6749
+ dragPreview.value = preview;
6750
+ };
6751
+ const updateInsertionIndex = (event) => {
6752
+ if (!isDragging.value || !isPointerWithinTable(event)) return;
6753
+ const placeholder = tableRef.value?.querySelector("[data-table-list-placeholder]");
6754
+ if (placeholder) {
6755
+ const placeholderRect = placeholder.getBoundingClientRect();
6756
+ if (event.clientY >= placeholderRect.top && event.clientY <= placeholderRect.bottom) return;
6531
6757
  }
6532
- };
6533
- const getDropTargetIndex = (event, fallbackIndex) => {
6534
- const tbody = event.currentTarget?.parentElement;
6535
- if (!tbody) return fallbackIndex;
6536
- const targetRow = Array.from(tbody.children).find((candidate) => {
6537
- const rect = candidate.getBoundingClientRect();
6538
- return event.clientY >= rect.top && event.clientY <= rect.bottom;
6758
+ const rows = Array.from(tableRef.value?.querySelectorAll("tbody tr[data-row-index]") ?? []);
6759
+ const nextInsertionIndex = rows.findIndex((row) => {
6760
+ const rect = row.getBoundingClientRect();
6761
+ return event.clientY < rect.top + rect.height / 2;
6539
6762
  });
6540
- const targetIndex = Number(targetRow?.dataset.rowIndex);
6541
- return Number.isInteger(targetIndex) ? targetIndex : fallbackIndex;
6542
- };
6543
- const rowDragStyle = (index) => {
6544
- if (draggedIndex.value === null || dragOverIndex.value === null || draggedIndex.value === dragOverIndex.value || index === draggedIndex.value) return {};
6545
- if (draggedIndex.value < dragOverIndex.value) {
6546
- if (index > draggedIndex.value && index <= dragOverIndex.value) return { transform: `translateY(-${dragRowHeight.value}px)` };
6547
- } else if (index >= dragOverIndex.value && index < draggedIndex.value) return { transform: `translateY(${dragRowHeight.value}px)` };
6548
- return {};
6763
+ insertionIndex.value = nextInsertionIndex === -1 ? rows.length : nextInsertionIndex;
6764
+ };
6765
+ const cleanupPointerDrag = () => {
6766
+ document.removeEventListener("pointermove", handlePointerMove);
6767
+ document.removeEventListener("pointerup", handlePointerUp);
6768
+ document.removeEventListener("pointercancel", handlePointerCancel);
6769
+ document.removeEventListener("keydown", handleKeyDown);
6770
+ if (dragHandle.value?.hasPointerCapture?.(activePointerId.value)) dragHandle.value.releasePointerCapture(activePointerId.value);
6771
+ document.body.style.userSelect = previousUserSelect.value;
6772
+ dragPreview.value?.remove();
6773
+ dragPreview.value = null;
6774
+ draggedIndex.value = null;
6775
+ insertionIndex.value = null;
6776
+ isDragging.value = false;
6777
+ dragRowHeight.value = 0;
6778
+ activePointerId.value = null;
6779
+ dragStartPosition.value = null;
6780
+ dragHandle.value = null;
6549
6781
  };
6550
- const dropRow = (toIndex, event) => {
6551
- event.preventDefault();
6552
- if (!canReorder.value || draggedIndex.value === null) {
6553
- endDrag();
6554
- return;
6555
- }
6556
- const targetIndex = getDropTargetIndex(event, dragOverIndex.value ?? toIndex);
6557
- if (draggedIndex.value === targetIndex) {
6558
- endDrag();
6559
- return;
6560
- }
6782
+ const commitReorder = () => {
6783
+ if (draggedIndex.value === null || insertionIndex.value === null || draggedIndex.value === insertionIndex.value) return;
6561
6784
  const result = reorderRows({
6562
6785
  data: localData.value,
6563
6786
  fromIndex: draggedIndex.value,
6564
- toIndex: targetIndex,
6787
+ toIndex: insertionIndex.value,
6565
6788
  orderField: props.orderField,
6566
6789
  mutateRows: props.mutateRows
6567
6790
  });
@@ -6571,10 +6794,69 @@ var _sfc_main$1 = {
6571
6794
  } else localData.value = result.data;
6572
6795
  emit("reorder", {
6573
6796
  ...result,
6574
- rowKey: getRowKey(result.item, targetIndex, props.rowKey)
6797
+ rowKey: getRowKey(result.item, insertionIndex.value, props.rowKey)
6575
6798
  });
6576
- endDrag();
6577
6799
  };
6800
+ const startPointerDrag = (index, event) => {
6801
+ if (!canReorder.value || event.pointerType === "mouse" && event.button !== 0) return;
6802
+ const row = event.currentTarget?.closest("tr");
6803
+ if (!row) return;
6804
+ event.preventDefault();
6805
+ event.stopPropagation();
6806
+ draggedIndex.value = index;
6807
+ insertionIndex.value = index;
6808
+ activePointerId.value = event.pointerId;
6809
+ dragStartPosition.value = {
6810
+ x: event.clientX,
6811
+ y: event.clientY
6812
+ };
6813
+ dragHandle.value = event.currentTarget;
6814
+ dragRowHeight.value = row.getBoundingClientRect().height;
6815
+ previousUserSelect.value = document.body.style.userSelect;
6816
+ dragHandle.value.setPointerCapture?.(event.pointerId);
6817
+ document.addEventListener("pointermove", handlePointerMove);
6818
+ document.addEventListener("pointerup", handlePointerUp);
6819
+ document.addEventListener("pointercancel", handlePointerCancel);
6820
+ document.addEventListener("keydown", handleKeyDown);
6821
+ };
6822
+ const handlePointerMove = (event) => {
6823
+ if (event.pointerId !== activePointerId.value) return;
6824
+ if (!isDragging.value) {
6825
+ const distanceX = event.clientX - dragStartPosition.value.x;
6826
+ const distanceY = event.clientY - dragStartPosition.value.y;
6827
+ if (Math.hypot(distanceX, distanceY) < 5) return;
6828
+ const row = dragHandle.value?.closest("tr");
6829
+ if (!row) {
6830
+ cleanupPointerDrag();
6831
+ return;
6832
+ }
6833
+ document.body.style.userSelect = "none";
6834
+ createDragPreview(row);
6835
+ isDragging.value = true;
6836
+ updateDragPreviewPosition(event);
6837
+ event.preventDefault();
6838
+ nextTick(() => updateInsertionIndex(event));
6839
+ return;
6840
+ }
6841
+ event.preventDefault();
6842
+ updateDragPreviewPosition(event);
6843
+ updateInsertionIndex(event);
6844
+ };
6845
+ const handlePointerUp = (event) => {
6846
+ if (event.pointerId !== activePointerId.value) return;
6847
+ if (isDragging.value && isPointerWithinTable(event)) {
6848
+ updateInsertionIndex(event);
6849
+ commitReorder();
6850
+ }
6851
+ cleanupPointerDrag();
6852
+ };
6853
+ const handlePointerCancel = (event) => {
6854
+ if (event.pointerId === activePointerId.value) cleanupPointerDrag();
6855
+ };
6856
+ const handleKeyDown = (event) => {
6857
+ if (event.key === "Escape") cleanupPointerDrag();
6858
+ };
6859
+ onBeforeUnmount(cleanupPointerDrag);
6578
6860
  const sortBy = (field) => {
6579
6861
  emit("sort", field);
6580
6862
  };
@@ -6605,158 +6887,220 @@ var _sfc_main$1 = {
6605
6887
  return item.deleted_at || item.deleted;
6606
6888
  };
6607
6889
  const getColumnClass = (column) => {
6608
- return joinClasses(props.dense ? "px-3 py-2 text-sm truncate" : "px-6 py-4 text-sm truncate", !column.isSecondary ? "font-medium" : "", column.isSecondary ? "text-neutral-600 dark:text-neutral-200" : "", column.align === "right" ? "text-right" : "", column.class, column.cellClass);
6890
+ return joinClasses(props.dense ? "px-3 py-2 text-sm truncate" : "px-6 py-4 text-sm truncate", !column.isSecondary ? "font-medium" : "", column.isSecondary ? "text-neutral-600 dark:text-neutral-200" : "", column.align === "right" ? "text-right" : "", isStickyColumn(column) ? "sticky z-20 bg-inherit shadow-[-1px_0_0_rgb(229_229_229)] dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "", column.class, column.cellClass);
6609
6891
  };
6610
6892
  const getHeaderClass = (column) => {
6611
- return joinClasses(column.sortable ? "cursor-pointer transition-colors duration-150" : "", props.dense ? "px-3 py-2 text-left text-[11px] font-semibold uppercase tracking-[0.12em]" : "px-6 py-3 text-left text-[11px] font-semibold uppercase tracking-[0.12em]", "text-neutral-600 dark:text-neutral-200", column.sortable ? "hover:bg-neutral-100 dark:hover:bg-neutral-900" : "", column.align === "right" ? "text-right" : "", column.headerClass);
6893
+ return joinClasses(column.sortable ? "cursor-pointer transition-colors duration-150" : "", props.dense ? "px-3 py-2 text-left text-[11px] font-semibold uppercase tracking-[0.12em]" : "px-6 py-3 text-left text-[11px] font-semibold uppercase tracking-[0.12em]", "text-neutral-600 dark:text-neutral-200", column.sortable ? "hover:bg-neutral-100 dark:hover:bg-neutral-900" : "", column.align === "right" ? "text-right" : "", isStickyColumn(column) ? "sticky z-30 bg-neutral-50 shadow-[-1px_0_0_rgb(229_229_229)] dark:bg-neutral-900 dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "", column.headerClass);
6612
6894
  };
6613
6895
  const getContentClass = (column) => {
6614
6896
  return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
6615
6897
  };
6616
6898
  const getColumnWidthStyle = (column) => {
6617
- return column.width ? { width: column.width } : {};
6899
+ return {
6900
+ ...column.width ? { width: column.width } : {},
6901
+ ...isStickyColumn(column) ? { right: `${stickyOffsets.value[column.key] ?? 0}px` } : {}
6902
+ };
6618
6903
  };
6619
6904
  const actionHeaderClass = computed(() => {
6620
- return joinClasses(props.dense ? "px-3 py-2 text-right text-[11px] font-semibold uppercase tracking-[0.12em]" : "px-6 py-3 text-right text-[11px] font-semibold uppercase tracking-[0.12em]", "text-neutral-600 dark:text-neutral-200");
6905
+ return joinClasses(props.dense ? "px-3 py-2 text-right text-[11px] font-semibold uppercase tracking-[0.12em]" : "px-6 py-3 text-right text-[11px] font-semibold uppercase tracking-[0.12em]", "w-px whitespace-nowrap text-neutral-600 dark:text-neutral-200", props.stickyActions ? "sticky z-30 bg-neutral-50 shadow-[-1px_0_0_rgb(229_229_229)] dark:bg-neutral-900 dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "");
6621
6906
  });
6622
6907
  const actionCellClass = computed(() => {
6623
- return joinClasses(props.dense ? "px-3 py-2 whitespace-nowrap text-right text-sm font-medium" : "px-6 py-4 whitespace-nowrap text-right text-sm font-medium");
6908
+ return joinClasses(props.dense ? "px-3 py-2 whitespace-nowrap text-right text-sm font-medium" : "px-6 py-4 whitespace-nowrap text-right text-sm font-medium", "w-px", props.stickyActions ? "sticky z-20 bg-inherit shadow-[-1px_0_0_rgb(229_229_229)] dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "");
6909
+ });
6910
+ const actionColumnStyle = computed(() => {
6911
+ return props.stickyActions ? { right: `${stickyOffsets.value.__actions ?? 0}px` } : {};
6624
6912
  });
6625
6913
  return (_ctx, _cache) => {
6626
- return openBlock(), createElementBlock("div", _hoisted_1$3, [__props.search ? (openBlock(), createBlock(_sfc_main$2, {
6627
- key: 0,
6628
- "model-value": searchQuery.value,
6629
- placeholder: __props.searchPlaceholder,
6630
- count: resolvedSearchCount.value,
6631
- "count-label": __props.searchCountLabel,
6632
- "query-label": __props.searchQueryLabel,
6633
- "show-deleted": __props.searchShowDeleted,
6634
- "show-deleted-toggle": __props.searchShowDeletedToggle,
6635
- "show-deleted-label": __props.searchShowDeletedLabel,
6636
- "search-mode": __props.searchMode,
6637
- "search-fields-layout": __props.searchFieldsLayout,
6638
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
6639
- "onUpdate:showDeleted": updateSearchShowDeleted
6640
- }, createSlots({ _: 2 }, [_ctx.$slots["search-fields"] ? {
6641
- name: "search-fields",
6642
- fn: withCtx(() => [renderSlot(_ctx.$slots, "search-fields")]),
6643
- key: "0"
6644
- } : void 0, _ctx.$slots.controls ? {
6645
- name: "controls",
6646
- fn: withCtx(() => [renderSlot(_ctx.$slots, "controls")]),
6647
- key: "1"
6648
- } : void 0]), 1032, [
6649
- "model-value",
6650
- "placeholder",
6651
- "count",
6652
- "count-label",
6653
- "query-label",
6654
- "show-deleted",
6655
- "show-deleted-toggle",
6656
- "show-deleted-label",
6657
- "search-mode",
6658
- "search-fields-layout"
6659
- ])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(["bg-white/90 backdrop-blur-sm dark:bg-neutral-950/90", __props.isCard ? "animate-fadeIn rounded-2xl border border-neutral-200 shadow-sm dark:border-neutral-800 md:mx-0 overflow-hidden" : ""]) }, [createElementVNode("div", { class: normalizeClass(["overflow-x-auto", __props.isCard ? "rounded-t-xl" : ""]) }, [createElementVNode("table", {
6660
- ref_key: "tableRef",
6661
- ref: tableRef,
6662
- class: normalizeClass(joinClasses("min-w-full divide-y divide-neutral-200 dark:divide-neutral-800", __props.tableClass))
6663
- }, [createElementVNode("thead", { class: normalizeClass(joinClasses("bg-neutral-50/80 dark:bg-neutral-900/80", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [
6664
- __props.orderable ? (openBlock(), createElementBlock("th", _hoisted_2$2, "#")) : createCommentVNode("", true),
6665
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6666
- return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$3, {
6914
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
6915
+ __props.search ? (openBlock(), createBlock(_sfc_main$3, {
6916
+ key: 0,
6917
+ "model-value": searchQuery.value,
6918
+ placeholder: __props.searchPlaceholder,
6919
+ count: resolvedSearchCount.value,
6920
+ "count-label": __props.searchCountLabel,
6921
+ "query-label": __props.searchQueryLabel,
6922
+ "show-deleted": __props.searchShowDeleted,
6923
+ "show-deleted-toggle": __props.searchShowDeletedToggle,
6924
+ "show-deleted-label": __props.searchShowDeletedLabel,
6925
+ "search-mode": __props.searchMode,
6926
+ "search-fields-layout": __props.searchFieldsLayout,
6927
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
6928
+ "onUpdate:showDeleted": updateSearchShowDeleted
6929
+ }, createSlots({ _: 2 }, [_ctx.$slots["search-fields"] ? {
6930
+ name: "search-fields",
6931
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "search-fields")]),
6932
+ key: "0"
6933
+ } : void 0, _ctx.$slots.controls || __props.columnVisibility ? {
6934
+ name: "controls",
6935
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "controls"), __props.columnVisibility ? (openBlock(), createBlock(_sfc_main$2, {
6667
6936
  key: 0,
6668
- field: column.key,
6669
- "current-sort-field": __props.sortField,
6670
- "current-direction": __props.sortDirection,
6671
- "header-class": getHeaderClass(column),
6672
- "header-style": getColumnWidthStyle(column),
6673
- "content-class": getContentClass(column),
6674
- onSort: sortBy
6675
- }, {
6676
- default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
6677
- _: 2
6678
- }, 1032, [
6679
- "field",
6680
- "current-sort-field",
6681
- "current-direction",
6682
- "header-class",
6683
- "header-style",
6684
- "content-class"
6685
- ])) : (openBlock(), createElementBlock("th", {
6686
- key: 1,
6687
- class: normalizeClass(getHeaderClass(column)),
6688
- style: normalizeStyle(getColumnWidthStyle(column))
6689
- }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 6))], 64);
6690
- }), 128)),
6691
- _ctx.$slots.actions ? (openBlock(), createElementBlock("th", {
6692
- key: 1,
6693
- class: normalizeClass(actionHeaderClass.value)
6694
- }, toDisplayString(__props.actionsLabel), 3)) : createCommentVNode("", true)
6695
- ], 2)], 2), createElementVNode("tbody", { class: normalizeClass(joinClasses("divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950", __props.tbodyClass)) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredData.value, (item, index) => {
6696
- return openBlock(), createElementBlock("tr", {
6697
- key: unref(getRowKey)(item, index, __props.rowKey),
6698
- "data-row-index": index,
6699
- class: normalizeClass(joinClasses(__props.rowClasses(item, index), "transition-[transform,opacity,box-shadow] duration-100 ease-out", draggedIndex.value === index ? "opacity-0" : "", dragOverIndex.value === index ? "ring-2 ring-inset ring-neutral-400 dark:ring-neutral-500" : "")),
6700
- style: normalizeStyle(rowDragStyle(index)),
6701
- onDragenter: ($event) => updateDragOver(index, $event),
6702
- onDragover: withModifiers(($event) => updateDragOver(index, $event), ["prevent"]),
6703
- onDrop: ($event) => dropRow(index, $event)
6704
- }, [
6705
- __props.orderable ? (openBlock(), createElementBlock("td", _hoisted_4$1, [createElementVNode("span", _hoisted_5$1, [createElementVNode("span", {
6706
- draggable: canReorder.value,
6707
- class: "cursor-grab touch-none active:cursor-grabbing",
6708
- "aria-label": `Drag row ${index + 1}`,
6709
- onDragstart: ($event) => startDrag(index, $event),
6710
- onDragend: endDrag
6711
- }, [createVNode(unref(GripVertical), { class: "size-4" })], 40, _hoisted_6$1), createElementVNode("span", null, toDisplayString(index + 1), 1)])])) : createCommentVNode("", true),
6712
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6713
- return openBlock(), createElementBlock("td", {
6714
- key: column.key,
6715
- class: normalizeClass(getColumnClass(column)),
6716
- style: normalizeStyle(getColumnWidthStyle(column))
6717
- }, [column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", {
6937
+ columns: visibilityColumns.value,
6938
+ "hidden-columns": resolvedHiddenColumns.value,
6939
+ "button-label": __props.columnVisibilityLabel,
6940
+ title: __props.columnVisibilityTitle,
6941
+ description: __props.columnVisibilityDescription,
6942
+ "show-all-label": __props.columnVisibilityShowAllLabel,
6943
+ "apply-label": __props.columnVisibilityApplyLabel,
6944
+ "cancel-label": __props.columnVisibilityCancelLabel,
6945
+ "onUpdate:hiddenColumns": updateHiddenColumns
6946
+ }, null, 8, [
6947
+ "columns",
6948
+ "hidden-columns",
6949
+ "button-label",
6950
+ "title",
6951
+ "description",
6952
+ "show-all-label",
6953
+ "apply-label",
6954
+ "cancel-label"
6955
+ ])) : createCommentVNode("", true)]),
6956
+ key: "1"
6957
+ } : void 0]), 1032, [
6958
+ "model-value",
6959
+ "placeholder",
6960
+ "count",
6961
+ "count-label",
6962
+ "query-label",
6963
+ "show-deleted",
6964
+ "show-deleted-toggle",
6965
+ "show-deleted-label",
6966
+ "search-mode",
6967
+ "search-fields-layout"
6968
+ ])) : createCommentVNode("", true),
6969
+ __props.columnVisibility && !__props.search ? (openBlock(), createElementBlock("div", _hoisted_2$2, [createVNode(_sfc_main$2, {
6970
+ columns: visibilityColumns.value,
6971
+ "hidden-columns": resolvedHiddenColumns.value,
6972
+ "button-label": __props.columnVisibilityLabel,
6973
+ title: __props.columnVisibilityTitle,
6974
+ description: __props.columnVisibilityDescription,
6975
+ "show-all-label": __props.columnVisibilityShowAllLabel,
6976
+ "apply-label": __props.columnVisibilityApplyLabel,
6977
+ "cancel-label": __props.columnVisibilityCancelLabel,
6978
+ "onUpdate:hiddenColumns": updateHiddenColumns
6979
+ }, null, 8, [
6980
+ "columns",
6981
+ "hidden-columns",
6982
+ "button-label",
6983
+ "title",
6984
+ "description",
6985
+ "show-all-label",
6986
+ "apply-label",
6987
+ "cancel-label"
6988
+ ])])) : createCommentVNode("", true),
6989
+ createElementVNode("div", { class: normalizeClass(["min-w-0 max-w-full bg-white/90 backdrop-blur-sm dark:bg-neutral-950/90", __props.isCard ? "animate-fadeIn rounded-2xl border border-neutral-200 shadow-sm dark:border-neutral-800 md:mx-0 overflow-hidden" : ""]) }, [createElementVNode("div", { class: normalizeClass(["min-w-0 max-w-full overflow-x-auto", __props.isCard ? "rounded-t-xl" : ""]) }, [createElementVNode("table", {
6990
+ ref_key: "tableRef",
6991
+ ref: tableRef,
6992
+ class: normalizeClass(joinClasses("min-w-full divide-y divide-neutral-200 dark:divide-neutral-800", __props.tableClass))
6993
+ }, [createElementVNode("thead", { class: normalizeClass(joinClasses("bg-neutral-50/80 dark:bg-neutral-900/80", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [
6994
+ __props.orderable ? (openBlock(), createElementBlock("th", _hoisted_3$2, "#")) : createCommentVNode("", true),
6995
+ (openBlock(true), createElementBlock(Fragment, null, renderList(visibleColumns.value, (column) => {
6996
+ return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$4, {
6718
6997
  key: 0,
6719
- class: normalizeClass(joinClasses("flex items-center", getContentClass(column)))
6720
- }, [createElementVNode("div", {
6721
- class: "truncate text-sm font-medium text-neutral-950 dark:text-neutral-50",
6722
- title: getCellContent(item, column)
6723
- }, toDisplayString(getCellContent(item, column)), 9, _hoisted_7$1), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_8$1, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)], 2)) : column.slot ? (openBlock(), createElementBlock("div", {
6998
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
6999
+ field: column.key,
7000
+ "current-sort-field": __props.sortField,
7001
+ "current-direction": __props.sortDirection,
7002
+ "header-class": getHeaderClass(column),
7003
+ "header-style": getColumnWidthStyle(column),
7004
+ "content-class": getContentClass(column),
7005
+ onSort: sortBy
7006
+ }, {
7007
+ default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
7008
+ _: 2
7009
+ }, 1032, [
7010
+ "data-table-sticky-key",
7011
+ "field",
7012
+ "current-sort-field",
7013
+ "current-direction",
7014
+ "header-class",
7015
+ "header-style",
7016
+ "content-class"
7017
+ ])) : (openBlock(), createElementBlock("th", {
6724
7018
  key: 1,
6725
- class: normalizeClass(getContentClass(column))
6726
- }, [renderSlot(_ctx.$slots, column.slot, {
6727
- item,
6728
- column,
6729
- index
6730
- })], 2)) : column.render ? (openBlock(), createElementBlock("div", {
6731
- key: 2,
6732
- class: normalizeClass(getContentClass(column)),
6733
- innerHTML: column.render(item)
6734
- }, null, 10, _hoisted_9$1)) : (openBlock(), createElementBlock("div", {
6735
- key: 3,
6736
- class: normalizeClass(getContentClass(column))
6737
- }, toDisplayString(getCellContent(item, column)), 3))], 6);
7019
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
7020
+ class: normalizeClass(getHeaderClass(column)),
7021
+ style: normalizeStyle(getColumnWidthStyle(column))
7022
+ }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 14, _hoisted_4$1))], 64);
6738
7023
  }), 128)),
6739
- _ctx.$slots.actions ? (openBlock(), createElementBlock("td", {
7024
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("th", {
6740
7025
  key: 1,
6741
- class: normalizeClass(actionCellClass.value)
6742
- }, [renderSlot(_ctx.$slots, "actions", {
6743
- item,
6744
- index
6745
- })], 2)) : createCommentVNode("", true)
6746
- ], 46, _hoisted_3$2);
6747
- }), 128))], 2)], 2)], 2), !hasData.value ? (openBlock(), createElementBlock("div", _hoisted_10$1, [
6748
- createElementVNode("div", _hoisted_11$1, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
6749
- createElementVNode("h3", _hoisted_12$1, toDisplayString(__props.emptyState.title), 1),
6750
- createElementVNode("p", _hoisted_13$1, toDisplayString(__props.emptyState.description), 1),
6751
- __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$6, {
6752
- key: 0,
6753
- href: __props.emptyState.actionUrl,
6754
- variant: "primary"
6755
- }, {
6756
- default: withCtx(() => [createTextVNode(toDisplayString(__props.emptyState.actionText), 1)]),
6757
- _: 1
6758
- }, 8, ["href"])) : createCommentVNode("", true)
6759
- ])) : createCommentVNode("", true)], 2)]);
7026
+ "data-table-sticky-key": __props.stickyActions ? "__actions" : void 0,
7027
+ class: normalizeClass(actionHeaderClass.value),
7028
+ style: normalizeStyle(actionColumnStyle.value)
7029
+ }, toDisplayString(__props.actionsLabel), 15, _hoisted_5$1)) : createCommentVNode("", true)
7030
+ ], 2)], 2), createElementVNode("tbody", { class: normalizeClass(joinClasses("divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950", __props.tbodyClass)) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredData.value, (item, index) => {
7031
+ return openBlock(), createElementBlock(Fragment, { key: unref(getRowKey)(item, index, __props.rowKey) }, [isDragging.value && index !== draggedIndex.value && insertionIndex.value === insertionPositionForRow(index) ? (openBlock(), createElementBlock("tr", _hoisted_6$1, [createElementVNode("td", {
7032
+ colspan: placeholderColumnCount.value,
7033
+ class: "p-0"
7034
+ }, [createElementVNode("div", {
7035
+ class: "mx-2 rounded-md border border-dashed border-blue-400 bg-blue-50/70 dark:border-blue-500 dark:bg-blue-950/30",
7036
+ style: normalizeStyle({ height: `${dragRowHeight.value}px` })
7037
+ }, null, 4)], 8, _hoisted_7$1)])) : createCommentVNode("", true), !isDragging.value || index !== draggedIndex.value ? (openBlock(), createElementBlock("tr", {
7038
+ key: 1,
7039
+ "data-row-index": index,
7040
+ class: normalizeClass(joinClasses(__props.rowClasses(item, index), "transition-transform duration-150 ease-out"))
7041
+ }, [
7042
+ __props.orderable ? (openBlock(), createElementBlock("td", _hoisted_9$1, [createElementVNode("span", _hoisted_10$1, [createElementVNode("span", {
7043
+ class: "cursor-grab touch-none active:cursor-grabbing",
7044
+ "aria-label": `Drag row ${index + 1}`,
7045
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"])),
7046
+ onPointerdown: ($event) => startPointerDrag(index, $event)
7047
+ }, [createVNode(unref(GripVertical), { class: "size-4" })], 40, _hoisted_11$1), createElementVNode("span", null, toDisplayString(index + 1), 1)])])) : createCommentVNode("", true),
7048
+ (openBlock(true), createElementBlock(Fragment, null, renderList(visibleColumns.value, (column) => {
7049
+ return openBlock(), createElementBlock("td", {
7050
+ key: column.key,
7051
+ class: normalizeClass(getColumnClass(column)),
7052
+ style: normalizeStyle(getColumnWidthStyle(column))
7053
+ }, [column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", {
7054
+ key: 0,
7055
+ class: normalizeClass(joinClasses("flex items-center", getContentClass(column)))
7056
+ }, [createElementVNode("div", {
7057
+ class: "truncate text-sm font-medium text-neutral-950 dark:text-neutral-50",
7058
+ title: getCellContent(item, column)
7059
+ }, toDisplayString(getCellContent(item, column)), 9, _hoisted_12$1), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_13$1, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)], 2)) : column.slot ? (openBlock(), createElementBlock("div", {
7060
+ key: 1,
7061
+ class: normalizeClass(getContentClass(column))
7062
+ }, [renderSlot(_ctx.$slots, column.slot, {
7063
+ item,
7064
+ column,
7065
+ index
7066
+ })], 2)) : column.render ? (openBlock(), createElementBlock("div", {
7067
+ key: 2,
7068
+ class: normalizeClass(getContentClass(column)),
7069
+ innerHTML: column.render(item)
7070
+ }, null, 10, _hoisted_14$1)) : (openBlock(), createElementBlock("div", {
7071
+ key: 3,
7072
+ class: normalizeClass(getContentClass(column))
7073
+ }, toDisplayString(getCellContent(item, column)), 3))], 6);
7074
+ }), 128)),
7075
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("td", {
7076
+ key: 1,
7077
+ class: normalizeClass(actionCellClass.value),
7078
+ style: normalizeStyle(actionColumnStyle.value)
7079
+ }, [createElementVNode("div", _hoisted_15$1, [renderSlot(_ctx.$slots, "actions", {
7080
+ item,
7081
+ index
7082
+ })])], 6)) : createCommentVNode("", true)
7083
+ ], 10, _hoisted_8$1)) : createCommentVNode("", true)], 64);
7084
+ }), 128)), isDragging.value && insertionIndex.value === filteredData.value.length - 1 ? (openBlock(), createElementBlock("tr", _hoisted_16$1, [createElementVNode("td", {
7085
+ colspan: placeholderColumnCount.value,
7086
+ class: "p-0"
7087
+ }, [createElementVNode("div", {
7088
+ class: "mx-2 rounded-md border border-dashed border-blue-400 bg-blue-50/70 dark:border-blue-500 dark:bg-blue-950/30",
7089
+ style: normalizeStyle({ height: `${dragRowHeight.value}px` })
7090
+ }, null, 4)], 8, _hoisted_17$1)])) : createCommentVNode("", true)], 2)], 2)], 2), !hasData.value ? (openBlock(), createElementBlock("div", _hoisted_18$1, [
7091
+ createElementVNode("div", _hoisted_19, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
7092
+ createElementVNode("h3", _hoisted_20, toDisplayString(__props.emptyState.title), 1),
7093
+ createElementVNode("p", _hoisted_21, toDisplayString(__props.emptyState.description), 1),
7094
+ __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$7, {
7095
+ key: 0,
7096
+ href: __props.emptyState.actionUrl,
7097
+ variant: "primary"
7098
+ }, {
7099
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.emptyState.actionText), 1)]),
7100
+ _: 1
7101
+ }, 8, ["href"])) : createCommentVNode("", true)
7102
+ ])) : createCommentVNode("", true)], 2)
7103
+ ]);
6760
7104
  };
6761
7105
  }
6762
7106
  };
@@ -6766,37 +7110,39 @@ var _hoisted_1$2 = {
6766
7110
  key: 0,
6767
7111
  class: "w-10 px-2 py-3 text-center text-xs font-medium uppercase tracking-wider text-neutral-500 dark:text-neutral-200"
6768
7112
  };
6769
- var _hoisted_2$1 = ["onDragover", "onDrop"];
6770
- var _hoisted_3$1 = {
7113
+ var _hoisted_2$1 = ["data-table-sticky-key"];
7114
+ var _hoisted_3$1 = ["data-table-sticky-key"];
7115
+ var _hoisted_4 = ["onDragover", "onDrop"];
7116
+ var _hoisted_5 = {
6771
7117
  key: 0,
6772
7118
  class: "w-10 whitespace-nowrap px-2 py-4 text-center text-sm text-neutral-500 dark:text-neutral-400"
6773
7119
  };
6774
- var _hoisted_4 = { class: "inline-flex items-center gap-1" };
6775
- var _hoisted_5 = [
7120
+ var _hoisted_6 = { class: "inline-flex items-center gap-1" };
7121
+ var _hoisted_7 = [
6776
7122
  "draggable",
6777
7123
  "aria-label",
6778
7124
  "onDragstart"
6779
7125
  ];
6780
- var _hoisted_6 = {
7126
+ var _hoisted_8 = {
6781
7127
  key: 2,
6782
7128
  class: "flex items-center"
6783
7129
  };
6784
- var _hoisted_7 = ["title"];
6785
- var _hoisted_8 = {
7130
+ var _hoisted_9 = ["title"];
7131
+ var _hoisted_10 = {
6786
7132
  key: 0,
6787
7133
  class: "ml-2 inline-flex items-center rounded-full bg-red-100 px-2 py-1 text-xs font-medium text-red-800 dark:bg-red-950/60 dark:text-neutral-100"
6788
7134
  };
6789
- var _hoisted_9 = ["innerHTML"];
6790
- var _hoisted_10 = { key: 5 };
6791
- var _hoisted_11 = { class: "flex items-center justify-end gap-2" };
6792
- var _hoisted_12 = ["colspan"];
6793
- var _hoisted_13 = {
7135
+ var _hoisted_11 = ["innerHTML"];
7136
+ var _hoisted_12 = { key: 5 };
7137
+ var _hoisted_13 = { class: "ml-auto flex w-max min-w-max flex-nowrap items-center justify-end gap-2" };
7138
+ var _hoisted_14 = ["colspan"];
7139
+ var _hoisted_15 = {
6794
7140
  key: 2,
6795
7141
  class: "py-12 text-center"
6796
7142
  };
6797
- var _hoisted_14 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
6798
- var _hoisted_15 = { class: "mb-2 text-lg font-medium text-neutral-950 dark:text-neutral-50" };
6799
- var _hoisted_16 = { class: "mb-4 text-neutral-500 dark:text-neutral-200" };
7143
+ var _hoisted_16 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
7144
+ var _hoisted_17 = { class: "mb-2 text-lg font-medium text-neutral-950 dark:text-neutral-50" };
7145
+ var _hoisted_18 = { class: "mb-4 text-neutral-500 dark:text-neutral-200" };
6800
7146
  var _sfc_main = {
6801
7147
  __name: "TableListForm",
6802
7148
  props: {
@@ -6828,7 +7174,7 @@ var _sfc_main = {
6828
7174
  },
6829
7175
  rowClasses: {
6830
7176
  type: Function,
6831
- default: (item) => ["transition-colors duration-150", item.deleted_at ? "bg-red-50 hover:bg-red-100 dark:bg-red-950/30 dark:hover:bg-red-950/50" : "odd:bg-white even:bg-neutral-50 hover:bg-neutral-100 dark:odd:bg-neutral-950 dark:even:bg-neutral-900/70 dark:hover:bg-neutral-900"]
7177
+ default: (item) => ["transition-colors duration-150", item.deleted_at ? "bg-red-50 hover:bg-red-100 dark:bg-[#1c0c0b] dark:hover:bg-[#280d0b]" : "odd:bg-white even:bg-neutral-50 hover:bg-neutral-100 dark:odd:bg-neutral-950 dark:even:bg-neutral-900 dark:hover:bg-neutral-800"]
6832
7178
  },
6833
7179
  getErrorMessage: {
6834
7180
  type: Function,
@@ -6891,6 +7237,10 @@ var _sfc_main = {
6891
7237
  type: String,
6892
7238
  default: "Actions"
6893
7239
  },
7240
+ stickyActions: {
7241
+ type: Boolean,
7242
+ default: false
7243
+ },
6894
7244
  deletedLabel: {
6895
7245
  type: String,
6896
7246
  default: "Deleted"
@@ -6964,6 +7314,9 @@ var _sfc_main = {
6964
7314
  const localSortField = ref(props.sortField);
6965
7315
  const localSortDirection = ref(props.sortDirection);
6966
7316
  const localData = ref(props.data);
7317
+ const tableRef = ref(null);
7318
+ const stickyOffsets = ref({});
7319
+ let stickyResizeObserver = null;
6967
7320
  const internalSearchQuery = ref("");
6968
7321
  const searchQuery = computed({
6969
7322
  get: () => props.searchValue ?? internalSearchQuery.value,
@@ -7072,6 +7425,34 @@ var _sfc_main = {
7072
7425
  const hasActionsColumn = computed(() => hasActionsSlot.value || props.rowEditing);
7073
7426
  const hasData = computed(() => sortedData.value && sortedData.value.length > 0);
7074
7427
  const hasExpandedRow = computed(() => Boolean(slots["expanded-row"]));
7428
+ const isStickyColumn = (column) => column.sticky === true || column.sticky === "right";
7429
+ const updateStickyOffsets = async () => {
7430
+ await nextTick();
7431
+ const stickyHeaders = Array.from(tableRef.value?.querySelectorAll("thead [data-table-sticky-key]") ?? []);
7432
+ let right = 0;
7433
+ const offsets = {};
7434
+ stickyHeaders.reverse().forEach((header) => {
7435
+ offsets[header.dataset.tableStickyKey] = right;
7436
+ right += header.getBoundingClientRect().width;
7437
+ });
7438
+ stickyOffsets.value = offsets;
7439
+ };
7440
+ watch(() => [
7441
+ props.columns.map((column) => column.key).join("|"),
7442
+ props.stickyActions,
7443
+ hasActionsColumn.value
7444
+ ], updateStickyOffsets);
7445
+ onMounted(() => {
7446
+ updateStickyOffsets();
7447
+ if (typeof ResizeObserver !== "undefined" && tableRef.value) {
7448
+ stickyResizeObserver = new ResizeObserver(updateStickyOffsets);
7449
+ stickyResizeObserver.observe(tableRef.value);
7450
+ } else if (typeof window !== "undefined") window.addEventListener("resize", updateStickyOffsets);
7451
+ });
7452
+ onBeforeUnmount(() => {
7453
+ stickyResizeObserver?.disconnect();
7454
+ if (typeof window !== "undefined") window.removeEventListener("resize", updateStickyOffsets);
7455
+ });
7075
7456
  const sortBy = (field) => {
7076
7457
  if (localSortField.value === field) localSortDirection.value = localSortDirection.value === "asc" ? "desc" : "asc";
7077
7458
  else {
@@ -7172,16 +7553,19 @@ var _sfc_main = {
7172
7553
  return truncateText(value);
7173
7554
  };
7174
7555
  const getColumnClass = (column, item, index) => {
7175
- return joinClasses(isEditingRow(item, index) && (column.input || slots[getEditSlotName(column)]) ? props.dense ? "px-3 py-2 text-sm align-top" : "px-6 py-3 text-sm align-top" : props.dense ? "px-3 py-2 text-sm truncate" : "px-6 py-4 text-sm truncate", !column.isSecondary ? "font-medium" : "", column.isSecondary ? "text-neutral-600 dark:text-neutral-200" : "", column.align === "right" ? "text-right" : "", column.class, column.cellClass);
7556
+ return joinClasses(isEditingRow(item, index) && (column.input || slots[getEditSlotName(column)]) ? props.dense ? "px-3 py-2 text-sm align-top" : "px-6 py-3 text-sm align-top" : props.dense ? "px-3 py-2 text-sm truncate" : "px-6 py-4 text-sm truncate", !column.isSecondary ? "font-medium" : "", column.isSecondary ? "text-neutral-600 dark:text-neutral-200" : "", column.align === "right" ? "text-right" : "", isStickyColumn(column) ? "sticky z-20 bg-inherit shadow-[-1px_0_0_rgb(229_229_229)] dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "", column.class, column.cellClass);
7176
7557
  };
7177
7558
  const getHeaderClass = (column) => {
7178
- return joinClasses(column.sortable ? "cursor-pointer transition-colors duration-150" : "", props.dense ? "px-3 py-2 text-left text-xs font-medium uppercase tracking-wider" : "px-6 py-3 text-left text-xs font-medium uppercase tracking-wider", "text-neutral-500 dark:text-neutral-200", column.sortable ? "hover:bg-neutral-100 dark:hover:bg-neutral-900" : "", column.align === "right" ? "text-right" : "", column.headerClass);
7559
+ return joinClasses(column.sortable ? "cursor-pointer transition-colors duration-150" : "", props.dense ? "px-3 py-2 text-left text-xs font-medium uppercase tracking-wider" : "px-6 py-3 text-left text-xs font-medium uppercase tracking-wider", "text-neutral-500 dark:text-neutral-200", column.sortable ? "hover:bg-neutral-100 dark:hover:bg-neutral-900" : "", column.align === "right" ? "text-right" : "", isStickyColumn(column) ? "sticky z-30 bg-neutral-50 shadow-[-1px_0_0_rgb(229_229_229)] dark:bg-neutral-900 dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "", column.headerClass);
7179
7560
  };
7180
7561
  const getContentClass = (column) => {
7181
7562
  return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
7182
7563
  };
7183
7564
  const getColumnWidthStyle = (column) => {
7184
- return column.width ? { width: column.width } : {};
7565
+ return {
7566
+ ...column.width ? { width: column.width } : {},
7567
+ ...isStickyColumn(column) ? { right: `${stickyOffsets.value[column.key] ?? 0}px` } : {}
7568
+ };
7185
7569
  };
7186
7570
  const getInputType = (column) => column.inputType || "text";
7187
7571
  const getInputClass = (column) => {
@@ -7216,16 +7600,19 @@ var _sfc_main = {
7216
7600
  return Boolean(disabled || isDeleted(item));
7217
7601
  };
7218
7602
  const actionHeaderClass = computed(() => {
7219
- return joinClasses(props.dense ? "px-3 py-2 text-right text-xs font-medium uppercase tracking-wider" : "px-6 py-3 text-right text-xs font-medium uppercase tracking-wider", "text-neutral-500 dark:text-neutral-200");
7603
+ return joinClasses(props.dense ? "px-3 py-2 text-right text-xs font-medium uppercase tracking-wider" : "px-6 py-3 text-right text-xs font-medium uppercase tracking-wider", "w-px whitespace-nowrap text-neutral-500 dark:text-neutral-200", props.stickyActions ? "sticky z-30 bg-neutral-50 shadow-[-1px_0_0_rgb(229_229_229)] dark:bg-neutral-900 dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "");
7220
7604
  });
7221
7605
  const actionCellClass = computed(() => {
7222
- return joinClasses(props.dense ? "px-3 py-2 whitespace-nowrap text-right text-sm font-medium" : "px-6 py-4 whitespace-nowrap text-right text-sm font-medium");
7606
+ return joinClasses(props.dense ? "px-3 py-2 whitespace-nowrap text-right text-sm font-medium" : "px-6 py-4 whitespace-nowrap text-right text-sm font-medium", "w-px", props.stickyActions ? "sticky z-20 bg-inherit shadow-[-1px_0_0_rgb(229_229_229)] dark:shadow-[-1px_0_0_rgb(38_38_38)]" : "");
7607
+ });
7608
+ const actionColumnStyle = computed(() => {
7609
+ return props.stickyActions ? { right: `${stickyOffsets.value.__actions ?? 0}px` } : {};
7223
7610
  });
7224
7611
  return (_ctx, _cache) => {
7225
- return openBlock(), createElementBlock("div", { class: normalizeClass(["bg-white dark:bg-neutral-950", __props.isCard ? "mx-4 rounded-xl animate-fadeIn border border-neutral-200 shadow-sm dark:border-neutral-800 md:mx-0 overflow-hidden" : ""]) }, [__props.search ? (openBlock(), createElementBlock("div", {
7612
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["min-w-0 max-w-full bg-white dark:bg-neutral-950", __props.isCard ? "mx-4 rounded-xl animate-fadeIn border border-neutral-200 shadow-sm dark:border-neutral-800 md:mx-0 overflow-hidden" : ""]) }, [__props.search ? (openBlock(), createElementBlock("div", {
7226
7613
  key: 0,
7227
7614
  class: normalizeClass(["px-6 py-4", __props.isCard ? "rounded-t-xl border-b border-neutral-200 bg-neutral-50/80 dark:border-neutral-800 dark:bg-neutral-900/80" : "mb-4 bg-white/80 backdrop-blur-sm dark:bg-neutral-950/80"])
7228
- }, [createVNode(_sfc_main$16, {
7615
+ }, [createVNode(_sfc_main$17, {
7229
7616
  "model-value": searchQuery.value,
7230
7617
  type: "text",
7231
7618
  "root-class": "max-w-sm",
@@ -7236,12 +7623,17 @@ var _sfc_main = {
7236
7623
  _: 1
7237
7624
  }, 8, ["model-value", "placeholder"])], 2)) : createCommentVNode("", true), hasData.value ? (openBlock(), createElementBlock("div", {
7238
7625
  key: 1,
7239
- class: normalizeClass(["overflow-x-auto", __props.isCard ? __props.search ? "" : "rounded-t-xl" : ""])
7240
- }, [createElementVNode("table", { class: normalizeClass(joinClasses("min-w-full divide-y divide-neutral-200 dark:divide-neutral-800", __props.tableClass)) }, [createElementVNode("thead", { class: normalizeClass(joinClasses("bg-neutral-50 dark:bg-neutral-900", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [
7626
+ class: normalizeClass(["min-w-0 max-w-full overflow-x-auto", __props.isCard ? __props.search ? "" : "rounded-t-xl" : ""])
7627
+ }, [createElementVNode("table", {
7628
+ ref_key: "tableRef",
7629
+ ref: tableRef,
7630
+ class: normalizeClass(joinClasses("min-w-full divide-y divide-neutral-200 dark:divide-neutral-800", __props.tableClass))
7631
+ }, [createElementVNode("thead", { class: normalizeClass(joinClasses("bg-neutral-50 dark:bg-neutral-900", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [
7241
7632
  __props.orderable ? (openBlock(), createElementBlock("th", _hoisted_1$2, "#")) : createCommentVNode("", true),
7242
7633
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
7243
- return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$3, {
7634
+ return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$4, {
7244
7635
  key: 0,
7636
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
7245
7637
  field: column.key,
7246
7638
  "current-sort-field": localSortField.value,
7247
7639
  "current-direction": localSortDirection.value,
@@ -7253,6 +7645,7 @@ var _sfc_main = {
7253
7645
  default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
7254
7646
  _: 2
7255
7647
  }, 1032, [
7648
+ "data-table-sticky-key",
7256
7649
  "field",
7257
7650
  "current-sort-field",
7258
7651
  "current-direction",
@@ -7261,27 +7654,30 @@ var _sfc_main = {
7261
7654
  "content-class"
7262
7655
  ])) : (openBlock(), createElementBlock("th", {
7263
7656
  key: 1,
7657
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
7264
7658
  class: normalizeClass(getHeaderClass(column)),
7265
7659
  style: normalizeStyle(getColumnWidthStyle(column))
7266
- }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 6))], 64);
7660
+ }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 14, _hoisted_2$1))], 64);
7267
7661
  }), 128)),
7268
7662
  hasActionsColumn.value ? (openBlock(), createElementBlock("th", {
7269
7663
  key: 1,
7270
- class: normalizeClass(actionHeaderClass.value)
7271
- }, toDisplayString(__props.actionsLabel), 3)) : createCommentVNode("", true)
7664
+ "data-table-sticky-key": __props.stickyActions ? "__actions" : void 0,
7665
+ class: normalizeClass(actionHeaderClass.value),
7666
+ style: normalizeStyle(actionColumnStyle.value)
7667
+ }, toDisplayString(__props.actionsLabel), 15, _hoisted_3$1)) : createCommentVNode("", true)
7272
7668
  ], 2)], 2), createElementVNode("tbody", { class: normalizeClass(joinClasses("divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950", __props.tbodyClass)) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(sortedData.value, (item, index) => {
7273
7669
  return openBlock(), createElementBlock(Fragment, { key: getRowKey$1(item, index) }, [createElementVNode("tr", {
7274
7670
  class: normalizeClass(joinClasses(__props.rowClasses(item, index), dragOverIndex.value === index ? "ring-2 ring-inset ring-neutral-400 dark:ring-neutral-500" : "")),
7275
7671
  onDragover: withModifiers(($event) => canReorder.value && (dragOverIndex.value = index), ["prevent"]),
7276
7672
  onDrop: ($event) => dropRow(index, $event)
7277
7673
  }, [
7278
- __props.orderable ? (openBlock(), createElementBlock("td", _hoisted_3$1, [createElementVNode("span", _hoisted_4, [createElementVNode("span", {
7674
+ __props.orderable ? (openBlock(), createElementBlock("td", _hoisted_5, [createElementVNode("span", _hoisted_6, [createElementVNode("span", {
7279
7675
  draggable: canReorder.value,
7280
7676
  class: "cursor-grab touch-none active:cursor-grabbing",
7281
7677
  "aria-label": `Drag row ${index + 1}`,
7282
7678
  onDragstart: ($event) => startDrag(index, $event),
7283
7679
  onDragend: endDrag
7284
- }, [createVNode(unref(GripVertical), { class: "size-4" })], 40, _hoisted_5), createElementVNode("span", null, toDisplayString(index + 1), 1)])])) : createCommentVNode("", true),
7680
+ }, [createVNode(unref(GripVertical), { class: "size-4" })], 40, _hoisted_7), createElementVNode("span", null, toDisplayString(index + 1), 1)])])) : createCommentVNode("", true),
7285
7681
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
7286
7682
  return openBlock(), createElementBlock("td", {
7287
7683
  key: column.key,
@@ -7290,7 +7686,7 @@ var _sfc_main = {
7290
7686
  }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, [isEditingRow(item, index) && column.slot && unref(slots)[getEditSlotName(column)] ? renderSlot(_ctx.$slots, getEditSlotName(column), mergeProps({
7291
7687
  key: 0,
7292
7688
  ref_for: true
7293
- }, getSlotBindings(item, column, index))) : isEditingRow(item, index) && column.input ? (openBlock(), createBlock(_sfc_main$16, {
7689
+ }, getSlotBindings(item, column, index))) : isEditingRow(item, index) && column.input ? (openBlock(), createBlock(_sfc_main$17, {
7294
7690
  key: 1,
7295
7691
  type: getInputType(column),
7296
7692
  class: normalizeClass(getInputClass(column)),
@@ -7312,24 +7708,25 @@ var _sfc_main = {
7312
7708
  "error-message",
7313
7709
  "onUpdate:modelValue",
7314
7710
  "onBlur"
7315
- ])) : column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", _hoisted_6, [createElementVNode("div", {
7711
+ ])) : column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", _hoisted_8, [createElementVNode("div", {
7316
7712
  class: "text-sm font-medium truncate",
7317
7713
  title: getCellContent(item, column)
7318
- }, toDisplayString(getCellContent(item, column)), 9, _hoisted_7), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)])) : column.slot ? renderSlot(_ctx.$slots, column.slot, mergeProps({
7714
+ }, toDisplayString(getCellContent(item, column)), 9, _hoisted_9), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)])) : column.slot ? renderSlot(_ctx.$slots, column.slot, mergeProps({
7319
7715
  key: 3,
7320
7716
  ref_for: true
7321
7717
  }, getSlotBindings(item, column, index))) : column.render ? (openBlock(), createElementBlock("div", {
7322
7718
  key: 4,
7323
7719
  innerHTML: column.render(item)
7324
- }, null, 8, _hoisted_9)) : (openBlock(), createElementBlock("div", _hoisted_10, toDisplayString(getCellContent(item, column)), 1))], 2)], 6);
7720
+ }, null, 8, _hoisted_11)) : (openBlock(), createElementBlock("div", _hoisted_12, toDisplayString(getCellContent(item, column)), 1))], 2)], 6);
7325
7721
  }), 128)),
7326
7722
  hasActionsColumn.value ? (openBlock(), createElementBlock("td", {
7327
7723
  key: 1,
7328
- class: normalizeClass(actionCellClass.value)
7329
- }, [createElementVNode("div", _hoisted_11, [hasActionsSlot.value ? renderSlot(_ctx.$slots, "actions", mergeProps({
7724
+ class: normalizeClass(actionCellClass.value),
7725
+ style: normalizeStyle(actionColumnStyle.value)
7726
+ }, [createElementVNode("div", _hoisted_13, [hasActionsSlot.value ? renderSlot(_ctx.$slots, "actions", mergeProps({
7330
7727
  key: 0,
7331
7728
  ref_for: true
7332
- }, getSlotBindings(item, null, index))) : createCommentVNode("", true), __props.rowEditing && isEditingRow(item, index) ? (openBlock(), createBlock(_sfc_main$32, {
7729
+ }, getSlotBindings(item, null, index))) : createCommentVNode("", true), __props.rowEditing && isEditingRow(item, index) ? (openBlock(), createBlock(_sfc_main$33, {
7333
7730
  key: 1,
7334
7731
  type: "button",
7335
7732
  variant: "outline",
@@ -7344,7 +7741,7 @@ var _sfc_main = {
7344
7741
  "title",
7345
7742
  "aria-label",
7346
7743
  "onClick"
7347
- ])) : __props.rowEditing ? (openBlock(), createBlock(_sfc_main$32, {
7744
+ ])) : __props.rowEditing ? (openBlock(), createBlock(_sfc_main$33, {
7348
7745
  key: 2,
7349
7746
  type: "button",
7350
7747
  variant: "secondary",
@@ -7361,8 +7758,8 @@ var _sfc_main = {
7361
7758
  "title",
7362
7759
  "aria-label",
7363
7760
  "onClick"
7364
- ])) : createCommentVNode("", true)])], 2)) : createCommentVNode("", true)
7365
- ], 42, _hoisted_2$1), hasExpandedRow.value && __props.expandedRowKey === getRowKey$1(item, index) ? (openBlock(), createElementBlock("tr", {
7761
+ ])) : createCommentVNode("", true)])], 6)) : createCommentVNode("", true)
7762
+ ], 42, _hoisted_4), hasExpandedRow.value && __props.expandedRowKey === getRowKey$1(item, index) ? (openBlock(), createElementBlock("tr", {
7366
7763
  key: 0,
7367
7764
  class: normalizeClass(__props.expandedRowClass)
7368
7765
  }, [createElementVNode("td", {
@@ -7372,12 +7769,12 @@ var _sfc_main = {
7372
7769
  item,
7373
7770
  index,
7374
7771
  rowKey: getRowKey$1(item, index)
7375
- })], 10, _hoisted_12)], 2)) : createCommentVNode("", true)], 64);
7376
- }), 128))], 2)], 2)], 2)) : (openBlock(), createElementBlock("div", _hoisted_13, [
7377
- createElementVNode("div", _hoisted_14, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
7378
- createElementVNode("h3", _hoisted_15, toDisplayString(__props.emptyState.title), 1),
7379
- createElementVNode("p", _hoisted_16, toDisplayString(__props.emptyState.description), 1),
7380
- __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$6, {
7772
+ })], 10, _hoisted_14)], 2)) : createCommentVNode("", true)], 64);
7773
+ }), 128))], 2)], 2)], 2)) : (openBlock(), createElementBlock("div", _hoisted_15, [
7774
+ createElementVNode("div", _hoisted_16, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
7775
+ createElementVNode("h3", _hoisted_17, toDisplayString(__props.emptyState.title), 1),
7776
+ createElementVNode("p", _hoisted_18, toDisplayString(__props.emptyState.description), 1),
7777
+ __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$7, {
7381
7778
  key: 0,
7382
7779
  href: __props.emptyState.actionUrl,
7383
7780
  variant: "primary"
@@ -7509,38 +7906,38 @@ var ToastContainer_default = /* @__PURE__ */ defineComponent({
7509
7906
  //#endregion
7510
7907
  //#region src/exports.ts
7511
7908
  var exports_exports = /* @__PURE__ */ __exportAll({
7512
- ActionCard: () => _sfc_main$37,
7513
- ActionMessage: () => _sfc_main$36,
7514
- ActionSection: () => _sfc_main$34,
7515
- Badge: () => _sfc_main$33,
7516
- Button: () => _sfc_main$32,
7517
- Card: () => _sfc_main$39,
7518
- CardTabs: () => _sfc_main$40,
7519
- Checkbox: () => _sfc_main$31,
7520
- CheckboxInput: () => _sfc_main$30,
7521
- CheckboxMultipleInput: () => _sfc_main$15,
7909
+ ActionCard: () => _sfc_main$38,
7910
+ ActionMessage: () => _sfc_main$37,
7911
+ ActionSection: () => _sfc_main$35,
7912
+ Badge: () => _sfc_main$34,
7913
+ Button: () => _sfc_main$33,
7914
+ Card: () => _sfc_main$40,
7915
+ CardTabs: () => _sfc_main$41,
7916
+ Checkbox: () => _sfc_main$32,
7917
+ CheckboxInput: () => _sfc_main$31,
7918
+ CheckboxMultipleInput: () => _sfc_main$16,
7522
7919
  ColorPicker: () => ColorPicker_default,
7523
- ConfirmationModal: () => _sfc_main$13,
7524
- CustomSelect: () => _sfc_main$27,
7920
+ ConfirmationModal: () => _sfc_main$14,
7921
+ CustomSelect: () => _sfc_main$28,
7525
7922
  DateInput: () => DateInput_default,
7526
7923
  DateRangeInput: () => DateRangeInput_default,
7527
- DialogModal: () => _sfc_main$12,
7528
- Divider: () => _sfc_main$38,
7529
- Dropdown: () => _sfc_main$11,
7530
- DropdownLink: () => _sfc_main$10,
7531
- FormSection: () => _sfc_main$9,
7532
- ImageInput: () => _sfc_main$23,
7533
- InputError: () => _sfc_main$8,
7534
- InputGroup: () => _sfc_main$16,
7535
- InputLabel: () => _sfc_main$7,
7536
- LinkButton: () => _sfc_main$6,
7537
- Modal: () => _sfc_main$14,
7538
- NotationInput: () => _sfc_main$22,
7539
- RadioInput: () => _sfc_main$21,
7540
- RadioMultipleInput: () => _sfc_main$19,
7541
- SectionBorder: () => _sfc_main$5,
7924
+ DialogModal: () => _sfc_main$13,
7925
+ Divider: () => _sfc_main$39,
7926
+ Dropdown: () => _sfc_main$12,
7927
+ DropdownLink: () => _sfc_main$11,
7928
+ FormSection: () => _sfc_main$10,
7929
+ ImageInput: () => _sfc_main$24,
7930
+ InputError: () => _sfc_main$9,
7931
+ InputGroup: () => _sfc_main$17,
7932
+ InputLabel: () => _sfc_main$8,
7933
+ LinkButton: () => _sfc_main$7,
7934
+ Modal: () => _sfc_main$15,
7935
+ NotationInput: () => _sfc_main$23,
7936
+ RadioInput: () => _sfc_main$22,
7937
+ RadioMultipleInput: () => _sfc_main$20,
7938
+ SectionBorder: () => _sfc_main$6,
7542
7939
  SectionTitle: () => SectionTitle_default,
7543
- SelectInput: () => _sfc_main$26,
7940
+ SelectInput: () => _sfc_main$27,
7544
7941
  Sidebar: () => Sidebar_default,
7545
7942
  SidebarContent: () => SidebarContent_default,
7546
7943
  SidebarFooter: () => SidebarFooter_default,
@@ -7555,17 +7952,17 @@ var exports_exports = /* @__PURE__ */ __exportAll({
7555
7952
  SidebarProvider: () => SidebarProvider_default,
7556
7953
  SidebarTrigger: () => SidebarTrigger_default,
7557
7954
  SlidePanel: () => SlidePanel_default,
7558
- SortControls: () => _sfc_main$4,
7955
+ SortControls: () => _sfc_main$5,
7559
7956
  TableList: () => _sfc_main$1,
7560
7957
  TableListForm: () => _sfc_main,
7561
- TableSearch: () => _sfc_main$2,
7562
- TextArea: () => _sfc_main$28,
7563
- TextInput: () => _sfc_main$29,
7564
- ThSortable: () => _sfc_main$3,
7565
- TinyEditor: () => _sfc_main$18,
7958
+ TableSearch: () => _sfc_main$3,
7959
+ TextArea: () => _sfc_main$29,
7960
+ TextInput: () => _sfc_main$30,
7961
+ ThSortable: () => _sfc_main$4,
7962
+ TinyEditor: () => _sfc_main$19,
7566
7963
  Toast: () => Toast_default,
7567
7964
  ToastContainer: () => ToastContainer_default,
7568
- ToggleInput: () => _sfc_main$20,
7965
+ ToggleInput: () => _sfc_main$21,
7569
7966
  useSidebar: () => useSidebar
7570
7967
  });
7571
7968
  //#endregion
@@ -7574,6 +7971,6 @@ var plugin_default = { install(app) {
7574
7971
  for (const [name, component] of Object.entries(exports_exports)) app.component(name, component);
7575
7972
  } };
7576
7973
  //#endregion
7577
- export { _sfc_main$34 as $, _sfc_main$11 as A, _sfc_main$21 as B, useSidebar as C, _sfc_main$8 as D, _sfc_main$7 as E, _sfc_main$16 as F, _sfc_main$26 as G, _sfc_main$23 as H, ColorPicker_default as I, _sfc_main$29 as J, _sfc_main$27 as K, _sfc_main$18 as L, _sfc_main$13 as M, _sfc_main$14 as N, _sfc_main$9 as O, _sfc_main$15 as P, _sfc_main$33 as Q, _sfc_main$19 as R, Sidebar_default as S, _sfc_main$6 as T, DateRangeInput_default as U, _sfc_main$22 as V, DateInput_default as W, _sfc_main$31 as X, _sfc_main$30 as Y, _sfc_main$32 as Z, SidebarGroupLabel_default as _, _sfc_main$1 as a, _sfc_main$40 as at, SidebarFooter_default as b, _sfc_main$4 as c, SidebarProvider_default as d, SectionTitle_default as et, SidebarMenuItem_default as f, SidebarHeader_default as g, SidebarInset_default as h, _sfc_main as i, _sfc_main$39 as it, _sfc_main$12 as j, _sfc_main$10 as k, SlidePanel_default as l, SidebarMenu_default as m, ToastContainer_default as n, _sfc_main$37 as nt, _sfc_main$2 as o, __commonJSMin as ot, SidebarMenuButton_default as p, _sfc_main$28 as q, Toast_default as r, _sfc_main$38 as rt, _sfc_main$3 as s, plugin_default as t, _sfc_main$36 as tt, SidebarTrigger_default as u, SidebarGroupContent_default as v, _sfc_main$5 as w, SidebarContent_default as x, SidebarGroup_default as y, _sfc_main$20 as z };
7974
+ export { _sfc_main$35 as $, _sfc_main$12 as A, _sfc_main$22 as B, useSidebar as C, _sfc_main$9 as D, _sfc_main$8 as E, _sfc_main$17 as F, _sfc_main$27 as G, _sfc_main$24 as H, ColorPicker_default as I, _sfc_main$30 as J, _sfc_main$28 as K, _sfc_main$19 as L, _sfc_main$14 as M, _sfc_main$15 as N, _sfc_main$10 as O, _sfc_main$16 as P, _sfc_main$34 as Q, _sfc_main$20 as R, Sidebar_default as S, _sfc_main$7 as T, DateRangeInput_default as U, _sfc_main$23 as V, DateInput_default as W, _sfc_main$32 as X, _sfc_main$31 as Y, _sfc_main$33 as Z, SidebarGroupLabel_default as _, _sfc_main$1 as a, _sfc_main$41 as at, SidebarFooter_default as b, _sfc_main$5 as c, SidebarProvider_default as d, SectionTitle_default as et, SidebarMenuItem_default as f, SidebarHeader_default as g, SidebarInset_default as h, _sfc_main as i, _sfc_main$40 as it, _sfc_main$13 as j, _sfc_main$11 as k, SlidePanel_default as l, SidebarMenu_default as m, ToastContainer_default as n, _sfc_main$38 as nt, _sfc_main$3 as o, __commonJSMin as ot, SidebarMenuButton_default as p, _sfc_main$29 as q, Toast_default as r, _sfc_main$39 as rt, _sfc_main$4 as s, plugin_default as t, _sfc_main$37 as tt, SidebarTrigger_default as u, SidebarGroupContent_default as v, _sfc_main$6 as w, SidebarContent_default as x, SidebarGroup_default as y, _sfc_main$21 as z };
7578
7975
 
7579
- //# sourceMappingURL=plugin-IFyVg9Jx.js.map
7976
+ //# sourceMappingURL=plugin-TP7ra_6S.js.map