@expcat/tigercat-vue 1.2.47 → 1.2.52

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 (135) hide show
  1. package/dist/{chunk-6GPX4ONB.mjs → chunk-35NT2WJR.mjs} +1 -1
  2. package/dist/{chunk-ICECZVMX.js → chunk-3XCQRM3L.js} +5 -5
  3. package/dist/{chunk-VKW2O36D.mjs → chunk-5HNDLUUM.mjs} +2 -1
  4. package/dist/{chunk-UETVHC4K.mjs → chunk-6BFGY5W7.mjs} +2 -2
  5. package/dist/{chunk-5TJI4HOT.js → chunk-6YI6UAEY.js} +2 -2
  6. package/dist/{chunk-CKXZONMO.js → chunk-72DDCIVL.js} +9 -1
  7. package/dist/{chunk-DMNOK6OP.js → chunk-7VHDBN6U.js} +3 -3
  8. package/dist/{chunk-LFKY2QRD.mjs → chunk-7WQN5BYE.mjs} +5 -2
  9. package/dist/{chunk-IGSAOYXD.mjs → chunk-BC74Z6IG.mjs} +10 -2
  10. package/dist/{chunk-G36MH6G4.mjs → chunk-BH4AJQTL.mjs} +1 -1
  11. package/dist/{chunk-2KDSHEZT.js → chunk-BPAZBRCR.js} +2 -0
  12. package/dist/{chunk-JKJ7HMFO.mjs → chunk-BWIHL7LK.mjs} +2 -2
  13. package/dist/{chunk-WQXZ3234.mjs → chunk-DBCSR4WY.mjs} +30 -5
  14. package/dist/{chunk-V6T5GRLE.js → chunk-EW2IW2JW.js} +5 -5
  15. package/dist/{chunk-3G4VPV4D.mjs → chunk-G6ULKE6H.mjs} +3 -1
  16. package/dist/{chunk-SGAUVRUS.js → chunk-H6V26X2R.js} +66 -8
  17. package/dist/{chunk-4VLNT2ED.js → chunk-HA5QZ76M.js} +2 -0
  18. package/dist/{chunk-BXS7OSVF.js → chunk-HFRPZA5S.js} +3 -3
  19. package/dist/{chunk-WH4J6PHF.mjs → chunk-IORFQMZH.mjs} +1 -1
  20. package/dist/{chunk-FRI62O2J.js → chunk-JJXYM6QR.js} +2 -2
  21. package/dist/{chunk-I4LQXUMW.js → chunk-JTVFVAM3.js} +9 -1
  22. package/dist/{chunk-BPRKQVIL.mjs → chunk-K4VUUEFQ.mjs} +2 -2
  23. package/dist/{chunk-RY2I56HB.js → chunk-K6DYTMBE.js} +30 -5
  24. package/dist/{chunk-SZFEDBLT.mjs → chunk-LA5YKXPH.mjs} +9 -1
  25. package/dist/{chunk-QIXG7OIN.mjs → chunk-MJP2SNLK.mjs} +3 -3
  26. package/dist/{chunk-BIDBJNTL.mjs → chunk-NF5O27AM.mjs} +137 -81
  27. package/dist/{chunk-B2RH4CMG.js → chunk-NKVEXKM5.js} +5 -2
  28. package/dist/{chunk-WIQPVVUQ.js → chunk-NYR6OQO4.js} +7 -7
  29. package/dist/{chunk-PXSV3J2H.js → chunk-O4V7VULF.js} +136 -80
  30. package/dist/{chunk-OHCC6NNC.mjs → chunk-OU6PJQXN.mjs} +51 -7
  31. package/dist/{chunk-QJLFHHI2.js → chunk-Q3IZQUW7.js} +9 -1
  32. package/dist/{chunk-YS6FW775.js → chunk-Q47OK3FR.js} +2 -2
  33. package/dist/{chunk-7IVLFDZI.js → chunk-R62HQDKS.js} +2 -1
  34. package/dist/{chunk-27T3QDSF.js → chunk-RBHF7NOQ.js} +3 -1
  35. package/dist/{chunk-NP6KUJ4X.mjs → chunk-RGAHV6QG.mjs} +32 -13
  36. package/dist/{chunk-V2IDOR7Y.mjs → chunk-RNQOMMLM.mjs} +1 -1
  37. package/dist/{chunk-GQPSQJ5I.mjs → chunk-SL5KAVZK.mjs} +10 -2
  38. package/dist/{chunk-KOTSKHPQ.mjs → chunk-TC6ZPQFT.mjs} +13 -3
  39. package/dist/{chunk-L6W3XL3A.js → chunk-TZDNF5SK.js} +12 -12
  40. package/dist/{chunk-XGXGAK27.js → chunk-UG6O4F2A.js} +12 -2
  41. package/dist/{chunk-LBGTABIU.mjs → chunk-VCBBWDOV.mjs} +3 -1
  42. package/dist/{chunk-JE7AWY34.js → chunk-W5GVB54A.js} +32 -13
  43. package/dist/{chunk-VWEH6TGR.mjs → chunk-W6VKVYWZ.mjs} +66 -8
  44. package/dist/{chunk-ROMVD7LS.mjs → chunk-XP6C3MNM.mjs} +1 -1
  45. package/dist/{chunk-PO5GVU4Q.mjs → chunk-YZBQ6IR7.mjs} +3 -1
  46. package/dist/{chunk-6WM7E6C4.js → chunk-ZONC44YH.js} +60 -16
  47. package/dist/components/ActivityFeed.js +5 -5
  48. package/dist/components/ActivityFeed.mjs +4 -4
  49. package/dist/components/Button.js +2 -2
  50. package/dist/components/Button.mjs +1 -1
  51. package/dist/components/Card.d.mts +20 -0
  52. package/dist/components/Card.d.ts +20 -0
  53. package/dist/components/Card.js +2 -2
  54. package/dist/components/Card.mjs +1 -1
  55. package/dist/components/ChatWindow.js +3 -3
  56. package/dist/components/ChatWindow.mjs +2 -2
  57. package/dist/components/CommentThread.js +4 -4
  58. package/dist/components/CommentThread.mjs +3 -3
  59. package/dist/components/Content.d.mts +18 -0
  60. package/dist/components/Content.d.ts +18 -0
  61. package/dist/components/Content.js +2 -2
  62. package/dist/components/Content.mjs +1 -1
  63. package/dist/components/CropUpload.js +4 -4
  64. package/dist/components/CropUpload.mjs +3 -3
  65. package/dist/components/DataTableWithToolbar.d.mts +25 -3
  66. package/dist/components/DataTableWithToolbar.d.ts +25 -3
  67. package/dist/components/DataTableWithToolbar.js +4 -4
  68. package/dist/components/DataTableWithToolbar.mjs +3 -3
  69. package/dist/components/Drawer.d.mts +19 -1
  70. package/dist/components/Drawer.d.ts +19 -1
  71. package/dist/components/Drawer.js +2 -2
  72. package/dist/components/Drawer.mjs +1 -1
  73. package/dist/components/Dropdown.d.mts +1 -1
  74. package/dist/components/Dropdown.d.ts +1 -1
  75. package/dist/components/Dropdown.js +2 -2
  76. package/dist/components/Dropdown.mjs +1 -1
  77. package/dist/components/DropdownItem.js +3 -3
  78. package/dist/components/DropdownItem.mjs +2 -2
  79. package/dist/components/DropdownMenu.js +3 -3
  80. package/dist/components/DropdownMenu.mjs +1 -1
  81. package/dist/components/Form.d.mts +2 -2
  82. package/dist/components/Form.d.ts +2 -2
  83. package/dist/components/Form.js +2 -2
  84. package/dist/components/Form.mjs +1 -1
  85. package/dist/components/FormItem.js +3 -3
  86. package/dist/components/FormItem.mjs +2 -2
  87. package/dist/components/FormWizard.js +3 -3
  88. package/dist/components/FormWizard.mjs +2 -2
  89. package/dist/components/Header.d.mts +19 -0
  90. package/dist/components/Header.d.ts +19 -0
  91. package/dist/components/Header.js +2 -2
  92. package/dist/components/Header.mjs +1 -1
  93. package/dist/components/Icon.d.mts +19 -1
  94. package/dist/components/Icon.d.ts +19 -1
  95. package/dist/components/Icon.js +2 -2
  96. package/dist/components/Icon.mjs +1 -1
  97. package/dist/components/Image.d.mts +11 -1
  98. package/dist/components/Image.d.ts +11 -1
  99. package/dist/components/Image.js +4 -2
  100. package/dist/components/Image.mjs +3 -1
  101. package/dist/components/ImagePreview.d.mts +1 -1
  102. package/dist/components/ImagePreview.d.ts +1 -1
  103. package/dist/components/Menu.d.mts +2 -2
  104. package/dist/components/Menu.d.ts +2 -2
  105. package/dist/components/Menu.js +2 -2
  106. package/dist/components/Menu.mjs +1 -1
  107. package/dist/components/MenuItem.js +3 -3
  108. package/dist/components/MenuItem.mjs +1 -1
  109. package/dist/components/MenuItemGroup.js +3 -3
  110. package/dist/components/MenuItemGroup.mjs +1 -1
  111. package/dist/components/Modal.js +3 -3
  112. package/dist/components/Modal.mjs +2 -2
  113. package/dist/components/NotificationCenter.js +4 -4
  114. package/dist/components/NotificationCenter.mjs +3 -3
  115. package/dist/components/Popconfirm.d.mts +1 -1
  116. package/dist/components/Popconfirm.d.ts +1 -1
  117. package/dist/components/SubMenu.js +3 -3
  118. package/dist/components/SubMenu.mjs +1 -1
  119. package/dist/components/Table.d.mts +31 -1
  120. package/dist/components/Table.d.ts +31 -1
  121. package/dist/components/Table.js +2 -2
  122. package/dist/components/Table.mjs +1 -1
  123. package/dist/components/Tabs.d.mts +1 -1
  124. package/dist/components/Tabs.d.ts +1 -1
  125. package/dist/components/Tag.js +2 -2
  126. package/dist/components/Tag.mjs +1 -1
  127. package/dist/components/Timeline.js +2 -2
  128. package/dist/components/Timeline.mjs +1 -1
  129. package/dist/components/Tree.d.mts +1 -1
  130. package/dist/components/Tree.d.ts +1 -1
  131. package/dist/index.d.mts +1 -1
  132. package/dist/index.d.ts +1 -1
  133. package/dist/index.js +24 -24
  134. package/dist/index.mjs +23 -23
  135. package/package.json +2 -2
