@expcat/tigercat-vue 2.0.0-rc.2 → 2.0.4

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 (183) hide show
  1. package/dist/{chunk-KE6RGD4Y.mjs → chunk-26OI3TEA.mjs} +25 -55
  2. package/dist/{chunk-H26JXVJX.mjs → chunk-2T2NEZRZ.mjs} +1 -1
  3. package/dist/chunk-4HUYX5WW.mjs +239 -0
  4. package/dist/{chunk-EGIQPUEL.mjs → chunk-5C32WCQY.mjs} +8 -6
  5. package/dist/{chunk-QFG452MD.mjs → chunk-5RXYJWNA.mjs} +53 -28
  6. package/dist/{chunk-IDUEWMWN.mjs → chunk-7KCOF5US.mjs} +61 -62
  7. package/dist/{chunk-RHV6DWY6.mjs → chunk-7VHXZX7Y.mjs} +20 -28
  8. package/dist/{chunk-36TZA5BH.mjs → chunk-A5QYJSHK.mjs} +0 -3
  9. package/dist/{chunk-IZRQ7LB3.mjs → chunk-AU6IC6K7.mjs} +1 -1
  10. package/dist/{chunk-O6BN5R6J.mjs → chunk-AUMTHL6N.mjs} +1 -1
  11. package/dist/{chunk-MNSVJBNH.mjs → chunk-B4MDHE3L.mjs} +18 -4
  12. package/dist/{chunk-7JT5ZIHC.mjs → chunk-BCU7GYF6.mjs} +16 -8
  13. package/dist/{chunk-7CPMXNLK.mjs → chunk-BNYA5IUB.mjs} +26 -2
  14. package/dist/{chunk-N7LWKAYS.mjs → chunk-BZ6MVFV7.mjs} +190 -174
  15. package/dist/{chunk-TK3QU367.mjs → chunk-DI6RRAGQ.mjs} +3 -3
  16. package/dist/{chunk-4ZZYQITT.mjs → chunk-FWO7RNGI.mjs} +249 -220
  17. package/dist/{chunk-SUORTZUY.mjs → chunk-GS4SV2HK.mjs} +48 -20
  18. package/dist/{chunk-EUSODI5E.mjs → chunk-HKYRRQS7.mjs} +11 -5
  19. package/dist/{chunk-D4APFWWS.mjs → chunk-IPGPLFUZ.mjs} +18 -4
  20. package/dist/{chunk-IMFHJEUX.mjs → chunk-JALHMWKW.mjs} +20 -7
  21. package/dist/{chunk-OHPXOLNB.mjs → chunk-K3WTQBE4.mjs} +40 -15
  22. package/dist/{chunk-VMYV5EWI.mjs → chunk-KICZSLOX.mjs} +9 -8
  23. package/dist/{chunk-BNNTDSLJ.mjs → chunk-KROVW4AW.mjs} +19 -60
  24. package/dist/{chunk-AQMPCLX7.mjs → chunk-NMAJD353.mjs} +248 -253
  25. package/dist/{chunk-4BO6JNA6.mjs → chunk-OAPIT53X.mjs} +4 -4
  26. package/dist/{chunk-SYRRMZT2.mjs → chunk-OQVGB7X6.mjs} +43 -29
  27. package/dist/{chunk-DWK5GUMB.mjs → chunk-OTGGPXDT.mjs} +26 -19
  28. package/dist/{chunk-5KPO3EDM.mjs → chunk-OTHJIFDV.mjs} +28 -15
  29. package/dist/{chunk-DWPZRG7A.mjs → chunk-PGF7HLLR.mjs} +43 -39
  30. package/dist/chunk-Q7Y22OFX.mjs +330 -0
  31. package/dist/{chunk-3NQUEQJT.mjs → chunk-RID7A5V7.mjs} +54 -38
  32. package/dist/{chunk-CFH5T3V2.mjs → chunk-S5RTMAQN.mjs} +2 -2
  33. package/dist/{chunk-SJ7W5I5H.mjs → chunk-TCV6YPH5.mjs} +1 -1
  34. package/dist/{chunk-LFENEILY.mjs → chunk-WC5MKASU.mjs} +110 -99
  35. package/dist/{chunk-JZCETBUV.mjs → chunk-WUQMFKQ6.mjs} +29 -16
  36. package/dist/{chunk-GWFVBG22.mjs → chunk-XGXZF27U.mjs} +28 -15
  37. package/dist/{chunk-JVQPU4M2.mjs → chunk-ZGA66PSG.mjs} +28 -15
  38. package/dist/components/ActivityFeed.d.mts +6 -6
  39. package/dist/components/ActivityFeed.mjs +3 -3
  40. package/dist/components/Alert.d.mts +3 -3
  41. package/dist/components/Anchor.d.mts +1 -1
  42. package/dist/components/AreaChart.d.mts +3 -3
  43. package/dist/components/AreaChart.mjs +1 -1
  44. package/dist/components/AutoComplete.d.mts +5 -5
  45. package/dist/components/AutoComplete.mjs +2 -1
  46. package/dist/components/Avatar.d.mts +1 -1
  47. package/dist/components/AvatarGroup.d.mts +2 -2
  48. package/dist/components/BackTop.d.mts +3 -3
  49. package/dist/components/Badge.d.mts +4 -4
  50. package/dist/components/BarChart.d.mts +2 -2
  51. package/dist/components/BarChart.mjs +1 -1
  52. package/dist/components/Breadcrumb.d.mts +3 -3
  53. package/dist/components/Button.d.mts +3 -3
  54. package/dist/components/ButtonGroup.d.mts +1 -1
  55. package/dist/components/Calendar.d.mts +2 -2
  56. package/dist/components/Card.d.mts +2 -2
  57. package/dist/components/Carousel.d.mts +2 -2
  58. package/dist/components/Cascader.d.mts +3 -3
  59. package/dist/components/Cascader.mjs +2 -1
  60. package/dist/components/ChartCanvas.d.mts +1 -1
  61. package/dist/components/ChartGrid.d.mts +1 -1
  62. package/dist/components/ChartLegend.d.mts +1 -1
  63. package/dist/components/ChatWindow.d.mts +4 -4
  64. package/dist/components/CodeEditor.d.mts +3 -3
  65. package/dist/components/Collapse.d.mts +1 -1
  66. package/dist/components/CollapsePanel.d.mts +1 -1
  67. package/dist/components/ColorPicker.mjs +2 -1
  68. package/dist/components/ColorSwatch.d.mts +2 -2
  69. package/dist/components/CommentThread.d.mts +2 -2
  70. package/dist/components/CommentThread.mjs +1 -1
  71. package/dist/components/ConfigProvider.d.mts +1 -1
  72. package/dist/components/Container.d.mts +1 -1
  73. package/dist/components/Countdown.d.mts +2 -2
  74. package/dist/components/CronEditor.d.mts +2 -2
  75. package/dist/components/CropUpload.d.mts +1 -1
  76. package/dist/components/CropUpload.mjs +4 -4
  77. package/dist/components/DataExport.d.mts +2 -2
  78. package/dist/components/DataExport.mjs +3 -3
  79. package/dist/components/DataTableWithToolbar.d.mts +11 -11
  80. package/dist/components/DataTableWithToolbar.mjs +6 -6
  81. package/dist/components/DatePicker.d.mts +3 -3
  82. package/dist/components/DatePicker.mjs +2 -1
  83. package/dist/components/Descriptions.d.mts +2 -2
  84. package/dist/components/DonutChart.d.mts +4 -4
  85. package/dist/components/Drawer.d.mts +6 -6
  86. package/dist/components/Drawer.mjs +2 -2
  87. package/dist/components/Dropdown.d.mts +2 -2
  88. package/dist/components/Dropdown.mjs +2 -2
  89. package/dist/components/Empty.d.mts +1 -1
  90. package/dist/components/FileManager.d.mts +2 -2
  91. package/dist/components/FloatButton.d.mts +5 -5
  92. package/dist/components/Form.d.mts +2 -2
  93. package/dist/components/FormItem.mjs +2 -1
  94. package/dist/components/FormWizard.d.mts +5 -5
  95. package/dist/components/FunnelChart.d.mts +3 -3
  96. package/dist/components/Gantt.d.mts +2 -2
  97. package/dist/components/GaugeChart.d.mts +2 -2
  98. package/dist/components/HeatmapChart.d.mts +3 -3
  99. package/dist/components/Icon.d.mts +2 -2
  100. package/dist/components/Image.d.mts +2 -2
  101. package/dist/components/Image.mjs +3 -3
  102. package/dist/components/ImageAnnotation.d.mts +5 -5
  103. package/dist/components/ImageCropper.d.mts +1 -1
  104. package/dist/components/ImageCropper.mjs +1 -1
  105. package/dist/components/ImageViewer.d.mts +1 -1
  106. package/dist/components/InfiniteScroll.d.mts +3 -3
  107. package/dist/components/InfiniteScroll.mjs +1 -1
  108. package/dist/components/Input.d.mts +4 -4
  109. package/dist/components/InputGroup.d.mts +1 -1
  110. package/dist/components/InputNumber.d.mts +1 -1
  111. package/dist/components/Kanban.d.mts +1 -1
  112. package/dist/components/LineChart.d.mts +2 -2
  113. package/dist/components/LineChart.mjs +1 -1
  114. package/dist/components/Link.d.mts +1 -1
  115. package/dist/components/List.d.mts +7 -7
  116. package/dist/components/Loading.d.mts +6 -6
  117. package/dist/components/Loading.mjs +2 -2
  118. package/dist/components/MarkdownEditor.d.mts +5 -5
  119. package/dist/components/Mentions.d.mts +3 -3
  120. package/dist/components/Mentions.mjs +2 -1
  121. package/dist/components/Menu.d.mts +4 -4
  122. package/dist/components/Menu.mjs +2 -2
  123. package/dist/components/Modal.d.mts +8 -8
  124. package/dist/components/Modal.mjs +2 -2
  125. package/dist/components/NotificationCenter.d.mts +5 -5
  126. package/dist/components/NotificationCenter.mjs +3 -3
  127. package/dist/components/NumberKeyboard.d.mts +5 -5
  128. package/dist/components/OrgChart.d.mts +3 -3
  129. package/dist/components/Pagination.d.mts +5 -5
  130. package/dist/components/PieChart.d.mts +4 -4
  131. package/dist/components/Popconfirm.d.mts +4 -4
  132. package/dist/components/Popconfirm.mjs +3 -3
  133. package/dist/components/Popover.d.mts +3 -3
  134. package/dist/components/Popover.mjs +3 -3
  135. package/dist/components/Progress.d.mts +3 -3
  136. package/dist/components/QRCode.d.mts +3 -3
  137. package/dist/components/RadarChart.d.mts +3 -3
  138. package/dist/components/Rate.d.mts +2 -2
  139. package/dist/components/Result.d.mts +1 -1
  140. package/dist/components/RichTextEditor.d.mts +4 -4
  141. package/dist/components/Row.d.mts +1 -1
  142. package/dist/components/ScatterChart.d.mts +2 -2
  143. package/dist/components/ScatterChart.mjs +1 -1
  144. package/dist/components/ScrollSpy.d.mts +3 -3
  145. package/dist/components/Select.d.mts +3 -3
  146. package/dist/components/Select.mjs +2 -1
  147. package/dist/components/Signature.d.mts +5 -5
  148. package/dist/components/Skeleton.d.mts +1 -1
  149. package/dist/components/Space.d.mts +2 -2
  150. package/dist/components/Splitter.d.mts +1 -1
  151. package/dist/components/Spotlight.d.mts +5 -5
  152. package/dist/components/Spotlight.mjs +2 -2
  153. package/dist/components/Steps.d.mts +3 -3
  154. package/dist/components/SunburstChart.d.mts +2 -2
  155. package/dist/components/Table.d.mts +5 -5
  156. package/dist/components/Table.mjs +3 -2
  157. package/dist/components/Tabs.d.mts +4 -4
  158. package/dist/components/Tag.d.mts +2 -2
  159. package/dist/components/TaskBoard.d.mts +2 -2
  160. package/dist/components/Text.d.mts +3 -3
  161. package/dist/components/Textarea.d.mts +3 -3
  162. package/dist/components/TimePicker.d.mts +4 -4
  163. package/dist/components/TimePicker.mjs +2 -1
  164. package/dist/components/Timeline.d.mts +4 -4
  165. package/dist/components/Tooltip.d.mts +3 -3
  166. package/dist/components/Tooltip.mjs +3 -3
  167. package/dist/components/Tour.d.mts +2 -2
  168. package/dist/components/Tour.mjs +2 -2
  169. package/dist/components/Transfer.d.mts +3 -3
  170. package/dist/components/Tree.d.mts +4 -4
  171. package/dist/components/TreeMapChart.d.mts +2 -2
  172. package/dist/components/TreeSelect.d.mts +3 -3
  173. package/dist/components/TreeSelect.mjs +2 -1
  174. package/dist/components/Upload.d.mts +4 -4
  175. package/dist/components/Upload.mjs +1 -1
  176. package/dist/components/VirtualTable.d.mts +3 -3
  177. package/dist/components/VirtualTable.mjs +1 -1
  178. package/dist/components/Watermark.d.mts +1 -1
  179. package/dist/index.d.mts +1 -1
  180. package/dist/index.mjs +4 -2
  181. package/package.json +2 -2
  182. package/dist/chunk-BDTPFPSB.mjs +0 -163
  183. package/dist/chunk-EWUHEW6W.mjs +0 -219
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-YZBQ6IR7.mjs";
11
11
  import {
12
12
  Loading
13
- } from "./chunk-O6BN5R6J.mjs";
13
+ } from "./chunk-AUMTHL6N.mjs";
14
14
  import {
15
15
  Text
16
16
  } from "./chunk-NN6AINLG.mjs";
