@enos5/enos-vue-default 1.9.4 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/{code-DKj3c0bI.js → code-BuhxLHnl.js} +2 -2
  2. package/dist/{code-DKj3c0bI.js.map → code-BuhxLHnl.js.map} +1 -1
  3. package/dist/components/TableList.vue.d.ts +45 -0
  4. package/dist/components/TableListForm.vue.d.ts +45 -0
  5. package/dist/components/ThSortable.vue.d.ts +27 -0
  6. package/dist/{default-Chv_x2WO.js → default-PXDM2_Bk.js} +2 -2
  7. package/dist/{default-Chv_x2WO.js.map → default-PXDM2_Bk.js.map} +1 -1
  8. package/dist/{dom-ChCfWSVw.js → dom-D6vkFL4c.js} +2 -2
  9. package/dist/{dom-ChCfWSVw.js.map → dom-D6vkFL4c.js.map} +1 -1
  10. package/dist/{image-Bsw8f0j6.js → image-gom7vN5I.js} +2 -2
  11. package/dist/{image-Bsw8f0j6.js.map → image-gom7vN5I.js.map} +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.node.js +1 -1
  14. package/dist/{link-BsGyLwJR.js → link-COfwcN4G.js} +2 -2
  15. package/dist/{link-BsGyLwJR.js.map → link-COfwcN4G.js.map} +1 -1
  16. package/dist/{lists-Die-Wnes.js → lists-L7WlvEhf.js} +2 -2
  17. package/dist/{lists-Die-Wnes.js.map → lists-L7WlvEhf.js.map} +1 -1
  18. package/dist/{plugin-CVOKwfxF.js → plugin-BN0tob6x.js} +259 -165
  19. package/dist/plugin-BN0tob6x.js.map +1 -0
  20. package/dist/{silver-kurpNU9Q.js → silver-mAowUWHi.js} +2 -2
  21. package/dist/{silver-kurpNU9Q.js.map → silver-mAowUWHi.js.map} +1 -1
  22. package/dist/styles.css +48 -15
  23. package/dist/{table-D8XR3SKE.js → table-CPJ7XNoR.js} +2 -2
  24. package/dist/{table-D8XR3SKE.js.map → table-CPJ7XNoR.js.map} +1 -1
  25. package/dist/{tinymce-Dfqt7Khg.js → tinymce-B826jf9A.js} +2 -2
  26. package/dist/{tinymce-Dfqt7Khg.js.map → tinymce-B826jf9A.js.map} +1 -1
  27. package/package.json +1 -1
  28. package/dist/plugin-CVOKwfxF.js.map +0 -1
@@ -37,7 +37,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
37
37
  //#endregion
38
38
  //#region src/components/CardTabs.vue
39
39
  var _hoisted_1$37 = { 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 = {
40
+ var _hoisted_2$21 = {
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
  };
@@ -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$37, [createElementVNode("div", _hoisted_2$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
109
+ return openBlock(), createElementBlock("div", _hoisted_1$37, [createElementVNode("div", _hoisted_2$21, [(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,
@@ -134,7 +134,7 @@ var _hoisted_1$36 = {
134
134
  key: 0,
135
135
  class: "mb-4"
136
136
  };
137
- var _hoisted_2$21 = {
137
+ var _hoisted_2$20 = {
138
138
  key: 1,
139
139
  class: "mb-4 text-xl font-semibold tracking-tight text-neutral-950 dark:text-neutral-50"
140
140
  };
@@ -204,7 +204,7 @@ var _sfc_main$39 = {
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$36, [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, {
207
+ }, null, 8, ["tabs", "active-tab"])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(__props.paddingClass) }, [_ctx.$slots.customTitle ? (openBlock(), createElementBlock("div", _hoisted_1$36, [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, {
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",
@@ -299,18 +299,18 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
299
299
  //#region src/components/SectionTitle.vue
300
300
  var _sfc_main$35 = {};
301
301
  var _hoisted_1$34 = { class: "md:col-span-1 flex justify-between" };
302
- var _hoisted_2$20 = { class: "px-4 sm:px-0" };
302
+ var _hoisted_2$19 = { class: "px-4 sm:px-0" };
303
303
  var _hoisted_3$15 = { class: "text-xl font-semibold tracking-tight text-neutral-950 dark:text-neutral-50" };
304
304
  var _hoisted_4$11 = { class: "mt-1 max-w-2xl text-sm text-neutral-600 dark:text-neutral-200" };
305
305
  var _hoisted_5$8 = { class: "px-4 sm:px-0" };
306
306
  function _sfc_render(_ctx, _cache) {
307
- return openBlock(), createElementBlock("div", _hoisted_1$34, [createElementVNode("div", _hoisted_2$20, [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$34, [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")])]);
308
308
  }
309
309
  var SectionTitle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main$35, [["render", _sfc_render]]);
310
310
  //#endregion
311
311
  //#region src/components/ActionSection.vue
312
312
  var _hoisted_1$33 = { 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" };
313
+ var _hoisted_2$18 = { class: "mt-5 md:mt-0 md:col-span-2" };
314
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
315
  var _sfc_main$34 = {
316
316
  __name: "ActionSection",
@@ -320,7 +320,7 @@ var _sfc_main$34 = {
320
320
  title: withCtx(() => [renderSlot(_ctx.$slots, "title")]),
321
321
  description: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
322
322
  _: 3
323
- }), createElementVNode("div", _hoisted_2$19, [createElementVNode("div", _hoisted_3$14, [renderSlot(_ctx.$slots, "content")])])]);
323
+ }), createElementVNode("div", _hoisted_2$18, [createElementVNode("div", _hoisted_3$14, [renderSlot(_ctx.$slots, "content")])])]);
324
324
  };
325
325
  }
326
326
  };
@@ -473,12 +473,12 @@ var _sfc_main$32 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
473
473
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
474
474
  destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
475
475
  outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
476
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
476
+ secondary: "bg-neutral-300 text-neutral-900 hover:bg-neutral-300/80 dark:bg-secondary dark:text-secondary-foreground dark:hover:bg-secondary/80",
477
477
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
478
478
  link: "text-primary underline-offset-4 hover:underline",
479
479
  primary: "bg-primary text-primary-foreground hover:bg-primary/90",
480
480
  success: "bg-emerald-600 text-white hover:bg-emerald-600/90 dark:bg-emerald-600 dark:text-white dark:hover:bg-emerald-600/90",
481
- tertiary: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
481
+ tertiary: "border border-neutral-200 bg-white text-neutral-900 shadow-xs hover:bg-neutral-50 dark:border-neutral-200 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-100",
482
482
  warning: "bg-amber-100 text-amber-700 hover:bg-amber-100/90 focus-visible:ring-amber-500/20 dark:bg-amber-600/20 dark:text-neutral-50 dark:hover:bg-amber-600/30 dark:focus-visible:ring-amber-500/40",
483
483
  danger: "bg-destructive/10 text-destructive hover:bg-destructive/15 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:text-destructive-foreground dark:hover:bg-destructive/25",
484
484
  "warning-solid": "bg-amber-500 text-white hover:bg-amber-500/90 dark:bg-amber-500 dark:text-white dark:hover:bg-amber-500/90",
@@ -656,7 +656,7 @@ var _hoisted_1$28 = [
656
656
  "value",
657
657
  "disabled"
658
658
  ];
659
- var _hoisted_2$18 = ["aria-label"];
659
+ var _hoisted_2$17 = ["aria-label"];
660
660
  var _hoisted_3$13 = {
661
661
  key: 0,
662
662
  class: "h-5 w-5",
@@ -770,7 +770,7 @@ 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$18)) : createCommentVNode("", true)
773
+ }, null, -1)])]))], 10, _hoisted_2$17)) : createCommentVNode("", true)
774
774
  ], 2);
775
775
  };
776
776
  }
@@ -854,7 +854,7 @@ var _sfc_main$28 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
854
854
  //#endregion
855
855
  //#region src/components/CustomSelect.vue
856
856
  var _hoisted_1$26 = { class: "flex h-5 items-center gap-1" };
