@expcat/tigercat-vue 1.2.23 → 1.2.31

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 (141) hide show
  1. package/dist/{chunk-OK7MTFAX.mjs → chunk-4GYBJBFJ.mjs} +76 -19
  2. package/dist/{chunk-YCBU3C4T.mjs → chunk-4J5EK3WY.mjs} +100 -35
  3. package/dist/{chunk-2C5TOAYI.js → chunk-663C2UX7.js} +2 -2
  4. package/dist/{chunk-P453RVKY.js → chunk-6G5IMGTC.js} +85 -14
  5. package/dist/{chunk-NMVKDWMK.mjs → chunk-7U673KY5.mjs} +77 -8
  6. package/dist/{chunk-5ZAIW5W3.mjs → chunk-AQE5RZDE.mjs} +1 -1
  7. package/dist/{chunk-DYJ4Z47L.mjs → chunk-BPRKQVIL.mjs} +143 -46
  8. package/dist/{chunk-V6YR7CPK.js → chunk-CNRBYRK6.js} +56 -21
  9. package/dist/{chunk-KOLARHCT.js → chunk-DEDRUUK4.js} +1 -0
  10. package/dist/{chunk-VPNIZPIF.js → chunk-DS7RQFEG.js} +15 -2
  11. package/dist/{chunk-BGMQIUPP.js → chunk-EU4IGIPC.js} +7 -4
  12. package/dist/{chunk-CN7HFUFN.mjs → chunk-F5S26BR3.mjs} +7 -4
  13. package/dist/{chunk-YCBLL5K3.js → chunk-FKLK6RHZ.js} +76 -19
  14. package/dist/{chunk-U5S3ZEYZ.js → chunk-H5JDEKIV.js} +100 -35
  15. package/dist/{chunk-XMGU52S5.js → chunk-L6W3XL3A.js} +143 -46
  16. package/dist/{chunk-F5JPUPWI.mjs → chunk-OF4MY6EC.mjs} +1 -0
  17. package/dist/{chunk-KLX7YHP2.mjs → chunk-OZLSZQXF.mjs} +83 -12
  18. package/dist/{chunk-ATRF7NPJ.mjs → chunk-PKMSTN65.mjs} +55 -20
  19. package/dist/{chunk-PUSTYAMS.mjs → chunk-RE7K3KNW.mjs} +16 -3
  20. package/dist/{chunk-IIEMDA36.mjs → chunk-S45NWVQS.mjs} +14 -8
  21. package/dist/{chunk-CBZIVUCJ.js → chunk-VES3OJOP.js} +14 -8
  22. package/dist/{chunk-OW5D4LU6.js → chunk-YS6YQKYU.js} +80 -11
  23. package/dist/components/ActivityFeed.d.mts +2 -2
  24. package/dist/components/ActivityFeed.d.ts +2 -2
  25. package/dist/components/ActivityFeed.js +2 -2
  26. package/dist/components/ActivityFeed.mjs +1 -1
  27. package/dist/components/Alert.d.mts +5 -5
  28. package/dist/components/Alert.d.ts +5 -5
  29. package/dist/components/Anchor.d.mts +2 -2
  30. package/dist/components/Anchor.d.ts +2 -2
  31. package/dist/components/BackTop.d.mts +1 -1
  32. package/dist/components/BackTop.d.ts +1 -1
  33. package/dist/components/ButtonGroup.d.mts +1 -1
  34. package/dist/components/ButtonGroup.d.ts +1 -1
  35. package/dist/components/Card.d.mts +1 -1
  36. package/dist/components/Card.d.ts +1 -1
  37. package/dist/components/ChatWindow.js +3 -2
  38. package/dist/components/ChatWindow.mjs +2 -1
  39. package/dist/components/CodeEditor.d.mts +1 -1
  40. package/dist/components/CodeEditor.d.ts +1 -1
  41. package/dist/components/CollapsePanel.d.mts +1 -1
  42. package/dist/components/CollapsePanel.d.ts +1 -1
  43. package/dist/components/CommentThread.d.mts +1 -1
  44. package/dist/components/CommentThread.d.ts +1 -1
  45. package/dist/components/CommentThread.js +2 -2
  46. package/dist/components/CommentThread.mjs +1 -1
  47. package/dist/components/Countdown.d.mts +1 -1
  48. package/dist/components/Countdown.d.ts +1 -1
  49. package/dist/components/CropUpload.js +2 -2
  50. package/dist/components/CropUpload.mjs +1 -1
  51. package/dist/components/DataTableWithToolbar.d.mts +3 -3
  52. package/dist/components/DataTableWithToolbar.d.ts +3 -3
  53. package/dist/components/DataTableWithToolbar.js +4 -3
  54. package/dist/components/DataTableWithToolbar.mjs +3 -2
  55. package/dist/components/DatePicker.d.mts +1 -1
  56. package/dist/components/DatePicker.d.ts +1 -1
  57. package/dist/components/Descriptions.d.mts +1 -1
  58. package/dist/components/Descriptions.d.ts +1 -1
  59. package/dist/components/Drawer.d.mts +4 -4
  60. package/dist/components/Drawer.d.ts +4 -4
  61. package/dist/components/Empty.d.mts +1 -1
  62. package/dist/components/Empty.d.ts +1 -1
  63. package/dist/components/FileManager.d.mts +1 -1
  64. package/dist/components/FileManager.d.ts +1 -1
  65. package/dist/components/FormWizard.d.mts +12 -3
  66. package/dist/components/FormWizard.d.ts +12 -3
  67. package/dist/components/FormWizard.js +3 -3
  68. package/dist/components/FormWizard.mjs +2 -2
  69. package/dist/components/HeatmapChart.d.mts +1 -1
  70. package/dist/components/HeatmapChart.d.ts +1 -1
  71. package/dist/components/InfiniteScroll.d.mts +1 -1
  72. package/dist/components/InfiniteScroll.d.ts +1 -1
  73. package/dist/components/Kanban.d.mts +1 -1
  74. package/dist/components/Kanban.d.ts +1 -1
  75. package/dist/components/Kanban.js +3 -3
  76. package/dist/components/Kanban.mjs +2 -2
  77. package/dist/components/List.d.mts +2 -2
  78. package/dist/components/List.d.ts +2 -2
  79. package/dist/components/MarkdownEditor.d.mts +1 -1
  80. package/dist/components/MarkdownEditor.d.ts +1 -1
  81. package/dist/components/Menu.d.mts +5 -5
  82. package/dist/components/Menu.d.ts +5 -5
  83. package/dist/components/Modal.d.mts +8 -8
  84. package/dist/components/Modal.d.ts +8 -8
  85. package/dist/components/NotificationCenter.d.mts +3 -3
  86. package/dist/components/NotificationCenter.d.ts +3 -3
  87. package/dist/components/NotificationCenter.js +2 -2
  88. package/dist/components/NotificationCenter.mjs +1 -1
  89. package/dist/components/NumberKeyboard.d.mts +1 -1
  90. package/dist/components/NumberKeyboard.d.ts +1 -1
  91. package/dist/components/Pagination.d.mts +2 -2
  92. package/dist/components/Pagination.d.ts +2 -2
  93. package/dist/components/Popconfirm.d.mts +5 -5
  94. package/dist/components/Popconfirm.d.ts +5 -5
  95. package/dist/components/Popover.d.mts +1 -1
  96. package/dist/components/Popover.d.ts +1 -1
  97. package/dist/components/Result.d.mts +1 -1
  98. package/dist/components/Result.d.ts +1 -1
  99. package/dist/components/ScrollSpy.d.mts +1 -1
  100. package/dist/components/ScrollSpy.d.ts +1 -1
  101. package/dist/components/Space.d.mts +1 -1
  102. package/dist/components/Space.d.ts +1 -1
  103. package/dist/components/Splitter.d.mts +1 -1
  104. package/dist/components/Splitter.d.ts +1 -1
  105. package/dist/components/Spotlight.d.mts +4 -4
  106. package/dist/components/Spotlight.d.ts +4 -4
  107. package/dist/components/Statistic.d.mts +1 -1
  108. package/dist/components/Statistic.d.ts +1 -1
  109. package/dist/components/Steps.d.mts +2 -2
  110. package/dist/components/Steps.d.ts +2 -2
  111. package/dist/components/Steps.js +2 -2
  112. package/dist/components/Steps.mjs +1 -1
  113. package/dist/components/StepsItem.js +3 -3
  114. package/dist/components/StepsItem.mjs +1 -1
  115. package/dist/components/Table.d.mts +1 -1
  116. package/dist/components/Table.d.ts +1 -1
  117. package/dist/components/Table.js +3 -2
  118. package/dist/components/Table.mjs +2 -1
  119. package/dist/components/Tabs.d.mts +2 -2
  120. package/dist/components/Tabs.d.ts +2 -2
  121. package/dist/components/Tag.d.mts +2 -2
  122. package/dist/components/Tag.d.ts +2 -2
  123. package/dist/components/TaskBoard.d.mts +1 -1
  124. package/dist/components/TaskBoard.d.ts +1 -1
  125. package/dist/components/TaskBoard.js +2 -2
  126. package/dist/components/TaskBoard.mjs +1 -1
  127. package/dist/components/TimePicker.d.mts +2 -2
  128. package/dist/components/TimePicker.d.ts +2 -2
  129. package/dist/components/Timeline.d.mts +2 -2
  130. package/dist/components/Timeline.d.ts +2 -2
  131. package/dist/components/Tour.d.mts +4 -4
  132. package/dist/components/Tour.d.ts +4 -4
  133. package/dist/components/Tree.d.mts +2 -2
  134. package/dist/components/Tree.d.ts +2 -2
  135. package/dist/components/Upload.d.mts +4 -4
  136. package/dist/components/Upload.d.ts +4 -4
  137. package/dist/components/VirtualTable.d.mts +1 -1
  138. package/dist/components/VirtualTable.d.ts +1 -1
  139. package/dist/index.js +15 -15
  140. package/dist/index.mjs +14 -14
  141. package/package.json +2 -2