@@ -27,6 +27,34 @@ import {
27
27
  buildNotificationGroups,
28
28
  formatActivityTime
29
29
  } from "@expcat/tigercat-core";
30
+
31
+ // ../core/src/internal/notification-center-styles.ts
32
+ var notificationCenterItemClasses = "tiger-motion-aware group relative flex items-start gap-3.5 w-full p-3.5 rounded-[var(--tiger-radius-lg,0.75rem)] hover:bg-[var(--tiger-surface-muted,#f9fafb)] [transition:var(--tiger-transition-base,all_200ms_cubic-bezier(0.4,0,0.2,1))]";
33
+ var notificationCenterUnreadItemClasses = "bg-[var(--tiger-outline-bg-hover,#eff6ff)] border-l-[3px] border-l-[var(--tiger-primary,#2563eb)] -ml-[3px] pl-[calc(0.875rem-3px)]";
34
+ var notificationCenterReadItemClasses = "border-l-[3px] border-l-transparent -ml-[3px] pl-[calc(0.875rem-3px)]";
35
+ var notificationCenterReadTitleClasses = "text-[var(--tiger-text-secondary,#4b5563)]";
36
+ var notificationCenterUnreadTitleClasses = "text-[var(--tiger-text,#111827)]";
37
+ var notificationCenterUnreadDotClasses = "tiger-motion-aware w-1.5 h-1.5 rounded-full bg-[var(--tiger-primary,#2563eb)] shrink-0 shadow-sm animate-pulse";
38
+ var notificationCenterTimeClasses = "text-[11px] text-[var(--tiger-text-muted,#6b7280)] font-medium whitespace-nowrap flex-shrink-0 self-center";
39
+ var notificationCenterReadDescriptionClasses = "text-[var(--tiger-text-muted,#6b7280)]";
40
+ var notificationCenterUnreadDescriptionClasses = "text-[var(--tiger-text-secondary,#4b5563)]";
41
+ var notificationCenterItemActionClasses = "tiger-motion-aware opacity-0 group-hover:opacity-100 focus:opacity-100 rounded-full px-2.5 py-1 text-[11px] font-semibold bg-[var(--tiger-surface-muted,#f3f4f6)] hover:bg-[var(--tiger-fill-hover,#e5e7eb)] text-[var(--tiger-text-secondary,#374151)] border-0 flex-shrink-0 self-center [transition:var(--tiger-transition-base,all_200ms_cubic-bezier(0.4,0,0.2,1))]";
42
+ var notificationCenterEmptyIconWrapperClasses = "p-3.5 bg-[var(--tiger-surface-muted,#f9fafb)] rounded-full mb-3 shadow-inner";
43
+ var notificationCenterEmptyIconClasses = "tiger-motion-aware w-8 h-8 text-[var(--tiger-text-muted,#9ca3af)] animate-pulse";
44
+ var notificationCenterEmptyTextClasses = "font-semibold text-[var(--tiger-text-muted,#6b7280)]";
45
+ var notificationCenterLoadingClasses = "text-[var(--tiger-primary,#2563eb)] font-medium";
46
+ var notificationCenterCardClasses = "tiger-motion-aware w-full rounded-[var(--tiger-radius-xl,1rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-[var(--tiger-shadow-glass,0_8px_30px_rgb(0_0_0_/_0.04))] [transition:var(--tiger-transition-base,all_200ms_cubic-bezier(0.4,0,0.2,1))] overflow-hidden";
47
+ var notificationCenterTitleClasses = "text-[var(--tiger-text,#111827)]";
48
+ var notificationCenterUnreadBadgeClasses = "tiger-motion-aware inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[11px] font-bold rounded-full bg-[var(--tiger-primary,#2563eb)] text-white shadow-sm animate-pulse";
49
+ var notificationCenterMarkAllBaseClasses = "tiger-motion-aware text-xs font-semibold transition-colors";
50
+ var notificationCenterMarkAllEnabledClasses = "text-[var(--tiger-primary,#2563eb)] hover:text-[var(--tiger-primary-hover,#1d4ed8)]";
51
+ var notificationCenterMarkAllDisabledClasses = "text-[var(--tiger-text-muted,#9ca3af)]";
52
+ var notificationCenterFilterGroupClasses = "inline-flex items-center gap-0.5 p-0.5 rounded-[var(--tiger-radius-md,0.5rem)] bg-[var(--tiger-surface-muted,#f3f4f6)] self-start";
53
+ var notificationCenterFilterButtonClasses = "tiger-motion-aware px-3.5 py-1 text-xs font-semibold rounded-[var(--tiger-radius-sm,0.375rem)] [transition:var(--tiger-transition-base,all_200ms_cubic-bezier(0.4,0,0.2,1))]";
54
+ var notificationCenterFilterActiveClasses = "bg-[var(--tiger-surface,#ffffff)] text-[var(--tiger-text,#111827)] shadow-sm";
55
+ var notificationCenterFilterIdleClasses = "text-[var(--tiger-text-muted,#6b7280)] hover:text-[var(--tiger-text,#111827)]";
56
+
57
+ // src/components/NotificationCenter.ts
30
58
  var getGroupKey = (group, index) => {
31
59
  return group.key ?? group.title ?? index;
32
60
  };