857
- var _hoisted_2$17 = ["placeholder"];
857
+ var _hoisted_2$16 = ["placeholder"];
858
858
  var _hoisted_3$12 = [
859
859
  "data-option-value",
860
860
  "onClick",
@@ -1461,7 +1461,7 @@ var _sfc_main$27 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
1461
1461
  class: normalizeClass(searchInputClasses.value),
1462
1462
  onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
1463
1463
  onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
1464
- }, null, 42, _hoisted_2$17)), [[vModelText, searchQuery.value]]) : createCommentVNode("", true),
1464
+ }, null, 42, _hoisted_2$16)), [[vModelText, searchQuery.value]]) : createCommentVNode("", true),
1465
1465
  selectedDeletedOption.value ? (openBlock(), createElementBlock("div", {
1466
1466
  key: 1,
1467
1467
  class: normalizeClass([
@@ -1837,7 +1837,7 @@ var DateInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1837
1837
  //#endregion
1838
1838
  //#region src/components/DateRangeInput.vue
1839
1839
  var _hoisted_1$24 = ["value", "disabled"];
1840
- var _hoisted_2$16 = { class: "grid grid-cols-7 gap-1" };
1840
+ var _hoisted_2$15 = { class: "grid grid-cols-7 gap-1" };
1841
1841
  var _hoisted_3$11 = [
1842
1842
  "disabled",
1843
1843
  "onClick",
@@ -2167,7 +2167,7 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2167
2167
  class: normalizeClass(["text-xs font-medium text-neutral-500 dark:text-neutral-400 text-center py-1", props.ui.weekday])
2168
2168
  }, toDisplayString(day), 3);
2169
2169
  }), 128))], 2),
2170
- createElementVNode("div", _hoisted_2$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day) => {
2170
+ createElementVNode("div", _hoisted_2$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day) => {
2171
2171
  return openBlock(), createElementBlock("div", {
2172
2172
  key: day.date.toISOString(),
2173
2173
  class: "relative"
@@ -2215,7 +2215,7 @@ var DateRangeInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2215
2215
  //#endregion
2216
2216
  //#region src/components/ImageInput.vue
2217
2217
  var _hoisted_1$23 = ["accept"];
2218
- var _hoisted_2$15 = { class: "flex items-center space-x-4" };
2218
+ var _hoisted_2$14 = { class: "flex items-center space-x-4" };
2219
2219
  var _hoisted_3$10 = ["src"];
2220
2220
  var _sfc_main$23 = {
2221
2221
  __name: "ImageInput",
@@ -2261,7 +2261,7 @@ var _sfc_main$23 = {
2261
2261
  }), null, 16, _hoisted_1$23)], 2), props.currentImageUrl ? (openBlock(), createElementBlock("div", {
2262
2262
  key: 0,
2263
2263
  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])
2264
- }, [createElementVNode("div", _hoisted_2$15, [createElementVNode("img", {
2264
+ }, [createElementVNode("div", _hoisted_2$14, [createElementVNode("img", {
2265
2265
  src: props.currentImageUrl,
2266
2266
  alt: "Current logo",
2267
2267
  class: normalizeClass(["h-16 w-auto max-w-24 object-contain rounded-lg shadow-sm", props.ui.previewImage])
@@ -2656,18 +2656,18 @@ var _sfc_main$18 = {
2656
2656
  });
2657
2657
  };
2658
2658
  const loadTinyMce = async () => {
2659
- const tinymceModule = await import("./tinymce-Dfqt7Khg.js").then((m) => /* @__PURE__ */ __toESM(m.default));
2659
+ const tinymceModule = await import("./tinymce-B826jf9A.js").then((m) => /* @__PURE__ */ __toESM(m.default));
2660
2660
  const tinymce = tinymceModule.default ?? tinymceModule;
2661
2661
  if (typeof globalThis !== "undefined" && !globalThis.tinymce) globalThis.tinymce = tinymce;
2662
2662
  await Promise.all([
2663
- import("./dom-ChCfWSVw.js"),
2664
- import("./default-Chv_x2WO.js"),
2665
- import("./silver-kurpNU9Q.js"),
2666
- import("./code-DKj3c0bI.js"),
2667
- import("./image-Bsw8f0j6.js"),
2668
- import("./link-BsGyLwJR.js"),
2669
- import("./lists-Die-Wnes.js"),
2670
- import("./table-D8XR3SKE.js")
2663
+ import("./dom-D6vkFL4c.js"),
2664
+ import("./default-PXDM2_Bk.js"),
2665
+ import("./silver-mAowUWHi.js"),
2666
+ import("./code-BuhxLHnl.js"),
2667
+ import("./image-gom7vN5I.js"),
2668
+ import("./link-COfwcN4G.js"),
2669
+ import("./lists-L7WlvEhf.js"),
2670
+ import("./table-CPJ7XNoR.js")
2671
2671
  ]);
2672
2672
  isEditorReady.value = true;
2673
2673
  };
@@ -2784,43 +2784,43 @@ var _hoisted_1$19 = [
2784
2784
  "disabled",
2785
2785
  "required"
2786
2786
  ];
2787
- var _hoisted_2$14 = ["disabled", "aria-expanded"];
2787
+ var _hoisted_2$13 = ["disabled", "aria-expanded"];
2788
2788
  var _hoisted_3$9 = { class: "min-w-0 flex-1" };
2789
2789
  var _hoisted_4$7 = { class: "flex items-start gap-3" };
2790
2790
  var _hoisted_5$5 = { class: "min-w-0 flex-1" };
2791
2791
  var _hoisted_6$5 = ["disabled", "aria-label"];
2792
2792
  var _hoisted_7$5 = { class: "mt-4 space-y-4" };
2793
2793
  var _hoisted_8$3 = ["aria-label", "aria-valuenow"];
2794
- var _hoisted_9$3 = {
2794
+ var _hoisted_9$2 = {
2795
2795
  key: 0,
2796
2796
  class: "absolute inset-0 bg-[linear-gradient(to_right,#fff,transparent)]"
2797
2797
  };
2798
- var _hoisted_10$3 = {
2798
+ var _hoisted_10$2 = {
2799
2799
  key: 2,
2800
2800
  class: "absolute inset-0 bg-[linear-gradient(to_top,#000,transparent)]"
2801
2801
  };
2802
- var _hoisted_11$3 = { class: "space-y-3" };
2803
- var _hoisted_12$2 = {
2802
+ var _hoisted_11$2 = { class: "space-y-3" };
2803
+ var _hoisted_12$1 = {
2804
2804
  key: 0,
2805
2805
  class: "space-y-2"
2806
2806
  };
2807
- var _hoisted_13$2 = ["for"];
2808
- var _hoisted_14$2 = [
2807
+ var _hoisted_13$1 = ["for"];
2808
+ var _hoisted_14 = [
2809
2809
  "id",
2810
2810
  "disabled",
2811
2811
  "value"
2812
2812
  ];
2813
- var _hoisted_15$2 = {
2813
+ var _hoisted_15 = {
2814
2814
  key: 1,
2815
2815
  class: "space-y-2"
2816
2816
  };
2817
- var _hoisted_16$1 = ["for"];
2818
- var _hoisted_17$1 = [
2817
+ var _hoisted_16 = ["for"];
2818
+ var _hoisted_17 = [
2819
2819
  "id",
2820
2820
  "disabled",
2821
2821
  "value"
2822
2822
  ];
2823
- var _hoisted_18$1 = { class: "space-y-2" };
2823
+ var _hoisted_18 = { class: "space-y-2" };
2824
2824
  var _hoisted_19 = ["for"];
2825
2825
  var _hoisted_20 = [
2826
2826
  "id",
@@ -3310,7 +3310,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3310
3310
  isOpen.value ? "rotate-180" : "",
3311
3311
  props.ui.chevron
3312
3312
  ]) }, null, 8, ["class"])
3313
- ], 16, _hoisted_2$14),
3313
+ ], 16, _hoisted_2$13),
3314
3314
  (openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, {
3315
3315
  "enter-active-class": "transition duration-150 ease-out",
3316
3316
  "enter-from-class": "opacity-0 translate-y-1",
@@ -3358,14 +3358,14 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3358
3358
  onPointerdown: _cache[0] || (_cache[0] = ($event) => beginDrag($event, updateFromSaturationPointer)),
3359
3359
  onKeydown: updateFromSaturationKey
3360
3360
  }, [
3361
- !isRainbowVariant.value ? (openBlock(), createElementBlock("div", _hoisted_9$3)) : createCommentVNode("", true),
3362
- isRainbowVariant.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "absolute inset-x-0 top-0 h-1/2 bg-[linear-gradient(to_bottom,#fff,transparent)]" }, null, -1)), _cache[2] || (_cache[2] = createElementVNode("div", { class: "absolute inset-x-0 bottom-0 h-1/2 bg-[linear-gradient(to_bottom,transparent,#000)]" }, null, -1))], 64)) : (openBlock(), createElementBlock("div", _hoisted_10$3)),
3361
+ !isRainbowVariant.value ? (openBlock(), createElementBlock("div", _hoisted_9$2)) : createCommentVNode("", true),
3362
+ isRainbowVariant.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "absolute inset-x-0 top-0 h-1/2 bg-[linear-gradient(to_bottom,#fff,transparent)]" }, null, -1)), _cache[2] || (_cache[2] = createElementVNode("div", { class: "absolute inset-x-0 bottom-0 h-1/2 bg-[linear-gradient(to_bottom,transparent,#000)]" }, null, -1))], 64)) : (openBlock(), createElementBlock("div", _hoisted_10$2)),
3363
3363
  createElementVNode("span", {
3364
3364
  class: normalizeClass(["pointer-events-none absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.3)]", props.ui.saturationHandle]),
3365
3365
  style: normalizeStyle(saturationHandleStyle.value)
3366
3366
  }, null, 6)