@@ -5,7 +5,7 @@ import {
5
5
  coerceClassValue,
6
6
  mergeStyleValues,
7
7
  getCardClasses,
8
- cardSizeClasses,
8
+ resolveCardPadding,
9
9
  cardHeaderClasses,
10
10
  cardFooterClasses,
11
11
  cardCoverWrapperClasses,
@@ -34,6 +34,15 @@ var Card = defineComponent({
34
34
  type: String,
35
35
  default: "md"
36
36
  },
37
+ /**
38
+ * Padding override for the card content sections. `false` removes the
39
+ * built-in padding; a string supplies a custom padding utility class.
40
+ * Takes precedence over `size`.
41
+ */
42
+ padding: {
43
+ type: [Boolean, String],
44
+ default: void 0
45
+ },
37
46
  /**
38
47
  * Whether the card is hoverable (shows hover effect)
39
48
  * @default false
@@ -80,15 +89,16 @@ var Card = defineComponent({
80
89
  }
81
90
  },
82
91
  setup(props, { slots, attrs }) {
92
+ const paddingClass = computed(() => resolveCardPadding(props.size, props.padding));
83
93
  const cardClasses = computed(
84
94
  () => classNames(
85
95
  getCardClasses(props.variant, props.hoverable),
86
96
  cardDirectionClasses[props.direction],
87
- !props.cover && cardSizeClasses[props.size]
97
+ !props.cover && paddingClass.value
88
98
  )
89
99
  );
90
100
  const isHorizontal = computed(() => props.direction === "horizontal");
91
- const sectionSizeClass = computed(() => props.cover ? cardSizeClasses[props.size] : void 0);
101
+ const sectionSizeClass = computed(() => props.cover ? paddingClass.value : void 0);
92
102
  const getSectionClasses = (baseClasses) => classNames(baseClasses, sectionSizeClass.value);
93
103
  return () => {
94
104
  const attrsRecord = attrs;
@@ -3,10 +3,10 @@
3
3
  var _chunk6FXYRDYHjs = require('./chunk-6FXYRDYH.js');
4
4
 
5
5
 
6
- var _chunk4VLNT2EDjs = require('./chunk-4VLNT2ED.js');
6
+ var _chunkHA5QZ76Mjs = require('./chunk-HA5QZ76M.js');
7
7
 
8
8
 
9
- var _chunk2KDSHEZTjs = require('./chunk-2KDSHEZT.js');
9
+ var _chunkBPAZBRCRjs = require('./chunk-BPAZBRCR.js');
10
10
 
11
11
 
12
12
  var _chunkTGHB5XSTjs = require('./chunk-TGHB5XST.js');
@@ -180,7 +180,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
180
180
  const likeCount = node.likes ? ` ${node.likes}` : "";
181
181
  actions.push(
182
182
  _vue.h.call(void 0,
183
- _chunk4VLNT2EDjs.Button,
183
+ _chunkHA5QZ76Mjs.Button,
184
184
  {
185
185
  key: "like",
186
186
  size: "sm",
@@ -214,7 +214,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
214
214
  if (props.showReply) {
215
215
  actions.push(
216
216
  _vue.h.call(void 0,
217
- _chunk4VLNT2EDjs.Button,
217
+ _chunkHA5QZ76Mjs.Button,
218
218
  {
219
219
  key: "reply",
220
220
  size: "sm",
@@ -252,7 +252,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
252
252
  if (props.showMore) {
253
253
  actions.push(
254
254
  _vue.h.call(void 0,
255
- _chunk4VLNT2EDjs.Button,
255
+ _chunkHA5QZ76Mjs.Button,
256
256
  {
257
257
  key: "more",
258
258
  size: "sm",
@@ -289,7 +289,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
289
289
  const actionKey = _nullishCoalesce(action.key, () => ( `${node.id}-action-${index}`));
290
290
  actions.push(
291
291
  _vue.h.call(void 0,
292
- _chunk4VLNT2EDjs.Button,
292
+ _chunkHA5QZ76Mjs.Button,
293
293
  {
294
294
  key: actionKey,
295
295
  size: "sm",
@@ -340,13 +340,13 @@ var CommentThread = _vue.defineComponent.call(void 0, {
340
340
  { default: () => _optionalChain([node, 'access', _9 => _9.user, 'optionalAccess', _10 => _10.title]) }
341
341
  ) : null,
342
342
  node.tag ? _vue.h.call(void 0,
343
- _chunk2KDSHEZTjs.Tag,
343
+ _chunkBPAZBRCRjs.Tag,
344
344
  { size: "sm", variant: _nullishCoalesce(node.tag.variant, () => ( "default")), className: "rounded-full px-2 py-0.5 text-[10px] font-semibold tracking-wide uppercase border border-current bg-opacity-10" },
345
345
  { default: () => _optionalChain([node, 'access', _11 => _11.tag, 'optionalAccess', _12 => _12.label]) }
346
346
  ) : null,
347
347
  ...(_nullishCoalesce(node.tags, () => ( []))).map(
348
348
  (tag, index) => _vue.h.call(void 0,
349
- _chunk2KDSHEZTjs.Tag,
349
+ _chunkBPAZBRCRjs.Tag,
350
350
  {
351
351
  key: `${node.id}-tag-${index}`,
352
352
  size: "sm",
@@ -387,7 +387,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
387
387
  }),
388
388
  _vue.h.call(void 0, "div", { class: "flex items-center gap-2 justify-end" }, [
389
389
  _vue.h.call(void 0,
390
- _chunk4VLNT2EDjs.Button,
390
+ _chunkHA5QZ76Mjs.Button,
391
391
  {
392
392
  size: "sm",
393
393
  variant: "ghost",
@@ -400,7 +400,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
400
400
  { default: () => props.cancelReplyText }
401
401
  ),
402
402
  _vue.h.call(void 0,
403
- _chunk4VLNT2EDjs.Button,
403
+ _chunkHA5QZ76Mjs.Button,
404
404
  {
405
405
  size: "sm",
406
406
  variant: "primary",
@@ -413,7 +413,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
413
413
  ]
414
414
  ) : null,
415
415
  hasChildren ? _vue.h.call(void 0,
416
- _chunk4VLNT2EDjs.Button,
416
+ _chunkHA5QZ76Mjs.Button,
417
417
  {
418
418
  size: "sm",
419
419
  variant: "ghost",
@@ -437,7 +437,7 @@ var CommentThread = _vue.defineComponent.call(void 0, {
437
437
  (child, index) => renderNode(child, depth + 1, index === visibleChildren.length - 1)
438
438
  ),
439
439
  showLoadMore ? _vue.h.call(void 0,
440
- _chunk4VLNT2EDjs.Button,
440
+ _chunkHA5QZ76Mjs.Button,
441
441
  {
442
442
  size: "sm",
443
443
  variant: "ghost",
@@ -34,6 +34,15 @@ var Card = _vue.defineComponent.call(void 0, {
34
34
  type: String,
35
35
  default: "md"
36
36
  },
37
+ /**
38
+ * Padding override for the card content sections. `false` removes the
39
+ * built-in padding; a string supplies a custom padding utility class.
40
+ * Takes precedence over `size`.
41
+ */
42
+ padding: {
43
+ type: [Boolean, String],
44
+ default: void 0
45
+ },
37
46
  /**
38
47
  * Whether the card is hoverable (shows hover effect)
39
48
  * @default false
@@ -80,15 +89,16 @@ var Card = _vue.defineComponent.call(void 0, {
80
89
  }
81
90
  },
82
91
  setup(props, { slots, attrs }) {
92
+ const paddingClass = _vue.computed.call(void 0, () => _tigercatcore.resolveCardPadding.call(void 0, props.size, props.padding));
83
93
  const cardClasses = _vue.computed.call(void 0,
84
94
  () => _tigercatcore.classNames.call(void 0,
85
95
  _tigercatcore.getCardClasses.call(void 0, props.variant, props.hoverable),
86
96
  _tigercatcore.cardDirectionClasses[props.direction],
87
- !props.cover && _tigercatcore.cardSizeClasses[props.size]
97
+ !props.cover && paddingClass.value
88
98
  )
89
99
  );
90
100
  const isHorizontal = _vue.computed.call(void 0, () => props.direction === "horizontal");
91
- const sectionSizeClass = _vue.computed.call(void 0, () => props.cover ? _tigercatcore.cardSizeClasses[props.size] : void 0);
101
+ const sectionSizeClass = _vue.computed.call(void 0, () => props.cover ? paddingClass.value : void 0);
92
102
  const getSectionClasses = (baseClasses) => _tigercatcore.classNames.call(void 0, baseClasses, sectionSizeClass.value);
93
103
  return () => {
94
104
  const attrsRecord = attrs;
@@ -134,7 +134,9 @@ var Timeline = defineComponent({
134
134
  contentChildren.push(h("div", { class: timelineLabelClasses }, item.label));
135
135
  }
136
136
  if (item.content) {
137
- contentChildren.push(h("div", { class: timelineDescriptionClasses }, item.content));
137
+ contentChildren.push(
138
+ h("div", { class: timelineDescriptionClasses }, item.content)
139
+ );
138
140
  }
139
141
  return h("li", { key, class: itemClasses }, [
140
142
  h("div", { class: tailClasses }),
@@ -49,6 +49,7 @@ var _vue = require('vue');
49
49
 
50
50
 
51
51
 
52
+
52
53
 
53
54
 
54
55
  var _tigercatcore = require('@expcat/tigercat-core');
@@ -443,26 +444,36 @@ var MenuItem = _vue.defineComponent.call(void 0, {
443
444
  return () => {
444
445
  const children = [];
445
446
  const effectiveCollapsed = _nullishCoalesce(props.collapsed, () => ( (menuContext ? menuContext.collapsed.value : false)));
447
+ const iconClasses = effectiveCollapsed ? _tigercatcore.menuCollapsedIconClasses : _tigercatcore.menuItemIconClasses;
446
448
  if (props.icon) {
447
449
  if (typeof props.icon === "string") {
448
450
  children.push(
449
451
  _vue.h.call(void 0, "span", {
450
- class: _tigercatcore.menuItemIconClasses,
452
+ class: iconClasses,
451
453
  innerHTML: props.icon
452
454
  })
453
455
  );
454
456
  } else {
455
- children.push(_vue.h.call(void 0, "span", { class: _tigercatcore.menuItemIconClasses }, props.icon));
457
+ children.push(_vue.h.call(void 0, "span", { class: iconClasses }, props.icon));
456
458
  }
457
459
  }
458
460
  if (!effectiveCollapsed && slots.default) {
459
461
  children.push(_vue.h.call(void 0, "span", { class: "flex-1" }, slots.default()));
460
- } else if (effectiveCollapsed && !props.icon && slots.default) {
461
- const defaultSlot = slots.default();
462
- if (defaultSlot && defaultSlot.length > 0) {
463
- const text = String(defaultSlot[0].children || "");
464
- children.push(_vue.h.call(void 0, "span", { class: "flex-1 text-center" }, text.charAt(0).toUpperCase()));
462
+ } else if (effectiveCollapsed && slots.default) {
463
+ if (!props.icon) {
464
+ const defaultSlot = slots.default();
465
+ if (defaultSlot && defaultSlot.length > 0) {
466
+ const text = String(defaultSlot[0].children || "");
467
+ children.push(
468
+ _vue.h.call(void 0,
469
+ "span",
470
+ { class: "flex-1 text-center", "aria-hidden": "true" },
471
+ text.charAt(0).toUpperCase()
472
+ )
473
+ );
474
+ }
465
475
  }
476
+ children.push(_vue.h.call(void 0, "span", { class: "sr-only" }, slots.default()));
466
477
  }
467
478
  return _vue.h.call(void 0,
468
479
  "li",
@@ -872,16 +883,17 @@ var SubMenu = _vue.defineComponent.call(void 0, {
872
883
  return () => {
873
884
  if (!menuContext) return null;
874
885
  const titleChildren = [];
886
+ const submenuIconClasses = effectiveCollapsed.value ? _tigercatcore.menuCollapsedIconClasses : _tigercatcore.menuItemIconClasses;
875
887
  if (props.icon) {
876
888
  if (typeof props.icon === "string") {
877
889
  titleChildren.push(
878
890
  _vue.h.call(void 0, "span", {
879
- class: _tigercatcore.menuItemIconClasses,
891
+ class: submenuIconClasses,
880
892
  innerHTML: props.icon
881
893
  })
882
894
  );
883
895
  } else {
884
- titleChildren.push(_vue.h.call(void 0, "span", { class: _tigercatcore.menuItemIconClasses }, props.icon));
896
+ titleChildren.push(_vue.h.call(void 0, "span", { class: submenuIconClasses }, props.icon));
885
897
  }
886
898
  }
887
899
  if (!effectiveCollapsed.value) {
@@ -889,10 +901,17 @@ var SubMenu = _vue.defineComponent.call(void 0, {
889
901
  if (menuContext.mode.value !== "horizontal" && !isPopup.value) {
890
902
  titleChildren.push(ExpandIcon(isExpanded.value));
891
903
  }
892
- } else if (!props.icon) {
893
- titleChildren.push(
894
- _vue.h.call(void 0, "span", { class: "flex-1 text-center" }, props.title.charAt(0).toUpperCase())
895
- );
904
+ } else {
905
+ if (!props.icon) {
906
+ titleChildren.push(
907
+ _vue.h.call(void 0,
908
+ "span",
909
+ { class: "flex-1 text-center", "aria-hidden": "true" },
910
+ props.title.charAt(0).toUpperCase()
911
+ )
912
+ );
913
+ }
914
+ titleChildren.push(_vue.h.call(void 0, "span", { class: "sr-only" }, props.title));
896
915
  }
897
916
  const titleNode = _vue.h.call(void 0,
898
917
  "button",
@@ -1,6 +1,12 @@
1
1
  import {
2
2
  ImagePreview
3
3
  } from "./chunk-KY3O3FWK.mjs";
4
+ import {
5
+ useFloatingPopup
6
+ } from "./chunk-M4EP4OVR.mjs";
7
+ import {
8
+ renderVueBodyTeleport
9
+ } from "./chunk-BDTPFPSB.mjs";
4
10
 
5
11
  // src/components/Image.ts
6
12
  import {
@@ -37,6 +43,10 @@ var Image = defineComponent({
37
43
  fit: { type: String, default: "cover" },
38
44
  fallbackSrc: { type: String, default: void 0 },
39
45
  preview: { type: Boolean, default: true },
46
+ previewTrigger: {
47
+ type: String,
48
+ default: "click"
49
+ },
40
50
  lazy: { type: Boolean, default: false },
41
51
  className: { type: String, default: void 0 },
42
52
  style: {
@@ -53,6 +63,35 @@ var Image = defineComponent({
53
63
  const previewVisible = ref(false);
54
64
  let observer = null;
55
65
  const group = inject(IMAGE_GROUP_INJECTION_KEY, null);
66
+ const hoverPreviewEnabled = computed(
67
+ () => props.preview && props.previewTrigger === "hover" && !group
68
+ );
69
+ const clickPreviewEnabled = computed(() => props.preview && props.previewTrigger !== "hover");
70
+ const floatingPopupProps = {
71
+ get trigger() {
72
+ return "hover";
73
+ },
74
+ get placement() {
75
+ return "right";
76
+ },
77
+ get offset() {
78
+ return 12;
79
+ },
80
+ get disabled() {
81
+ return !hoverPreviewEnabled.value;
82
+ }
83
+ };
84
+ const {
85
+ currentVisible: hoverVisible,
86
+ triggerRef: hoverTriggerRef,
87
+ floatingRef: hoverFloatingRef,
88
+ floatingStyles: hoverFloatingStyles,
89
+ triggerHandlers: hoverTriggerHandlers
90
+ } = useFloatingPopup({ props: floatingPopupProps, emit });
91
+ const setContainerRef = (el) => {
92
+ containerRef.value = el;
93
+ hoverTriggerRef.value = el;
94
+ };
56
95
  const registeredIndex = ref(-1);
57
96
  onMounted(() => {
58
97
  if (group && props.src) {
@@ -103,7 +142,7 @@ var Image = defineComponent({
103
142
  emit("error");
104
143
  };
105
144
  const handleClick = () => {
106
- if (!props.preview) return;
145
+ if (!clickPreviewEnabled.value) return;
107
146
  if (group) {
108
147
  group.openPreview(registeredIndex.value >= 0 ? registeredIndex.value : 0);
109
148
  } else {
@@ -193,25 +232,44 @@ var Image = defineComponent({
193
232
  emit("preview-open-change", val);
194
233
  }
195
234
  }) : null;
235
+ const hoverPreviewEl = hoverPreviewEnabled.value && hoverVisible.value && props.src ? renderVueBodyTeleport(
236
+ h(
237
+ "div",
238
+ {
239
+ ref: hoverFloatingRef,
240
+ style: hoverFloatingStyles.value,
241
+ "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"
243
+ },
244
+ [
245
+ h("img", {
246
+ src: props.src,
247
+ alt: "",
248
+ class: "block max-w-[16rem] max-h-[16rem] object-contain"
249
+ })
250
+ ]
251
+ )
252
+ ) : null;
196
253
  return h(
197
254
  "div",
198
255
  {
199
256
  ...forwardedAttrs,
200
- ref: containerRef,
257
+ ref: setContainerRef,
201
258
  class: containerClasses.value,
202
259
  style: containerStyle.value,
203
- role: props.preview ? "button" : void 0,
204
- tabindex: props.preview ? 0 : void 0,
205
- "aria-label": props.preview ? `Preview ${props.alt || "image"}` : void 0,
260
+ role: clickPreviewEnabled.value ? "button" : void 0,
261
+ tabindex: clickPreviewEnabled.value ? 0 : void 0,
262
+ "aria-label": clickPreviewEnabled.value ? `Preview ${props.alt || "image"}` : void 0,
206
263
  onClick: handleClick,
207
264
  onKeydown: (e) => {
208
- if (props.preview && (e.key === "Enter" || e.key === " ")) {
265
+ if (clickPreviewEnabled.value && (e.key === "Enter" || e.key === " ")) {
209
266
  e.preventDefault();
210
267
  handleClick();
211
268
  }
212
- }
269
+ },
270
+ ...hoverPreviewEnabled.value ? hoverTriggerHandlers.value : {}
213
271
  },
214
- [content, previewEl]
272
+ [content, previewEl, hoverPreviewEl]
215
273
  );
216
274
  };
217
275
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DropdownContextKey
3
- } from "./chunk-VKW2O36D.mjs";
3
+ } from "./chunk-5HNDLUUM.mjs";
4
4
 
5
5
  // src/components/DropdownItem.ts
6
6
  import { defineComponent, inject, computed, h } from "vue";
@@ -13,7 +13,8 @@ import {
13
13
  buttonDangerClasses,
14
14
  getButtonVariantClasses,
15
15
  getSpinnerSVG,
16
- normalizeSvgAttrs
16
+ normalizeSvgAttrs,
17
+ warnUnsupportedColorProp
17
18
  } from "@expcat/tigercat-core";
18
19
  var createLoadingSpinner = () => {
19
20
  const spinnerSvg = getSpinnerSVG("spinner");
@@ -108,6 +109,7 @@ var Button = defineComponent({
108
109
  });
109
110
  const mergedStyle = computed(() => mergeStyleValues(attrs.style, props.style));
110
111
  return () => {
112
+ warnUnsupportedColorProp("Button", attrs);
111
113
  const isDisabled = props.disabled || props.loading;
112
114
  const iconIsRight = props.iconPosition === "right";
113
115
  const loadingNode = props.loading ? h(
@@ -1,6 +1,6 @@
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
- var _chunkPXSV3J2Hjs = require('./chunk-PXSV3J2H.js');
3
+ var _chunkO4V7VULFjs = require('./chunk-O4V7VULF.js');
4
4
 
5
5
 
6
6
  var _chunkBGMAWKWVjs = require('./chunk-BGMAWKWV.js');
@@ -18,7 +18,7 @@ var _chunkBYNMOQBBjs = require('./chunk-BYNMOQBB.js');
18
18
  var _chunk2YFXJUBTjs = require('./chunk-2YFXJUBT.js');
19
19
 
20
20
 
21
- var _chunk4VLNT2EDjs = require('./chunk-4VLNT2ED.js');
21
+ var _chunkHA5QZ76Mjs = require('./chunk-HA5QZ76M.js');
22
22
 
23
23
  // src/components/DataTableWithToolbar.ts
24
24
 
@@ -143,6 +143,14 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
143
143
  type: Array,
144
144
  default: void 0
145
145
  },
146
+ cardClassName: {
147
+ type: [String, Function],
148
+ default: void 0
149
+ },
150
+ renderCard: {
151
+ type: Function,
152
+ default: void 0
153
+ },
146
154
  toolbar: {
147
155
  type: Object,
148
156
  default: void 0
@@ -356,7 +364,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
356
364
  },
357
365
  {
358
366
  default: () => _vue.h.call(void 0,
359
- _chunk4VLNT2EDjs.Button,
367
+ _chunkHA5QZ76Mjs.Button,
360
368
  {
361
369
  size: "sm",
362
370
  variant: "outline",
@@ -411,7 +419,21 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
411
419
  }
412
420
  );
413
421
  };
422
+ const toolbarRenderContext = () => ({
423
+ searchValue: _nullishCoalesce(searchValue.value, () => ( "")),
424
+ setSearch: handleSearchChange,
425
+ submitSearch: handleSearchSubmit,
426
+ filters: resolvedFilters.value,
427
+ setFilter: (key, value) => setFilterValue(key, value),
428
+ selectedKeys: selectedKeys.value,
429
+ selectedCount: selectedCount.value,
430
+ hiddenColumnKeys: resolvedHiddenKeys.value,
431
+ setHiddenColumnKeys: handleHiddenColumnsChange
432
+ });
414
433
  const renderToolbar = () => {
434
+ if (slots.toolbar) {
435
+ return slots.toolbar(toolbarRenderContext());
436
+ }
415
437
  if (!hasSearch.value && !hasFilters.value && !hasFiltersExtra.value && !hasBulkActions.value && !hasColumnSettings.value)
416
438
  return null;
417
439
  const leftNodes = [];
@@ -420,7 +442,12 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
420
442
  leftNodes.push(
421
443
  _vue.h.call(void 0,
422
444
  "div",
423
- { class: "flex items-center gap-2 w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]" },
445
+ {
446
+ class: _tigercatcore.classNames.call(void 0,
447
+ "flex items-center gap-2",
448
+ _nullishCoalesce(_optionalChain([props, 'access', _43 => _43.toolbar, 'optionalAccess', _44 => _44.searchClassName]), () => ( "w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]"))
449
+ )
450
+ },
424
451
  [
425
452
  _vue.h.call(void 0,
426
453
  _chunkBYNMOQBBjs.Input,
@@ -428,7 +455,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
428
455
  type: "search",
429
456
  size: "sm",
430
457
  modelValue: searchValue.value,
431
- placeholder: _nullishCoalesce(_optionalChain([props, 'access', _43 => _43.toolbar, 'optionalAccess', _44 => _44.searchPlaceholder]), () => ( tableLabels.value.searchPlaceholder)),
458
+ placeholder: _nullishCoalesce(_optionalChain([props, 'access', _45 => _45.toolbar, 'optionalAccess', _46 => _46.searchPlaceholder]), () => ( tableLabels.value.searchPlaceholder)),
432
459
  "onUpdate:modelValue": (value) => handleSearchChange(String(_nullishCoalesce(value, () => ( "")))),
433
460
  onKeydown: (event) => {
434
461
  if (event.key === "Enter") {
@@ -458,7 +485,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
458
485
  }
459
486
  ),
460
487
  showButton ? _vue.h.call(void 0,
461
- _chunk4VLNT2EDjs.Button,
488
+ _chunkHA5QZ76Mjs.Button,
462
489
  {
463
490
  size: "sm",
464
491
  variant: "primary",
@@ -467,7 +494,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
467
494
  disabled: !canSearch.value
468
495
  },
469
496
  {
470
- default: () => _nullishCoalesce(_optionalChain([props, 'access', _45 => _45.toolbar, 'optionalAccess', _46 => _46.searchButtonText]), () => ( tableLabels.value.searchButtonText))
497
+ default: () => _nullishCoalesce(_optionalChain([props, 'access', _47 => _47.toolbar, 'optionalAccess', _48 => _48.searchButtonText]), () => ( tableLabels.value.searchButtonText))
471
498
  }
472
499
  ) : null
473
500
  ]
@@ -475,7 +502,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
475
502
  );
476
503
  }
477
504
  if (hasFilters.value) {
478
- _optionalChain([props, 'access', _47 => _47.toolbar, 'optionalAccess', _48 => _48.filters, 'optionalAccess', _49 => _49.forEach, 'call', _50 => _50((filter) => {
505
+ _optionalChain([props, 'access', _49 => _49.toolbar, 'optionalAccess', _50 => _50.filters, 'optionalAccess', _51 => _51.forEach, 'call', _52 => _52((filter) => {
479
506
  const currentValue = resolvedFilters.value[filter.key];
480
507
  const clearable = filter.clearable !== false;
481
508
  if (filter.render) {
@@ -489,14 +516,22 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
489
516
  leftNodes.push(
490
517
  _vue.h.call(void 0,
491
518
  "div",
492
- { key: filter.key, class: "w-full sm:w-auto" },
519
+ {
520
+ key: filter.key,
521
+ class: _nullishCoalesce(filter.itemClass, () => ( "w-full sm:w-auto")),
522
+ style: filter.itemStyle
523
+ },
493
524
  filterNode == null ? [] : [filterNode]
494
525
  )
495
526
  );
496
527
  return;
497
528
  }
498
529
  leftNodes.push(
499
- _vue.h.call(void 0, "div", { key: filter.key, class: "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]" }, [
530
+ _vue.h.call(void 0, "div", {
531
+ key: filter.key,
532
+ class: _nullishCoalesce(filter.itemClass, () => ( "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]")),
533
+ style: filter.itemStyle
534
+ }, [
500
535
  _vue.h.call(void 0, _chunkBGMAWKWVjs.Select, {
501
536
  size: "sm",
502
537
  options: (_nullishCoalesce(filter.options, () => ( []))).map((opt) => ({
@@ -514,11 +549,11 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
514
549
  );
515
550
  })]);
516
551
  }
517
- const filtersExtra = _optionalChain([slots, 'access', _51 => _51["filters-extra"], 'optionalCall', _52 => _52({
552
+ const filtersExtra = _optionalChain([slots, 'access', _53 => _53["filters-extra"], 'optionalCall', _54 => _54({
518
553
  filters: resolvedFilters.value,
519
554
  setFilter: (key, value) => setFilterValue(key, value)
520
555
  })]);
521
- if (_optionalChain([filtersExtra, 'optionalAccess', _53 => _53.length])) {
556
+ if (_optionalChain([filtersExtra, 'optionalAccess', _55 => _55.length])) {
522
557
  leftNodes.push(...filtersExtra);
523
558
  }
524
559
  const bulkChildren = [];
@@ -544,10 +579,10 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
544
579
  );
545
580
  }
546
581
  ;
547
- (_nullishCoalesce(_optionalChain([props, 'access', _54 => _54.toolbar, 'optionalAccess', _55 => _55.bulkActions]), () => ( []))).forEach((action) => {
582
+ (_nullishCoalesce(_optionalChain([props, 'access', _56 => _56.toolbar, 'optionalAccess', _57 => _57.bulkActions]), () => ( []))).forEach((action) => {
548
583
  bulkChildren.push(
549
584
  _vue.h.call(void 0,
550
- _chunk4VLNT2EDjs.Button,
585
+ _chunkHA5QZ76Mjs.Button,
551
586
  {
552
587
  key: action.key,
553
588
  size: "sm",
@@ -565,8 +600,10 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
565
600
  {
566
601
  class: _tigercatcore.classNames.call(void 0,
567
602
  "tiger-data-table-toolbar flex flex-wrap items-center gap-3",
568
- props.bordered ? "bg-[var(--tiger-surface-muted,#f9fafb)] dark:bg-gray-800/10 px-4 py-3.5 border-b border-[var(--tiger-border,#e5e7eb)]" : "bg-[var(--tiger-surface-muted,#f9fafb)]/80 dark:bg-gray-800/30 px-4 py-3.5 border border-[var(--tiger-border,#e5e7eb)] rounded-[var(--tiger-radius-md,0.5rem)] shadow-sm"
603
+ props.bordered ? "bg-[var(--tiger-surface-muted,#f9fafb)] dark:bg-gray-800/10 px-4 py-3.5 border-b border-[var(--tiger-border,#e5e7eb)]" : "bg-[var(--tiger-surface-muted,#f9fafb)]/80 dark:bg-gray-800/30 px-4 py-3.5 border border-[var(--tiger-border,#e5e7eb)] rounded-[var(--tiger-radius-md,0.5rem)] shadow-sm",
604
+ _optionalChain([props, 'access', _58 => _58.toolbar, 'optionalAccess', _59 => _59.className])
569
605
  ),
606
+ style: _optionalChain([props, 'access', _60 => _60.toolbar, 'optionalAccess', _61 => _61.style]),
570
607
  role: "toolbar",
571
608
  "aria-label": tableLabels.value.toolbarAriaLabel
572
609
  },
@@ -613,10 +650,17 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
613
650
  responsiveMode: props.responsiveMode,
614
651
  cardBreakpoint: props.cardBreakpoint,
615
652
  cardLayout: props.cardLayout,
653
+ cardClassName: props.cardClassName,
654
+ renderCard: props.renderCard,
616
655
  class: props.bordered ? "border-none rounded-none shadow-none" : void 0,
617
656
  onSelectionChange: (keys) => emit("selection-change", keys),
618
657
  onPageChange: handleTablePageChange
619
658
  };
659
+ const {
660
+ toolbar: _toolbarSlot,
661
+ "filters-extra": _filtersExtraSlot,
662
+ ...tableSlots
663
+ } = slots;
620
664
  return _vue.h.call(void 0,
621
665
  "div",
622
666
  {
@@ -624,7 +668,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
624
668
  style: wrapperStyle.value,
625
669
  "data-tiger-data-table-with-toolbar": ""
626
670
  },
627
- [renderToolbar(), _vue.h.call(void 0, _chunkPXSV3J2Hjs.Table, tableProps)]
671
+ [renderToolbar(), _vue.h.call(void 0, _chunkO4V7VULFjs.Table, tableProps, tableSlots)]
628
672
  );
629
673
  };
630
674
  }
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkWIQPVVUQjs = require('../chunk-WIQPVVUQ.js');
5
- require('../chunk-27T3QDSF.js');
4
+ var _chunkNYR6OQO4js = require('../chunk-NYR6OQO4.js');
5
+ require('../chunk-RBHF7NOQ.js');
6
6
  require('../chunk-6XI4VDU4.js');
7
7
  require('../chunk-2DC3BMED.js');
8
8
  require('../chunk-EQW6IUHG.js');
9
- require('../chunk-2KDSHEZT.js');
9
+ require('../chunk-BPAZBRCR.js');
10
10
  require('../chunk-TGHB5XST.js');
11
- require('../chunk-XGXGAK27.js');
11
+ require('../chunk-UG6O4F2A.js');
12
12
  require('../chunk-Z6HBM73W.js');
13
13
  require('../chunk-ODQOYMUQ.js');
14
14
 
15
15
 
16
16
 
17
- exports.ActivityFeed = _chunkWIQPVVUQjs.ActivityFeed; exports.default = _chunkWIQPVVUQjs.ActivityFeed_default;
17
+ exports.ActivityFeed = _chunkNYR6OQO4js.ActivityFeed; exports.default = _chunkNYR6OQO4js.ActivityFeed_default;