@@ -45,9 +45,11 @@ var renderAction = (item, action, index) => {
45
45
  key,
46
46
  size: "sm",
47
47
  variant: "primary",
48
+ underline: false,
48
49
  href: action.href,
49
50
  target: action.target,
50
51
  disabled: action.disabled,
52
+ className: "inline-flex items-center px-2.5 py-1 rounded-lg hover:bg-blue-50/50 dark:hover:bg-blue-950/20 text-xs font-semibold transition-all duration-200",
51
53
  onClick: () => action.onClick?.(item, action)
52
54
  },
53
55
  {
@@ -138,7 +140,7 @@ var ActivityFeed = defineComponent({
138
140
  return h(
139
141
  "div",
140
142
  {
141
- class: activityItemClasses
143
+ class: classNames(activityItemClasses, "p-4 rounded-2xl border border-gray-100/70 dark:border-gray-800/40 bg-white/40 dark:bg-gray-900/15 backdrop-blur-sm shadow-sm transition-all duration-300 hover:shadow-md hover:shadow-gray-100/30 dark:hover:shadow-none hover:bg-white dark:hover:bg-gray-900/30 hover:-translate-y-0.5 w-full")
142
144
  },
143
145
  [
144
146
  h("div", { class: activityItemLayoutClasses }, [
@@ -146,14 +148,14 @@ var ActivityFeed = defineComponent({
146
148
  size: "sm",
147
149
  src: item.user.avatar,
148
150
  text: item.user.name,
149
- className: "shrink-0"
151
+ className: "shrink-0 ring-2 ring-white dark:ring-gray-900 shadow-sm transition-transform hover:scale-105 duration-200"
150
152
  }) : null,
151
153
  h("div", { class: activityItemBodyClasses }, [
152
154
  h("div", { class: activityItemHeaderClasses }, [
153
155
  h("div", { class: activityItemTitleGroupClasses }, [
154
156
  titleText ? h(
155
157
  Text,
156
- { tag: "div", size: "sm", weight: "medium", class: "truncate" },
158
+ { tag: "div", size: "sm", weight: "semibold", class: "text-gray-900 dark:text-gray-100 hover:text-blue-600 dark:hover:text-blue-400 transition-colors cursor-pointer truncate" },
157
159
  { default: () => titleText }
158
160
  ) : null,
159
161
  item.status ? h(
@@ -161,7 +163,7 @@ var ActivityFeed = defineComponent({
161
163
  {
162
164
  variant: item.status.variant ?? "default",
163
165
  size: "sm",
164
- className: "shrink-0"
166
+ className: "shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold tracking-wide uppercase border border-current bg-opacity-10 shadow-sm"
165
167
  },
166
168
  { default: () => item.status?.label }
167
169
  ) : null
@@ -172,7 +174,7 @@ var ActivityFeed = defineComponent({
172
174
  tag: "div",
173
175
  size: "xs",
174
176
  color: "muted",
175
- class: "shrink-0 whitespace-nowrap"
177
+ class: "shrink-0 whitespace-nowrap font-medium text-gray-400 dark:text-gray-500"
176
178
  },
177
179
  { default: () => timeText }
178
180
  ) : null
@@ -183,11 +185,11 @@ var ActivityFeed = defineComponent({
183
185
  tag: "div",
184
186
  size: "sm",
185
187
  color: "muted",
186
- class: activityItemDescriptionClasses
188
+ class: classNames(activityItemDescriptionClasses, "text-gray-600 dark:text-gray-300 leading-relaxed pl-0.5 mt-1")
187
189
  },
188
190
  { default: () => descriptionText }
189
191
  ) : null,
190
- actionNodes?.length ? h("div", { class: activityItemActionsClasses }, actionNodes) : null
192
+ actionNodes?.length ? h("div", { class: classNames(activityItemActionsClasses, "mt-2.5") }, actionNodes) : null
191
193
  ])
192
194
  ])
193
195
  ]
@@ -200,7 +202,7 @@ var ActivityFeed = defineComponent({
200
202
  const feedAriaBusy = computed(() => attrs["aria-busy"] ?? (props.loading ? "true" : void 0));
201
203
  return () => {
202
204
  if (props.loading) {
203
- const loadingNode = slots.loading ? slots.loading() : h(Loading, { text: props.loadingText });
205
+ const loadingNode = slots.loading ? slots.loading() : h(Loading, { text: props.loadingText, class: "text-blue-500 dark:text-blue-400 font-medium" });
204
206
  return h(
205
207
  "div",
206
208
  {
@@ -215,16 +217,35 @@ var ActivityFeed = defineComponent({
215
217
  [
216
218
  h(
217
219
  Card,
218
- { variant: "bordered", size: "sm", className: "tiger-activity-feed-loading" },
219
220
  {
220
- default: () => h("div", { class: "flex items-center justify-center py-4" }, loadingNode)
221
+ variant: "bordered",
222
+ size: "sm",
223
+ className: "tiger-activity-feed-loading bg-white/40 dark:bg-gray-900/20 border-gray-100 dark:border-gray-800/80 backdrop-blur-sm rounded-2xl shadow-sm overflow-hidden"
224
+ },
225
+ {
226
+ default: () => h("div", { class: "flex items-center justify-center py-8" }, loadingNode)
221
227
  }
222
228
  )
223
229
  ]
224
230
  );
225
231
  }
226
232
  if (resolvedGroups.value.length === 0) {
227
- const emptyNode = slots.empty ? slots.empty() : h(Text, { tag: "div", size: "sm", color: "muted" }, { default: () => props.emptyText });
233
+ const emptyNode = slots.empty ? slots.empty() : h("div", { class: "flex flex-col items-center justify-center py-12 px-4" }, [
234
+ h("svg", {
235
+ class: "w-12 h-12 text-gray-300 dark:text-gray-600 mb-3 animate-pulse",
236
+ fill: "none",
237
+ viewBox: "0 0 24 24",
238
+ stroke: "currentColor",
239
+ strokeWidth: "1.5"
240
+ }, [
241
+ h("path", {
242
+ strokeLinecap: "round",
243
+ strokeLinejoin: "round",
244
+ d: "M12 7.5h1.5m-1.5 3h1.5m-7.5 3h10.5m-10.5 3h10.5m-13.5-9h16.5M3 5.25h18M3 18.75h18"
245
+ })
246
+ ]),
247
+ h(Text, { tag: "div", size: "sm", color: "muted", class: "font-medium" }, { default: () => props.emptyText })
248
+ ]);
228
249
  return h(
229
250
  "div",
230
251
  {
@@ -238,9 +259,13 @@ var ActivityFeed = defineComponent({
238
259
  [
239
260
  h(
240
261
  Card,
241
- { variant: "bordered", size: "sm", className: "tiger-activity-feed-empty" },
242
262
  {
243
- default: () => h("div", { class: "flex items-center justify-center py-6" }, emptyNode)
263
+ variant: "bordered",
264
+ size: "sm",
265
+ className: "tiger-activity-feed-empty bg-white/40 dark:bg-gray-900/20 border-gray-100 dark:border-gray-800/80 backdrop-blur-sm rounded-2xl shadow-sm overflow-hidden"
266
+ },
267
+ {
268
+ default: () => emptyNode
244
269
  }
245
270
  )
246
271
  ]
@@ -261,14 +286,46 @@ var ActivityFeed = defineComponent({
261
286
  const groupTitle = group.title;
262
287
  const timelineItems = toActivityTimelineItems(group.items);
263
288
  return h("div", { key: group.key ?? groupIndex, class: "space-y-3" }, [
264
- props.showGroupTitle && groupTitle ? headerNode ?? h(
265
- Text,
266
- { tag: "div", size: "sm", weight: "medium", color: "muted" },
267
- { default: () => groupTitle }
268
- ) : null,
289
+ props.showGroupTitle && groupTitle ? headerNode ?? h("div", { class: "flex items-center gap-2 mb-2" }, [
290
+ h("span", { class: "w-1.5 h-3.5 bg-blue-500 rounded-full dark:bg-blue-400 shadow-sm shadow-blue-500/20" }),
291
+ h(
292
+ Text,
293
+ { tag: "span", size: "sm", weight: "bold", class: "text-gray-900 dark:text-gray-100 uppercase tracking-wider" },
294
+ { default: () => groupTitle }
295
+ )
296
+ ]) : null,
269
297
  h(
270
298
  Timeline,
271
- { items: timelineItems },
299
+ {
300
+ items: timelineItems,
301
+ style: {
302
+ "--tiger-border": "rgba(156, 163, 175, 0.18)"
303
+ },
304
+ renderDot: (timelineItem) => {
305
+ const activity = timelineItem.activity;
306
+ const statusVariant = activity?.status?.variant ?? "default";
307
+ const baseDotClass = "w-3 h-3 rounded-full border-2 border-white dark:border-gray-950 shadow-sm";
308
+ let colorClass = "bg-gray-300 dark:bg-gray-700";
309
+ let pulseClass = "";
310
+ if (statusVariant === "success") {
311
+ colorClass = "bg-emerald-500";
312
+ pulseClass = "bg-emerald-500/30";
313
+ } else if (statusVariant === "warning") {
314
+ colorClass = "bg-amber-500";
315
+ pulseClass = "bg-amber-500/30";
316
+ } else if (statusVariant === "error" || statusVariant === "danger") {
317
+ colorClass = "bg-rose-500";
318
+ pulseClass = "bg-rose-500/30";
319
+ } else if (statusVariant === "primary" || statusVariant === "info") {
320
+ colorClass = "bg-blue-500";
321
+ pulseClass = "bg-blue-500/30";
322
+ }
323
+ return h("div", { class: "relative flex items-center justify-center w-4 h-4" }, [
324
+ pulseClass ? h("span", { class: `absolute inline-flex h-full w-full rounded-full animate-ping opacity-75 ${pulseClass}` }) : null,
325
+ h("span", { class: `${baseDotClass} ${colorClass} relative z-10` })
326
+ ]);
327
+ }
328
+ },
272
329
  {
273
330
  item: ({ item, index }) => {
274
331
  const activity = item.activity;
@@ -285,7 +285,7 @@ var NotificationCenter = defineComponent({
285
285
  return h(
286
286
  "div",
287
287
  {
288
- class: "inline-flex self-start rounded-[var(--tiger-radius-sm,0.375rem)] border border-[var(--tiger-border,#e5e7eb)] overflow-hidden"
288
+ class: "inline-flex items-center gap-0.5 p-0.5 rounded-lg bg-gray-100/80 dark:bg-gray-800/60 self-start"
289
289
  },
290
290
  options.map(
291
291
  (option) => h(
@@ -293,9 +293,8 @@ var NotificationCenter = defineComponent({
293
293
  {
294
294
  key: option.key,
295
295
  class: classNames(
296
- "px-3 py-1 text-xs font-medium transition-colors",
297
- "border-r border-[var(--tiger-border,#e5e7eb)] last:border-r-0",
298
- currentReadFilter.value === option.key ? "bg-[var(--tiger-primary,#2563eb)] text-white" : "bg-[var(--tiger-surface,#ffffff)] text-[var(--tiger-text-muted,#6b7280)] hover:bg-[var(--tiger-surface-muted,#f9fafb)]"
296
+ "px-3.5 py-1 text-xs font-semibold rounded-md transition-all duration-200",
297
+ currentReadFilter.value === option.key ? "bg-white dark:bg-gray-700 text-gray-900 dark:text-white shadow-sm scale-102" : "text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white"
299
298
  ),
300
299
  onClick: () => handleReadFilterChange(option.key)
301
300
  },
@@ -311,26 +310,32 @@ var NotificationCenter = defineComponent({
311
310
  "div",
312
311
  {
313
312
  class: classNames(
314
- "flex items-start gap-3 w-full py-0.5 transition-colors",
315
- !isRead && "border-l-2 border-l-[var(--tiger-primary,#2563eb)] -ml-[2px] pl-[calc(0.75rem-2px)]"
313
+ "group relative flex items-start gap-3.5 w-full p-3.5 rounded-xl transition-all duration-300 hover:bg-gray-50/60 dark:hover:bg-gray-800/30",
314
+ !isRead ? "bg-blue-50/20 dark:bg-blue-950/5 hover:bg-blue-50/40 dark:hover:bg-blue-950/10 border-l-[3px] border-l-blue-500/80 -ml-[3px] pl-[calc(0.875rem-3px)]" : "border-l-[3px] border-l-transparent -ml-[3px] pl-[calc(0.875rem-3px)]"
316
315
  )
317
316
  },
318
317
  [
319
318
  h("div", { class: "flex-1 min-w-0" }, [
320
319
  h("div", { class: "flex items-baseline justify-between gap-2" }, [
321
- h(
322
- Text,
323
- {
324
- tag: "span",
325
- size: "sm",
326
- weight: isRead ? "normal" : "semibold"
327
- },
328
- { default: () => item.title }
329
- ),
320
+ h("div", { class: "flex items-center gap-1.5" }, [
321
+ h(
322
+ Text,
323
+ {
324
+ tag: "span",
325
+ size: "sm",
326
+ weight: isRead ? "normal" : "semibold",
327
+ class: isRead ? "text-gray-600 dark:text-gray-400" : "text-gray-900 dark:text-gray-100"
328
+ },
329
+ { default: () => item.title }
330
+ ),
331
+ !isRead ? h("span", {
332
+ class: "w-1.5 h-1.5 rounded-full bg-blue-500 dark:bg-blue-400 shrink-0 shadow-sm shadow-blue-500/40 animate-pulse"
333
+ }) : null
334
+ ]),
330
335
  timeText ? h(
331
336
  "span",
332
337
  {
333
- class: "text-xs text-[var(--tiger-text-muted,#6b7280)] whitespace-nowrap flex-shrink-0"
338
+ class: "text-[11px] text-gray-400 dark:text-gray-500 font-medium whitespace-nowrap flex-shrink-0 self-center"
334
339
  },
335
340
  timeText
336
341
  ) : null
@@ -338,7 +343,10 @@ var NotificationCenter = defineComponent({
338
343
  item.description ? h(
339
344
  "div",
340
345
  {
341
- class: "mt-0.5 text-xs text-[var(--tiger-text-muted,#6b7280)] line-clamp-2 leading-relaxed"
346
+ class: classNames(
347
+ "mt-1 text-xs leading-relaxed line-clamp-2",
348
+ isRead ? "text-gray-500 dark:text-gray-400" : "text-gray-600 dark:text-gray-300"
349
+ )
342
350
  },
343
351
  item.description
344
352
  ) : null
@@ -348,6 +356,7 @@ var NotificationCenter = defineComponent({
348
356
  {
349
357
  size: "sm",
350
358
  variant: "ghost",
359
+ class: "opacity-0 group-hover:opacity-100 focus:opacity-100 rounded-full px-2.5 py-1 text-[11px] font-semibold transition-all duration-200 bg-gray-100 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300 border-0 flex-shrink-0 self-center",
351
360
  onClick: (event) => {
352
361
  event.stopPropagation();
353
362
  handleItemReadChange(item, !isRead);
@@ -358,20 +367,65 @@ var NotificationCenter = defineComponent({
358
367
  ]
359
368
  );
360
369
  };
361
- const renderList = (items) => h(
362
- List,
363
- {
364
- dataSource: items,
365
- split: true,
366
- bordered: "divided",
367
- hoverable: true,
368
- emptyText: props.emptyText,
369
- onItemClick: handleItemClick
370
- },
371
- {
372
- renderItem: ({ item, index }) => renderListItem(item, index)
370
+ const renderList = (items) => {
371
+ if (items.length === 0) {
372
+ return h(
373
+ "div",
374
+ { class: "flex flex-col items-center justify-center py-14 px-4 text-center" },
375
+ [
376
+ h(
377
+ "div",
378
+ {
379
+ class: "p-3.5 bg-gray-50 dark:bg-gray-900 rounded-full mb-3 shadow-inner"
380
+ },
381
+ [
382
+ h(
383
+ "svg",
384
+ {
385
+ class: "w-8 h-8 text-gray-400 dark:text-gray-600 animate-pulse",
386
+ fill: "none",
387
+ viewBox: "0 0 24 24",
388
+ stroke: "currentColor",
389
+ strokeWidth: "1.5"
390
+ },
391
+ [
392
+ h("path", {
393
+ strokeLinecap: "round",
394
+ strokeLinejoin: "round",
395
+ d: "M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"
396
+ })
397
+ ]
398
+ )
399
+ ]
400
+ ),
401
+ h(
402
+ Text,
403
+ {
404
+ tag: "div",
405
+ size: "sm",
406
+ color: "muted",
407
+ class: "font-semibold text-gray-400 dark:text-gray-500"
408
+ },
409
+ { default: () => props.emptyText }
410
+ )
411
+ ]
412
+ );
373
413
  }
374
- );
414
+ return h(
415
+ List,
416
+ {
417
+ dataSource: items,
418
+ split: true,
419
+ bordered: "divided",
420
+ hoverable: true,
421
+ emptyText: props.emptyText,
422
+ onItemClick: handleItemClick
423
+ },
424
+ {
425
+ renderItem: ({ item, index }) => renderListItem(item, index)
426
+ }
427
+ );
428
+ };
375
429
  const renderTabs = () => h(
376
430
  Tabs,
377
431
  {
@@ -404,11 +458,15 @@ var NotificationCenter = defineComponent({
404
458
  const header = h("div", { class: "flex flex-col gap-3" }, [
405
459
  h("div", { class: "flex items-center justify-between" }, [
406
460
  h("div", { class: "flex items-center gap-2.5" }, [
407
- h(Text, { tag: "div", size: "base", weight: "bold" }, { default: () => props.title }),
461
+ h(
462
+ Text,
463
+ { tag: "div", size: "base", weight: "bold", class: "text-gray-900 dark:text-gray-100" },
464
+ { default: () => props.title }
465
+ ),
408
466
  totalUnread.value > 0 ? h(
409
467
  "span",
410
468
  {
411
- class: "inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-xs font-semibold rounded-full bg-[var(--tiger-primary,#2563eb)] text-white"
469
+ class: "inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[11px] font-bold rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 text-white shadow-sm shadow-blue-500/20 animate-pulse"
412
470
  },
413
471
  String(totalUnread.value)
414
472
  ) : null
@@ -419,6 +477,10 @@ var NotificationCenter = defineComponent({
419
477
  size: "sm",
420
478
  variant: "ghost",
421
479
  disabled: !hasUnread.value,
480
+ class: classNames(
481
+ "text-xs font-semibold transition-colors duration-200",
482
+ hasUnread.value ? "text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300" : "text-gray-400 dark:text-gray-600"
483
+ ),
422
484
  onClick: handleMarkAllRead
423
485
  },
424
486
  { default: () => props.markAllReadText }
@@ -426,8 +488,8 @@ var NotificationCenter = defineComponent({
426
488
  ]),
427
489
  renderReadFilterButtons()
428
490
  ]);
429
- const content = props.loading ? h("div", { class: "flex items-center justify-center py-12" }, [
430
- h(Loading, { text: props.loadingText })
491
+ const content = props.loading ? h("div", { class: "flex items-center justify-center py-16" }, [
492
+ h(Loading, { text: props.loadingText, class: "text-blue-500 dark:text-blue-400 font-medium" })
431
493
  ]) : resolvedGroups.value.length > 0 ? h("div", { class: "-mx-4 -mb-4" }, [renderTabs()]) : h("div", { class: "-mx-4 -mb-4 max-h-[380px] overflow-y-auto" }, [
432
494
  renderList(filteredFlatItems.value)
433
495
  ]);
@@ -445,7 +507,10 @@ var NotificationCenter = defineComponent({
445
507
  [
446
508
  h(
447
509
  Card,
448
- { variant: "bordered", className: "w-full" },
510
+ {
511
+ variant: "bordered",
512
+ className: "w-full rounded-2xl border border-gray-100/80 dark:border-gray-800/80 bg-white/95 dark:bg-gray-950/90 backdrop-blur-md shadow-[0_8px_30px_rgb(0,0,0,0.04)] dark:shadow-[0_8px_30px_rgb(0,0,0,0.2)] transition-all duration-300 overflow-hidden"
513
+ },
449
514
  {
450
515
  header: () => header,
451
516
  default: () => content
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkBGMQIUPPjs = require('./chunk-BGMQIUPP.js');
3
+ var _chunkEU4IGIPCjs = require('./chunk-EU4IGIPC.js');
4
4
 
5
5
  // src/components/Kanban.ts
6
6
  var _vue = require('vue');
@@ -56,7 +56,7 @@ var Kanban = _vue.defineComponent.call(void 0, {
56
56
  emit("card-add", colId);
57
57
  };
58
58
  return () => _vue.h.call(void 0,
59
- _chunkBGMQIUPPjs.TaskBoard,
59
+ _chunkEU4IGIPCjs.TaskBoard,
60
60
  {
61
61
  ...attrs,
62
62
  columns: props.columns,
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkVPNIZPIFjs = require('./chunk-VPNIZPIF.js');
4
+ var _chunkDS7RQFEGjs = require('./chunk-DS7RQFEG.js');
5
5
 
6
6
 
7
7
  var _chunk25EYT2CBjs = require('./chunk-25EYT2CB.js');
@@ -22,6 +22,60 @@ var _vue = require('vue');
22
22
 
23
23
 
24
24
  var _tigercatcore = require('@expcat/tigercat-core');
25
+ var renderArrowLeftIcon = () => _vue.h.call(void 0,
26
+ "svg",
27
+ {
28
+ class: "w-3.5 h-3.5 transition-transform duration-300 group-hover:-translate-x-0.5",
29
+ fill: "none",
30
+ stroke: "currentColor",
31
+ "stroke-width": "2",
32
+ viewBox: "0 0 24 24",
33
+ "aria-hidden": "true"
34
+ },
35
+ [
36
+ _vue.h.call(void 0, "path", {
37
+ "stroke-linecap": "round",
38
+ "stroke-linejoin": "round",
39
+ d: "M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"
40
+ })
41
+ ]
42
+ );
43
+ var renderArrowRightIcon = () => _vue.h.call(void 0,
44
+ "svg",
45
+ {
46
+ class: "w-3.5 h-3.5 transition-transform duration-300 group-hover:translate-x-0.5",
47
+ fill: "none",
48
+ stroke: "currentColor",
49
+ "stroke-width": "2",
50
+ viewBox: "0 0 24 24",
51
+ "aria-hidden": "true"
52
+ },
53
+ [
54
+ _vue.h.call(void 0, "path", {
55
+ "stroke-linecap": "round",
56
+ "stroke-linejoin": "round",
57
+ d: "M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"
58
+ })
59
+ ]
60
+ );
61
+ var renderCheckIcon = () => _vue.h.call(void 0,
62
+ "svg",
63
+ {
64
+ class: "w-3.5 h-3.5 transition-transform duration-300 group-hover:scale-110",
65
+ fill: "none",
66
+ stroke: "currentColor",
67
+ "stroke-width": "2.5",
68
+ viewBox: "0 0 24 24",
69
+ "aria-hidden": "true"
70
+ },
71
+ [
72
+ _vue.h.call(void 0, "path", {
73
+ "stroke-linecap": "round",
74
+ "stroke-linejoin": "round",
75
+ d: "M4.5 12.75l6 6 9-13.5"
76
+ })
77
+ ]
78
+ );
25
79
  var FormWizard = _vue.defineComponent.call(void 0, {
26
80
  name: "TigerFormWizard",
27
81
  inheritAttrs: false,
@@ -82,6 +136,10 @@ var FormWizard = _vue.defineComponent.call(void 0, {
82
136
  type: Object,
83
137
  default: void 0
84
138
  },
139
+ bordered: {
140
+ type: Boolean,
141
+ default: true
142
+ },
85
143
  autoSave: {
86
144
  type: Function,
87
145
  default: void 0
@@ -122,7 +180,8 @@ var FormWizard = _vue.defineComponent.call(void 0, {
122
180
  const currentStep = _vue.computed.call(void 0, () => props.steps[currentIndex.value]);
123
181
  const wrapperClasses = _vue.computed.call(void 0,
124
182
  () => _tigercatcore.classNames.call(void 0,
125
- "tiger-form-wizard w-full rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm overflow-hidden",
183
+ "tiger-form-wizard w-full overflow-hidden transition-all duration-300",
184
+ props.bordered ? "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm" : "bg-transparent",
126
185
  props.className,
127
186
  _tigercatcore.coerceClassValue.call(void 0, attrs.class)
128
187
  )
@@ -188,7 +247,7 @@ var FormWizard = _vue.defineComponent.call(void 0, {
188
247
  };
189
248
  return () => {
190
249
  const stepsNodes = props.steps.map(
191
- (step, index) => _vue.h.call(void 0, _chunkVPNIZPIFjs.StepsItem, {
250
+ (step, index) => _vue.h.call(void 0, _chunkDS7RQFEGjs.StepsItem, {
192
251
  key: _nullishCoalesce(step.key, () => ( index)),
193
252
  title: step.title,
194
253
  description: step.description,
@@ -199,6 +258,14 @@ var FormWizard = _vue.defineComponent.call(void 0, {
199
258
  );
200
259
  const isFirst = currentIndex.value <= 0;
201
260
  const isLast = currentIndex.value >= totalCount.value - 1;
261
+ const stepsHeaderClass = _tigercatcore.classNames.call(void 0,
262
+ "px-6 py-5 bg-[var(--tiger-surface-muted,#f9fafb)]/95 backdrop-blur-sm transition-all duration-300",
263
+ props.bordered ? "border-b border-[var(--tiger-border,#e5e7eb)]" : ""
264
+ );
265
+ const actionsContainerClass = _tigercatcore.classNames.call(void 0,
266
+ "flex items-center justify-between gap-3 px-8 py-4 bg-[var(--tiger-surface-muted,#f9fafb)]/95 backdrop-blur-sm transition-all duration-300",
267
+ props.bordered ? "border-t border-[var(--tiger-border,#e5e7eb)]" : ""
268
+ );
202
269
  return _vue.h.call(void 0,
203
270
  "div",
204
271
  {
@@ -208,9 +275,9 @@ var FormWizard = _vue.defineComponent.call(void 0, {
208
275
  "data-tiger-form-wizard": ""
209
276
  },
210
277
  [
211
- props.showSteps && props.steps.length > 0 ? _vue.h.call(void 0, "div", { class: "px-6 py-5 bg-[var(--tiger-surface-muted,#f9fafb)]" }, [
278
+ props.showSteps && props.steps.length > 0 ? _vue.h.call(void 0, "div", { class: stepsHeaderClass }, [
212
279
  _vue.h.call(void 0,
213
- _chunkVPNIZPIFjs.Steps,
280
+ _chunkDS7RQFEGjs.Steps,
214
281
  {
215
282
  current: currentIndex.value,
216
283
  direction: props.direction,
@@ -224,31 +291,35 @@ var FormWizard = _vue.defineComponent.call(void 0, {
224
291
  ]) : null,
225
292
  _vue.h.call(void 0,
226
293
  "div",
227
- { class: "px-6 py-4 flex flex-col items-center" },
294
+ { class: "px-8 py-6 flex flex-col items-center w-full min-h-[120px] transition-all duration-300" },
228
295
  { default: () => renderContent() }
229
296
  ),
230
297
  props.showActions ? _vue.h.call(void 0,
231
298
  "div",
232
- {
233
- class: "flex items-center justify-center gap-3 px-6 py-2 border-t border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface-muted,#f9fafb)]"
234
- },
299
+ { class: actionsContainerClass },
235
300
  [
236
- _vue.h.call(void 0,
301
+ !isFirst ? _vue.h.call(void 0,
237
302
  _chunk4VLNT2EDjs.Button,
238
303
  {
239
304
  type: "button",
240
305
  variant: "secondary",
241
- disabled: isFirst,
242
- onClick: handlePrev
306
+ class: "group",
307
+ onClick: handlePrev,
308
+ size: props.size === "small" ? "sm" : "md",
309
+ icon: renderArrowLeftIcon()
243
310
  },
244
311
  { default: () => _tigercatcore.resolveLocaleText.call(void 0, labels.value.prevText, props.prevText) }
245
- ),
312
+ ) : _vue.h.call(void 0, "div"),
246
313
  _vue.h.call(void 0,
247
314
  _chunk4VLNT2EDjs.Button,
248
315
  {
249
316
  type: "button",
250
317
  variant: "primary",
251
- onClick: handleNext
318
+ class: "group",
319
+ onClick: handleNext,
320
+ size: props.size === "small" ? "sm" : "md",
321
+ icon: isLast ? renderCheckIcon() : renderArrowRightIcon(),
322
+ iconPosition: isLast ? "left" : "right"
252
323
  },
253
324
  {
254
325
  default: () => isLast ? _tigercatcore.resolveLocaleText.call(void 0, labels.value.finishText, props.finishText) : _tigercatcore.resolveLocaleText.call(void 0, labels.value.nextText, props.nextText)