3367
3367
  ], 46, _hoisted_8$3),
3368
- createElementVNode("div", _hoisted_11$3, [!isRainbowVariant.value ? (openBlock(), createElementBlock("div", _hoisted_12$2, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-hue` : void 0 }, toDisplayString(unref(t)("Hue")), 9, _hoisted_13$2), createElementVNode("span", null, toDisplayString(Math.round(hue.value)) + "°", 1)], 2), createElementVNode("input", {
3368
+ createElementVNode("div", _hoisted_11$2, [!isRainbowVariant.value ? (openBlock(), createElementBlock("div", _hoisted_12$1, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-hue` : void 0 }, toDisplayString(unref(t)("Hue")), 9, _hoisted_13$1), createElementVNode("span", null, toDisplayString(Math.round(hue.value)) + "°", 1)], 2), createElementVNode("input", {
3369
3369
  id: fieldId.value ? `${fieldId.value}-hue` : void 0,
3370
3370
  type: "range",
3371
3371
  min: "0",
@@ -3376,7 +3376,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3376
3376
  value: hue.value,
3377
3377
  style: { "background": "linear-gradient(90deg, #FF0000 0%, #FFFF00 17%, #00FF00 33%, #00FFFF 50%, #0000FF 67%, #FF00FF 83%, #FF0000 100%)" },
3378
3378
  onInput: handleHueInput
3379
- }, null, 42, _hoisted_14$2)])) : createCommentVNode("", true), props.allowAlpha ? (openBlock(), createElementBlock("div", _hoisted_15$2, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-alpha` : void 0 }, toDisplayString(unref(t)("Opacity")), 9, _hoisted_16$1), createElementVNode("span", null, toDisplayString(opacityPercent.value) + "%", 1)], 2), createElementVNode("input", {
3379
+ }, null, 42, _hoisted_14)])) : createCommentVNode("", true), props.allowAlpha ? (openBlock(), createElementBlock("div", _hoisted_15, [createElementVNode("div", { class: normalizeClass(["flex items-center justify-between text-xs font-medium text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel]) }, [createElementVNode("label", { for: fieldId.value ? `${fieldId.value}-alpha` : void 0 }, toDisplayString(unref(t)("Opacity")), 9, _hoisted_16), createElementVNode("span", null, toDisplayString(opacityPercent.value) + "%", 1)], 2), createElementVNode("input", {
3380
3380
  id: fieldId.value ? `${fieldId.value}-alpha` : void 0,
3381
3381
  type: "range",
3382
3382
  min: "0",
@@ -3387,8 +3387,8 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3387
3387
  value: opacityPercent.value,
3388
3388
  style: normalizeStyle({ background: alphaGradient.value }),
3389
3389
  onInput: handleAlphaInput
3390
- }, null, 46, _hoisted_17$1)])) : createCommentVNode("", true)]),
3391
- createElementVNode("div", _hoisted_18$1, [createElementVNode("label", {
3390
+ }, null, 46, _hoisted_17)])) : createCommentVNode("", true)]),
3391
+ createElementVNode("div", _hoisted_18, [createElementVNode("label", {
3392
3392
  for: fieldId.value ? `${fieldId.value}-hex` : void 0,
3393
3393
  class: normalizeClass(["text-xs font-medium uppercase tracking-[0.16em] text-neutral-500 dark:text-neutral-400", props.ui.sectionLabel])
3394
3394
  }, toDisplayString(unref(t)("Hex value")), 11, _hoisted_19), createElementVNode("input", {
@@ -3417,7 +3417,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3417
3417
  //#endregion
3418
3418
  //#region src/components/InputGroup.vue
3419
3419
  var _hoisted_1$18 = ["for"];
3420
- var _hoisted_2$13 = {
3420
+ var _hoisted_2$12 = {
3421
3421
  key: 3,
3422
3422
  class: "relative"
3423
3423
  };
@@ -4033,7 +4033,7 @@ var _sfc_main$16 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4033
4033
  helperText: __props.helperText,
4034
4034
  helperTextClass: props.helperTextClass ?? defaultHelperTextClass
4035
4035
  }, () => [createElementVNode("span", { class: normalizeClass(props.helperTextClass ?? defaultHelperTextClass) }, toDisplayString(__props.helperText), 3)]) : createCommentVNode("", true),
4036
- 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, [
4036
+ 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, [
4037
4037
  showsLeadingIcon.value ? (openBlock(), createElementBlock("div", {
4038
4038
  key: 0,
4039
4039
  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])
@@ -4272,7 +4272,7 @@ var _sfc_main$14 = {
4272
4272
  //#endregion
4273
4273
  //#region src/components/ConfirmationModal.vue
4274
4274
  var _hoisted_1$17 = { class: "bg-white px-4 pb-4 pt-5 dark:bg-neutral-950 sm:p-6 sm:pb-4" };
4275
- var _hoisted_2$12 = { class: "sm:flex sm:items-start" };
4275
+ var _hoisted_2$11 = { class: "sm:flex sm:items-start" };
4276
4276
  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" };
4277
4277
  var _hoisted_4$6 = { class: "mt-3 text-center sm:mt-0 sm:ms-4 sm:text-start" };
4278
4278
  var _hoisted_5$4 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
@@ -4317,7 +4317,7 @@ var _sfc_main$13 = {
4317
4317
  position: __props.position,
4318
4318
  onClose: close
4319
4319
  }, {
4320
- default: withCtx(() => [createElementVNode("div", _hoisted_1$17, [createElementVNode("div", _hoisted_2$12, [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$4, [renderSlot(_ctx.$slots, "footer")])]),
4320
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$17, [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$4, [renderSlot(_ctx.$slots, "footer")])]),
4321
4321
  _: 3
4322
4322
  }, 8, [
4323
4323
  "show",
@@ -4331,7 +4331,7 @@ var _sfc_main$13 = {
4331
4331
  //#endregion
4332
4332
  //#region src/components/DialogModal.vue
4333
4333
  var _hoisted_1$16 = { class: "px-6 py-4" };
4334
- var _hoisted_2$11 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4334
+ var _hoisted_2$10 = { class: "text-lg font-medium text-neutral-950 dark:text-neutral-50" };
4335
4335
  var _hoisted_3$7 = { class: "mt-4 text-sm text-neutral-600 dark:text-neutral-200" };
4336
4336
  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" };
4337
4337
  var _sfc_main$12 = {
@@ -4363,7 +4363,7 @@ var _sfc_main$12 = {
4363
4363
  closeable: __props.closeable,
4364
4364
  onClose: close
4365
4365
  }, {
4366
- default: withCtx(() => [createElementVNode("div", _hoisted_1$16, [createElementVNode("div", _hoisted_2$11, [renderSlot(_ctx.$slots, "title")]), createElementVNode("div", _hoisted_3$7, [renderSlot(_ctx.$slots, "content")])]), createElementVNode("div", _hoisted_4$5, [renderSlot(_ctx.$slots, "footer")])]),
4366
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$16, [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")])]),
4367
4367
  _: 3
4368
4368
  }, 8, [
4369
4369
  "show",
@@ -4527,7 +4527,7 @@ var _hoisted_1$14 = {
4527
4527
  type: "submit",
4528
4528
  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"
4529
4529
  };
4530
- var _hoisted_2$10 = ["href"];
4530
+ var _hoisted_2$9 = ["href"];
4531
4531
  var _sfc_main$10 = {
4532
4532
  __name: "DropdownLink",
4533
4533
  props: {
@@ -4540,7 +4540,7 @@ var _sfc_main$10 = {
4540
4540
  key: 1,
4541
4541
  href: __props.href,
4542
4542
  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"
4543
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$10)) : (openBlock(), createBlock(unref(Link), {
4543
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$9)) : (openBlock(), createBlock(unref(Link), {
4544
4544
  key: 2,
4545
4545
  href: __props.href,
4546
4546
  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"
@@ -4554,7 +4554,7 @@ var _sfc_main$10 = {
4554
4554
  //#endregion
4555
4555
  //#region src/components/FormSection.vue
4556
4556
  var _hoisted_1$13 = { class: "md:grid md:grid-cols-3 md:gap-6" };
4557
- var _hoisted_2$9 = { class: "mt-5 md:col-span-2 md:mt-0" };
4557
+ var _hoisted_2$8 = { class: "mt-5 md:col-span-2 md:mt-0" };
4558
4558
  var _hoisted_3$6 = { class: "grid grid-cols-6 gap-6" };
4559
4559
  var _hoisted_4$4 = {
4560
4560
  key: 0,
@@ -4570,7 +4570,7 @@ var _sfc_main$9 = {
4570
4570
  title: withCtx(() => [renderSlot(_ctx.$slots, "title")]),
4571
4571
  description: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
4572
4572
  _: 3
4573
- }), 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$6, [renderSlot(_ctx.$slots, "form")])], 2), hasActions.value ? (openBlock(), createElementBlock("div", _hoisted_4$4, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)], 32)])]);
4573
+ }), 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)])]);
4574
4574
  };
4575
4575
  }
4576
4576
  };
@@ -4589,14 +4589,14 @@ var _sfc_main$8 = {
4589
4589
  //#endregion
4590
4590
  //#region src/components/InputLabel.vue
4591
4591
  var _hoisted_1$11 = { class: "block text-sm font-medium text-neutral-700 dark:text-neutral-100" };
4592
- var _hoisted_2$8 = { key: 0 };
4592
+ var _hoisted_2$7 = { key: 0 };
4593
4593
  var _hoisted_3$5 = { key: 1 };
4594
4594
  var _sfc_main$7 = {
4595
4595
  __name: "InputLabel",
4596
4596
  props: { value: String },
4597
4597
  setup(__props) {
4598
4598
  return (_ctx, _cache) => {
4599
- return openBlock(), createElementBlock("label", _hoisted_1$11, [__props.value ? (openBlock(), createElementBlock("span", _hoisted_2$8, toDisplayString(__props.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, [renderSlot(_ctx.$slots, "default")]))]);
4599
+ return openBlock(), createElementBlock("label", _hoisted_1$11, [__props.value ? (openBlock(), createElementBlock("span", _hoisted_2$7, toDisplayString(__props.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, [renderSlot(_ctx.$slots, "default")]))]);
4600
4600
  };
4601
4601
  }
4602
4602
  };
@@ -4642,8 +4642,8 @@ var _sfc_main$6 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4642
4642
  const variantClasses = {
4643
4643
  primary: "bg-primary text-primary-foreground hover:bg-primary/90",
4644
4644
  success: "bg-emerald-600 text-white hover:bg-emerald-600/90 dark:bg-emerald-600 dark:text-white dark:hover:bg-emerald-600/90",
4645
- secondary: "bg-gray-300 text-gray-900 hover:bg-gray-300/80 dark:bg-gray-500 dark:text-gray-50 dark:hover:bg-gray-500/80",
4646
- tertiary: "border border-neutral-200 bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
4645
+ secondary: "bg-neutral-300 text-neutral-900 hover:bg-neutral-300/80 dark:bg-gray-500 dark:text-gray-50 dark:hover:bg-gray-500/80",
4646
+ tertiary: "border border-neutral-200 bg-white text-neutral-900 shadow-xs hover:bg-neutral-50 dark:border-neutral-200 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-100",
4647
4647
  warning: "bg-amber-100 text-amber-700 hover:bg-amber-100/90 focus-visible:ring-amber-500/20 dark:bg-amber-600/20 dark:text-neutral-50 dark:hover:bg-amber-600/30 dark:focus-visible:ring-amber-500/40",
4648
4648
  danger: "bg-red-100 text-red-700 hover:bg-red-100/90 focus-visible:ring-red-500/20 dark:bg-red-600/20 dark:text-neutral-50 dark:hover:bg-red-600/30 dark:focus-visible:ring-red-500/40",
4649
4649
  "warning-solid": "bg-amber-500 text-white hover:bg-amber-500/90 dark:bg-amber-500 dark:text-white dark:hover:bg-amber-500/90",
@@ -4682,12 +4682,12 @@ var _sfc_main$6 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
4682
4682
  //#endregion
4683
4683
  //#region src/components/SectionBorder.vue
4684
4684
  var _hoisted_1$9 = { class: "hidden sm:block" };
4685
- var _hoisted_2$7 = { class: "py-8" };
4685
+ var _hoisted_2$6 = { class: "py-8" };
4686
4686
  var _sfc_main$5 = {
4687
4687
  __name: "SectionBorder",
4688
4688
  setup(__props) {
4689
4689
  return (_ctx, _cache) => {
4690
- return openBlock(), createElementBlock("div", _hoisted_1$9, [createElementVNode("div", _hoisted_2$7, [createVNode(_sfc_main$38)])]);
4690
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [createElementVNode("div", _hoisted_2$6, [createVNode(_sfc_main$38)])]);
4691
4691
  };
4692
4692
  }
4693
4693
  };
@@ -4743,7 +4743,7 @@ var _hoisted_1$8 = [
4743
4743
  "data-variant",
4744
4744
  "data-side"
4745
4745
  ];
4746
- var _hoisted_2$6 = {
4746
+ var _hoisted_2$5 = {
4747
4747
  "data-sidebar": "sidebar",
4748
4748
  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"
4749
4749
  };
@@ -4794,7 +4794,7 @@ var Sidebar_default = /* @__PURE__ */ defineComponent({
4794
4794
  __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)]",
4795
4795
  __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",
4796
4796
  props.class
4797
- ] }, _ctx.$attrs), [createElementVNode("div", _hoisted_2$6, [renderSlot(_ctx.$slots, "default")])], 16)], 8, _hoisted_1$8));
4797
+ ] }, _ctx.$attrs), [createElementVNode("div", _hoisted_2$5, [renderSlot(_ctx.$slots, "default")])], 16)], 8, _hoisted_1$8));
4798
4798
  };
4799
4799
  }
4800
4800
  });
@@ -5379,7 +5379,7 @@ var SidebarTrigger_default = /* @__PURE__ */ defineComponent({
5379
5379
  //#endregion
5380
5380
  //#region src/components/SortControls.vue
5381
5381
  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" };
5382
- var _hoisted_2$5 = { class: "flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center" };
5382
+ var _hoisted_2$4 = { class: "flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center" };
5383
5383
  var _hoisted_3$4 = { class: "flex items-center gap-3" };
5384
5384
  var _hoisted_4$3 = { class: "text-sm font-medium text-neutral-700 dark:text-neutral-100" };
5385
5385
  var _hoisted_5$3 = { class: "flex flex-wrap items-center gap-2" };
@@ -5424,7 +5424,7 @@ var _sfc_main$4 = {
5424
5424
  emit("sort", fieldKey);
5425
5425
  };
5426
5426
  return (_ctx, _cache) => {
5427
- return openBlock(), createElementBlock("div", _hoisted_1$6, [createElementVNode("div", _hoisted_2$5, [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) => {
5427
+ 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) => {
5428
5428
  return openBlock(), createElementBlock("button", {
5429
5429
  key: field.key,
5430
5430
  onClick: ($event) => handleSort(field.key),
@@ -5446,8 +5446,7 @@ var _sfc_main$4 = {
5446
5446
  };
5447
5447
  //#endregion
5448
5448
  //#region src/components/ThSortable.vue
5449
- var _hoisted_1$5 = { class: "flex items-center space-x-1" };
5450
- var _hoisted_2$4 = { class: "flex flex-col" };
5449
+ var _hoisted_1$5 = { class: "flex flex-col" };
5451
5450
  var _sfc_main$3 = {
5452
5451
  __name: "ThSortable",
5453
5452
  props: {
@@ -5462,6 +5461,22 @@ var _sfc_main$3 = {
5462
5461
  currentDirection: {
5463
5462
  type: String,
5464
5463
  default: "asc"
5464
+ },
5465
+ headerClass: {
5466
+ type: [
5467
+ String,
5468
+ Array,
5469
+ Object
5470
+ ],
5471
+ default: ""
5472
+ },
5473
+ headerStyle: {
5474
+ type: Object,
5475
+ default: () => ({})
5476
+ },
5477
+ contentClass: {
5478
+ type: String,
5479
+ default: ""
5465
5480
  }
5466
5481
  },
5467
5482
  setup(__props) {
@@ -5475,15 +5490,16 @@ var _sfc_main$3 = {
5475
5490
  });
5476
5491
  return (_ctx, _cache) => {
5477
5492
  return openBlock(), createElementBlock("th", {
5478
- class: "cursor-pointer px-6 py-3 text-left text-xs font-medium uppercase tracking-wider text-neutral-500 transition-colors duration-150 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-900",
5493
+ class: normalizeClass(__props.headerClass),
5494
+ style: normalizeStyle(__props.headerStyle),
5479
5495
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("sort", __props.field))
5480
- }, [createElementVNode("div", _hoisted_1$5, [createElementVNode("span", null, [renderSlot(_ctx.$slots, "default")]), createElementVNode("div", _hoisted_2$4, [isCurrentSort.value && __props.currentDirection === "asc" ? (openBlock(), createBlock(unref(ChevronUpIcon), {
5496
+ }, [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), {
5481
5497
  key: 0,
5482
5498
  class: normalizeClass([sortIconClass.value, "w-3 h-3"])
5483
5499
  }, null, 8, ["class"])) : createCommentVNode("", true), isCurrentSort.value && __props.currentDirection === "desc" ? (openBlock(), createBlock(unref(ChevronDownIcon), {
5484
5500
  key: 1,
5485
5501
  class: normalizeClass([sortIconClass.value, "w-3 h-3"])
5486
- }, null, 8, ["class"])) : createCommentVNode("", true)])])]);
5502
+ }, null, 8, ["class"])) : createCommentVNode("", true)])], 2)], 6);
5487
5503
  };
5488
5504
  }
5489
5505
  };
@@ -5506,15 +5522,15 @@ var _hoisted_8$2 = {
5506
5522
  key: 0,
5507
5523
  class: "flex items-center"
5508
5524
  };
5509
- var _hoisted_9$2 = {
5525
+ var _hoisted_9$1 = {
5510
5526
  key: 1,
5511
5527
  class: "flex items-center text-xs text-neutral-500 dark:text-neutral-400 sm:w-auto sm:text-sm lg:w-auto"
5512
5528
  };
5513
- var _hoisted_10$2 = {
5529
+ var _hoisted_10$1 = {
5514
5530
  key: 0,
5515
5531
  class: "ml-2"
5516
5532
  };
5517
- var _hoisted_11$2 = { class: "font-medium text-neutral-700 dark:text-neutral-200" };
5533
+ var _hoisted_11$1 = { class: "font-medium text-neutral-700 dark:text-neutral-200" };
5518
5534
  var _sfc_main$2 = {
5519
5535
  __name: "TableSearch",
5520
5536
  props: {
@@ -5589,7 +5605,7 @@ var _sfc_main$2 = {
5589
5605
  label: __props.showDeletedLabel
5590
5606
  }, null, 8, ["modelValue", "label"])])) : createCommentVNode("", true),
5591
5607
  renderSlot(_ctx.$slots, "controls"),
5592
- __props.count !== null ? (openBlock(), createElementBlock("div", _hoisted_9$2, [createElementVNode("span", null, toDisplayString(__props.count) + " " + toDisplayString(__props.countLabel), 1), model.value ? (openBlock(), createElementBlock("span", _hoisted_10$2, [createTextVNode(toDisplayString(__props.queryLabel) + " ", 1), createElementVNode("span", _hoisted_11$2, " \"" + toDisplayString(model.value) + "\" ", 1)])) : createCommentVNode("", true)])) : createCommentVNode("", true)
5608
+ __props.count !== null ? (openBlock(), createElementBlock("div", _hoisted_9$1, [createElementVNode("span", null, toDisplayString(__props.count) + " " + toDisplayString(__props.countLabel), 1), model.value ? (openBlock(), createElementBlock("span", _hoisted_10$1, [createTextVNode(toDisplayString(__props.queryLabel) + " ", 1), createElementVNode("span", _hoisted_11$1, " \"" + toDisplayString(model.value) + "\" ", 1)])) : createCommentVNode("", true)])) : createCommentVNode("", true)
5593
5609
  ])) : createCommentVNode("", true)])], 2);
5594
5610
  };
5595
5611
  }
@@ -5597,35 +5613,19 @@ var _sfc_main$2 = {
5597
5613
  //#endregion
5598
5614
  //#region src/components/TableList.vue
5599
5615
  var _hoisted_1$3 = { class: "space-y-6" };
5600
- var _hoisted_2$2 = { class: "min-w-full divide-y divide-neutral-200 dark:divide-neutral-800" };
5601
- var _hoisted_3$2 = { class: "bg-neutral-50/80 dark:bg-neutral-900/80" };
5602
- var _hoisted_4$1 = {
5603
- key: 0,
5604
- class: "px-6 py-3 text-right text-[11px] font-semibold tracking-[0.12em] text-neutral-600 uppercase dark:text-neutral-200"
5605
- };
5606
- var _hoisted_5$1 = { class: "divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950" };
5607
- var _hoisted_6$1 = {
5608
- key: 0,
5609
- class: "flex items-center"
5610
- };
5611
- var _hoisted_7$1 = ["title"];
5612
- var _hoisted_8$1 = {
5616
+ var _hoisted_2$2 = ["title"];
5617
+ var _hoisted_3$2 = {
5613
5618
  key: 0,
5614
5619
  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"
5615
5620
  };
5616
- var _hoisted_9$1 = ["innerHTML"];
5617
- var _hoisted_10$1 = { key: 3 };
5618
- var _hoisted_11$1 = {
5619
- key: 0,
5620
- class: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium"
5621
- };
5622
- var _hoisted_12$1 = {
5621
+ var _hoisted_4$1 = ["innerHTML"];
5622
+ var _hoisted_5$1 = {
5623
5623
  key: 0,
5624
5624
  class: "py-12 text-center"
5625
5625
  };
5626
- var _hoisted_13$1 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
5627
- var _hoisted_14$1 = { class: "mb-2 text-lg font-semibold text-neutral-950 dark:text-neutral-50" };
5628
- var _hoisted_15$1 = { class: "mb-4 text-neutral-600 dark:text-neutral-200" };
5626
+ var _hoisted_6$1 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
5627
+ var _hoisted_7$1 = { class: "mb-2 text-lg font-semibold text-neutral-950 dark:text-neutral-50" };
5628
+ var _hoisted_8$1 = { class: "mb-4 text-neutral-600 dark:text-neutral-200" };
5629
5629
  var _sfc_main$1 = {
5630
5630
  __name: "TableList",
5631
5631
  props: {
@@ -5667,6 +5667,26 @@ var _sfc_main$1 = {
5667
5667
  type: Boolean,
5668
5668
  default: true
5669
5669
  },
5670
+ tableClass: {
5671
+ type: String,
5672
+ default: ""
5673
+ },
5674
+ theadClass: {
5675
+ type: String,
5676
+ default: ""
5677
+ },
5678
+ tbodyClass: {
5679
+ type: String,
5680
+ default: ""
5681
+ },
5682
+ headerRowClass: {
5683
+ type: String,
5684
+ default: ""
5685
+ },
5686
+ dense: {
5687
+ type: Boolean,
5688
+ default: false
5689
+ },
5670
5690
  actionsLabel: {
5671
5691
  type: String,
5672
5692
  default: "Actions"
@@ -5754,6 +5774,13 @@ var _sfc_main$1 = {
5754
5774
  const sortBy = (field) => {
5755
5775
  emit("sort", field);
5756
5776
  };
5777
+ const joinClasses = (...classes) => {
5778
+ return classes.flatMap((value) => {
5779
+ if (Array.isArray(value)) return value;
5780
+ if (typeof value === "string") return value;
5781
+ return [];
5782
+ }).filter(Boolean).join(" ");
5783
+ };
5757
5784
  const updateSearchShowDeleted = (value) => {
5758
5785
  emit("update:searchShowDeleted", value);
5759
5786
  };
@@ -5774,16 +5801,23 @@ var _sfc_main$1 = {
5774
5801
  return item.deleted_at || item.deleted;
5775
5802
  };
5776
5803
  const getColumnClass = (column) => {
5777
- if (column.class) return column.class;
5778
- let classes = "px-6 py-4 text-sm truncate";
5779
- if (!column.isSecondary) classes += " font-medium";
5780
- if (column.isSecondary) classes += " text-neutral-600 dark:text-neutral-200";
5781
- return classes;
5804
+ 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);
5782
5805
  };
5783
5806
  const getHeaderClass = (column) => {
5784
- if (column.sortable) return "";
5785
- return "px-6 py-3 text-left text-[11px] font-semibold tracking-[0.12em] text-neutral-600 uppercase dark:text-neutral-200";
5807
+ 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);
5786
5808
  };
5809
+ const getContentClass = (column) => {
5810
+ return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
5811
+ };
5812
+ const getColumnWidthStyle = (column) => {
5813
+ return column.width ? { width: column.width } : {};
5814
+ };
5815
+ const actionHeaderClass = computed(() => {
5816
+ 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");
5817
+ });
5818
+ const actionCellClass = computed(() => {
5819
+ 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");
5820
+ });
5787
5821
  return (_ctx, _cache) => {
5788
5822
  return openBlock(), createElementBlock("div", _hoisted_1$3, [__props.search ? (openBlock(), createBlock(_sfc_main$2, {
5789
5823
  key: 0,
@@ -5816,12 +5850,15 @@ var _sfc_main$1 = {
5816
5850
  "show-deleted-toggle",
5817
5851
  "show-deleted-label",
5818
5852
  "search-mode"
5819
- ])) : 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", _hoisted_2$2, [createElementVNode("thead", _hoisted_3$2, [createElementVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
5853
+ ])) : 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", { 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/80 dark:bg-neutral-900/80", __props.theadClass)) }, [createElementVNode("tr", { class: normalizeClass(__props.headerRowClass) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
5820
5854
  return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$3, {
5821
5855
  key: 0,
5822
5856
  field: column.key,
5823
5857
  "current-sort-field": __props.sortField,
5824
5858
  "current-direction": __props.sortDirection,
5859
+ "header-class": getHeaderClass(column),
5860
+ "header-style": getColumnWidthStyle(column),
5861
+ "content-class": getContentClass(column),
5825
5862
  onSort: sortBy
5826
5863
  }, {
5827
5864
  default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
@@ -5829,39 +5866,59 @@ var _sfc_main$1 = {
5829
5866
  }, 1032, [
5830
5867
  "field",
5831
5868
  "current-sort-field",
5832
- "current-direction"
5869
+ "current-direction",
5870
+ "header-class",
5871
+ "header-style",
5872
+ "content-class"
5833
5873
  ])) : (openBlock(), createElementBlock("th", {
5834
5874
  key: 1,
5835
- class: normalizeClass([getHeaderClass(column), { "text-right": column.align === "right" }])
5836
- }, toDisplayString(column.label), 3))], 64);
5837
- }), 128)), _ctx.$slots.actions ? (openBlock(), createElementBlock("th", _hoisted_4$1, toDisplayString(__props.actionsLabel), 1)) : createCommentVNode("", true)])]), createElementVNode("tbody", _hoisted_5$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredData.value, (item, index) => {
5875
+ class: normalizeClass(getHeaderClass(column)),
5876
+ style: normalizeStyle(getColumnWidthStyle(column))
5877
+ }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 6))], 64);
5878
+ }), 128)), _ctx.$slots.actions ? (openBlock(), createElementBlock("th", {
5879
+ key: 0,
5880
+ class: normalizeClass(actionHeaderClass.value)
5881
+ }, toDisplayString(__props.actionsLabel), 3)) : createCommentVNode("", true)], 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) => {
5838
5882
  return openBlock(), createElementBlock("tr", {
5839
5883
  key: item.id,
5840
5884
  class: normalizeClass(__props.rowClasses(item, index))
5841
5885
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
5842
5886
  return openBlock(), createElementBlock("td", {
5843
5887
  key: column.key,
5844
- class: normalizeClass(getColumnClass(column))
5845
- }, [column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", _hoisted_6$1, [createElementVNode("div", {
5888
+ class: normalizeClass(getColumnClass(column)),
5889
+ style: normalizeStyle(getColumnWidthStyle(column))
5890
+ }, [column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", {
5891
+ key: 0,
5892
+ class: normalizeClass(joinClasses("flex items-center", getContentClass(column)))
5893
+ }, [createElementVNode("div", {
5846
5894
  class: "truncate text-sm font-medium text-neutral-950 dark:text-neutral-50",
5847
5895
  title: getCellContent(item, column)
5848
- }, toDisplayString(getCellContent(item, column)), 9, _hoisted_7$1), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_8$1, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)])) : column.slot ? renderSlot(_ctx.$slots, column.slot, {
5896
+ }, toDisplayString(getCellContent(item, column)), 9, _hoisted_2$2), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_3$2, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)], 2)) : column.slot ? (openBlock(), createElementBlock("div", {
5849
5897
  key: 1,
5898
+ class: normalizeClass(getContentClass(column))
5899
+ }, [renderSlot(_ctx.$slots, column.slot, {
5850
5900
  item,
5851
5901
  column,
5852
5902
  index
5853
- }) : column.render ? (openBlock(), createElementBlock("div", {
5903
+ })], 2)) : column.render ? (openBlock(), createElementBlock("div", {
5854
5904
  key: 2,
5905
+ class: normalizeClass(getContentClass(column)),
5855
5906
  innerHTML: column.render(item)
5856
- }, null, 8, _hoisted_9$1)) : (openBlock(), createElementBlock("div", _hoisted_10$1, toDisplayString(getCellContent(item, column)), 1))], 2);
5857
- }), 128)), _ctx.$slots.actions ? (openBlock(), createElementBlock("td", _hoisted_11$1, [renderSlot(_ctx.$slots, "actions", {
5907
+ }, null, 10, _hoisted_4$1)) : (openBlock(), createElementBlock("div", {
5908
+ key: 3,
5909
+ class: normalizeClass(getContentClass(column))
5910
+ }, toDisplayString(getCellContent(item, column)), 3))], 6);
5911
+ }), 128)), _ctx.$slots.actions ? (openBlock(), createElementBlock("td", {
5912
+ key: 0,
5913
+ class: normalizeClass(actionCellClass.value)
5914
+ }, [renderSlot(_ctx.$slots, "actions", {
5858
5915
  item,
5859
5916
  index
5860
- })])) : createCommentVNode("", true)], 2);
5861
- }), 128))])])], 2), !hasData.value ? (openBlock(), createElementBlock("div", _hoisted_12$1, [
5862
- createElementVNode("div", _hoisted_13$1, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
5863
- createElementVNode("h3", _hoisted_14$1, toDisplayString(__props.emptyState.title), 1),
5864
- createElementVNode("p", _hoisted_15$1, toDisplayString(__props.emptyState.description), 1),
5917
+ })], 2)) : createCommentVNode("", true)], 2);
5918
+ }), 128))], 2)], 2)], 2), !hasData.value ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
5919
+ createElementVNode("div", _hoisted_6$1, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
5920
+ createElementVNode("h3", _hoisted_7$1, toDisplayString(__props.emptyState.title), 1),
5921
+ createElementVNode("p", _hoisted_8$1, toDisplayString(__props.emptyState.description), 1),
5865
5922
  __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$6, {
5866
5923
  key: 0,
5867
5924
  href: __props.emptyState.actionUrl,
@@ -5879,36 +5936,25 @@ var _sfc_main$1 = {
5879
5936
  var _hoisted_1$2 = { class: "relative max-w-sm" };
5880
5937
  var _hoisted_2$1 = { class: "absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none" };
5881
5938
  var _hoisted_3$1 = ["value", "placeholder"];
5882
- var _hoisted_4 = { class: "min-w-full divide-y divide-neutral-200 dark:divide-neutral-800" };
5883
- var _hoisted_5 = { class: "bg-neutral-50 dark:bg-neutral-900" };
5884
- var _hoisted_6 = {
5885
- key: 0,
5886
- class: "px-6 py-3 text-right text-xs font-medium uppercase tracking-wider text-neutral-500 dark:text-neutral-200"
5887
- };
5888
- var _hoisted_7 = { class: "divide-y divide-neutral-200 bg-white dark:divide-neutral-800 dark:bg-neutral-950" };
5889
- var _hoisted_8 = {
5939
+ var _hoisted_4 = {
5890
5940
  key: 2,
5891
5941
  class: "flex items-center"
5892
5942
  };
5893
- var _hoisted_9 = ["title"];
5894
- var _hoisted_10 = {
5943
+ var _hoisted_5 = ["title"];
5944
+ var _hoisted_6 = {
5895
5945
  key: 0,
5896
5946
  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"
5897
5947
  };
5898
- var _hoisted_11 = ["innerHTML"];
5899
- var _hoisted_12 = { key: 5 };
5900
- var _hoisted_13 = {
5901
- key: 0,
5902
- class: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium"
5903
- };
5904
- var _hoisted_14 = { class: "flex items-center justify-end gap-2" };
5905
- var _hoisted_15 = {
5948
+ var _hoisted_7 = ["innerHTML"];
5949
+ var _hoisted_8 = { key: 5 };
5950
+ var _hoisted_9 = { class: "flex items-center justify-end gap-2" };
5951
+ var _hoisted_10 = {
5906
5952
  key: 2,
5907
5953
  class: "py-12 text-center"
5908
5954
  };
5909
- 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" };
5910
- var _hoisted_17 = { class: "mb-2 text-lg font-medium text-neutral-950 dark:text-neutral-50" };
5911
- var _hoisted_18 = { class: "mb-4 text-neutral-500 dark:text-neutral-200" };
5955
+ var _hoisted_11 = { class: "mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900" };
5956
+ var _hoisted_12 = { class: "mb-2 text-lg font-medium text-neutral-950 dark:text-neutral-50" };
5957
+ var _hoisted_13 = { class: "mb-4 text-neutral-500 dark:text-neutral-200" };
5912
5958
  var _sfc_main = {
5913
5959
  __name: "TableListForm",
5914
5960
  props: {
@@ -5979,6 +6025,26 @@ var _sfc_main = {
5979
6025
  type: Boolean,
5980
6026
  default: true
5981
6027
  },
6028
+ tableClass: {
6029
+ type: String,
6030
+ default: ""
6031
+ },
6032
+ theadClass: {
6033
+ type: String,
6034
+ default: ""
6035
+ },
6036
+ tbodyClass: {
6037
+ type: String,
6038
+ default: ""
6039
+ },
6040
+ headerRowClass: {
6041
+ type: String,
6042
+ default: ""
6043
+ },
6044
+ dense: {
6045
+ type: Boolean,
6046
+ default: false
6047
+ },
5982
6048
  actionsLabel: {
5983
6049
  type: String,
5984
6050
  default: "Actions"
@@ -6104,6 +6170,13 @@ var _sfc_main = {
6104
6170
  direction: localSortDirection.value
6105
6171
  });
6106
6172
  };
6173
+ const joinClasses = (...classes) => {
6174
+ return classes.flatMap((value) => {
6175
+ if (Array.isArray(value)) return value;
6176
+ if (typeof value === "string") return value;
6177
+ return [];
6178
+ }).filter(Boolean).join(" ");
6179
+ };
6107
6180
  const cloneValue = (value) => {
6108
6181
  if (Array.isArray(value)) return value.map((entry) => cloneValue(entry));
6109
6182
  if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, cloneValue(entry)]));
@@ -6194,15 +6267,16 @@ var _sfc_main = {
6194
6267
  return truncateText(value);
6195
6268
  };
6196
6269
  const getColumnClass = (column, item, index) => {
6197
- if (column.class) return column.class;
6198
- let classes = isEditingRow(item, index) && (column.input || slots[getEditSlotName(column)]) ? "px-6 py-3 text-sm align-top" : "px-6 py-4 text-sm truncate";
6199
- if (!column.isSecondary) classes += " font-medium";
6200
- if (column.isSecondary) classes += " text-neutral-600 dark:text-neutral-200";
6201
- return classes;
6270
+ 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);
6202
6271
  };
6203
6272
  const getHeaderClass = (column) => {
6204
- if (column.sortable) return "";
6205
- return "px-6 py-3 text-left text-xs font-medium uppercase tracking-wider text-neutral-500 dark:text-neutral-200";
6273
+ 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);
6274
+ };
6275
+ const getContentClass = (column) => {
6276
+ return joinClasses(column.sortable ? "flex items-center space-x-1" : "", column.align === "right" ? "w-full text-right justify-end" : "", column.contentClass);
6277
+ };
6278
+ const getColumnWidthStyle = (column) => {
6279
+ return column.width ? { width: column.width } : {};
6206
6280
  };
6207
6281
  const getInputType = (column) => column.inputType || "text";
6208
6282
  const getInputClass = (column) => {
@@ -6236,6 +6310,12 @@ var _sfc_main = {
6236
6310
  const disabled = typeof column.disabled === "function" ? column.disabled(item, index) : column.disabled;
6237
6311
  return Boolean(disabled || isDeleted(item));
6238
6312
  };
6313
+ const actionHeaderClass = computed(() => {
6314
+ 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");
6315
+ });
6316
+ const actionCellClass = computed(() => {
6317
+ 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");
6318
+ });
6239
6319
  return (_ctx, _cache) => {
6240
6320
  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", {
6241
6321
  key: 0,
@@ -6249,12 +6329,15 @@ var _sfc_main = {
6249
6329
  }, null, 40, _hoisted_3$1)])], 2)) : createCommentVNode("", true), hasData.value ? (openBlock(), createElementBlock("div", {
6250
6330
  key: 1,
6251
6331
  class: normalizeClass(["overflow-x-auto", __props.isCard ? __props.search ? "" : "rounded-t-xl" : ""])
6252
- }, [createElementVNode("table", _hoisted_4, [createElementVNode("thead", _hoisted_5, [createElementVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6332
+ }, [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) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6253
6333
  return openBlock(), createElementBlock(Fragment, { key: column.key }, [column.sortable ? (openBlock(), createBlock(_sfc_main$3, {
6254
6334
  key: 0,
6255
6335
  field: column.key,
6256
6336
  "current-sort-field": localSortField.value,
6257
6337
  "current-direction": localSortDirection.value,
6338
+ "header-class": getHeaderClass(column),
6339
+ "header-style": getColumnWidthStyle(column),
6340
+ "content-class": getContentClass(column),
6258
6341
  onSort: sortBy
6259
6342
  }, {
6260
6343
  default: withCtx(() => [createTextVNode(toDisplayString(column.label), 1)]),
@@ -6262,20 +6345,28 @@ var _sfc_main = {
6262
6345
  }, 1032, [
6263
6346
  "field",
6264
6347
  "current-sort-field",
6265
- "current-direction"
6348
+ "current-direction",
6349
+ "header-class",
6350
+ "header-style",
6351
+ "content-class"
6266
6352
  ])) : (openBlock(), createElementBlock("th", {
6267
6353
  key: 1,
6268
- class: normalizeClass([getHeaderClass(column), { "text-right": column.align === "right" }])
6269
- }, toDisplayString(column.label), 3))], 64);
6270
- }), 128)), hasActionsColumn.value ? (openBlock(), createElementBlock("th", _hoisted_6, toDisplayString(__props.actionsLabel), 1)) : createCommentVNode("", true)])]), createElementVNode("tbody", _hoisted_7, [(openBlock(true), createElementBlock(Fragment, null, renderList(sortedData.value, (item, index) => {
6354
+ class: normalizeClass(getHeaderClass(column)),
6355
+ style: normalizeStyle(getColumnWidthStyle(column))
6356
+ }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, toDisplayString(column.label), 3)], 6))], 64);
6357
+ }), 128)), hasActionsColumn.value ? (openBlock(), createElementBlock("th", {
6358
+ key: 0,
6359
+ class: normalizeClass(actionHeaderClass.value)
6360
+ }, toDisplayString(__props.actionsLabel), 3)) : createCommentVNode("", true)], 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) => {
6271
6361
  return openBlock(), createElementBlock("tr", {
6272
6362
  key: getRowKey(item, index),
6273
6363
  class: normalizeClass(__props.rowClasses(item, index))
6274
6364
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
6275
6365
  return openBlock(), createElementBlock("td", {
6276
6366
  key: column.key,
6277
- class: normalizeClass([getColumnClass(column, item, index), { "text-right": column.align === "right" }])
6278
- }, [isEditingRow(item, index) && column.slot && unref(slots)[getEditSlotName(column)] ? renderSlot(_ctx.$slots, getEditSlotName(column), mergeProps({
6367
+ class: normalizeClass(getColumnClass(column, item, index)),
6368
+ style: normalizeStyle(getColumnWidthStyle(column))
6369
+ }, [createElementVNode("div", { class: normalizeClass(getContentClass(column)) }, [isEditingRow(item, index) && column.slot && unref(slots)[getEditSlotName(column)] ? renderSlot(_ctx.$slots, getEditSlotName(column), mergeProps({
6279
6370
  key: 0,
6280
6371
  ref_for: true
6281
6372
  }, getSlotBindings(item, column, index))) : isEditingRow(item, index) && column.input ? (openBlock(), createBlock(_sfc_main$16, {
@@ -6300,17 +6391,20 @@ var _sfc_main = {
6300
6391
  "error-message",
6301
6392
  "onUpdate:modelValue",
6302
6393
  "onBlur"
6303
- ])) : column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", _hoisted_8, [createElementVNode("div", {
6394
+ ])) : column.key === "name" && !column.slot ? (openBlock(), createElementBlock("div", _hoisted_4, [createElementVNode("div", {
6304
6395
  class: "text-sm font-medium truncate",
6305
6396
  title: getCellContent(item, column)
6306
- }, 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({
6397
+ }, toDisplayString(getCellContent(item, column)), 9, _hoisted_5), isDeleted(item) ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(__props.deletedLabel), 1)) : createCommentVNode("", true)])) : column.slot ? renderSlot(_ctx.$slots, column.slot, mergeProps({
6307
6398
  key: 3,
6308
6399
  ref_for: true
6309
6400
  }, getSlotBindings(item, column, index))) : column.render ? (openBlock(), createElementBlock("div", {
6310
6401
  key: 4,
6311
6402
  innerHTML: column.render(item)
6312
- }, null, 8, _hoisted_11)) : (openBlock(), createElementBlock("div", _hoisted_12, toDisplayString(getCellContent(item, column)), 1))], 2);
6313
- }), 128)), hasActionsColumn.value ? (openBlock(), createElementBlock("td", _hoisted_13, [createElementVNode("div", _hoisted_14, [hasActionsSlot.value ? renderSlot(_ctx.$slots, "actions", mergeProps({
6403
+ }, null, 8, _hoisted_7)) : (openBlock(), createElementBlock("div", _hoisted_8, toDisplayString(getCellContent(item, column)), 1))], 2)], 6);
6404
+ }), 128)), hasActionsColumn.value ? (openBlock(), createElementBlock("td", {
6405
+ key: 0,
6406
+ class: normalizeClass(actionCellClass.value)
6407
+ }, [createElementVNode("div", _hoisted_9, [hasActionsSlot.value ? renderSlot(_ctx.$slots, "actions", mergeProps({
6314
6408
  key: 0,
6315
6409
  ref_for: true
6316
6410
  }, getSlotBindings(item, null, index))) : createCommentVNode("", true), __props.rowEditing && isEditingRow(item, index) ? (openBlock(), createBlock(_sfc_main$32, {
@@ -6345,11 +6439,11 @@ var _sfc_main = {
6345
6439
  "title",
6346
6440
  "aria-label",
6347
6441
  "onClick"
6348
- ])) : createCommentVNode("", true)])])) : createCommentVNode("", true)], 2);
6349
- }), 128))])])], 2)) : (openBlock(), createElementBlock("div", _hoisted_15, [
6350
- createElementVNode("div", _hoisted_16, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
6351
- createElementVNode("h3", _hoisted_17, toDisplayString(__props.emptyState.title), 1),
6352
- createElementVNode("p", _hoisted_18, toDisplayString(__props.emptyState.description), 1),
6442
+ ])) : createCommentVNode("", true)])], 2)) : createCommentVNode("", true)], 2);
6443
+ }), 128))], 2)], 2)], 2)) : (openBlock(), createElementBlock("div", _hoisted_10, [
6444
+ createElementVNode("div", _hoisted_11, [(openBlock(), createBlock(resolveDynamicComponent(__props.emptyState.icon), { class: "h-8 w-8 text-neutral-400 dark:text-neutral-200" }))]),
6445
+ createElementVNode("h3", _hoisted_12, toDisplayString(__props.emptyState.title), 1),
6446
+ createElementVNode("p", _hoisted_13, toDisplayString(__props.emptyState.description), 1),
6353
6447
  __props.emptyState.actionText && __props.emptyState.actionUrl ? (openBlock(), createBlock(_sfc_main$6, {
6354
6448
  key: 0,
6355
6449
  href: __props.emptyState.actionUrl,
@@ -6548,4 +6642,4 @@ var plugin_default = { install(app) {
6548
6642
  //#endregion
6549
6643
  export { SectionTitle_default as $, _sfc_main$12 as A, _sfc_main$22 as B, _sfc_main$5 as C, _sfc_main$9 as D, _sfc_main$8 as E, ColorPicker_default as F, _sfc_main$27 as G, DateRangeInput_default as H, _sfc_main$18 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, useSidebar as S, _sfc_main$7 as T, DateInput_default as U, _sfc_main$23 as V, _sfc_main$26 as W, _sfc_main$32 as X, _sfc_main$31 as Y, _sfc_main$33 as Z, SidebarGroupContent_default as _, _sfc_main$1 as a, __commonJSMin as at, SidebarContent_default as b, _sfc_main$4 as c, SidebarMenuItem_default as d, _sfc_main$36 as et, SidebarMenuButton_default as f, SidebarGroupLabel_default as g, SidebarHeader_default as h, _sfc_main as i, _sfc_main$40 as it, _sfc_main$13 as j, _sfc_main$11 as k, SidebarTrigger_default as l, SidebarInset_default as m, ToastContainer_default as n, _sfc_main$38 as nt, _sfc_main$2 as o, SidebarMenu_default as p, _sfc_main$29 as q, Toast_default as r, _sfc_main$39 as rt, _sfc_main$3 as s, plugin_default as t, _sfc_main$37 as tt, SidebarProvider_default as u, SidebarGroup_default as v, _sfc_main$6 as w, Sidebar_default as x, SidebarFooter_default as y, _sfc_main$21 as z };
6550
6644
 
6551
- //# sourceMappingURL=plugin-CVOKwfxF.js.map
6645
+ //# sourceMappingURL=plugin-BN0tob6x.js.map