@enos5/enos-vue-default 1.16.8 → 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-Uq_sE9rw.js → code-Cm7MgQif.js} +2 -2
  3. package/dist/{code-Uq_sE9rw.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-BrvQoVVs.js → default-Cgs8Tahv.js} +2 -2
  8. package/dist/{default-BrvQoVVs.js.map → default-Cgs8Tahv.js.map} +1 -1
  9. package/dist/{dom-CyNQy3FR.js → dom-BeRggs56.js} +2 -2
  10. package/dist/{dom-CyNQy3FR.js.map → dom-BeRggs56.js.map} +1 -1
  11. package/dist/{image-BPy4dcSt.js → image-wVCnQh0h.js} +2 -2
  12. package/dist/{image-BPy4dcSt.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-BNLldsh6.js → link-KJRFTy--.js} +2 -2
  16. package/dist/{link-BNLldsh6.js.map → link-KJRFTy--.js.map} +1 -1
  17. package/dist/{lists-CCw-difh.js → lists-BzJs5oD0.js} +2 -2
  18. package/dist/{lists-CCw-difh.js.map → lists-BzJs5oD0.js.map} +1 -1
  19. package/dist/{plugin-BXdUiTUI.js → plugin-TP7ra_6S.js} +818 -467
  20. package/dist/plugin-TP7ra_6S.js.map +1 -0
  21. package/dist/{silver-6SQnxErw.js → silver-Y-RHxZ9j.js} +2 -2
  22. package/dist/{silver-6SQnxErw.js.map → silver-Y-RHxZ9j.js.map} +1 -1
  23. package/dist/styles.css +69 -27
  24. package/dist/{table-eUIcL87o.js → table-CV-zOVUh.js} +2 -2
  25. package/dist/{table-eUIcL87o.js.map → table-CV-zOVUh.js.map} +1 -1
  26. package/dist/{tinymce-_FcmnBzR.js → tinymce-C8b0wRwA.js} +2 -2
  27. package/dist/{tinymce-_FcmnBzR.js.map → tinymce-C8b0wRwA.js.map} +1 -1
  28. package/package.json +36 -36
  29. package/dist/plugin-BXdUiTUI.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-_FcmnBzR.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-CyNQy3FR.js"),
