@gspa/ui 0.1.4 → 0.3.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 (124) hide show
  1. package/README.md +34 -1
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js +205 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs +1 -0
  4. package/dist/DataTable.css +1 -0
  5. package/dist/DataTableToolBar.css +1 -0
  6. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-CIKiZaO1.cjs +1 -0
  7. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-Dx_9f8DO.js +557 -0
  8. package/dist/FormField.vue_vue_type_script_setup_true_lang-BljDj5YZ.js +205 -0
  9. package/dist/FormField.vue_vue_type_script_setup_true_lang-FWitIR3U.cjs +1 -0
  10. package/dist/Header.css +1 -0
  11. package/dist/Input.vue_vue_type_script_setup_true_lang-C1OQn24h.cjs +1 -0
  12. package/dist/Input.vue_vue_type_script_setup_true_lang-CpBoY97r.js +137 -0
  13. package/dist/Loader.css +1 -0
  14. package/dist/ReminderConfig.css +1 -0
  15. package/dist/ReusableForm.css +1 -0
  16. package/dist/Sidebar.css +1 -0
  17. package/dist/Toast.css +1 -0
  18. package/dist/components/AccordionItem.cjs +1 -1
  19. package/dist/components/AccordionItem.js +5 -5
  20. package/dist/components/Alert.cjs +1 -1
  21. package/dist/components/Alert.js +71 -66
  22. package/dist/components/Button.cjs +1 -1
  23. package/dist/components/Button.js +2 -188
  24. package/dist/components/DataTable.cjs +1 -1
  25. package/dist/components/DataTable.js +1 -1
  26. package/dist/components/DataTableFilters.cjs +1 -1
  27. package/dist/components/DataTableFilters.js +19 -19
  28. package/dist/components/DataTableToolBar.cjs +1 -1
  29. package/dist/components/DataTableToolBar.js +1 -1
  30. package/dist/components/DatePicker.cjs +1 -1
  31. package/dist/components/DatePicker.js +2 -399
  32. package/dist/components/FormField.cjs +1 -1
  33. package/dist/components/FormField.js +2 -188
  34. package/dist/components/GraphFilters.cjs +1 -1
  35. package/dist/components/GraphFilters.js +29 -29
  36. package/dist/components/Icon.cjs +1 -1
  37. package/dist/components/Icon.js +23 -16
  38. package/dist/components/Input.cjs +1 -1
  39. package/dist/components/Input.js +2 -164
  40. package/dist/components/ReusableForm.cjs +1 -1
  41. package/dist/components/ReusableForm.js +188 -159
  42. package/dist/components/ThemeConfigurator.cjs +1 -1
  43. package/dist/components/ThemeConfigurator.js +51 -28
  44. package/dist/gspa-ui.css +1 -1
  45. package/dist/index.cjs +1 -1
  46. package/dist/index.esm.js +124 -118
  47. package/dist/layouts/AuthLayout.cjs +1 -1
  48. package/dist/layouts/AuthLayout.js +110 -112
  49. package/dist/lib/form-field.cjs +1 -0
  50. package/dist/lib/form-field.js +4 -0
  51. package/dist/lib/icon.cjs +1 -0
  52. package/dist/lib/icon.js +4 -0
  53. package/dist/lib/theme.cjs +1 -1
  54. package/dist/lib/theme.js +73 -63
  55. package/dist/src/components/Alert.vue.d.ts.map +1 -1
  56. package/dist/src/components/Button.vue.d.ts +127 -29
  57. package/dist/src/components/Button.vue.d.ts.map +1 -1
  58. package/dist/src/components/Calendar.vue.d.ts +4 -4
  59. package/dist/src/components/Checkbox.vue.d.ts +2 -2
  60. package/dist/src/components/DataTable.vue.d.ts +1 -1
  61. package/dist/src/components/DatePicker.vue.d.ts +139 -29
  62. package/dist/src/components/DatePicker.vue.d.ts.map +1 -1
  63. package/dist/src/components/FormField.vue.d.ts +106 -38
  64. package/dist/src/components/FormField.vue.d.ts.map +1 -1
  65. package/dist/src/components/Icon.vue.d.ts.map +1 -1
  66. package/dist/src/components/Input.vue.d.ts +137 -33
  67. package/dist/src/components/Input.vue.d.ts.map +1 -1
  68. package/dist/src/components/ReusableForm.vue.d.ts +1 -1
  69. package/dist/src/components/ReusableForm.vue.d.ts.map +1 -1
  70. package/dist/src/components/ReusableFormModal.vue.d.ts +1 -1
  71. package/dist/src/components/Textarea.vue.d.ts +2 -2
  72. package/dist/src/index.d.ts +9 -4
  73. package/dist/src/index.d.ts.map +1 -1
  74. package/dist/src/layouts/AuthLayout.vue.d.ts +2 -0
  75. package/dist/src/layouts/AuthLayout.vue.d.ts.map +1 -1
  76. package/dist/src/lib/form-field.d.ts +2 -0
  77. package/dist/src/lib/form-field.d.ts.map +1 -0
  78. package/dist/src/lib/icon.d.ts +2 -0
  79. package/dist/src/lib/icon.d.ts.map +1 -0
  80. package/dist/src/lib/theme.d.ts +4 -0
  81. package/dist/src/lib/theme.d.ts.map +1 -1
  82. package/dist/src/types.d.ts +47 -0
  83. package/dist/src/types.d.ts.map +1 -0
  84. package/dist/styles/auth-layout.css +1 -0
  85. package/dist/styles/button.css +1 -0
  86. package/dist/styles/form-field.css +1 -0
  87. package/dist/styles/input.css +1 -0
  88. package/dist/styles/tokens.css +1 -0
  89. package/dist/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +10 -3
  91. package/dist/src/__tests__/Alert.spec.d.ts +0 -2
  92. package/dist/src/__tests__/Alert.spec.d.ts.map +0 -1
  93. package/dist/src/__tests__/App.spec.d.ts +0 -2
  94. package/dist/src/__tests__/App.spec.d.ts.map +0 -1
  95. package/dist/src/__tests__/AuthLayout.spec.d.ts +0 -2
  96. package/dist/src/__tests__/AuthLayout.spec.d.ts.map +0 -1
  97. package/dist/src/__tests__/Badge.spec.d.ts +0 -2
  98. package/dist/src/__tests__/Badge.spec.d.ts.map +0 -1
  99. package/dist/src/__tests__/Button.spec.d.ts +0 -2
  100. package/dist/src/__tests__/Button.spec.d.ts.map +0 -1
  101. package/dist/src/__tests__/Card.spec.d.ts +0 -2
  102. package/dist/src/__tests__/Card.spec.d.ts.map +0 -1
  103. package/dist/src/__tests__/Checkbox.spec.d.ts +0 -2
  104. package/dist/src/__tests__/Checkbox.spec.d.ts.map +0 -1
  105. package/dist/src/__tests__/Dropdown.spec.d.ts +0 -2
  106. package/dist/src/__tests__/Dropdown.spec.d.ts.map +0 -1
  107. package/dist/src/__tests__/Input.spec.d.ts +0 -2
  108. package/dist/src/__tests__/Input.spec.d.ts.map +0 -1
  109. package/dist/src/__tests__/Modal.spec.d.ts +0 -2
  110. package/dist/src/__tests__/Modal.spec.d.ts.map +0 -1
  111. package/dist/src/__tests__/Radio.spec.d.ts +0 -2
  112. package/dist/src/__tests__/Radio.spec.d.ts.map +0 -1
  113. package/dist/src/__tests__/ReusableForm.spec.d.ts +0 -2
  114. package/dist/src/__tests__/ReusableForm.spec.d.ts.map +0 -1
  115. package/dist/src/__tests__/Tabs.spec.d.ts +0 -2
  116. package/dist/src/__tests__/Tabs.spec.d.ts.map +0 -1
  117. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts +0 -2
  118. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts.map +0 -1
  119. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts +0 -2
  120. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts.map +0 -1
  121. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts +0 -2
  122. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts.map +0 -1
  123. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts +0 -2
  124. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts.map +0 -1