@@ -275,7 +303,7 @@ var NotificationCenter = defineComponent({
275
303
  return h(
276
304
  "div",
277
305
  {
278
- class: "inline-flex items-center gap-0.5 p-0.5 rounded-lg bg-gray-100/80 dark:bg-gray-800/60 self-start"
306
+ class: notificationCenterFilterGroupClasses
279
307
  },
280
308
  options.map(
281
309
  (option) => h(
@@ -283,8 +311,8 @@ var NotificationCenter = defineComponent({
283
311
  {
284
312
  key: option.key,
285
313
  class: classNames(
286
- "px-3.5 py-1 text-xs font-semibold rounded-md transition-all duration-200",
287
- 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"
314
+ notificationCenterFilterButtonClasses,
315
+ currentReadFilter.value === option.key ? notificationCenterFilterActiveClasses : notificationCenterFilterIdleClasses
288
316
  ),
289
317
  onClick: () => handleReadFilterChange(option.key)
290
318
  },
@@ -300,8 +328,8 @@ var NotificationCenter = defineComponent({
300
328
  "div",
301
329
  {
302
330
  class: classNames(
303
- "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",
304
- !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)]"
331
+ notificationCenterItemClasses,
332
+ isRead ? notificationCenterReadItemClasses : notificationCenterUnreadItemClasses
305
333
  )
306
334
  },
307
335
  [
@@ -314,18 +342,18 @@ var NotificationCenter = defineComponent({
314
342
  tag: "span",
315
343
  size: "sm",
316
344
  weight: isRead ? "normal" : "semibold",
317
- class: isRead ? "text-gray-600 dark:text-gray-400" : "text-gray-900 dark:text-gray-100"
345
+ class: isRead ? notificationCenterReadTitleClasses : notificationCenterUnreadTitleClasses
318
346
  },
319
347
  { default: () => item.title }
320
348
  ),
321
349
  !isRead ? h("span", {
322
- 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"
350
+ class: notificationCenterUnreadDotClasses
323
351
  }) : null
324
352
  ]),
325
353
  timeText ? h(
326
354
  "span",
327
355
  {
328
- class: "text-[11px] text-gray-400 dark:text-gray-500 font-medium whitespace-nowrap flex-shrink-0 self-center"
356
+ class: notificationCenterTimeClasses
329
357
  },
330
358
  timeText
331
359
  ) : null
@@ -335,7 +363,7 @@ var NotificationCenter = defineComponent({
335
363
  {
336
364
  class: classNames(
337
365
  "mt-1 text-xs leading-relaxed line-clamp-2",
338
- isRead ? "text-gray-500 dark:text-gray-400" : "text-gray-600 dark:text-gray-300"
366
+ isRead ? notificationCenterReadDescriptionClasses : notificationCenterUnreadDescriptionClasses
339
367
  )
340
368
  },
341
369
  item.description
@@ -346,7 +374,7 @@ var NotificationCenter = defineComponent({
346
374
  {
347
375
  size: "sm",
348
376
  variant: "ghost",
349
- 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",
377
+ class: notificationCenterItemActionClasses,
350
378
  onClick: (event) => {
351
379
  event.stopPropagation();
352
380
  handleItemReadChange(item, !isRead);
@@ -366,13 +394,13 @@ var NotificationCenter = defineComponent({
366
394
  h(
367
395
  "div",
368
396
  {
369
- class: "p-3.5 bg-gray-50 dark:bg-gray-900 rounded-full mb-3 shadow-inner"
397
+ class: notificationCenterEmptyIconWrapperClasses
370
398
  },
371
399
  [
372
400
  h(
373
401
  "svg",
374
402
  {
375
- class: "w-8 h-8 text-gray-400 dark:text-gray-600 animate-pulse",
403
+ class: notificationCenterEmptyIconClasses,
376
404
  fill: "none",
377
405
  viewBox: "0 0 24 24",
378
406
  stroke: "currentColor",
@@ -394,7 +422,7 @@ var NotificationCenter = defineComponent({
394
422
  tag: "div",
395
423
  size: "sm",
396
424
  color: "muted",
397
- class: "font-semibold text-gray-400 dark:text-gray-500"
425
+ class: notificationCenterEmptyTextClasses
398
426
  },
399
427
  { default: () => props.emptyText }
400
428
  )
@@ -454,14 +482,14 @@ var NotificationCenter = defineComponent({
454
482
  tag: "div",
455
483
  size: "base",
456
484
  weight: "bold",
457
- class: "text-gray-900 dark:text-gray-100"
485
+ class: notificationCenterTitleClasses
458
486
  },
459
487
  { default: () => props.title }
460
488
  ),
461
489
  totalUnread.value > 0 ? h(
462
490
  "span",
463
491
  {
464
- 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"
492
+ class: notificationCenterUnreadBadgeClasses
465
493
  },
466
494
  String(totalUnread.value)
467
495
  ) : null
@@ -473,8 +501,8 @@ var NotificationCenter = defineComponent({
473
501
  variant: "ghost",
474
502
  disabled: !hasUnread.value,
475
503
  class: classNames(
476
- "text-xs font-semibold transition-colors duration-200",
477
- 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"
504
+ notificationCenterMarkAllBaseClasses,
505
+ hasUnread.value ? notificationCenterMarkAllEnabledClasses : notificationCenterMarkAllDisabledClasses
478
506
  ),
479
507
  onClick: handleMarkAllRead
480
508
  },
@@ -486,7 +514,7 @@ var NotificationCenter = defineComponent({
486
514
  const content = props.loading ? h("div", { class: "flex items-center justify-center py-16" }, [
487
515
  h(Loading, {
488
516
  text: props.loadingText,
489
- class: "text-blue-500 dark:text-blue-400 font-medium"
517
+ class: notificationCenterLoadingClasses
490
518
  })
491
519
  ]) : 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" }, [
492
520
  renderList(filteredFlatItems.value)
@@ -507,7 +535,7 @@ var NotificationCenter = defineComponent({
507
535
  Card,
508
536
  {
509
537
  variant: "bordered",
510
- 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"
538
+ className: notificationCenterCardClasses
511
539
  },
512
540
  {
513
541
  header: () => header,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useFloatingPopup
3
- } from "./chunk-KE6RGD4Y.mjs";
3
+ } from "./chunk-26OI3TEA.mjs";
4
4
  import {
5
- renderVueBodyTeleport
6
- } from "./chunk-BDTPFPSB.mjs";
5
+ renderVueOverlayTeleport
6
+ } from "./chunk-Q7Y22OFX.mjs";
7
7
 
8
8
  // src/components/Tooltip.ts
9
9
  import { defineComponent, computed, h } from "vue";
@@ -47,6 +47,9 @@ var Tooltip = defineComponent({
47
47
  triggerRef,
48
48
  floatingRef,
49
49
  floatingStyles,
50
+ floatingClasses,
51
+ positioned,
52
+ overlayTarget,
50
53
  triggerHandlers
51
54
  } = useFloatingPopup({ props, emit });
52
55
  const tooltipId = createTooltipId();
@@ -85,12 +88,14 @@ var Tooltip = defineComponent({
85
88
  defaultSlot
86
89
  ),
87
90
  // Tooltip content (positioned with Floating UI)
88
- currentVisible.value ? renderVueBodyTeleport(
91
+ currentVisible.value ? renderVueOverlayTeleport(
89
92
  h(
90
93
  "div",
91
94
  {
92
95
  ref: floatingRef,
96
+ class: floatingClasses.value,
93
97
  style: floatingStyles.value,
98
+ "data-positioned": positioned.value,
94
99
  "aria-hidden": false
95
100
  },
96
101
  [
@@ -104,7 +109,8 @@ var Tooltip = defineComponent({
104
109
  slots.content ? slots.content() : props.content
105
110
  )
106
111
  ]
107
- )
112
+ ),
113
+ overlayTarget.value
108
114
  ) : null
109
115
  ]
110
116
  );
@@ -6,7 +6,7 @@ import {
6
6
  useVueBodyScrollLock,
7
7
  useVueEscapeKey,
8
8
  useVueFocusTrap
9
- } from "./chunk-BDTPFPSB.mjs";
9
+ } from "./chunk-Q7Y22OFX.mjs";
10
10
  import {
11
11
  useTigerConfig
12
12
  } from "./chunk-UOJOJBEU.mjs";
@@ -216,6 +216,7 @@ var Modal = defineComponent({
216
216
  const instanceId = ref(createModalId());
217
217
  const hasBeenOpened = ref(props.open);
218
218
  const dialogRef = ref(null);
219
+ const rootRef = ref(null);
219
220
  const closeButtonRef = ref(null);
220
221
  const previousActiveElement = ref(null);
221
222
  let touchStartPoint = null;
@@ -290,9 +291,13 @@ var Modal = defineComponent({
290
291
  const overlayOpen = computed(() => props.open);
291
292
  let cleanupEscape;
292
293
  useVueBodyScrollLock(overlayOpen);
293
- useVueFocusTrap({ enabled: overlayOpen, containerRef: dialogRef });
294
+ useVueFocusTrap({ enabled: overlayOpen, containerRef: rootRef });
294
295
  onMounted(() => {
295
- cleanupEscape = useVueEscapeKey({ enabled: overlayOpen, onEscape: handleClose });
296
+ cleanupEscape = useVueEscapeKey({
297
+ enabled: overlayOpen,
298
+ onEscape: handleClose,
299
+ layerRef: rootRef
300
+ });
296
301
  });
297
302
  onBeforeUnmount(() => {
298
303
  cleanupEscape?.();
@@ -350,6 +355,7 @@ var Modal = defineComponent({
350
355
  );
351
356
  const ariaLabelledbyFromAttrs = typeof attrs["aria-labelledby"] === "string" ? attrs["aria-labelledby"] : void 0;
352
357
  const ariaLabelledby = ariaLabelledbyFromAttrs ?? (props.title || slots.title ? titleId.value : void 0);
358
+ const overlayHostId = `${instanceId.value}-overlay-host`;
353
359
  const mergedClass = classNames(contentClasses.value, coerceClassValue(attrs.class));
354
360
  const widthStyle = props.width ? {
355
361
  width: typeof props.width === "number" ? `${props.width}px` : props.width,
@@ -430,9 +436,11 @@ var Modal = defineComponent({
430
436
  "div",
431
437
  {
432
438
  class: modalWrapperClasses,
439
+ ref: rootRef,
433
440
  style: { zIndex: props.zIndex },
434
441
  hidden: !props.open,
435
442
  "aria-hidden": !props.open ? "true" : void 0,
443
+ "data-tiger-overlay-layer": "",
436
444
  "data-tiger-modal-root": ""
437
445
  },
438
446
  [
@@ -457,6 +465,7 @@ var Modal = defineComponent({
457
465
  role: "dialog",
458
466
  "aria-modal": "true",
459
467
  "aria-labelledby": ariaLabelledby,
468
+ "aria-owns": overlayHostId,
460
469
  tabindex: -1,
461
470
  ref: dialogRef,
462
471
  onTouchstart: handleTouchStart,
@@ -468,7 +477,12 @@ var Modal = defineComponent({
468
477
  [header, body, footer]
469
478
  )
470
479
  ]
471
- )
480
+ ),
481
+ h("div", {
482
+ id: overlayHostId,
483
+ class: "contents",
484
+ "data-tiger-overlay-host": ""
485
+ })
472
486
  ]
473
487
  );
474
488
  return renderVueBodyTeleport([renderedWrapper]);
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-LPZBXTJ6.mjs";
4
4
  import {
5
5
  useFloatingPopup
6
- } from "./chunk-KE6RGD4Y.mjs";
6
+ } from "./chunk-26OI3TEA.mjs";
7
7
  import {
8
- renderVueBodyTeleport
9
- } from "./chunk-BDTPFPSB.mjs";
8
+ renderVueOverlayTeleport
9
+ } from "./chunk-Q7Y22OFX.mjs";
10
10
 
11
11
  // src/components/Image.ts
12
12
  import {
@@ -86,8 +86,16 @@ var Image = defineComponent({
86
86
  triggerRef: hoverTriggerRef,
87
87
  floatingRef: hoverFloatingRef,
88
88
  floatingStyles: hoverFloatingStyles,
89
+ floatingClasses: hoverFloatingClasses,
90
+ positioned: hoverPositioned,
91
+ overlayTarget: hoverOverlayTarget,
89
92
  triggerHandlers: hoverTriggerHandlers
90
- } = useFloatingPopup({ props: floatingPopupProps, emit });
93
+ } = useFloatingPopup({
94
+ props: floatingPopupProps,
95
+ // Hover visibility is internal; popup model events are not Image events.
96
+ emit: () => {
97
+ }
98
+ });
91
99
  const setContainerRef = (el) => {
92
100
  containerRef.value = el;
93
101
  hoverTriggerRef.value = el;
@@ -232,14 +240,18 @@ var Image = defineComponent({
232
240
  emit("preview-open-change", val);
233
241
  }
234
242
  }) : null;
235
- const hoverPreviewEl = hoverPreviewEnabled.value && hoverVisible.value && props.src ? renderVueBodyTeleport(
243
+ const hoverPreviewEl = hoverPreviewEnabled.value && hoverVisible.value && props.src ? renderVueOverlayTeleport(
236
244
  h(
237
245
  "div",
238
246
  {
239
247
  ref: hoverFloatingRef,
240
248
  style: hoverFloatingStyles.value,
249
+ "data-positioned": hoverPositioned.value,
241
250
  "aria-hidden": true,
242
- class: "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] p-1 shadow-lg"
251
+ class: classNames(
252
+ hoverFloatingClasses.value,
253
+ "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] p-1 shadow-lg"
254
+ )
243
255
  },
244
256
  [
245
257
  h("img", {
@@ -248,7 +260,8 @@ var Image = defineComponent({
248
260
  class: "block max-w-[16rem] max-h-[16rem] object-contain"
249
261
  })
250
262
  ]
251
- )
263
+ ),
264
+ hoverOverlayTarget.value
252
265
  ) : null;
253
266
  return h(
254
267
  "div",
@@ -4,6 +4,10 @@ import {
4
4
  import {
5
5
  FORM_ITEM_CONTROL_INJECTION_KEY
6
6
  } from "./chunk-P2LZ2MR5.mjs";
7
+ import {
8
+ renderVueOverlayTeleport,
9
+ useVueAnchoredOverlay
10
+ } from "./chunk-Q7Y22OFX.mjs";
7
11
 
8
12
  // src/components/FormItem.ts
9
13
  import {
@@ -108,6 +112,8 @@ var FormItem = defineComponent({
108
112
  const errorMessage = ref("");
109
113
  const shakeTrigger = ref(0);
110
114
  const prevFormError = ref("");
115
+ const contentRef = ref(null);
116
+ const errorRef = ref(null);
111
117
  const instanceId = ++formItemIdCounter;
112
118
  const baseId = `tiger-form-item-${instanceId}`;
113
119
  const labelId = `${baseId}-label`;
@@ -226,6 +232,16 @@ var FormItem = defineComponent({
226
232
  const hasError = computed(() => {
227
233
  return !!errorMessage.value;
228
234
  });
235
+ const popupErrorVisible = computed(
236
+ () => props.showMessage && hasError.value && props.errorDisplayMode === "popup"
237
+ );
238
+ const overlay = useVueAnchoredOverlay({
239
+ enabled: popupErrorVisible,
240
+ referenceRef: contentRef,
241
+ floatingRef: errorRef,
242
+ placement: "bottom-start",
243
+ offset: 4
244
+ });
229
245
  provide(FORM_ITEM_CONTROL_INJECTION_KEY, {
230
246
  status: computed(() => hasError.value ? "error" : void 0),
231
247
  errorMessage: computed(
@@ -317,6 +333,7 @@ var FormItem = defineComponent({
317
333
  const contentElement = h(
318
334
  "div",
319
335
  {
336
+ ref: contentRef,
320
337
  class: classNames(contentClasses.value, props.errorDisplayMode === "popup" && "relative")
321
338
  },
322
339
  [
@@ -333,21 +350,29 @@ var FormItem = defineComponent({
333
350
  },
334
351
  fieldChildren
335
352
  ),
336
- props.showMessage && h(
337
- "div",
338
- {
339
- id: hasError.value ? errorId : void 0,
340
- role: hasError.value ? "alert" : void 0,
341
- class: props.errorDisplayMode === "block" ? classNames(
342
- "mt-1 p-2 rounded bg-red-50 border border-red-200 text-red-600 text-sm",
343
- !hasError.value && "hidden"
344
- ) : props.errorDisplayMode === "popup" ? classNames(
345
- "absolute z-10 mt-1 px-2 py-1 rounded bg-red-600 text-white text-xs shadow-lg",
346
- !hasError.value && "hidden"
347
- ) : errorClasses.value,
348
- "aria-hidden": hasError.value ? void 0 : "true"
349
- },
350
- hasError.value ? errorMessage.value : ""
353
+ props.showMessage && renderVueOverlayTeleport(
354
+ h(
355
+ "div",
356
+ {
357
+ ref: errorRef,
358
+ id: hasError.value ? errorId : void 0,
359
+ role: hasError.value ? "alert" : void 0,
360
+ class: props.errorDisplayMode === "block" ? classNames(
361
+ "mt-1 p-2 rounded bg-red-50 border border-red-200 text-red-600 text-sm",
362
+ !hasError.value && "hidden"
363
+ ) : props.errorDisplayMode === "popup" ? classNames(
364
+ "px-2 py-1 rounded bg-red-600 text-white text-xs shadow-lg",
365
+ overlay.floatingClasses.value,
366
+ !hasError.value && "hidden"
367
+ ) : errorClasses.value,
368
+ style: props.errorDisplayMode === "popup" ? overlay.floatingStyles.value : void 0,
369
+ "data-positioned": props.errorDisplayMode === "popup" ? overlay.positioned.value : void 0,
370
+ "aria-hidden": hasError.value ? void 0 : "true"
371
+ },
372
+ hasError.value ? errorMessage.value : ""
373
+ ),
374
+ overlay.target.value,
375
+ props.errorDisplayMode !== "popup"
351
376
  )
352
377
  ]
353
378
  );
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useFloatingPopup
3
- } from "./chunk-KE6RGD4Y.mjs";
3
+ } from "./chunk-26OI3TEA.mjs";
4
4
  import {
5
- renderVueBodyTeleport
6
- } from "./chunk-BDTPFPSB.mjs";
5
+ renderVueOverlayTeleport
6
+ } from "./chunk-Q7Y22OFX.mjs";
7
7
 
8
8
  // src/components/Popconfirm.ts
9
9
  import { defineComponent, computed, h, cloneVNode, isVNode } from "vue";
@@ -93,6 +93,9 @@ var Popconfirm = defineComponent({
93
93
  floatingRef,
94
94
  closeAndRestoreFocus,
95
95
  floatingStyles,
96
+ floatingClasses,
97
+ positioned,
98
+ overlayTarget,
96
99
  actualPlacement
97
100
  } = useFloatingPopup({ props, emit, multiTrigger: false });
98
101
  const popconfirmId = createPopconfirmId();
@@ -118,9 +121,6 @@ var Popconfirm = defineComponent({
118
121
  );
119
122
  });
120
123
  const triggerClasses = computed(() => getPopconfirmTriggerClasses(props.disabled));
121
- const contentWrapperClasses = computed(
122
- () => classNames("absolute z-50", currentVisible.value ? "block" : "hidden")
123
- );
124
124
  const arrowClasses = computed(() => getPopconfirmArrowClasses(actualPlacement.value));
125
125
  const contentClasses = getPopconfirmContentClasses();
126
126
  const titleClasses = getPopconfirmTitleClasses();
@@ -211,8 +211,9 @@ var Popconfirm = defineComponent({
211
211
  "div",
212
212
  {
213
213
  ref: floatingRef,
214
- class: contentWrapperClasses.value,
214
+ class: floatingClasses.value,
215
215
  style: floatingStyles.value,
216
+ "data-positioned": positioned.value,
216
217
  hidden: !currentVisible.value,
217
218
  "aria-hidden": !currentVisible.value
218
219
  },
@@ -272,7 +273,7 @@ var Popconfirm = defineComponent({
272
273
  class: containerClasses.value,
273
274
  style: mergeStyleValues(attrs.style, props.style)
274
275
  },
275
- [trigger, renderVueBodyTeleport(content)]
276
+ [trigger, renderVueOverlayTeleport(content, overlayTarget.value)]
276
277
  );
277
278
  };
278
279
  }
@@ -1,9 +1,7 @@
1
1
  import {
2
- renderVueBodyTeleport,
3
- useVueClickOutside,
4
- useVueEscapeKey,
5
- useVueFloating
6
- } from "./chunk-BDTPFPSB.mjs";
2
+ renderVueOverlayTeleport,
3
+ useVueAnchoredOverlay
4
+ } from "./chunk-Q7Y22OFX.mjs";
7
5
 
8
6
  // src/components/Dropdown.ts
9
7
  import {
@@ -29,9 +27,7 @@ import {
29
27
  getDropdownChevronClasses,
30
28
  getDropdownMenuClasses,
31
29
  getDropdownItemClasses,
32
- getTransformOrigin,
33
30
  injectDropdownStyles,
34
- FLOATING_OVERLAY_Z_INDEX,
35
31
  DROPDOWN_CHEVRON_PATH,
36
32
  DROPDOWN_ENTER_CLASS,
37
33
  handleMenuNavigation,
@@ -312,54 +308,22 @@ var Dropdown = defineComponent({
312
308
  handleMenuNavigation(floatingRef.value, event);
313
309
  }
314
310
  };
315
- const {
316
- x,
317
- y,
318
- placement: currentPlacement
319
- } = useVueFloating({
311
+ const clickOutsideEnabled = computed(() => props.trigger === "click");
312
+ const portalEnabled = computed(() => props.portal);
313
+ const overlay = useVueAnchoredOverlay({
320
314
  referenceRef: triggerRef,
321
315
  floatingRef,
322
316
  enabled: currentVisible,
323
317
  placement: props.placement,
324
- offset: props.offset
318
+ offset: props.offset,
319
+ portal: portalEnabled,
320
+ containerRef,
321
+ dismissOnOutside: clickOutsideEnabled,
322
+ dismissOnEscape: true,
323
+ onDismiss: () => setVisible(false)
325
324
  });
326
- const clickOutsideEnabled = computed(() => currentVisible.value && props.trigger === "click");
327
- let cleanupClickOutside = null;
328
- watch(
329
- clickOutsideEnabled,
330
- (enabled) => {
331
- cleanupClickOutside?.();
332
- cleanupClickOutside = null;
333
- if (enabled) {
334
- cleanupClickOutside = useVueClickOutside({
335
- enabled: currentVisible,
336
- refs: [containerRef, floatingRef],
337
- onOutsideClick: () => setVisible(false),
338
- defer: true
339
- });
340
- }
341
- },
342
- { immediate: true }
343
- );
344
- let cleanupEscapeKey = null;
345
- watch(
346
- currentVisible,
347
- (visible) => {
348
- cleanupEscapeKey?.();
349
- cleanupEscapeKey = null;
350
- if (visible) {
351
- cleanupEscapeKey = useVueEscapeKey({
352
- enabled: currentVisible,
353
- onEscape: () => setVisible(false)
354
- });
355
- }
356
- },
357
- { immediate: true }
358
- );
359
325
  onBeforeUnmount(() => {
360
326
  if (hoverTimer) clearTimeout(hoverTimer);
361
- cleanupClickOutside?.();
362
- cleanupEscapeKey?.();
363
327
  });
364
328
  const containerClasses = computed(
365
329
  () => classNames(
@@ -371,14 +335,9 @@ var Dropdown = defineComponent({
371
335
  );
372
336
  const mergedStyle = computed(() => mergeStyleValues(attrsStyle, props.style));
373
337
  const triggerClasses = computed(() => getDropdownTriggerClasses(props.disabled));
374
- const menuWrapperClasses = classNames("absolute", DROPDOWN_ENTER_CLASS);
375
- const menuWrapperStyles = computed(() => ({
376
- position: "absolute",
377
- left: `${x.value}px`,
378
- top: `${y.value}px`,
379
- zIndex: FLOATING_OVERLAY_Z_INDEX,
380
- transformOrigin: getTransformOrigin(currentPlacement.value)
381
- }));
338
+ const menuWrapperClasses = computed(
339
+ () => classNames(overlay.floatingClasses.value, DROPDOWN_ENTER_CLASS)
340
+ );
382
341
  const dropdownContext = reactive({
383
342
  closeOnClick: props.closeOnClick,
384
343
  handleItemClick
@@ -390,7 +349,6 @@ var Dropdown = defineComponent({
390
349
  }
391
350
  );
392
351
  provide(DropdownContextKey, dropdownContext);
393
- const _menuItemTabIndex = -1;
394
352
  return () => {
395
353
  const defaultSlot = slots.default?.();
396
354
  const triggerSlot = slots.trigger?.({ open: currentVisible.value });
@@ -444,8 +402,9 @@ var Dropdown = defineComponent({
444
402
  "div",
445
403
  {
446
404
  ref: floatingRef,
447
- class: menuWrapperClasses,
448
- style: menuWrapperStyles.value,
405
+ class: menuWrapperClasses.value,
406
+ style: overlay.floatingStyles.value,
407
+ "data-positioned": overlay.positioned.value,
449
408
  "data-tiger-dropdown-menu": "",
450
409
  onMouseenter: handleMouseEnter,
451
410
  onMouseleave: handleMouseLeave,
@@ -454,7 +413,7 @@ var Dropdown = defineComponent({
454
413
  },
455
414
  [cloneVNode(menuNode, { id: menuId })]
456
415
  ) : null;
457
- const menu = menuWrapper ? renderVueBodyTeleport(menuWrapper, !props.portal) : null;
416
+ const menu = menuWrapper ? renderVueOverlayTeleport(menuWrapper, overlay.target.value, !props.portal) : null;
458
417
  const {
459
418
  class: _class,
460
419
  style: _style,