2848
- import("./default-BrvQoVVs.js"),
2849
- import("./silver-6SQnxErw.js"),
2850
- import("./code-Uq_sE9rw.js"),
2851
- import("./image-BPy4dcSt.js"),
2852
- import("./link-BNLldsh6.js"),
2853
- import("./lists-CCw-difh.js"),
2854
- import("./table-eUIcL87o.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 = {
@@ -2999,14 +2999,14 @@ var _hoisted_15$2 = {
2999
2999
  class: "space-y-2"
3000
3000
  };
3001
3001
  var _hoisted_16$2 = ["for"];
3002
- var _hoisted_17$1 = [
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",
@@ -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$1)])) : 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,43 +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 = {
6410
+ var _hoisted_4$1 = ["data-table-sticky-key"];
6411
+ var _hoisted_5$1 = ["data-table-sticky-key"];
6412
+ var _hoisted_6$1 = {
6246
6413
  key: 0,
6247
6414
  "data-table-list-placeholder": "",
6248
6415
  class: "bg-blue-50/60 dark:bg-blue-950/20"
6249
6416
  };
6250
- var _hoisted_4$1 = ["colspan"];
6251
- var _hoisted_5$1 = ["data-row-index"];
6252
- var _hoisted_6$1 = {
6417
+ var _hoisted_7$1 = ["colspan"];
6418
+ var _hoisted_8$1 = ["data-row-index"];
6419
+ var _hoisted_9$1 = {
6253
6420
  key: 0,
6254
6421
  class: "w-10 whitespace-nowrap px-2 py-4 text-center text-sm text-neutral-500 dark:text-neutral-400"
6255
6422
  };
6256
- var _hoisted_7$1 = { class: "inline-flex items-center gap-1" };
6257
- var _hoisted_8$1 = ["aria-label", "onPointerdown"];
6258
- var _hoisted_9$1 = ["title"];
6259
- var _hoisted_10$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 = {
6260
6427
  key: 0,
6261
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"
6262
6429
  };
6263
- var _hoisted_11$1 = ["innerHTML"];
6264
- var _hoisted_12$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 = {
6265
6433
  key: 0,
6266
6434
  "data-table-list-placeholder": "",
6267
6435
  class: "bg-blue-50/60 dark:bg-blue-950/20"
6268
6436
  };
6269
- var _hoisted_13$1 = ["colspan"];
6270
- var _hoisted_14$1 = {
6437
+ var _hoisted_17$1 = ["colspan"];
6438
+ var _hoisted_18$1 = {
6271
6439
  key: 0,
6272
6440
  class: "py-12 text-center"
6273
6441
  };
6274
- var _hoisted_15$1 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
6275
- var _hoisted_16$1 = { class: "mb-2 text-lg font-semibold text-neutral-950 dark:text-neutral-50" };
6276
- var _hoisted_17 = { 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" };
6277
6445
  var _sfc_main$1 = {
6278
6446
  __name: "TableList",
6279
6447
  props: {
@@ -6321,7 +6489,7 @@ var _sfc_main$1 = {
6321
6489
  },
6322
6490
  rowClasses: {
6323
6491
  type: Function,
6324
- 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"]
6325
6493
  },
6326
6494
  maxTextLength: {
6327
6495
  type: Number,
@@ -6355,6 +6523,42 @@ var _sfc_main$1 = {
6355
6523
  type: String,
6356
6524
  default: "Actions"
6357
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
+ },
6358
6562
  deletedLabel: {
6359
6563
  type: String,
6360
6564
  default: "Deleted"
@@ -6410,7 +6614,8 @@ var _sfc_main$1 = {
6410
6614
  "sort",
6411
6615
  "reorder",
6412
6616
  "update:searchShowDeleted",
6413
- "update:searchValue"
6617
+ "update:searchValue",
6618
+ "update:hiddenColumns"
6414
6619
  ],
6415
6620
  setup(__props, { emit: __emit }) {
6416
6621
  const slots = useSlots();
@@ -6421,6 +6626,14 @@ var _sfc_main$1 = {
6421
6626
  localData.value = value;
6422
6627
  });
6423
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
+ };
6424
6637
  const internalSearchQuery = ref("");
6425
6638
  const searchQuery = computed({
6426
6639
  get: () => props.searchValue ?? internalSearchQuery.value,
@@ -6451,6 +6664,8 @@ var _sfc_main$1 = {
6451
6664
  const dragPreview = ref(null);
6452
6665
  const dragRowHeight = ref(0);
6453
6666
  const tableRef = ref(null);
6667
+ const stickyOffsets = ref({});
6668
+ let stickyResizeObserver = null;
6454
6669
  const activePointerId = ref(null);
6455
6670
  const dragStartPosition = ref(null);
6456
6671
  const dragHandle = ref(null);
@@ -6459,7 +6674,35 @@ var _sfc_main$1 = {
6459
6674
  return props.orderable && !searchQuery.value.trim();
6460
6675
  });
6461
6676
  const placeholderColumnCount = computed(() => {
6462
- return props.columns.length + 1 + (hasActionsSlot.value ? 1 : 0);
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;
6690
+ };
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);
6463
6706
  });
6464
6707
  const insertionPositionForRow = (index) => {
6465
6708
  if (draggedIndex.value === null || index < draggedIndex.value) return index;
@@ -6644,165 +6887,220 @@ var _sfc_main$1 = {
6644
6887
  return item.deleted_at || item.deleted;
6645
6888
  };
6646
6889
  const getColumnClass = (column) => {
6647
- 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);
6648
6891
  };
6649
6892
  const getHeaderClass = (column) => {
6650
- 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);
6651
6894
  };
6652
6895
  const getContentClass = (column) => {
6653
6896
  return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
6654
6897
  };
6655
6898
  const getColumnWidthStyle = (column) => {
6656
- 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
+ };
6657
6903
  };
6658
6904
  const actionHeaderClass = computed(() => {
6659
- 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)]" : "");
6660
6906
  });
6661
6907
  const actionCellClass = computed(() => {
6662
- 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` } : {};
6663
6912
  });
6664
6913
  return (_ctx, _cache) => {
6665
- return openBlock(), createElementBlock("div", _hoisted_1$3, [__props.search ? (openBlock(), createBlock(_sfc_main$2, {
6666
- key: 0,
6667
- "model-value": searchQuery.value,
6668
- placeholder: __props.searchPlaceholder,
6669
- count: resolvedSearchCount.value,
6670
- "count-label": __props.searchCountLabel,
6671
- "query-label": __props.searchQueryLabel,
6672
- "show-deleted": __props.searchShowDeleted,
6673
- "show-deleted-toggle": __props.searchShowDeletedToggle,
6674
- "show-deleted-label": __props.searchShowDeletedLabel,
6675
- "search-mode": __props.searchMode,
6676
- "search-fields-layout": __props.searchFieldsLayout,
6677
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
6678
- "onUpdate:showDeleted": updateSearchShowDeleted
6679
- }, createSlots({ _: 2 }, [_ctx.$slots["search-fields"] ? {
6680
- name: "search-fields",
6681
- fn: withCtx(() => [renderSlot(_ctx.$slots, "search-fields")]),
6682
- key: "0"
6683
- } : void 0, _ctx.$slots.controls ? {
6684
- name: "controls",
6685
- fn: withCtx(() => [renderSlot(_ctx.$slots, "controls")]),
6686
- key: "1"
6687
- } : void 0]), 1032, [
6688
- "model-value",
6689
- "placeholder",
6690
- "count",
6691
- "count-label",
6692
- "query-label",
6693
- "show-deleted",
6694
- "show-deleted-toggle",
6695
- "show-deleted-label",
6696
- "search-mode",
6697
- "search-fields-layout"
6698
- ])) : 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", {
6699
- ref_key: "tableRef",
6700
- ref: tableRef,
6701
- class: normalizeClass(joinClasses("min-w-full divide-y divide-neutral-200 dark:divide-neutral-800", __props.tableClass))
6702
- }, [createElementVNode("thead", { class: normalizeClass(joinClasses("bg-neutral-50/80 dark:bg-neutral-900/80", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [
6703
- __props.orderable ? (openBlock(), createElementBlock("th", _hoisted_2$2, "#")) : createCommentVNode("", true),
6704
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6705
- 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, {
6706
6936
  key: 0,
6707
- field: column.key,
6708
- "current-sort-field": __props.sortField,
6709
- "current-direction": __props.sortDirection,
6710
- "header-class": getHeaderClass(column),
6711
- "header-style": getColumnWidthStyle(column),
6712
- "content-class": getContentClass(column),
6713
- onSort: sortBy
6714
- }, {
6715
- default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
6716
- _: 2
6717
- }, 1032, [
6718
- "field",
6719
- "current-sort-field",
6720
- "current-direction",
6721
- "header-class",
6722
- "header-style",
6723
- "content-class"
6724
- ])) : (openBlock(), createElementBlock("th", {
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, {
6997
+ key: 0,
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", {
7018
+ key: 1,
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);
7023
+ }), 128)),
7024
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("th", {
6725
7025
  key: 1,
6726
- class: normalizeClass(getHeaderClass(column)),
6727
- style: normalizeStyle(getColumnWidthStyle(column))
6728
- }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 6))], 64);
6729
- }), 128)),
6730
- _ctx.$slots.actions ? (openBlock(), createElementBlock("th", {
6731
- key: 1,
6732
- class: normalizeClass(actionHeaderClass.value)
6733
- }, toDisplayString(__props.actionsLabel), 3)) : createCommentVNode("", true)
6734
- ], 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) => {
6735
- return openBlock(), createElementBlock(Fragment, { key: unref(getRowKey)(item, index, __props.rowKey) }, [isDragging.value && index !== draggedIndex.value && insertionIndex.value === insertionPositionForRow(index) ? (openBlock(), createElementBlock("tr", _hoisted_3$2, [createElementVNode("td", {
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", {
6736
7085
  colspan: placeholderColumnCount.value,
6737
7086
  class: "p-0"
6738
7087
  }, [createElementVNode("div", {
6739
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",
6740
7089
  style: normalizeStyle({ height: `${dragRowHeight.value}px` })
6741
- }, null, 4)], 8, _hoisted_4$1)])) : createCommentVNode("", true), !isDragging.value || index !== draggedIndex.value ? (openBlock(), createElementBlock("tr", {
6742
- key: 1,
6743
- "data-row-index": index,
6744
- class: normalizeClass(joinClasses(__props.rowClasses(item, index), "transition-transform duration-150 ease-out"))
6745
- }, [
6746
- __props.orderable ? (openBlock(), createElementBlock("td", _hoisted_6$1, [createElementVNode("span", _hoisted_7$1, [createElementVNode("span", {
6747
- class: "cursor-grab touch-none active:cursor-grabbing",
6748
- "aria-label": `Drag row ${index + 1}`,
6749
- onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"])),
6750
- onPointerdown: ($event) => startPointerDrag(index, $event)
6751
- }, [createVNode(unref(GripVertical), { class: "size-4" })], 40, _hoisted_8$1), createElementVNode("span", null, toDisplayString(index + 1), 1)])])) : createCommentVNode("", true),
6752
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6753
- return openBlock(), createElementBlock("td", {
6754
- key: column.key,
6755
- class: normalizeClass(getColumnClass(column)),
6756
- style: normalizeStyle(getColumnWidthStyle(column))
6757
- }, [column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", {
6758
- key: 0,
6759
- class: normalizeClass(joinClasses("flex items-center", getContentClass(column)))
6760
- }, [createElementVNode("div", {
6761
- class: "truncate text-sm font-medium text-neutral-950 dark:text-neutral-50",
6762
- title: getCellContent(item, column)
6763
- }, toDisplayString(getCellContent(item, column)), 9, _hoisted_9$1), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_10$1, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)], 2)) : column.slot ? (openBlock(), createElementBlock("div", {
6764
- key: 1,
6765
- class: normalizeClass(getContentClass(column))
6766
- }, [renderSlot(_ctx.$slots, column.slot, {
6767
- item,
6768
- column,
6769
- index
6770
- })], 2)) : column.render ? (openBlock(), createElementBlock("div", {
6771
- key: 2,
6772
- class: normalizeClass(getContentClass(column)),
6773
- innerHTML: column.render(item)
6774
- }, null, 10, _hoisted_11$1)) : (openBlock(), createElementBlock("div", {
6775
- key: 3,
6776
- class: normalizeClass(getContentClass(column))
6777
- }, toDisplayString(getCellContent(item, column)), 3))], 6);
6778
- }), 128)),
6779
- _ctx.$slots.actions ? (openBlock(), createElementBlock("td", {
6780
- key: 1,
6781
- class: normalizeClass(actionCellClass.value)
6782
- }, [renderSlot(_ctx.$slots, "actions", {
6783
- item,
6784
- index
6785
- })], 2)) : createCommentVNode("", true)
6786
- ], 10, _hoisted_5$1)) : createCommentVNode("", true)], 64);
6787
- }), 128)), isDragging.value && insertionIndex.value === filteredData.value.length - 1 ? (openBlock(), createElementBlock("tr", _hoisted_12$1, [createElementVNode("td", {
6788
- colspan: placeholderColumnCount.value,
6789
- class: "p-0"
6790
- }, [createElementVNode("div", {
6791
- class: "mx-2 rounded-md border border-dashed border-blue-400 bg-blue-50/70 dark:border-blue-500 dark:bg-blue-950/30",
6792
- style: normalizeStyle({ height: `${dragRowHeight.value}px` })
6793
- }, null, 4)], 8, _hoisted_13$1)])) : createCommentVNode("", true)], 2)], 2)], 2), !hasData.value ? (openBlock(), createElementBlock("div", _hoisted_14$1, [
6794
- createElementVNode("div", _hoisted_15$1, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
6795
- createElementVNode("h3", _hoisted_16$1, toDisplayString(__props.emptyState.title), 1),
6796
- createElementVNode("p", _hoisted_17, toDisplayString(__props.emptyState.description), 1),
6797
- __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$6, {
6798
- key: 0,
6799
- href: __props.emptyState.actionUrl,
6800
- variant: "primary"
6801
- }, {
6802
- default: withCtx(() => [createTextVNode(toDisplayString(__props.emptyState.actionText), 1)]),
6803
- _: 1
6804
- }, 8, ["href"])) : createCommentVNode("", true)
6805
- ])) : createCommentVNode("", true)], 2)]);
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
+ ]);
6806
7104
  };
6807
7105
  }
6808
7106
  };
@@ -6812,37 +7110,39 @@ var _hoisted_1$2 = {
6812
7110
  key: 0,
6813
7111
  class: "w-10 px-2 py-3 text-center text-xs font-medium uppercase tracking-wider text-neutral-500 dark:text-neutral-200"
6814
7112
  };
6815
- var _hoisted_2$1 = ["onDragover", "onDrop"];
6816
- 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 = {
6817
7117
  key: 0,
6818
7118
  class: "w-10 whitespace-nowrap px-2 py-4 text-center text-sm text-neutral-500 dark:text-neutral-400"
6819
7119
  };
6820
- var _hoisted_4 = { class: "inline-flex items-center gap-1" };
6821
- var _hoisted_5 = [
7120
+ var _hoisted_6 = { class: "inline-flex items-center gap-1" };
7121
+ var _hoisted_7 = [
6822
7122
  "draggable",
6823
7123
  "aria-label",
6824
7124
  "onDragstart"
6825
7125
  ];
6826
- var _hoisted_6 = {
7126
+ var _hoisted_8 = {
6827
7127
  key: 2,
6828
7128
  class: "flex items-center"
6829
7129
  };
6830
- var _hoisted_7 = ["title"];
6831
- var _hoisted_8 = {
7130
+ var _hoisted_9 = ["title"];
7131
+ var _hoisted_10 = {
6832
7132
  key: 0,
6833
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"
6834
7134
  };
6835
- var _hoisted_9 = ["innerHTML"];
6836
- var _hoisted_10 = { key: 5 };
6837
- var _hoisted_11 = { class: "flex items-center justify-end gap-2" };
6838
- var _hoisted_12 = ["colspan"];
6839
- 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 = {
6840
7140
  key: 2,
6841
7141
  class: "py-12 text-center"
6842
7142
  };
6843
- 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" };
6844
- var _hoisted_15 = { class: "mb-2 text-lg font-medium text-neutral-950 dark:text-neutral-50" };
6845
- 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" };
6846
7146
  var _sfc_main = {
6847
7147
  __name: "TableListForm",
6848
7148
  props: {
@@ -6874,7 +7174,7 @@ var _sfc_main = {
6874
7174
  },
6875
7175
  rowClasses: {
6876
7176
  type: Function,
6877
- 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"]
6878
7178
  },
6879
7179
  getErrorMessage: {
6880
7180
  type: Function,
@@ -6937,6 +7237,10 @@ var _sfc_main = {
6937
7237
  type: String,
6938
7238
  default: "Actions"
6939
7239
  },
7240
+ stickyActions: {
7241
+ type: Boolean,
7242
+ default: false
7243
+ },
6940
7244
  deletedLabel: {
6941
7245
  type: String,
6942
7246
  default: "Deleted"
@@ -7010,6 +7314,9 @@ var _sfc_main = {
7010
7314
  const localSortField = ref(props.sortField);
7011
7315
  const localSortDirection = ref(props.sortDirection);
7012
7316
  const localData = ref(props.data);
7317
+ const tableRef = ref(null);
7318
+ const stickyOffsets = ref({});
7319
+ let stickyResizeObserver = null;
7013
7320
  const internalSearchQuery = ref("");
7014
7321
  const searchQuery = computed({
7015
7322
  get: () => props.searchValue ?? internalSearchQuery.value,
@@ -7118,6 +7425,34 @@ var _sfc_main = {
7118
7425
  const hasActionsColumn = computed(() => hasActionsSlot.value || props.rowEditing);
7119
7426
  const hasData = computed(() => sortedData.value && sortedData.value.length > 0);
7120
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
+ });
7121
7456
  const sortBy = (field) => {
7122
7457
  if (localSortField.value === field) localSortDirection.value = localSortDirection.value === "asc" ? "desc" : "asc";
7123
7458
  else {
@@ -7218,16 +7553,19 @@ var _sfc_main = {
7218
7553
  return truncateText(value);
7219
7554
  };
7220
7555
  const getColumnClass = (column, item, index) => {
7221
- 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);
7222
7557
  };
7223
7558
  const getHeaderClass = (column) => {
7224
- 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);
7225
7560
  };
7226
7561
  const getContentClass = (column) => {
7227
7562
  return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
7228
7563
  };
7229
7564
  const getColumnWidthStyle = (column) => {
7230
- 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
+ };
7231
7569
  };
7232
7570
  const getInputType = (column) => column.inputType || "text";
7233
7571
  const getInputClass = (column) => {
@@ -7262,16 +7600,19 @@ var _sfc_main = {
7262
7600
  return Boolean(disabled || isDeleted(item));
7263
7601
  };
7264
7602
  const actionHeaderClass = computed(() => {
7265
- 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)]" : "");
7266
7604
  });
7267
7605
  const actionCellClass = computed(() => {
7268
- 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` } : {};
7269
7610
  });
7270
7611
  return (_ctx, _cache) => {
7271
- 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", {
7272
7613
  key: 0,
7273
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"])
7274
- }, [createVNode(_sfc_main$16, {
7615
+ }, [createVNode(_sfc_main$17, {
7275
7616
  "model-value": searchQuery.value,
7276
7617
  type: "text",
7277
7618
  "root-class": "max-w-sm",
@@ -7282,12 +7623,17 @@ var _sfc_main = {
7282
7623
  _: 1
7283
7624
  }, 8, ["model-value", "placeholder"])], 2)) : createCommentVNode("", true), hasData.value ? (openBlock(), createElementBlock("div", {
7284
7625
  key: 1,
7285
- class: normalizeClass(["overflow-x-auto", __props.isCard ? __props.search ? "" : "rounded-t-xl" : ""])
7286
- }, [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) }, [
7287
7632
  __props.orderable ? (openBlock(), createElementBlock("th", _hoisted_1$2, "#")) : createCommentVNode("", true),
7288
7633
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
7289
- 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, {
7290
7635
  key: 0,
7636
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
7291
7637
  field: column.key,
7292
7638
  "current-sort-field": localSortField.value,
7293
7639
  "current-direction": localSortDirection.value,
@@ -7299,6 +7645,7 @@ var _sfc_main = {
7299
7645
  default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
7300
7646
  _: 2
7301
7647
  }, 1032, [
7648
+ "data-table-sticky-key",
7302
7649
  "field",
7303
7650
  "current-sort-field",
7304
7651
  "current-direction",
@@ -7307,27 +7654,30 @@ var _sfc_main = {
7307
7654
  "content-class"
7308
7655
  ])) : (openBlock(), createElementBlock("th", {
7309
7656
  key: 1,
7657
+ "data-table-sticky-key": isStickyColumn(column) ? column.key : void 0,
7310
7658
  class: normalizeClass(getHeaderClass(column)),
7311
7659
  style: normalizeStyle(getColumnWidthStyle(column))
7312
- }, [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);
7313
7661
  }), 128)),
7314
7662
  hasActionsColumn.value ? (openBlock(), createElementBlock("th", {
7315
7663
  key: 1,
7316
- class: normalizeClass(actionHeaderClass.value)
7317
- }, 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)
7318
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) => {
7319
7669
  return openBlock(), createElementBlock(Fragment, { key: getRowKey$1(item, index) }, [createElementVNode("tr", {
7320
7670
  class: normalizeClass(joinClasses(__props.rowClasses(item, index), dragOverIndex.value === index ? "ring-2 ring-inset ring-neutral-400 dark:ring-neutral-500" : "")),
7321
7671
  onDragover: withModifiers(($event) => canReorder.value && (dragOverIndex.value = index), ["prevent"]),
7322
7672
  onDrop: ($event) => dropRow(index, $event)
7323
7673
  }, [
7324
- __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", {
7325
7675
  draggable: canReorder.value,
7326
7676
  class: "cursor-grab touch-none active:cursor-grabbing",
7327
7677
  "aria-label": `Drag row ${index + 1}`,
7328
7678
  onDragstart: ($event) => startDrag(index, $event),
7329
7679
  onDragend: endDrag
7330
- }, [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),
7331
7681
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
7332
7682
  return openBlock(), createElementBlock("td", {
7333
7683
  key: column.key,
@@ -7336,7 +7686,7 @@ var _sfc_main = {
7336
7686
  }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, [isEditingRow(item, index) && column.slot && unref(slots)[getEditSlotName(column)] ? renderSlot(_ctx.$slots, getEditSlotName(column), mergeProps({
7337
7687
  key: 0,
7338
7688
  ref_for: true
7339
- }, 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, {
7340
7690
  key: 1,
7341
7691
  type: getInputType(column),
7342
7692
  class: normalizeClass(getInputClass(column)),
@@ -7358,24 +7708,25 @@ var _sfc_main = {
7358
7708
  "error-message",
7359
7709
  "onUpdate:modelValue",
7360
7710
  "onBlur"
7361
- ])) : 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", {
7362
7712
  class: "text-sm font-medium truncate",
7363
7713
  title: getCellContent(item, column)
7364
- }, 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({
7365
7715
  key: 3,
7366
7716
  ref_for: true
7367
7717
  }, getSlotBindings(item, column, index))) : column.render ? (openBlock(), createElementBlock("div", {
7368
7718
  key: 4,
7369
7719
  innerHTML: column.render(item)
7370
- }, 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);
7371
7721
  }), 128)),
7372
7722
  hasActionsColumn.value ? (openBlock(), createElementBlock("td", {
7373
7723
  key: 1,
7374
- class: normalizeClass(actionCellClass.value)
7375
- }, [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({
7376
7727
  key: 0,
7377
7728
  ref_for: true
7378
- }, 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, {
7379
7730
  key: 1,
7380
7731
  type: "button",
7381
7732
  variant: "outline",
@@ -7390,7 +7741,7 @@ var _sfc_main = {
7390
7741
  "title",
7391
7742
  "aria-label",
7392
7743
  "onClick"
7393
- ])) : __props.rowEditing ? (openBlock(), createBlock(_sfc_main$32, {
7744
+ ])) : __props.rowEditing ? (openBlock(), createBlock(_sfc_main$33, {
7394
7745
  key: 2,
7395
7746
  type: "button",
7396
7747
  variant: "secondary",
@@ -7407,8 +7758,8 @@ var _sfc_main = {
7407
7758
  "title",
7408
7759
  "aria-label",
7409
7760
  "onClick"
7410
- ])) : createCommentVNode("", true)])], 2)) : createCommentVNode("", true)
7411
- ], 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", {
7412
7763
  key: 0,
7413
7764
  class: normalizeClass(__props.expandedRowClass)
7414
7765
  }, [createElementVNode("td", {
@@ -7418,12 +7769,12 @@ var _sfc_main = {
7418
7769
  item,
7419
7770
  index,
7420
7771
  rowKey: getRowKey$1(item, index)
7421
- })], 10, _hoisted_12)], 2)) : createCommentVNode("", true)], 64);
7422
- }), 128))], 2)], 2)], 2)) : (openBlock(), createElementBlock("div", _hoisted_13, [
7423
- createElementVNode("div", _hoisted_14, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
7424
- createElementVNode("h3", _hoisted_15, toDisplayString(__props.emptyState.title), 1),
7425
- createElementVNode("p", _hoisted_16, toDisplayString(__props.emptyState.description), 1),
7426
- __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, {
7427
7778
  key: 0,
7428
7779
  href: __props.emptyState.actionUrl,
7429
7780
  variant: "primary"
@@ -7555,38 +7906,38 @@ var ToastContainer_default = /* @__PURE__ */ defineComponent({
7555
7906
  //#endregion
7556
7907
  //#region src/exports.ts
7557
7908
  var exports_exports = /* @__PURE__ */ __exportAll({
7558
- ActionCard: () => _sfc_main$37,
7559
- ActionMessage: () => _sfc_main$36,
7560
- ActionSection: () => _sfc_main$34,
7561
- Badge: () => _sfc_main$33,
7562
- Button: () => _sfc_main$32,
7563
- Card: () => _sfc_main$39,
7564
- CardTabs: () => _sfc_main$40,
7565
- Checkbox: () => _sfc_main$31,
7566
- CheckboxInput: () => _sfc_main$30,
7567
- 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,
7568
7919
  ColorPicker: () => ColorPicker_default,
7569
- ConfirmationModal: () => _sfc_main$13,
7570
- CustomSelect: () => _sfc_main$27,
7920
+ ConfirmationModal: () => _sfc_main$14,
7921
+ CustomSelect: () => _sfc_main$28,
7571
7922
  DateInput: () => DateInput_default,
7572
7923
  DateRangeInput: () => DateRangeInput_default,
7573
- DialogModal: () => _sfc_main$12,
7574
- Divider: () => _sfc_main$38,
7575
- Dropdown: () => _sfc_main$11,
7576
- DropdownLink: () => _sfc_main$10,
7577
- FormSection: () => _sfc_main$9,
7578
- ImageInput: () => _sfc_main$23,
7579
- InputError: () => _sfc_main$8,
7580
- InputGroup: () => _sfc_main$16,
7581
- InputLabel: () => _sfc_main$7,
7582
- LinkButton: () => _sfc_main$6,
7583
- Modal: () => _sfc_main$14,
7584
- NotationInput: () => _sfc_main$22,
7585
- RadioInput: () => _sfc_main$21,
7586
- RadioMultipleInput: () => _sfc_main$19,
7587
- 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,
7588
7939
  SectionTitle: () => SectionTitle_default,
7589
- SelectInput: () => _sfc_main$26,
7940
+ SelectInput: () => _sfc_main$27,
7590
7941
  Sidebar: () => Sidebar_default,
7591
7942
  SidebarContent: () => SidebarContent_default,
7592
7943
  SidebarFooter: () => SidebarFooter_default,
@@ -7601,17 +7952,17 @@ var exports_exports = /* @__PURE__ */ __exportAll({
7601
7952
  SidebarProvider: () => SidebarProvider_default,
7602
7953
  SidebarTrigger: () => SidebarTrigger_default,
7603
7954
  SlidePanel: () => SlidePanel_default,
7604
- SortControls: () => _sfc_main$4,
7955
+ SortControls: () => _sfc_main$5,
7605
7956
  TableList: () => _sfc_main$1,
7606
7957
  TableListForm: () => _sfc_main,
7607
- TableSearch: () => _sfc_main$2,
7608
- TextArea: () => _sfc_main$28,
7609
- TextInput: () => _sfc_main$29,
7610
- ThSortable: () => _sfc_main$3,
7611
- 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,
7612
7963
  Toast: () => Toast_default,
7613
7964
  ToastContainer: () => ToastContainer_default,
7614
- ToggleInput: () => _sfc_main$20,
7965
+ ToggleInput: () => _sfc_main$21,
7615
7966
  useSidebar: () => useSidebar
7616
7967
  });
7617
7968
  //#endregion
@@ -7620,6 +7971,6 @@ var plugin_default = { install(app) {
7620
7971
  for (const [name, component] of Object.entries(exports_exports)) app.component(name, component);
7621
7972
  } };
7622
7973
  //#endregion
7623
- 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 };
7624
7975
 
7625
- //# sourceMappingURL=plugin-BXdUiTUI.js.map
7976
+ //# sourceMappingURL=plugin-TP7ra_6S.js.map