@@ -1,17 +1,17 @@
1
- import { ref as V, computed as c, createBlock as u, openBlock as r, Transition as $, withCtx as k, createElementBlock as o, createCommentVNode as a, normalizeClass as l, unref as p, createElementVNode as d, resolveDynamicComponent as A, toDisplayString as m, renderSlot as x, createTextVNode as y, Fragment as N, renderList as D, createVNode as T, h as s } from "vue";
2
- import { cva as E } from "class-variance-authority";
3
- import { cn as X } from "../utils/cn.js";
4
- import F from "./Button.js";
5
- const O = { class: "flex items-start gap-3" }, q = {
1
+ import { ref as V, onBeforeUnmount as $, computed as c, createBlock as u, openBlock as s, Transition as A, withCtx as p, createElementBlock as i, createCommentVNode as a, normalizeClass as l, unref as y, createElementVNode as d, resolveDynamicComponent as N, toDisplayString as m, renderSlot as x, createTextVNode as C, Fragment as D, renderList as E, createVNode as X, h as r } from "vue";
2
+ import { cva as F } from "class-variance-authority";
3
+ import { cn as O } from "../utils/cn.js";
4
+ import { _ as U } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
5
+ const q = ["aria-live"], G = { class: "flex items-start gap-3" }, H = {
6
6
  key: 0,
7
7
  class: "shrink-0 mt-0.5"
8
- }, G = { class: "flex-1 min-w-0" }, H = {
8
+ }, J = { class: "flex-1 min-w-0" }, K = {
9
9
  key: 0,
10
10
  class: "font-medium text-sm mb-1"
11
- }, J = {
11
+ }, P = {
12
12
  key: 1,
13
13
  class: "mt-3 flex gap-2"
14
- }, K = ["aria-label"], Z = /* @__PURE__ */ Object.assign({ inheritAttrs: !1 }, {
14
+ }, Q = ["aria-label"], te = /* @__PURE__ */ Object.assign({ inheritAttrs: !1 }, {
15
15
  __name: "Alert",
16
16
  props: {
17
17
  variant: {
@@ -30,25 +30,27 @@ const O = { class: "flex items-start gap-3" }, q = {
30
30
  autoClose: { type: [Boolean, Number], default: !1 }
31
31
  },
32
32
  emits: ["dismiss", "action"],
33
- setup(e, { emit: C }) {
34
- const n = e, f = C, g = V(!0), v = () => {
35
- g.value = !1, f("dismiss");
36
- }, b = (t) => {
37
- f("action", t), t.onClick && t.onClick();
33
+ setup(e, { emit: b }) {
34
+ const n = e, v = b, f = V(!0), g = () => {
35
+ f.value = !1, v("dismiss");
36
+ }, B = (t) => {
37
+ v("action", t), t.onClick && t.onClick();
38
38
  };
39
+ let h;
39
40
  if (n.autoClose) {
40
41
  const t = typeof n.autoClose == "number" ? n.autoClose : 5e3;
41
- setTimeout(v, t);
42
+ h = setTimeout(g, t);
42
43
  }
43
- const h = {
44
+ $(() => clearTimeout(h));
45
+ const w = {
44
46
  render() {
45
- return s("svg", {
47
+ return r("svg", {
46
48
  xmlns: "http://www.w3.org/2000/svg",
47
49
  fill: "none",
48
50
  viewBox: "0 0 24 24",
49
51
  stroke: "currentColor"
50
52
  }, [
51
- s("path", {
53
+ r("path", {
52
54
  "stroke-linecap": "round",
53
55
  "stroke-linejoin": "round",
54
56
  "stroke-width": "2",
@@ -56,15 +58,15 @@ const O = { class: "flex items-start gap-3" }, q = {
56
58
  })
57
59
  ]);
58
60
  }
59
- }, B = {
61
+ }, M = {
60
62
  render() {
61
- return s("svg", {
63
+ return r("svg", {
62
64
  xmlns: "http://www.w3.org/2000/svg",
63
65
  fill: "none",
64
66
  viewBox: "0 0 24 24",
65
67
  stroke: "currentColor"
66
68
  }, [
67
- s("path", {
69
+ r("path", {
68
70
  "stroke-linecap": "round",
69
71
  "stroke-linejoin": "round",
70
72
  "stroke-width": "2",
@@ -72,15 +74,15 @@ const O = { class: "flex items-start gap-3" }, q = {
72
74
  })
73
75
  ]);
74
76
  }
75
- }, M = {
77
+ }, z = {
76
78
  render() {
77
- return s("svg", {
79
+ return r("svg", {
78
80
  xmlns: "http://www.w3.org/2000/svg",
79
81
  fill: "none",
80
82
  viewBox: "0 0 24 24",
81
83
  stroke: "currentColor"
82
84
  }, [
83
- s("path", {
85
+ r("path", {
84
86
  "stroke-linecap": "round",
85
87
  "stroke-linejoin": "round",
86
88
  "stroke-width": "2",
@@ -88,15 +90,15 @@ const O = { class: "flex items-start gap-3" }, q = {
88
90
  })
89
91
  ]);
90
92
  }
91
- }, w = {
93
+ }, k = {
92
94
  render() {
93
- return s("svg", {
95
+ return r("svg", {
94
96
  xmlns: "http://www.w3.org/2000/svg",
95
97
  fill: "none",
96
98
  viewBox: "0 0 24 24",
97
99
  stroke: "currentColor"
98
100
  }, [
99
- s("path", {
101
+ r("path", {
100
102
  "stroke-linecap": "round",
101
103
  "stroke-linejoin": "round",
102
104
  "stroke-width": "2",
@@ -104,15 +106,15 @@ const O = { class: "flex items-start gap-3" }, q = {
104
106
  })
105
107
  ]);
106
108
  }
107
- }, z = {
109
+ }, I = {
108
110
  render() {
109
- return s("svg", {
111
+ return r("svg", {
110
112
  xmlns: "http://www.w3.org/2000/svg",
111
113
  fill: "none",
112
114
  viewBox: "0 0 24 24",
113
115
  stroke: "currentColor"
114
116
  }, [
115
- s("path", {
117
+ r("path", {
116
118
  "stroke-linecap": "round",
117
119
  "stroke-linejoin": "round",
118
120
  "stroke-width": "2",
@@ -120,14 +122,14 @@ const O = { class: "flex items-start gap-3" }, q = {
120
122
  })
121
123
  ]);
122
124
  }
123
- }, I = c(() => ({
124
- info: h,
125
- success: B,
126
- warning: M,
127
- error: w,
128
- default: h,
129
- danger: w
130
- })[n.variant]), j = E(
125
+ }, j = c(() => ({
126
+ info: w,
127
+ success: M,
128
+ warning: z,
129
+ error: k,
130
+ default: w,
131
+ danger: k
132
+ })[n.variant]), L = F(
131
133
  "relative w-full rounded-lg border p-4 flex items-start gap-3 ",
132
134
  {
133
135
  variants: {
@@ -142,14 +144,14 @@ const O = { class: "flex items-start gap-3" }, q = {
142
144
  },
143
145
  defaultVariants: { variant: "default" }
144
146
  }
145
- ), L = c(() => ["w-5 h-5", {
147
+ ), S = c(() => ["w-5 h-5", {
146
148
  info: "ui-primary",
147
149
  success: "ui-success",
148
150
  warning: "ui-warning",
149
151
  error: "ui-danger",
150
152
  default: "ui-text",
151
153
  danger: "ui-danger"
152
- }[n.variant]]), S = c(() => ["shrink-0 p-1 rounded-md transition-colors duration-200", {
154
+ }[n.variant]]), T = c(() => ["shrink-0 p-1 rounded-md transition-colors duration-200", {
153
155
  info: "ui-primary hover:text-(--ui-primary) hover:bg-(--ui-primary-soft)",
154
156
  success: "ui-success hover:text-(--ui-success) hover:bg-(--ui-success-soft)",
155
157
  warning: "ui-warning hover:text-(--ui-warning) hover:bg-(--ui-warning-soft)",
@@ -157,7 +159,7 @@ const O = { class: "flex items-start gap-3" }, q = {
157
159
  default: "ui-text hover:text-(--ui-text) hover:bg-(--ui-surface)",
158
160
  danger: "ui-danger hover:text-(--ui-danger) hover:bg-(--ui-danger-soft)"
159
161
  }[n.variant]]);
160
- return (t, P) => (r(), u($, {
162
+ return (t, R) => (s(), u(A, {
161
163
  "enter-active-class": "transition-all duration-300",
162
164
  "enter-from-class": "opacity-0 scale-95",
163
165
  "enter-to-class": "opacity-100 scale-100",
@@ -165,58 +167,61 @@ const O = { class: "flex items-start gap-3" }, q = {
165
167
  "leave-from-class": "opacity-100 scale-100",
166
168
  "leave-to-class": "opacity-0 scale-95"
167
169
  }, {
168
- default: k(() => [
169
- g.value ? (r(), o("div", {
170
+ default: p(() => [
171
+ f.value ? (s(), i("div", {
170
172
  key: 0,
171
- class: l(p(X)(p(j)({ variant: e.variant }), t.$attrs.class)),
172
- role: "alert"
173
+ class: l(y(O)(y(L)({ variant: e.variant }), t.$attrs.class)),
174
+ role: "alert",
175
+ "aria-live": e.variant === "error" || e.variant === "danger" ? "assertive" : "polite",
176
+ "aria-atomic": "true"
173
177
  }, [
174
- d("div", O, [
175
- e.showIcon ? (r(), o("div", q, [
176
- (r(), u(A(I.value), {
177
- class: l(L.value)
178
+ d("div", G, [
179
+ e.showIcon ? (s(), i("div", H, [
180
+ (s(), u(N(j.value), {
181
+ class: l(S.value)
178
182
  }, null, 8, ["class"]))
179
183
  ])) : a("", !0),
180
- d("div", G, [
181
- e.title ? (r(), o("h4", H, m(e.title), 1)) : a("", !0),
184
+ d("div", J, [
185
+ e.title ? (s(), i("h4", K, m(e.title), 1)) : a("", !0),
182
186
  d("div", {
183
187
  class: l(["text-sm", { "mt-0": !e.title, "mt-1": e.title }])
184
188
  }, [
185
189
  x(t.$slots, "default", {}, () => [
186
- y(m(e.message), 1)
190
+ C(m(e.message), 1)
187
191
  ])
188
192
  ], 2),
189
- t.$slots.actions || e.actions.length > 0 ? (r(), o("div", J, [
193
+ t.$slots.actions || e.actions.length > 0 ? (s(), i("div", P, [
190
194
  x(t.$slots, "actions", {}, () => [
191
- (r(!0), o(N, null, D(e.actions, (i) => (r(), u(F, {
192
- key: i.label,
193
- variant: i.variant || "outline",
194
- size: i.size || "sm",
195
- onClick: (Q) => b(i)
195
+ (s(!0), i(D, null, E(e.actions, (o) => (s(), u(U, {
196
+ key: o.label,
197
+ variant: o.variant || "outline",
198
+ size: o.size || "sm",
199
+ onClick: (W) => B(o)
196
200
  }, {
197
- default: k(() => [
198
- y(m(i.label), 1)
201
+ default: p(() => [
202
+ C(m(o.label), 1)
199
203
  ]),
200
204
  _: 2
201
205
  }, 1032, ["variant", "size", "onClick"]))), 128))
202
206
  ])
203
207
  ])) : a("", !0)
204
208
  ]),
205
- e.dismissible ? (r(), o("button", {
209
+ e.dismissible ? (s(), i("button", {
206
210
  key: 1,
207
- class: l(S.value),
211
+ type: "button",
212
+ class: l(T.value),
208
213
  "aria-label": e.dismissLabel,
209
- onClick: v
214
+ onClick: g
210
215
  }, [
211
- T(z, { class: "w-4 h-4" })
212
- ], 10, K)) : a("", !0)
216
+ X(I, { class: "w-4 h-4" })
217
+ ], 10, Q)) : a("", !0)
213
218
  ])
214
- ], 2)) : a("", !0)
219
+ ], 10, q)) : a("", !0)
215
220
  ]),
216
221
  _: 3
217
222
  }));
218
223
  }
219
224
  });
220
225
  export {
221
- Z as default
226
+ te as default
222
227
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),m=require("class-variance-authority"),b=require("../utils/cn.cjs"),p=require("./Icon.cjs"),f=require("../lib/auth.cjs"),v=["disabled","aria-disabled","aria-busy"],w={key:2},y=Object.assign({inheritAttrs:!1},{__name:"Button",props:{variant:{type:String,default:"default",validator:t=>["primary","default","danger","outline","secondary","ghost","link","success","warning","info","subtle","dark","light","primaryOutline","dangerOutline","successOutline","gradient"].includes(t)},size:{type:String,default:"default",validator:t=>["2xs","xs","sm","default","md","lg","xl","2xl","icon-sm","icon","icon-lg"].includes(t)},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingText:{type:String,default:null},icon:{type:String,default:null},permission:{type:[String,Array,Boolean,Function],default:null},role:{type:[String,Array,Boolean,Function],default:null},requireAll:{type:Boolean,default:!1},unauthorized:{type:String,default:"show",validator:t=>["show","hide","disable"].includes(t)}},setup(t){const o=t,i=e.inject(f.AUTH_RESOLVER_KEY,null),s=r=>r==null?null:typeof r=="boolean"?r:typeof r=="function"?!!r():r,a=e.computed(()=>{const r=s(o.permission),n=s(o.role);return r===null&&n===null?!0:(r===null||typeof r=="boolean")&&(n===null||typeof n=="boolean")?(r??!0)&&(n??!0):typeof i=="function"?!!i({permission:r,role:n,requireAll:o.requireAll}):!0}),l=e.computed(()=>o.unauthorized==="hide"&&!a.value),d=e.computed(()=>o.unauthorized==="disable"&&!a.value),u=e.computed(()=>o.disabled||o.loading||d.value),c=m.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-[color,background-color,border-color,box-shadow,transform] duration-200 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-primary) focus-visible:ring-offset-2 active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{primary:"ui-primary-bg shadow-sm hover:bg-(--ui-primary-strong) hover:shadow-md",default:"ui-primary-bg shadow-sm hover:bg-(--ui-primary-strong) hover:shadow-md",danger:"ui-danger-bg shadow-sm hover:bg-(--ui-danger-strong) hover:shadow-md",outline:"border ui-border-strong ui-surface ui-text hover:bg-(--ui-surface-soft) hover:border-(--ui-primary) hover:text-(--ui-primary)",secondary:"border ui-border ui-surface-muted ui-text hover:bg-(--ui-surface-soft) hover:shadow-sm",ghost:"bg-transparent ui-text-muted hover:bg-[color:color-mix(in oklab, var(--ui-accent-soft), transparent 40%)] hover:text-(--ui-text)",link:"ui-primary underline-offset-4 hover:underline hover:text-(--ui-primary-strong)",success:"ui-success-bg shadow-sm hover:bg-(--ui-success-strong) hover:shadow-md",warning:"ui-warning-bg shadow-sm hover:bg-(--ui-warning-strong) hover:shadow-md",info:"border border-blue-600 bg-blue-600 text-white shadow-sm hover:bg-blue-700 hover:shadow-md dark:border-blue-500 dark:bg-blue-500 dark:text-white dark:hover:bg-blue-400",subtle:"border ui-border ui-surface ui-text-muted hover:text-(--ui-text) hover:bg-(--ui-surface-soft)",dark:"border border-zinc-900 bg-zinc-900 text-white shadow-sm hover:bg-black hover:shadow-md dark:border-zinc-100 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white",light:"border border-zinc-200 bg-white text-zinc-900 shadow-sm hover:bg-zinc-50 hover:shadow-md dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800",primaryOutline:"border border-(--ui-primary) ui-primary bg-transparent hover:bg-(--ui-primary-soft) hover:border-(--ui-primary-strong) hover:text-(--ui-primary-strong)",dangerOutline:"border border-(--ui-danger) ui-danger bg-transparent hover:bg-(--ui-danger-soft) hover:border-(--ui-danger-strong) hover:text-(--ui-danger-strong)",successOutline:"border border-(--ui-success) ui-success bg-transparent hover:bg-(--ui-success-soft) hover:border-(--ui-success-strong) hover:text-(--ui-success-strong)",gradient:"bg-linear-to-r from-(--ui-primary) to-(--ui-accent) ui-text-inverse shadow-sm hover:from-(--ui-primary-strong) hover:to-(--ui-accent-strong) hover:shadow-md"},size:{"2xs":"h-4 px-1 py-3 text-md rounded",xs:"h-7 px-2.5 py-1 text-xs rounded-md",sm:"h-8 px-3 py-1.5 text-sm rounded-md",default:"h-9 px-4 py-2 text-sm rounded-md",md:"h-10 px-4 py-2 text-sm rounded-md",lg:"h-11 px-6 py-2.5 text-base rounded-md",xl:"h-12 px-8 py-3 text-base rounded-lg","2xl":"h-14 px-10 py-3.5 text-lg rounded-lg","icon-sm":"h-8 w-8 p-0",icon:"h-10 w-10 p-0","icon-lg":"h-12 w-12 p-0"}},defaultVariants:{variant:"default",size:"default"}}),h=e.computed(()=>({"2xs":"h-3 w-3",xs:"h-3.5 w-3.5",sm:"h-4 w-4",default:"h-4 w-4",md:"h-4 w-4",lg:"h-5 w-5",xl:"h-5 w-5","2xl":"h-6 w-6","icon-sm":"h-4 w-4",icon:"h-5 w-5","icon-lg":"h-6 w-6"})[o.size]||"h-4 w-4"),g=e.computed(()=>({"2xs":"h-3 w-3",xs:"h-3.5 w-3.5",sm:"h-4 w-4",default:"h-4 w-4",md:"h-4 w-4",lg:"h-5 w-5",xl:"h-5 w-5","2xl":"h-6 w-6","icon-sm":"h-4 w-4",icon:"h-5 w-5","icon-lg":"h-6 w-6"})[o.size]||"h-4 w-4");return(r,n)=>l.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",e.mergeProps({key:0,class:e.unref(b.cn)(e.unref(c)({variant:t.variant,size:t.size}),r.$attrs.class),disabled:u.value,"aria-disabled":u.value,"aria-busy":t.loading},r.$attrs),[t.loading?(e.openBlock(),e.createElementBlock("svg",{key:0,class:e.normalizeClass([g.value,"animate-spin mr-2 text-current"]),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[...n[0]||(n[0]=[e.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e.createElementVNode("path",{class:"opacity-75",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-width":"4",d:"M4 12a8 8 0 018-8"},null,-1)])],2)):e.createCommentVNode("",!0),t.icon&&!t.loading?(e.openBlock(),e.createBlock(p.default,{key:1,icon:t.icon,class:e.normalizeClass(h.value)},null,8,["icon","class"])):e.createCommentVNode("",!0),t.loading&&t.loadingText?(e.openBlock(),e.createElementBlock("span",w,e.toDisplayString(t.loadingText),1)):e.renderSlot(r.$slots,"default",{key:3})],16,v))}});exports.default=y;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs");exports.default=e._sfc_main;
@@ -1,190 +1,4 @@
1
- import { inject as x, computed as i, createElementBlock as s, createCommentVNode as a, openBlock as n, mergeProps as y, unref as h, createBlock as z, renderSlot as k, normalizeClass as g, createElementVNode as m, toDisplayString as B } from "vue";
2
- import { cva as S } from "class-variance-authority";
3
- import { cn as O } from "../utils/cn.js";
4
- import A from "./Icon.js";
5
- import { AUTH_RESOLVER_KEY as C } from "../lib/auth.js";
6
- const E = ["disabled", "aria-disabled", "aria-busy"], M = { key: 2 }, D = /* @__PURE__ */ Object.assign({
7
- inheritAttrs: !1
8
- }, {
9
- __name: "Button",
10
- props: {
11
- variant: {
12
- type: String,
13
- default: "default",
14
- validator: (r) => [
15
- "primary",
16
- "default",
17
- "danger",
18
- "outline",
19
- "secondary",
20
- "ghost",
21
- "link",
22
- "success",
23
- "warning",
24
- "info",
25
- "subtle",
26
- "dark",
27
- "light",
28
- "primaryOutline",
29
- "dangerOutline",
30
- "successOutline",
31
- "gradient"
32
- ].includes(r)
33
- },
34
- size: {
35
- type: String,
36
- default: "default",
37
- validator: (r) => ["2xs", "xs", "sm", "default", "md", "lg", "xl", "2xl", "icon-sm", "icon", "icon-lg"].includes(r)
38
- },
39
- disabled: {
40
- type: Boolean,
41
- default: !1
42
- },
43
- loading: {
44
- type: Boolean,
45
- default: !1
46
- },
47
- loadingText: {
48
- type: String,
49
- default: null
50
- },
51
- icon: {
52
- type: String,
53
- default: null
54
- },
55
- permission: {
56
- type: [String, Array, Boolean, Function],
57
- default: null
58
- },
59
- role: {
60
- type: [String, Array, Boolean, Function],
61
- default: null
62
- },
63
- requireAll: {
64
- type: Boolean,
65
- default: !1
66
- },
67
- unauthorized: {
68
- type: String,
69
- default: "show",
70
- validator: (r) => ["show", "hide", "disable"].includes(r)
71
- }
72
- },
73
- setup(r) {
74
- const o = r, d = x(C, null), u = (e) => e == null ? null : typeof e == "boolean" ? e : typeof e == "function" ? !!e() : e, l = i(() => {
75
- const e = u(o.permission), t = u(o.role);
76
- return e === null && t === null ? !0 : (e === null || typeof e == "boolean") && (t === null || typeof t == "boolean") ? (e ?? !0) && (t ?? !0) : typeof d == "function" ? !!d({
77
- permission: e,
78
- role: t,
79
- requireAll: o.requireAll
80
- }) : !0;
81
- }), b = i(() => o.unauthorized === "hide" && !l.value), f = i(() => o.unauthorized === "disable" && !l.value), c = i(() => o.disabled || o.loading || f.value), p = S(
82
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-[color,background-color,border-color,box-shadow,transform] duration-200 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-primary) focus-visible:ring-offset-2 active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50",
83
- {
84
- variants: {
85
- variant: {
86
- primary: "ui-primary-bg shadow-sm hover:bg-(--ui-primary-strong) hover:shadow-md",
87
- default: "ui-primary-bg shadow-sm hover:bg-(--ui-primary-strong) hover:shadow-md",
88
- danger: "ui-danger-bg shadow-sm hover:bg-(--ui-danger-strong) hover:shadow-md",
89
- outline: "border ui-border-strong ui-surface ui-text hover:bg-(--ui-surface-soft) hover:border-(--ui-primary) hover:text-(--ui-primary)",
90
- secondary: "border ui-border ui-surface-muted ui-text hover:bg-(--ui-surface-soft) hover:shadow-sm",
91
- ghost: "bg-transparent ui-text-muted hover:bg-[color:color-mix(in oklab, var(--ui-accent-soft), transparent 40%)] hover:text-(--ui-text)",
92
- link: "ui-primary underline-offset-4 hover:underline hover:text-(--ui-primary-strong)",
93
- success: "ui-success-bg shadow-sm hover:bg-(--ui-success-strong) hover:shadow-md",
94
- warning: "ui-warning-bg shadow-sm hover:bg-(--ui-warning-strong) hover:shadow-md",
95
- info: "border border-blue-600 bg-blue-600 text-white shadow-sm hover:bg-blue-700 hover:shadow-md dark:border-blue-500 dark:bg-blue-500 dark:text-white dark:hover:bg-blue-400",
96
- subtle: "border ui-border ui-surface ui-text-muted hover:text-(--ui-text) hover:bg-(--ui-surface-soft)",
97
- dark: "border border-zinc-900 bg-zinc-900 text-white shadow-sm hover:bg-black hover:shadow-md dark:border-zinc-100 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-white",
98
- light: "border border-zinc-200 bg-white text-zinc-900 shadow-sm hover:bg-zinc-50 hover:shadow-md dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800",
99
- primaryOutline: "border border-(--ui-primary) ui-primary bg-transparent hover:bg-(--ui-primary-soft) hover:border-(--ui-primary-strong) hover:text-(--ui-primary-strong)",
100
- dangerOutline: "border border-(--ui-danger) ui-danger bg-transparent hover:bg-(--ui-danger-soft) hover:border-(--ui-danger-strong) hover:text-(--ui-danger-strong)",
101
- successOutline: "border border-(--ui-success) ui-success bg-transparent hover:bg-(--ui-success-soft) hover:border-(--ui-success-strong) hover:text-(--ui-success-strong)",
102
- gradient: "bg-linear-to-r from-(--ui-primary) to-(--ui-accent) ui-text-inverse shadow-sm hover:from-(--ui-primary-strong) hover:to-(--ui-accent-strong) hover:shadow-md"
103
- },
104
- size: {
105
- "2xs": "h-4 px-1 py-3 text-md rounded",
106
- xs: "h-7 px-2.5 py-1 text-xs rounded-md",
107
- sm: "h-8 px-3 py-1.5 text-sm rounded-md",
108
- default: "h-9 px-4 py-2 text-sm rounded-md",
109
- md: "h-10 px-4 py-2 text-sm rounded-md",
110
- lg: "h-11 px-6 py-2.5 text-base rounded-md",
111
- xl: "h-12 px-8 py-3 text-base rounded-lg",
112
- "2xl": "h-14 px-10 py-3.5 text-lg rounded-lg",
113
- "icon-sm": "h-8 w-8 p-0",
114
- icon: "h-10 w-10 p-0",
115
- "icon-lg": "h-12 w-12 p-0"
116
- }
117
- },
118
- defaultVariants: {
119
- variant: "default",
120
- size: "default"
121
- }
122
- }
123
- ), v = i(() => ({
124
- "2xs": "h-3 w-3",
125
- xs: "h-3.5 w-3.5",
126
- sm: "h-4 w-4",
127
- default: "h-4 w-4",
128
- md: "h-4 w-4",
129
- lg: "h-5 w-5",
130
- xl: "h-5 w-5",
131
- "2xl": "h-6 w-6",
132
- "icon-sm": "h-4 w-4",
133
- icon: "h-5 w-5",
134
- "icon-lg": "h-6 w-6"
135
- })[o.size] || "h-4 w-4"), w = i(() => ({
136
- "2xs": "h-3 w-3",
137
- xs: "h-3.5 w-3.5",
138
- sm: "h-4 w-4",
139
- default: "h-4 w-4",
140
- md: "h-4 w-4",
141
- lg: "h-5 w-5",
142
- xl: "h-5 w-5",
143
- "2xl": "h-6 w-6",
144
- "icon-sm": "h-4 w-4",
145
- icon: "h-5 w-5",
146
- "icon-lg": "h-6 w-6"
147
- })[o.size] || "h-4 w-4");
148
- return (e, t) => b.value ? a("", !0) : (n(), s("button", y({
149
- key: 0,
150
- class: h(O)(h(p)({ variant: r.variant, size: r.size }), e.$attrs.class),
151
- disabled: c.value,
152
- "aria-disabled": c.value,
153
- "aria-busy": r.loading
154
- }, e.$attrs), [
155
- r.loading ? (n(), s("svg", {
156
- key: 0,
157
- class: g([w.value, "animate-spin mr-2 text-current"]),
158
- xmlns: "http://www.w3.org/2000/svg",
159
- fill: "none",
160
- viewBox: "0 0 24 24"
161
- }, [...t[0] || (t[0] = [
162
- m("circle", {
163
- class: "opacity-25",
164
- cx: "12",
165
- cy: "12",
166
- r: "10",
167
- stroke: "currentColor",
168
- "stroke-width": "4"
169
- }, null, -1),
170
- m("path", {
171
- class: "opacity-75",
172
- fill: "none",
173
- stroke: "currentColor",
174
- "stroke-linecap": "round",
175
- "stroke-width": "4",
176
- d: "M4 12a8 8 0 018-8"
177
- }, null, -1)
178
- ])], 2)) : a("", !0),
179
- r.icon && !r.loading ? (n(), z(A, {
180
- key: 1,
181
- icon: r.icon,
182
- class: g(v.value)
183
- }, null, 8, ["icon", "class"])) : a("", !0),
184
- r.loading && r.loadingText ? (n(), s("span", M, B(r.loadingText), 1)) : k(e.$slots, "default", { key: 3 })
185
- ], 16, E));
186
- }
187
- });
1
+ import { _ as f } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
188
2
  export {
189
- D as default
3
+ f as default
190
4
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("class-variance-authority"),m=require("../utils/cn.cjs"),Te=require("./Checkbox.cjs"),De=require("./DataTableHeader.cjs"),Re=require("./DataTableRow.cjs"),Ae=require("./DataTableToolBar.cjs"),ze=require("./DataTablePagination.cjs"),$e=require("./FilterDrawer.cjs"),I=require("./Icon.cjs"),R=require("./Loader.cjs"),Pe=require("./Button.cjs"),Le=require("./Tooltip.cjs"),Fe=require("./Modal.cjs"),je=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),qe={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},Oe={class:"relative"},Me={class:"flex items-center justify-center"},Ke=["onClick"],Ue={class:"flex items-center gap-2"},Ie={key:1,class:"flex flex-col"},He=["onClick"],Je={key:1},Ge={key:1,class:"flex items-center gap-1 justify-center"},Qe={key:1,class:"text-xs"},Xe={key:2},Ye=["colspan"],Ze={class:"flex flex-col items-center justify-center py-12"},We={class:"ui-text mb-4 flex justify-center"},_e={class:"ui-text text-lg font-medium mb-2"},et={class:"ui-text text-sm"},tt={class:"p-6"},lt={class:"text-xl font-bold ui-text whitespace-pre-wrap wrap-break-word"},at={__name:"DataTable",props:{data:{type:Array,required:!0},columns:{type:Array,required:!0},title:{type:String,default:null},description:{type:String,default:null},selectable:{type:Boolean,default:!1},selectedItems:{type:Array,default:()=>[]},sortBy:{type:String,default:null},sortOrder:{type:String,default:"asc",validator:a=>["asc","desc"].includes(a)},pageSize:{type:Number,default:10},showPagination:{type:Boolean,default:!0},striped:{type:Boolean,default:!0},hoverable:{type:Boolean,default:!0},clickableRows:{type:Boolean,default:!1},highlightUnreadRows:{type:Boolean,default:!0},unreadCreatedAtField:{type:String,default:""},unreadMode:{type:String,default:"all",validator:a=>["all","new-only"].includes(a)},unreadPersistKey:{type:String,default:""},emptyText:{type:String,default:"No data available"},emptySubtitle:{type:String,default:"Try adjusting your search or filter criteria"},rowKey:{type:String,default:"id"},variant:{type:String,default:"default",validator:a=>["default","bordered","minimal"].includes(a)},density:{type:String,default:"compact",validator:a=>["compact","normal","comfortable"].includes(a)},headerVariant:{type:String,default:"default"},headerPadding:{type:String,default:"normal"},paginationVariant:{type:String,default:"default"},paginationPadding:{type:String,default:"normal"},actions:{type:Array,default:()=>[]},showActionsColumn:{type:Boolean,default:!0},addButton:{type:Object,default:()=>({})},loading:{type:Boolean,default:!1},dataLoading:{type:Boolean,default:!1},sortLoading:{type:Boolean,default:!1},paginationLoading:{type:Boolean,default:!1},bulkLoading:{type:Boolean,default:!1},rowLoading:{type:Object,default:()=>({})},loadingType:{type:String,default:"dots",validator:a=>["spin","pulse","bounce","ripple","bars","dots","ring"].includes(a)},loadingSize:{type:String,default:"medium",validator:a=>["small","medium","large","xl"].includes(a)},loadingColor:{type:String,default:"#3b82f6"},loadingText:{type:String,default:"Loading..."},loadingTextPosition:{type:String,default:"bottom",validator:a=>["top","bottom"].includes(a)},loadingBackground:{type:String,default:"rgba(255, 255, 255, 0.95)"},showSkeleton:{type:Boolean,default:!0},skeletonRows:{type:Number,default:10},showToolbar:{type:Boolean,default:!1},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showFilterDrawer:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})},themeScope:{type:String,default:"default",validator:a=>["default","module"].includes(a)}},emits:["selection-change","sort-change","row-click","page-change","page-size-change","refresh","action","update:density","toggle-column","add","add-button-click","update:filterRules"],setup(a,{expose:H,emit:J}){const n=a,u=J,G=e.useSlots(),k=e.ref(1),b=e.ref(n.pageSize),p=e.ref(n.columns.map(t=>t.key)),g=e.ref(n.sortBy),y=e.ref(n.sortOrder),h=e.ref(!1),w=e.ref(""),V=e.ref(!1),C=e.ref(new Set),A=e.ref(Date.now()),Q=(t,l)=>{if(!(!t||!l))return String(l).split(".").reduce((r,o)=>r?.[o],t)},N=e.computed(()=>Array.isArray(n.filterRules?.rules)?n.filterRules.rules.length:0),X=t=>{if(t&&typeof t=="object"){const l=t.from||"",r=t.to||"";return l&&r?`${l} to ${r}`:l||r||""}return String(t??"")},Y=()=>u("update:filterRules",{logic:"all",rules:[]}),Z=e.computed(()=>(n.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:X(t.value)}))),W=S.cva("border ui-border-strong rounded-2xl relative overflow-hidden flex flex-col gap-y-2 px-2 pb-2",{variants:{variant:{default:"shadow-sm ui-border-strong",bordered:"border-2 ui-border-strong",minimal:"border-none ui-border-strong shadow-none bg-transparent"}},defaultVariants:{variant:"default"}}),_=S.cva("min-w-full",{variants:{variant:{default:"divide-y divide-(--ui-border-strong)",bordered:"border-collapse [&_td]:border [&_th]:border [&_td]:border-(--ui-border-strong) [&_th]:border-(--ui-border-strong)",minimal:"divide-y divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),ee=S.cva("",{variants:{variant:{default:" border-b border-(--ui-border-strong)",bordered:" border-b-2 border-(--ui-border-strong)",minimal:"bg-transparent border-b border-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),te=S.cva("divide-y",{variants:{variant:{default:" divide-(--ui-border-strong)",bordered:" divide-(--ui-border-strong)",minimal:"bg-transparent divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),f=e.computed(()=>{let t=[...n.data];if(g.value){const l=n.columns.find(r=>r.key===g.value);l&&t.sort((r,o)=>{const c=T(r,l),i=T(o,l);return c<i?y.value==="asc"?-1:1:c>i?y.value==="asc"?1:-1:0})}return t}),z=e.computed(()=>Math.ceil(f.value.length/b.value)),$=e.computed(()=>{if(!n.showPagination)return f.value;const t=(k.value-1)*b.value,l=t+b.value;return f.value.slice(t,l)}),B=e.computed(()=>n.columns.filter(t=>p.value.includes(t.key))),le=e.computed(()=>n.columns.filter(t=>t.toggleable!==!1)),ae=(t,l)=>{l?p.value.includes(t)||p.value.push(t):p.value=p.value.filter(r=>r!==t),u("toggle-column",{key:t,visible:l})},E=e.computed(()=>n.showActionsColumn?G.actions?!0:!n.actions||n.actions.length===0?!1:n.actions.some(l=>l.permission===void 0?!0:typeof l.permission=="boolean"?l.permission===!0:typeof l.permission=="function"):!1),ne=e.computed(()=>{let t=n.columns.length;return n.selectable&&t++,E.value&&t++,t}),oe=t=>n.actions.filter(l=>{if(l.permission!==void 0){if(typeof l.permission=="function"){if(!l.permission(t))return!1}else if(!l.permission)return!1}return l.visible&&typeof l.visible=="function"?l.visible(t):!0}),P=(t,l)=>t.permission&&typeof t.permission=="function"?t.permission(l):!0,L=(t,l)=>t.disabled&&typeof t.disabled=="function"?t.disabled(l):!1,re=(t,l)=>{L(t,l)||!P(t,l)||(u("action",{action:t.key,item:l,actionConfig:t}),t.onClick&&typeof t.onClick=="function"&&t.onClick(l))},se=t=>({default:"default",primary:"gradient",secondary:"secondary",danger:"danger",success:"success",warning:"warning",info:"info",subtle:"subtle",dark:"dark",light:"light",primaryOutline:"primaryOutline",dangerOutline:"dangerOutline",successOutline:"successOutline",outline:"outline",link:"link",ghost:"ghost"})[t]||"ghost",F=e.computed(()=>f.value.length>0&&f.value.every(t=>D(t))),ie=e.computed(()=>{const t=f.value.filter(l=>D(l)).length;return t>0&&t<f.value.length}),T=(t,l)=>l.accessor?l.accessor(t):l.key.split(".").reduce((r,o)=>r?.[o],t),v=(t,l)=>t[n.rowKey]||l,D=t=>n.selectedItems.some(l=>v(l)===v(t)),de=t=>{const l=[...n.selectedItems],r=l.findIndex(o=>v(o)===v(t));r>-1?l.splice(r,1):l.push(t),u("selection-change",l)},j=()=>{if(n.loading||n.dataLoading)return;const t=F.value?[]:[...f.value];u("selection-change",t)},ue=async t=>{!t.sortable||n.loading||n.sortLoading||(g.value===t.key?y.value=y.value==="asc"?"desc":"asc":(g.value=t.key,y.value="asc"),u("sort-change",{column:t.key,direction:y.value}))},ce=t=>{if(!n.loading){if(n.highlightUnreadRows){const l=v(t.item,t.index);C.value.add(String(l)),ye()}u("row-click",t)}},fe=(t,l)=>{if(!n.highlightUnreadRows)return!1;const r=String(v(t,l));if(C.value.has(r))return!1;if(n.unreadMode==="all")return!0;const o=n.unreadCreatedAtField;if(!o)return!1;const c=o.includes(".")?Q(t,o):t?.[o];if(!c)return!1;const i=String(c).trim();let d=new Date(i).getTime();if(Number.isNaN(d)){const s=i.match(/^(\d{2})[-/](\d{2})[-/](\d{4})$/);if(s){const[,U,Ne,Ee]=s;d=new Date(`${Ee}-${Ne}-${U}T00:00:00`).getTime()}}if(Number.isNaN(d))return!1;if(/^\d{4}-\d{2}-\d{2}$/.test(i)){const s=new Date(A.value);return s.setHours(0,0,0,0),d>=s.getTime()}return d>=A.value},me=(t,l)=>n.highlightUnreadRows?fe(t,l)?"font-bold !bg-[color:color-mix(in_oklab,var(--module-soft,var(--ui-primary-soft))_62%,var(--ui-surface)_38%)]":"font-normal !bg-[color:color-mix(in_oklab,var(--module-soft-alt,var(--ui-surface-soft))_42%,var(--ui-surface)_58%)]":"",ge=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{const t=window.localStorage.getItem(n.unreadPersistKey);if(!t)return;const l=JSON.parse(t);Array.isArray(l)&&(C.value=new Set(l.map(String)))}catch{}},ye=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{window.localStorage.setItem(n.unreadPersistKey,JSON.stringify(Array.from(C.value)))}catch{}},q=async t=>{n.paginationLoading||n.loading||(k.value=t,u("page-change",t))},pe=async t=>{n.paginationLoading||n.loading||(b.value=t,k.value=1,u("page-size-change",t))},ve=e.computed(()=>m.cn(W({variant:n.variant}),n.themeScope==="module"&&"kv-module-themed-table")),be=e.computed(()=>m.cn(_({variant:n.variant}))),ke=e.computed(()=>m.cn(ee({variant:n.variant}))),he=e.computed(()=>m.cn(te({variant:n.variant}))),we=t=>{const l={compact:"px-3.5 py-1.5",normal:"px-6 py-3",comfortable:"px-8 py-4"};return m.cn(l[n.density],"text-left text-sm font-extrabold ui-text uppercase tracking-wider",{"cursor-pointer hover:bg-(--ui-surface) transition-colors":t.sortable&&!n.loading&&!n.sortLoading,"cursor-not-allowed opacity-50":n.loading||n.sortLoading&&g.value===t.key})},Ce=()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text")},x=(t,l)=>{const r=T(t,l);return typeof l=="object"&&l.formatter?l.formatter(r,t):r==null?"":r instanceof Date?r.toLocaleDateString():Array.isArray(r)?r.join(", "):r},Be=(t,l=10)=>{if(!t)return t;const r=t.toString().split(" ");return r.length<=l?t:r.slice(0,l).join(" ")+"..."},xe=t=>{w.value||(w.value=t,h.value=!0)},Se=()=>{h.value=!1,w.value=""},O=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text w-12")}),M=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-md font-extrabold text-center")}),Ve=e.computed(()=>{const t={compact:"px-4 py-4",normal:"px-6 py-6",comfortable:"px-8 py-8"};return m.cn(t[n.density],"text-center")}),K=(t,l)=>m.cn({"ui-primary":g.value===t.key&&y.value===l,"ui-text":g.value!==t.key||y.value!==l});return e.watch(()=>n.selectedItems,()=>{},{deep:!0}),e.watch(()=>n.pageSize,t=>{b.value=t}),e.watch(()=>n.columns,t=>{p.value=t.map(l=>l.key)},{deep:!0}),H({refresh:()=>{u("refresh")},goToPage:t=>{q(t)},selectAll:()=>{j()},clearSelection:()=>{u("selection-change",[])},getCurrentPage:()=>k.value,getTotalPages:()=>z.value,getSelectedItems:()=>n.selectedItems}),ge(),(t,l)=>{const r=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ve.value)},[a.title||a.description||t.$slots.header?(e.openBlock(),e.createBlock(De.default,{key:0,title:a.title,description:a.description,variant:a.headerVariant,padding:a.headerPadding},{header:e.withCtx(()=>[e.renderSlot(t.$slots,"header",{},void 0,!0)]),filters:e.withCtx(()=>[e.renderSlot(t.$slots,"filters",{},void 0,!0)]),_:3},8,["title","description","variant","padding"])):e.createCommentVNode("",!0),a.showToolbar?(e.openBlock(),e.createBlock(Ae.default,{key:1,"selected-items":a.selectedItems,"total-items":f.value.length,"show-density-toggle":a.showDensityToggle,"show-column-toggle":a.showColumnToggle,"show-refresh":a.showRefresh,"active-filters":a.showFilterDrawer?Z.value:[],"default-filter-rules":a.defaultFilterRules,"add-button":a.addButton,density:a.density,"toggleable-columns":le.value,"visible-columns":p.value,"onUpdate:density":l[1]||(l[1]=o=>u("update:density",o)),onToggleColumn:ae,onRefresh:l[2]||(l[2]=o=>t.$emit("refresh")),onAdd:l[3]||(l[3]=o=>u("add")),onAddButtonClick:l[4]||(l[4]=o=>u("add-button-click",o))},{actions:e.withCtx(()=>[e.renderSlot(t.$slots,"toolbar-actions",{},void 0,!0)]),"actions-after-add":e.withCtx(()=>[a.showFilterDrawer?(e.openBlock(),e.createElementBlock("button",{key:0,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[0]||(l[0]=o=>V.value=!0)},[e.createVNode(r,{icon:"filter"}),l[8]||(l[8]=e.createTextVNode(" Filter ",-1)),N.value>0?(e.openBlock(),e.createElementBlock("span",qe,e.toDisplayString(N.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"toolbar-actions-after-add",{},void 0,!0)]),"active-filter-actions":e.withCtx(()=>[a.showFilterDrawer&&N.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:Y}," Clear filter ")):e.createCommentVNode("",!0)]),_:3},8,["selected-items","total-items","show-density-toggle","show-column-toggle","show-refresh","active-filters","default-filter-rules","add-button","density","toggleable-columns","visible-columns"])):e.createCommentVNode("",!0),a.showFilterDrawer?(e.openBlock(),e.createBlock($e.default,{key:2,open:V.value,fields:a.filterFields,"model-value":a.filterRules,"onUpdate:modelValue":l[5]||(l[5]=o=>t.$emit("update:filterRules",o)),onClose:l[6]||(l[6]=o=>V.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[a.loading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:a.loadingType,size:a.loadingSize,color:a.loadingColor,overlay:!0,text:a.loadingText,"text-position":a.loadingTextPosition,"background-color":a.loadingBackground,class:"table-loading-overlay"},null,8,["type","size","color","text","text-position","background-color"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["overflow-x-auto",{"opacity-50":a.loading}])},[e.createElementVNode("table",{class:e.normalizeClass(be.value)},[e.createElementVNode("thead",{class:e.normalizeClass(ke.value)},[e.createElementVNode("tr",null,[a.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(O.value)},[e.createElementVNode("div",Me,[a.bulkLoading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):(e.openBlock(),e.createBlock(Te.default,{key:1,"model-value":F.value,indeterminate:ie.value,disabled:a.loading||a.dataLoading,"onUpdate:modelValue":j},null,8,["model-value","indeterminate","disabled"]))])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,o=>(e.openBlock(),e.createElementBlock("th",{key:o.key,class:e.normalizeClass(we(o)),onClick:c=>ue(o)},[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(o.label),1),a.sortLoading&&g.value===o.key?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):o.sortable?(e.openBlock(),e.createElementBlock("div",Ie,[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"asc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[9]||(l[9]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"},null,-1)])],2)),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"desc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[10]||(l[10]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"},null,-1)])],2))])):e.createCommentVNode("",!0)])],10,Ke))),128)),E.value?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(M.value)}," Actions ",2)):e.createCommentVNode("",!0)])],2),e.createElementVNode("tbody",{class:e.normalizeClass(he.value)},[a.showSkeleton&&(a.loading||a.dataLoading)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.skeletonRows,o=>(e.openBlock(),e.createElementBlock("tr",{key:`skeleton-${o}`,class:"animate-pulse"},[a.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(O.value)},[...l[11]||(l[11]=[e.createElementVNode("div",{class:"w-4 h-4 ui-bg rounded"},null,-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,c=>(e.openBlock(),e.createElementBlock("td",{key:c.key,class:e.normalizeClass(Ce())},[...l[12]||(l[12]=[e.createElementVNode("div",{class:"h-4 ui-bg rounded w-3/4"},null,-1)])],2))),128)),E.value?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(M.value)},[...l[13]||(l[13]=[e.createElementVNode("div",{class:"flex gap-2 justify-center"},[e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"}),e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"})],-1)])],2)):e.createCommentVNode("",!0)]))),128)):$.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,(o,c)=>(e.openBlock(),e.createBlock(Re.default,{key:v(o,c),item:o,columns:B.value,index:c,selectable:a.selectable,"is-selected":D(o),striped:a.striped,hoverable:a.hoverable,"clickable-rows":a.clickableRows,"row-class":me(o,c),density:a.density,variant:a.variant,onToggleSelection:de,onRowClick:ce},e.createSlots({actions:e.withCtx(({item:i,index:d})=>[t.$slots.actions?e.renderSlot(t.$slots,"actions",{key:0,item:i,index:d},void 0,!0):a.actions.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe(i),s=>(e.openBlock(),e.createBlock(Le.default,{key:s.key,content:typeof s.tooltip=="function"?s.tooltip(i):s.tooltip||s.label||s.key,placement:"top"},{default:e.withCtx(()=>[e.createVNode(Pe.default,{variant:se(s.variant),size:"xs",disabled:L(s,i)||!P(s,i),class:e.normalizeClass(["h-8 w-8",typeof s.class=="function"?s.class(i):s.class]),onClick:e.withModifiers(U=>re(s,i),["stop"])},{default:e.withCtx(()=>[s.icon?(e.openBlock(),e.createBlock(I.default,{key:0,icon:s.icon,class:"w-4 h-4"},null,8,["icon"])):s.label?(e.openBlock(),e.createElementBlock("span",Qe,e.toDisplayString(s.label),1)):e.createCommentVNode("",!0)]),_:2},1032,["variant","disabled","class","onClick"])]),_:2},1032,["content"]))),128))])):e.createCommentVNode("",!0)]),_:2},[e.renderList(B.value,i=>({name:`cell-${i.key}`,fn:e.withCtx(d=>[e.renderSlot(t.$slots,`cell-${i.key}`,e.mergeProps({ref_for:!0},d),()=>[x(d.item,d.column).toString().split(" ").length>10?(e.openBlock(),e.createElementBlock("span",{key:0,class:"cursor-pointer ui-primary hover:text-(--ui-primary)",onClick:e.withModifiers(s=>xe(x(d.item,d.column)),["stop"])},e.toDisplayString(Be(x(d.item,d.column))),9,He)):(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(x(d.item,d.column)),1))],!0)])}))]),1032,["item","columns","index","selectable","is-selected","striped","hoverable","clickable-rows","row-class","density","variant"]))),128)):(e.openBlock(),e.createElementBlock("tr",Xe,[e.createElementVNode("td",{colspan:ne.value,class:e.normalizeClass(Ve.value)},[e.renderSlot(t.$slots,"empty",{},()=>[e.createElementVNode("div",Ze,[e.createElementVNode("div",We,[e.createVNode(I.default,{icon:"search",class:"w-16 h-16"})]),e.createElementVNode("p",_e,e.toDisplayString(a.emptyText),1),e.createElementVNode("p",et,e.toDisplayString(a.emptySubtitle),1)])],!0)],10,Ye)]))],2)],2)],2)]),a.showPagination||t.$slots.footer?(e.openBlock(),e.createBlock(ze.default,{key:3,"current-page":k.value,"total-pages":z.value,total:f.value.length,"page-size":b.value,"show-pagination":a.showPagination,selectable:a.selectable,"selected-count":a.selectedItems.length,variant:a.paginationVariant,padding:a.paginationPadding,loading:a.paginationLoading,disabled:a.loading||a.dataLoading,"onUpdate:currentPage":q,"onUpdate:pageSize":pe},{footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer",{},void 0,!0)]),_:3},8,["current-page","total-pages","total","page-size","show-pagination","selectable","selected-count","variant","padding","loading","disabled"])):e.createCommentVNode("",!0),e.createVNode(Fe.default,{modelValue:h.value,"onUpdate:modelValue":l[7]||(l[7]=o=>h.value=o),size:"lg",onClose:Se},{default:e.withCtx(()=>[e.createElementVNode("div",tt,[l[14]||(l[14]=e.createElementVNode("h3",{class:"text-md font-semibold mb-4"}," Full Text ",-1)),e.createElementVNode("div",lt,e.toDisplayString(w.value),1)])]),_:1},8,["modelValue"])],2)}}},nt=je._export_sfc(at,[["__scopeId","data-v-dc691687"]]);exports.default=nt;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("class-variance-authority"),m=require("../utils/cn.cjs"),Te=require("./Checkbox.cjs"),De=require("./DataTableHeader.cjs"),Re=require("./DataTableRow.cjs"),Ae=require("./DataTableToolBar.cjs"),ze=require("./DataTablePagination.cjs"),$e=require("./FilterDrawer.cjs"),I=require("./Icon.cjs"),R=require("./Loader.cjs"),Pe=require("../Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs"),Le=require("./Tooltip.cjs"),Fe=require("./Modal.cjs"),je=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),qe={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},Oe={class:"relative"},Me={class:"flex items-center justify-center"},Ke=["onClick"],Ue={class:"flex items-center gap-2"},Ie={key:1,class:"flex flex-col"},He=["onClick"],Je={key:1},Ge={key:1,class:"flex items-center gap-1 justify-center"},Qe={key:1,class:"text-xs"},Xe={key:2},Ye=["colspan"],Ze={class:"flex flex-col items-center justify-center py-12"},We={class:"ui-text mb-4 flex justify-center"},_e={class:"ui-text text-lg font-medium mb-2"},et={class:"ui-text text-sm"},tt={class:"p-6"},lt={class:"text-xl font-bold ui-text whitespace-pre-wrap wrap-break-word"},at={__name:"DataTable",props:{data:{type:Array,required:!0},columns:{type:Array,required:!0},title:{type:String,default:null},description:{type:String,default:null},selectable:{type:Boolean,default:!1},selectedItems:{type:Array,default:()=>[]},sortBy:{type:String,default:null},sortOrder:{type:String,default:"asc",validator:a=>["asc","desc"].includes(a)},pageSize:{type:Number,default:10},showPagination:{type:Boolean,default:!0},striped:{type:Boolean,default:!0},hoverable:{type:Boolean,default:!0},clickableRows:{type:Boolean,default:!1},highlightUnreadRows:{type:Boolean,default:!0},unreadCreatedAtField:{type:String,default:""},unreadMode:{type:String,default:"all",validator:a=>["all","new-only"].includes(a)},unreadPersistKey:{type:String,default:""},emptyText:{type:String,default:"No data available"},emptySubtitle:{type:String,default:"Try adjusting your search or filter criteria"},rowKey:{type:String,default:"id"},variant:{type:String,default:"default",validator:a=>["default","bordered","minimal"].includes(a)},density:{type:String,default:"compact",validator:a=>["compact","normal","comfortable"].includes(a)},headerVariant:{type:String,default:"default"},headerPadding:{type:String,default:"normal"},paginationVariant:{type:String,default:"default"},paginationPadding:{type:String,default:"normal"},actions:{type:Array,default:()=>[]},showActionsColumn:{type:Boolean,default:!0},addButton:{type:Object,default:()=>({})},loading:{type:Boolean,default:!1},dataLoading:{type:Boolean,default:!1},sortLoading:{type:Boolean,default:!1},paginationLoading:{type:Boolean,default:!1},bulkLoading:{type:Boolean,default:!1},rowLoading:{type:Object,default:()=>({})},loadingType:{type:String,default:"dots",validator:a=>["spin","pulse","bounce","ripple","bars","dots","ring"].includes(a)},loadingSize:{type:String,default:"medium",validator:a=>["small","medium","large","xl"].includes(a)},loadingColor:{type:String,default:"#3b82f6"},loadingText:{type:String,default:"Loading..."},loadingTextPosition:{type:String,default:"bottom",validator:a=>["top","bottom"].includes(a)},loadingBackground:{type:String,default:"rgba(255, 255, 255, 0.95)"},showSkeleton:{type:Boolean,default:!0},skeletonRows:{type:Number,default:10},showToolbar:{type:Boolean,default:!1},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showFilterDrawer:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})},themeScope:{type:String,default:"default",validator:a=>["default","module"].includes(a)}},emits:["selection-change","sort-change","row-click","page-change","page-size-change","refresh","action","update:density","toggle-column","add","add-button-click","update:filterRules"],setup(a,{expose:H,emit:J}){const n=a,u=J,G=e.useSlots(),k=e.ref(1),b=e.ref(n.pageSize),p=e.ref(n.columns.map(t=>t.key)),g=e.ref(n.sortBy),y=e.ref(n.sortOrder),h=e.ref(!1),w=e.ref(""),V=e.ref(!1),C=e.ref(new Set),A=e.ref(Date.now()),Q=(t,l)=>{if(!(!t||!l))return String(l).split(".").reduce((r,o)=>r?.[o],t)},N=e.computed(()=>Array.isArray(n.filterRules?.rules)?n.filterRules.rules.length:0),X=t=>{if(t&&typeof t=="object"){const l=t.from||"",r=t.to||"";return l&&r?`${l} to ${r}`:l||r||""}return String(t??"")},Y=()=>u("update:filterRules",{logic:"all",rules:[]}),Z=e.computed(()=>(n.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:X(t.value)}))),W=S.cva("border ui-border-strong rounded-2xl relative overflow-hidden flex flex-col gap-y-2 px-2 pb-2",{variants:{variant:{default:"shadow-sm ui-border-strong",bordered:"border-2 ui-border-strong",minimal:"border-none ui-border-strong shadow-none bg-transparent"}},defaultVariants:{variant:"default"}}),_=S.cva("min-w-full",{variants:{variant:{default:"divide-y divide-(--ui-border-strong)",bordered:"border-collapse [&_td]:border [&_th]:border [&_td]:border-(--ui-border-strong) [&_th]:border-(--ui-border-strong)",minimal:"divide-y divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),ee=S.cva("",{variants:{variant:{default:" border-b border-(--ui-border-strong)",bordered:" border-b-2 border-(--ui-border-strong)",minimal:"bg-transparent border-b border-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),te=S.cva("divide-y",{variants:{variant:{default:" divide-(--ui-border-strong)",bordered:" divide-(--ui-border-strong)",minimal:"bg-transparent divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),f=e.computed(()=>{let t=[...n.data];if(g.value){const l=n.columns.find(r=>r.key===g.value);l&&t.sort((r,o)=>{const c=T(r,l),i=T(o,l);return c<i?y.value==="asc"?-1:1:c>i?y.value==="asc"?1:-1:0})}return t}),z=e.computed(()=>Math.ceil(f.value.length/b.value)),$=e.computed(()=>{if(!n.showPagination)return f.value;const t=(k.value-1)*b.value,l=t+b.value;return f.value.slice(t,l)}),B=e.computed(()=>n.columns.filter(t=>p.value.includes(t.key))),le=e.computed(()=>n.columns.filter(t=>t.toggleable!==!1)),ae=(t,l)=>{l?p.value.includes(t)||p.value.push(t):p.value=p.value.filter(r=>r!==t),u("toggle-column",{key:t,visible:l})},E=e.computed(()=>n.showActionsColumn?G.actions?!0:!n.actions||n.actions.length===0?!1:n.actions.some(l=>l.permission===void 0?!0:typeof l.permission=="boolean"?l.permission===!0:typeof l.permission=="function"):!1),ne=e.computed(()=>{let t=n.columns.length;return n.selectable&&t++,E.value&&t++,t}),oe=t=>n.actions.filter(l=>{if(l.permission!==void 0){if(typeof l.permission=="function"){if(!l.permission(t))return!1}else if(!l.permission)return!1}return l.visible&&typeof l.visible=="function"?l.visible(t):!0}),P=(t,l)=>t.permission&&typeof t.permission=="function"?t.permission(l):!0,L=(t,l)=>t.disabled&&typeof t.disabled=="function"?t.disabled(l):!1,re=(t,l)=>{L(t,l)||!P(t,l)||(u("action",{action:t.key,item:l,actionConfig:t}),t.onClick&&typeof t.onClick=="function"&&t.onClick(l))},se=t=>({default:"default",primary:"gradient",secondary:"secondary",danger:"danger",success:"success",warning:"warning",info:"info",subtle:"subtle",dark:"dark",light:"light",primaryOutline:"primaryOutline",dangerOutline:"dangerOutline",successOutline:"successOutline",outline:"outline",link:"link",ghost:"ghost"})[t]||"ghost",F=e.computed(()=>f.value.length>0&&f.value.every(t=>D(t))),ie=e.computed(()=>{const t=f.value.filter(l=>D(l)).length;return t>0&&t<f.value.length}),T=(t,l)=>l.accessor?l.accessor(t):l.key.split(".").reduce((r,o)=>r?.[o],t),v=(t,l)=>t[n.rowKey]||l,D=t=>n.selectedItems.some(l=>v(l)===v(t)),de=t=>{const l=[...n.selectedItems],r=l.findIndex(o=>v(o)===v(t));r>-1?l.splice(r,1):l.push(t),u("selection-change",l)},j=()=>{if(n.loading||n.dataLoading)return;const t=F.value?[]:[...f.value];u("selection-change",t)},ue=async t=>{!t.sortable||n.loading||n.sortLoading||(g.value===t.key?y.value=y.value==="asc"?"desc":"asc":(g.value=t.key,y.value="asc"),u("sort-change",{column:t.key,direction:y.value}))},ce=t=>{if(!n.loading){if(n.highlightUnreadRows){const l=v(t.item,t.index);C.value.add(String(l)),ye()}u("row-click",t)}},fe=(t,l)=>{if(!n.highlightUnreadRows)return!1;const r=String(v(t,l));if(C.value.has(r))return!1;if(n.unreadMode==="all")return!0;const o=n.unreadCreatedAtField;if(!o)return!1;const c=o.includes(".")?Q(t,o):t?.[o];if(!c)return!1;const i=String(c).trim();let d=new Date(i).getTime();if(Number.isNaN(d)){const s=i.match(/^(\d{2})[-/](\d{2})[-/](\d{4})$/);if(s){const[,U,Ne,Ee]=s;d=new Date(`${Ee}-${Ne}-${U}T00:00:00`).getTime()}}if(Number.isNaN(d))return!1;if(/^\d{4}-\d{2}-\d{2}$/.test(i)){const s=new Date(A.value);return s.setHours(0,0,0,0),d>=s.getTime()}return d>=A.value},me=(t,l)=>n.highlightUnreadRows?fe(t,l)?"font-bold !bg-[color:color-mix(in_oklab,var(--module-soft,var(--ui-primary-soft))_62%,var(--ui-surface)_38%)]":"font-normal !bg-[color:color-mix(in_oklab,var(--module-soft-alt,var(--ui-surface-soft))_42%,var(--ui-surface)_58%)]":"",ge=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{const t=window.localStorage.getItem(n.unreadPersistKey);if(!t)return;const l=JSON.parse(t);Array.isArray(l)&&(C.value=new Set(l.map(String)))}catch{}},ye=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{window.localStorage.setItem(n.unreadPersistKey,JSON.stringify(Array.from(C.value)))}catch{}},q=async t=>{n.paginationLoading||n.loading||(k.value=t,u("page-change",t))},pe=async t=>{n.paginationLoading||n.loading||(b.value=t,k.value=1,u("page-size-change",t))},ve=e.computed(()=>m.cn(W({variant:n.variant}),n.themeScope==="module"&&"kv-module-themed-table")),be=e.computed(()=>m.cn(_({variant:n.variant}))),ke=e.computed(()=>m.cn(ee({variant:n.variant}))),he=e.computed(()=>m.cn(te({variant:n.variant}))),we=t=>{const l={compact:"px-3.5 py-1.5",normal:"px-6 py-3",comfortable:"px-8 py-4"};return m.cn(l[n.density],"text-left text-sm font-extrabold ui-text uppercase tracking-wider",{"cursor-pointer hover:bg-(--ui-surface) transition-colors":t.sortable&&!n.loading&&!n.sortLoading,"cursor-not-allowed opacity-50":n.loading||n.sortLoading&&g.value===t.key})},Ce=()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text")},x=(t,l)=>{const r=T(t,l);return typeof l=="object"&&l.formatter?l.formatter(r,t):r==null?"":r instanceof Date?r.toLocaleDateString():Array.isArray(r)?r.join(", "):r},Be=(t,l=10)=>{if(!t)return t;const r=t.toString().split(" ");return r.length<=l?t:r.slice(0,l).join(" ")+"..."},xe=t=>{w.value||(w.value=t,h.value=!0)},Se=()=>{h.value=!1,w.value=""},O=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text w-12")}),M=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-md font-extrabold text-center")}),Ve=e.computed(()=>{const t={compact:"px-4 py-4",normal:"px-6 py-6",comfortable:"px-8 py-8"};return m.cn(t[n.density],"text-center")}),K=(t,l)=>m.cn({"ui-primary":g.value===t.key&&y.value===l,"ui-text":g.value!==t.key||y.value!==l});return e.watch(()=>n.selectedItems,()=>{},{deep:!0}),e.watch(()=>n.pageSize,t=>{b.value=t}),e.watch(()=>n.columns,t=>{p.value=t.map(l=>l.key)},{deep:!0}),H({refresh:()=>{u("refresh")},goToPage:t=>{q(t)},selectAll:()=>{j()},clearSelection:()=>{u("selection-change",[])},getCurrentPage:()=>k.value,getTotalPages:()=>z.value,getSelectedItems:()=>n.selectedItems}),ge(),(t,l)=>{const r=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ve.value)},[a.title||a.description||t.$slots.header?(e.openBlock(),e.createBlock(De.default,{key:0,title:a.title,description:a.description,variant:a.headerVariant,padding:a.headerPadding},{header:e.withCtx(()=>[e.renderSlot(t.$slots,"header",{},void 0,!0)]),filters:e.withCtx(()=>[e.renderSlot(t.$slots,"filters",{},void 0,!0)]),_:3},8,["title","description","variant","padding"])):e.createCommentVNode("",!0),a.showToolbar?(e.openBlock(),e.createBlock(Ae.default,{key:1,"selected-items":a.selectedItems,"total-items":f.value.length,"show-density-toggle":a.showDensityToggle,"show-column-toggle":a.showColumnToggle,"show-refresh":a.showRefresh,"active-filters":a.showFilterDrawer?Z.value:[],"default-filter-rules":a.defaultFilterRules,"add-button":a.addButton,density:a.density,"toggleable-columns":le.value,"visible-columns":p.value,"onUpdate:density":l[1]||(l[1]=o=>u("update:density",o)),onToggleColumn:ae,onRefresh:l[2]||(l[2]=o=>t.$emit("refresh")),onAdd:l[3]||(l[3]=o=>u("add")),onAddButtonClick:l[4]||(l[4]=o=>u("add-button-click",o))},{actions:e.withCtx(()=>[e.renderSlot(t.$slots,"toolbar-actions",{},void 0,!0)]),"actions-after-add":e.withCtx(()=>[a.showFilterDrawer?(e.openBlock(),e.createElementBlock("button",{key:0,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[0]||(l[0]=o=>V.value=!0)},[e.createVNode(r,{icon:"filter"}),l[8]||(l[8]=e.createTextVNode(" Filter ",-1)),N.value>0?(e.openBlock(),e.createElementBlock("span",qe,e.toDisplayString(N.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"toolbar-actions-after-add",{},void 0,!0)]),"active-filter-actions":e.withCtx(()=>[a.showFilterDrawer&&N.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:Y}," Clear filter ")):e.createCommentVNode("",!0)]),_:3},8,["selected-items","total-items","show-density-toggle","show-column-toggle","show-refresh","active-filters","default-filter-rules","add-button","density","toggleable-columns","visible-columns"])):e.createCommentVNode("",!0),a.showFilterDrawer?(e.openBlock(),e.createBlock($e.default,{key:2,open:V.value,fields:a.filterFields,"model-value":a.filterRules,"onUpdate:modelValue":l[5]||(l[5]=o=>t.$emit("update:filterRules",o)),onClose:l[6]||(l[6]=o=>V.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[a.loading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:a.loadingType,size:a.loadingSize,color:a.loadingColor,overlay:!0,text:a.loadingText,"text-position":a.loadingTextPosition,"background-color":a.loadingBackground,class:"table-loading-overlay"},null,8,["type","size","color","text","text-position","background-color"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["overflow-x-auto",{"opacity-50":a.loading}])},[e.createElementVNode("table",{class:e.normalizeClass(be.value)},[e.createElementVNode("thead",{class:e.normalizeClass(ke.value)},[e.createElementVNode("tr",null,[a.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(O.value)},[e.createElementVNode("div",Me,[a.bulkLoading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):(e.openBlock(),e.createBlock(Te.default,{key:1,"model-value":F.value,indeterminate:ie.value,disabled:a.loading||a.dataLoading,"onUpdate:modelValue":j},null,8,["model-value","indeterminate","disabled"]))])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,o=>(e.openBlock(),e.createElementBlock("th",{key:o.key,class:e.normalizeClass(we(o)),onClick:c=>ue(o)},[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(o.label),1),a.sortLoading&&g.value===o.key?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):o.sortable?(e.openBlock(),e.createElementBlock("div",Ie,[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"asc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[9]||(l[9]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"},null,-1)])],2)),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"desc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[10]||(l[10]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"},null,-1)])],2))])):e.createCommentVNode("",!0)])],10,Ke))),128)),E.value?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(M.value)}," Actions ",2)):e.createCommentVNode("",!0)])],2),e.createElementVNode("tbody",{class:e.normalizeClass(he.value)},[a.showSkeleton&&(a.loading||a.dataLoading)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.skeletonRows,o=>(e.openBlock(),e.createElementBlock("tr",{key:`skeleton-${o}`,class:"animate-pulse"},[a.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(O.value)},[...l[11]||(l[11]=[e.createElementVNode("div",{class:"w-4 h-4 ui-bg rounded"},null,-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,c=>(e.openBlock(),e.createElementBlock("td",{key:c.key,class:e.normalizeClass(Ce())},[...l[12]||(l[12]=[e.createElementVNode("div",{class:"h-4 ui-bg rounded w-3/4"},null,-1)])],2))),128)),E.value?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(M.value)},[...l[13]||(l[13]=[e.createElementVNode("div",{class:"flex gap-2 justify-center"},[e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"}),e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"})],-1)])],2)):e.createCommentVNode("",!0)]))),128)):$.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,(o,c)=>(e.openBlock(),e.createBlock(Re.default,{key:v(o,c),item:o,columns:B.value,index:c,selectable:a.selectable,"is-selected":D(o),striped:a.striped,hoverable:a.hoverable,"clickable-rows":a.clickableRows,"row-class":me(o,c),density:a.density,variant:a.variant,onToggleSelection:de,onRowClick:ce},e.createSlots({actions:e.withCtx(({item:i,index:d})=>[t.$slots.actions?e.renderSlot(t.$slots,"actions",{key:0,item:i,index:d},void 0,!0):a.actions.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe(i),s=>(e.openBlock(),e.createBlock(Le.default,{key:s.key,content:typeof s.tooltip=="function"?s.tooltip(i):s.tooltip||s.label||s.key,placement:"top"},{default:e.withCtx(()=>[e.createVNode(Pe._sfc_main,{variant:se(s.variant),size:"xs",disabled:L(s,i)||!P(s,i),class:e.normalizeClass(["h-8 w-8",typeof s.class=="function"?s.class(i):s.class]),onClick:e.withModifiers(U=>re(s,i),["stop"])},{default:e.withCtx(()=>[s.icon?(e.openBlock(),e.createBlock(I.default,{key:0,icon:s.icon,class:"w-4 h-4"},null,8,["icon"])):s.label?(e.openBlock(),e.createElementBlock("span",Qe,e.toDisplayString(s.label),1)):e.createCommentVNode("",!0)]),_:2},1032,["variant","disabled","class","onClick"])]),_:2},1032,["content"]))),128))])):e.createCommentVNode("",!0)]),_:2},[e.renderList(B.value,i=>({name:`cell-${i.key}`,fn:e.withCtx(d=>[e.renderSlot(t.$slots,`cell-${i.key}`,e.mergeProps({ref_for:!0},d),()=>[x(d.item,d.column).toString().split(" ").length>10?(e.openBlock(),e.createElementBlock("span",{key:0,class:"cursor-pointer ui-primary hover:text-(--ui-primary)",onClick:e.withModifiers(s=>xe(x(d.item,d.column)),["stop"])},e.toDisplayString(Be(x(d.item,d.column))),9,He)):(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(x(d.item,d.column)),1))],!0)])}))]),1032,["item","columns","index","selectable","is-selected","striped","hoverable","clickable-rows","row-class","density","variant"]))),128)):(e.openBlock(),e.createElementBlock("tr",Xe,[e.createElementVNode("td",{colspan:ne.value,class:e.normalizeClass(Ve.value)},[e.renderSlot(t.$slots,"empty",{},()=>[e.createElementVNode("div",Ze,[e.createElementVNode("div",We,[e.createVNode(I.default,{icon:"search",class:"w-16 h-16"})]),e.createElementVNode("p",_e,e.toDisplayString(a.emptyText),1),e.createElementVNode("p",et,e.toDisplayString(a.emptySubtitle),1)])],!0)],10,Ye)]))],2)],2)],2)]),a.showPagination||t.$slots.footer?(e.openBlock(),e.createBlock(ze.default,{key:3,"current-page":k.value,"total-pages":z.value,total:f.value.length,"page-size":b.value,"show-pagination":a.showPagination,selectable:a.selectable,"selected-count":a.selectedItems.length,variant:a.paginationVariant,padding:a.paginationPadding,loading:a.paginationLoading,disabled:a.loading||a.dataLoading,"onUpdate:currentPage":q,"onUpdate:pageSize":pe},{footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer",{},void 0,!0)]),_:3},8,["current-page","total-pages","total","page-size","show-pagination","selectable","selected-count","variant","padding","loading","disabled"])):e.createCommentVNode("",!0),e.createVNode(Fe.default,{modelValue:h.value,"onUpdate:modelValue":l[7]||(l[7]=o=>h.value=o),size:"lg",onClose:Se},{default:e.withCtx(()=>[e.createElementVNode("div",tt,[l[14]||(l[14]=e.createElementVNode("h3",{class:"text-md font-semibold mb-4"}," Full Text ",-1)),e.createElementVNode("div",lt,e.toDisplayString(w.value),1)])]),_:1},8,["modelValue"])],2)}}},nt=je._export_sfc(at,[["__scopeId","data-v-dc691687"]]);exports.default=nt;
@@ -9,7 +9,7 @@ import _e from "./DataTablePagination.js";
9
9
  import et from "./FilterDrawer.js";
10
10
  import re from "./Icon.js";
11
11
  import H from "./Loader.js";
12
- import tt from "./Button.js";
12
+ import { _ as tt } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
13
13
  import at from "./Tooltip.js";
14
14
  import lt from "./Modal.js";
15
15
  import { _ as nt } from "../_plugin-vue_export-helper-CHgC5LLL.js";