@vtable-guild/vtable-guild 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/core/src/components/Button.mjs +108 -0
  2. package/dist/core/src/components/Checkbox.mjs +84 -0
  3. package/dist/core/src/components/Input.mjs +82 -0
  4. package/dist/core/src/components/Radio.mjs +69 -0
  5. package/dist/core/src/components/Scrollbar.mjs +179 -0
  6. package/dist/core/src/components/ScrollbarBar.mjs +103 -0
  7. package/dist/core/src/components/Tooltip.mjs +321 -0
  8. package/dist/core/src/components/VTableGuildConfigProvider.mjs +77 -0
  9. package/dist/core/src/components/VirtualList/Filler.mjs +55 -0
  10. package/dist/core/src/components/VirtualList/Item.mjs +29 -0
  11. package/dist/core/src/components/VirtualList/VirtualList.mjs +373 -0
  12. package/dist/core/src/components/VirtualList/VirtualScrollBar.mjs +216 -0
  13. package/dist/core/src/components/VirtualList/hooks/useChildren.mjs +21 -0
  14. package/dist/core/src/components/VirtualList/hooks/useDiffItem.mjs +16 -0
  15. package/dist/core/src/components/VirtualList/hooks/useFrameWheel.mjs +48 -0
  16. package/dist/core/src/components/VirtualList/hooks/useGetSize.mjs +25 -0
  17. package/dist/core/src/components/VirtualList/hooks/useHeights.mjs +56 -0
  18. package/dist/core/src/components/VirtualList/hooks/useMobileTouchMove.mjs +40 -0
  19. package/dist/core/src/components/VirtualList/hooks/useOriginScroll.mjs +17 -0
  20. package/dist/core/src/components/VirtualList/hooks/useScrollDrag.mjs +41 -0
  21. package/dist/core/src/components/VirtualList/hooks/useScrollTo.mjs +88 -0
  22. package/dist/core/src/components/VirtualList/utils/CacheMap.mjs +24 -0
  23. package/dist/core/src/components/VirtualList/utils/algorithmUtil.mjs +22 -0
  24. package/dist/core/src/components/VirtualList/utils/isFirefox.mjs +4 -0
  25. package/dist/core/src/components/VirtualList/utils/scrollbarUtil.mjs +7 -0
  26. package/dist/core/src/composables/useScrollbar.mjs +55 -0
  27. package/dist/core/src/composables/useTheme.mjs +92 -0
  28. package/dist/core/src/index.d.ts +1 -0
  29. package/dist/core/src/index.d.ts.map +1 -1
  30. package/dist/core/src/plugin/index.mjs +27 -0
  31. package/dist/core/src/utils/classPrefix.mjs +100 -0
  32. package/dist/core/src/utils/devWarn.d.ts +4 -0
  33. package/dist/core/src/utils/devWarn.d.ts.map +1 -0
  34. package/dist/core/src/utils/devWarn.mjs +5 -0
  35. package/dist/core/src/utils/mergeDeep.mjs +20 -0
  36. package/dist/core/src/utils/props.mjs +33 -0
  37. package/dist/core/src/utils/tv.mjs +19 -0
  38. package/dist/icons/src/AntdvEmptyIcon.mjs +37 -0
  39. package/dist/icons/src/AntdvSpinIndicator.mjs +23 -0
  40. package/dist/icons/src/CaretDownIcon.d.ts.map +1 -1
  41. package/dist/icons/src/CaretDownIcon.mjs +9 -0
  42. package/dist/icons/src/CaretRightIcon.d.ts.map +1 -1
  43. package/dist/icons/src/CaretUpIcon.d.ts.map +1 -1
  44. package/dist/icons/src/CaretUpIcon.mjs +9 -0
  45. package/dist/icons/src/DownOutlinedIcon.d.ts.map +1 -1
  46. package/dist/icons/src/DownOutlinedIcon.mjs +9 -0
  47. package/dist/icons/src/ElArrowDownIcon.d.ts.map +1 -1
  48. package/dist/icons/src/ElArrowDownIcon.mjs +9 -0
  49. package/dist/icons/src/ElCaretBottomIcon.d.ts.map +1 -1
  50. package/dist/icons/src/ElCaretBottomIcon.mjs +9 -0
  51. package/dist/icons/src/ElCaretTopIcon.d.ts.map +1 -1
  52. package/dist/icons/src/ElCaretTopIcon.mjs +9 -0
  53. package/dist/icons/src/ElFilterIcon.d.ts.map +1 -1
  54. package/dist/icons/src/ElLoadingIcon.mjs +28 -0
  55. package/dist/icons/src/FilterFilledIcon.d.ts.map +1 -1
  56. package/dist/icons/src/FilterFilledIcon.mjs +9 -0
  57. package/dist/icons/src/SearchIcon.d.ts.map +1 -1
  58. package/dist/icons/src/SearchIcon.mjs +9 -0
  59. package/dist/icons/src/createSvgIcon.d.ts +13 -0
  60. package/dist/icons/src/createSvgIcon.d.ts.map +1 -0
  61. package/dist/icons/src/createSvgIcon.mjs +23 -0
  62. package/dist/index.mjs +82 -10196
  63. package/dist/table/src/components/ColGroup.mjs +25 -0
  64. package/dist/table/src/components/ExpandIcon.mjs +60 -0
  65. package/dist/table/src/components/FilterDropdown.d.ts.map +1 -1
  66. package/dist/table/src/components/FilterDropdown.mjs +324 -0
  67. package/dist/table/src/components/FilterIcon.mjs +30 -0
  68. package/dist/table/src/components/ResizeHandle.mjs +28 -0
  69. package/dist/table/src/components/SelectionCheckbox.mjs +33 -0
  70. package/dist/table/src/components/SelectionDropdown.d.ts.map +1 -1
  71. package/dist/table/src/components/SelectionDropdown.mjs +73 -0
  72. package/dist/table/src/components/SelectionRadio.mjs +28 -0
  73. package/dist/table/src/components/SortButton.mjs +30 -0
  74. package/dist/table/src/components/Table.d.ts.map +1 -1
  75. package/dist/table/src/components/Table.mjs +781 -0
  76. package/dist/table/src/components/TableBody.mjs +124 -0
  77. package/dist/table/src/components/TableCell.d.ts.map +1 -1
  78. package/dist/table/src/components/TableCell.mjs +222 -0
  79. package/dist/table/src/components/TableEmpty.mjs +38 -0
  80. package/dist/table/src/components/TableHeader.mjs +51 -0
  81. package/dist/table/src/components/TableHeaderCell.d.ts.map +1 -1
  82. package/dist/table/src/components/TableHeaderCell.mjs +391 -0
  83. package/dist/table/src/components/TableLoading.mjs +46 -0
  84. package/dist/table/src/components/TableRow.mjs +34 -0
  85. package/dist/table/src/components/VTable.vue.d.ts.map +1 -1
  86. package/dist/table/src/components/VTable.vue.mjs +155 -0
  87. package/dist/table/src/components/VTable.vue2.mjs +4 -0
  88. package/dist/table/src/components/VTableSummary.mjs +29 -0
  89. package/dist/table/src/components/VTableSummaryCell.d.ts.map +1 -1
  90. package/dist/table/src/components/VTableSummaryCell.mjs +68 -0
  91. package/dist/table/src/components/VTableSummaryRow.mjs +19 -0
  92. package/dist/table/src/components/VirtualTableBody.d.ts.map +1 -1
  93. package/dist/table/src/components/VirtualTableBody.mjs +172 -0
  94. package/dist/table/src/composables/index.d.ts +2 -1
  95. package/dist/table/src/composables/index.d.ts.map +1 -1
  96. package/dist/table/src/composables/useColumns.d.ts +6 -1
  97. package/dist/table/src/composables/useColumns.d.ts.map +1 -1
  98. package/dist/table/src/composables/useColumns.mjs +81 -0
  99. package/dist/table/src/composables/useControlledColumnState.d.ts +24 -0
  100. package/dist/table/src/composables/useControlledColumnState.d.ts.map +1 -0
  101. package/dist/table/src/composables/useControlledColumnState.mjs +23 -0
  102. package/dist/table/src/composables/useExpand.mjs +37 -0
  103. package/dist/table/src/composables/useFilter.d.ts.map +1 -1
  104. package/dist/table/src/composables/useFilter.mjs +68 -0
  105. package/dist/table/src/composables/useFixedColumnStyle.d.ts +18 -0
  106. package/dist/table/src/composables/useFixedColumnStyle.d.ts.map +1 -0
  107. package/dist/table/src/composables/useFixedColumnStyle.mjs +21 -0
  108. package/dist/table/src/composables/useHoverState.mjs +26 -0
  109. package/dist/table/src/composables/useResize.mjs +42 -0
  110. package/dist/table/src/composables/useScroll.d.ts +5 -4
  111. package/dist/table/src/composables/useScroll.d.ts.map +1 -1
  112. package/dist/table/src/composables/useScroll.mjs +68 -0
  113. package/dist/table/src/composables/useSelection.d.ts.map +1 -1
  114. package/dist/table/src/composables/useSelection.mjs +246 -0
  115. package/dist/table/src/composables/useSorter.d.ts +1 -5
  116. package/dist/table/src/composables/useSorter.d.ts.map +1 -1
  117. package/dist/table/src/composables/useSorter.mjs +161 -0
  118. package/dist/table/src/composables/useTreeData.d.ts +2 -0
  119. package/dist/table/src/composables/useTreeData.d.ts.map +1 -1
  120. package/dist/table/src/composables/useTreeData.mjs +92 -0
  121. package/dist/table/src/composables/useVirtual.mjs +19 -0
  122. package/dist/table/src/constants.mjs +8 -0
  123. package/dist/table/src/context.d.ts +90 -85
  124. package/dist/table/src/context.d.ts.map +1 -1
  125. package/dist/table/src/context.mjs +4 -0
  126. package/dist/table/src/index.d.ts.map +1 -1
  127. package/dist/table/src/index.mjs +23 -0
  128. package/dist/table/src/preset-config.mjs +35 -0
  129. package/dist/table/src/utils/cell.mjs +79 -0
  130. package/dist/table/src/utils/popupPosition.d.ts +20 -0
  131. package/dist/table/src/utils/popupPosition.d.ts.map +1 -0
  132. package/dist/table/src/utils/popupPosition.mjs +24 -0
  133. package/dist/table/src/utils/popupPosition.test.d.ts +2 -0
  134. package/dist/table/src/utils/popupPosition.test.d.ts.map +1 -0
  135. package/dist/table/src/utils/vnode.mjs +10 -0
  136. package/dist/theme/src/presets/antdv/button.mjs +70 -0
  137. package/dist/theme/src/presets/antdv/checkbox.mjs +51 -0
  138. package/dist/theme/src/presets/antdv/input.mjs +40 -0
  139. package/dist/theme/src/presets/antdv/radio.mjs +34 -0
  140. package/dist/theme/src/presets/antdv/scrollbar.mjs +22 -0
  141. package/dist/theme/src/presets/antdv/table-locale.mjs +55 -0
  142. package/dist/theme/src/presets/antdv/table.mjs +285 -0
  143. package/dist/theme/src/presets/antdv/tooltip.mjs +20 -0
  144. package/dist/theme/src/presets/element-plus/button.mjs +70 -0
  145. package/dist/theme/src/presets/element-plus/checkbox.mjs +65 -0
  146. package/dist/theme/src/presets/element-plus/input.mjs +39 -0
  147. package/dist/theme/src/presets/element-plus/radio.mjs +34 -0
  148. package/dist/theme/src/presets/element-plus/scrollbar.mjs +22 -0
  149. package/dist/theme/src/presets/element-plus/table-locale.mjs +56 -0
  150. package/dist/theme/src/presets/element-plus/table.mjs +235 -0
  151. package/dist/theme/src/presets/element-plus/tooltip.mjs +21 -0
  152. package/dist/theme/src/presets/index.mjs +92 -0
  153. package/package.json +5 -2
  154. package/dist/index.cjs +0 -1
@@ -0,0 +1,65 @@
1
+ const r = {
2
+ slots: {
3
+ root: [
4
+ "relative inline-flex items-center justify-center",
5
+ "w-[var(--vtg-checkbox-size)] h-[var(--vtg-checkbox-size)]",
6
+ "rounded-[var(--vtg-checkbox-border-radius)]",
7
+ "border border-[color:var(--color-border,#dcdfe6)]",
8
+ "bg-[color:var(--color-surface)]",
9
+ "cursor-pointer transition-all duration-[250ms] ease-[cubic-bezier(0.71,-0.46,0.29,1.46)] shrink-0",
10
+ "hover:border-[color:var(--color-primary)]"
11
+ ].join(" "),
12
+ checkMark: [
13
+ "pointer-events-none absolute box-content",
14
+ "top-1/2 left-1/2",
15
+ "w-[3px] h-[7px]",
16
+ "border border-transparent border-l-0 border-t-0",
17
+ "border-[color:var(--vtg-checkbox-check-color,#fff)]",
18
+ "[transform:translate(-45%,_-60%)_rotate(45deg)]",
19
+ "[transform-origin:center]"
20
+ ].join(" "),
21
+ indeterminateMark: [
22
+ "pointer-events-none absolute left-0 right-0 top-[5px]",
23
+ "w-[12px] rounded-none translate-x-0 translate-y-0",
24
+ "h-[2px] bg-[color:var(--vtg-checkbox-indeterminate-color,#fff)]",
25
+ "[transform:scale(.5)]"
26
+ ].join(" ")
27
+ },
28
+ variants: {
29
+ checked: {
30
+ true: {
31
+ root: [
32
+ "bg-[color:var(--color-primary)] border-[color:var(--color-primary)]",
33
+ "hover:bg-[color:var(--color-primary)] hover:border-[color:var(--color-primary)]"
34
+ ].join(" ")
35
+ }
36
+ },
37
+ indeterminate: {
38
+ true: {
39
+ root: [
40
+ "bg-[color:var(--color-primary)] border-[color:var(--color-primary)]",
41
+ "hover:bg-[color:var(--color-primary)] hover:border-[color:var(--color-primary)]"
42
+ ].join(" ")
43
+ }
44
+ },
45
+ disabled: {
46
+ true: {
47
+ root: [
48
+ "bg-[color:var(--color-bg-disabled,#f5f7fa)]",
49
+ "border-[color:var(--color-border,#dcdfe6)]",
50
+ "cursor-not-allowed hover:border-[color:var(--color-border,#dcdfe6)]",
51
+ "[--vtg-checkbox-check-color:var(--color-text-placeholder,#a8abb2)]",
52
+ "[--vtg-checkbox-indeterminate-color:var(--color-text-placeholder,#a8abb2)]"
53
+ ].join(" ")
54
+ }
55
+ }
56
+ },
57
+ defaultVariants: {
58
+ checked: !1,
59
+ indeterminate: !1,
60
+ disabled: !1
61
+ }
62
+ };
63
+ export {
64
+ r as elementPlusCheckboxTheme
65
+ };
@@ -0,0 +1,39 @@
1
+ const o = {
2
+ slots: {
3
+ root: [
4
+ "w-full box-border",
5
+ "rounded-[var(--vtg-input-border-radius)]",
6
+ "h-[var(--vtg-input-height)]",
7
+ "px-[var(--vtg-input-padding-inline)]",
8
+ "text-[length:var(--vtg-input-font-size)]",
9
+ "font-[family-name:var(--vtg-table-font-family)]",
10
+ "leading-[var(--vtg-table-line-height)]",
11
+ "bg-[color:var(--color-surface)]",
12
+ "text-[color:var(--color-on-surface)]",
13
+ "border border-[color:var(--color-border,#dcdfe6)]",
14
+ "outline-none transition-all duration-200",
15
+ "focus:border-[color:var(--color-primary)]",
16
+ "placeholder:text-[color:var(--color-text-placeholder,#a8abb2)]",
17
+ "hover:border-[color:var(--color-border-hover,#c0c4cc)]"
18
+ ].join(" ")
19
+ },
20
+ variants: {
21
+ bare: {
22
+ true: {
23
+ root: "min-w-0 bg-transparent outline-none border-0 shadow-none p-0 focus:shadow-none"
24
+ }
25
+ },
26
+ disabled: {
27
+ true: {
28
+ root: "bg-[color:var(--color-bg-disabled,#f5f7fa)] text-[color:var(--color-text-disabled)] cursor-not-allowed"
29
+ }
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ bare: !1,
34
+ disabled: !1
35
+ }
36
+ };
37
+ export {
38
+ o as elementPlusInputTheme
39
+ };
@@ -0,0 +1,34 @@
1
+ const r = {
2
+ slots: {
3
+ root: [
4
+ "inline-flex items-center justify-center",
5
+ "w-[var(--vtg-radio-size)] h-[var(--vtg-radio-size)]",
6
+ "rounded-full",
7
+ "border border-[length:var(--vtg-radio-border-width)] border-[color:var(--color-border,#dcdfe6)]",
8
+ "bg-[color:var(--color-surface)]",
9
+ "cursor-pointer transition-all duration-150 ease-in shrink-0",
10
+ "hover:border-[color:var(--color-primary)]"
11
+ ].join(" "),
12
+ dot: "rounded-full w-[var(--vtg-radio-size)] h-[var(--vtg-radio-size)] transition-transform duration-150 ease-in"
13
+ },
14
+ variants: {
15
+ checked: {
16
+ true: {
17
+ root: "border-[color:var(--color-primary)] bg-[color:var(--color-primary)]",
18
+ dot: "scale-[0.375] bg-[color:var(--color-surface)]"
19
+ }
20
+ },
21
+ disabled: {
22
+ true: {
23
+ root: "bg-[color:var(--color-bg-disabled,#f5f7fa)] cursor-not-allowed hover:border-[color:var(--color-border,#dcdfe6)]"
24
+ }
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ checked: !1,
29
+ disabled: !1
30
+ }
31
+ };
32
+ export {
33
+ r as elementPlusRadioTheme
34
+ };
@@ -0,0 +1,22 @@
1
+ const r = {
2
+ slots: {
3
+ root: "group relative overflow-hidden",
4
+ wrap: "overflow-auto scrollbar-none h-full",
5
+ view: "block min-w-full w-max",
6
+ track: "absolute z-[3] rounded opacity-0 transition-opacity duration-300 group-hover:opacity-100",
7
+ trackVertical: "right-0.5 top-0.5 bottom-0.5 w-[var(--vtg-scrollbar-thumb-width)]",
8
+ trackHorizontal: "bottom-0.5 left-0.5 right-0.5 h-[var(--vtg-scrollbar-thumb-width)]",
9
+ thumb: [
10
+ "relative w-full",
11
+ "h-full",
12
+ "rounded-[var(--vtg-scrollbar-thumb-radius)]",
13
+ "bg-[color:var(--vtg-scrollbar-thumb-bg)]",
14
+ "hover:bg-[color:var(--vtg-scrollbar-thumb-hover-bg)]",
15
+ "transition-colors cursor-pointer"
16
+ ].join(" ")
17
+ },
18
+ defaultVariants: {}
19
+ };
20
+ export {
21
+ r as elementPlusScrollbarTheme
22
+ };
@@ -0,0 +1,56 @@
1
+ const e = {
2
+ header: {
3
+ sortTriggerAsc: "点击升序",
4
+ sortTriggerDesc: "点击降序",
5
+ cancelSort: "取消排序",
6
+ filterTriggerAriaLabel: "筛选"
7
+ },
8
+ filterDropdown: {
9
+ searchPlaceholder: "搜索筛选项",
10
+ emptyText: "暂无匹配数据",
11
+ resetText: "重置",
12
+ // 与 element-plus 官方 zh-cn locale 对齐:el.table.confirmFilter = '筛选'
13
+ confirmText: "筛选",
14
+ selectAllText: "全选"
15
+ },
16
+ empty: {
17
+ text: "暂无数据"
18
+ },
19
+ loading: {
20
+ text: "加载中..."
21
+ },
22
+ selection: {
23
+ selectAll: "全选当页",
24
+ selectInvert: "反选当页",
25
+ selectNone: "清空所有"
26
+ }
27
+ }, t = {
28
+ header: {
29
+ sortTriggerAsc: "Sort ascending",
30
+ sortTriggerDesc: "Sort descending",
31
+ cancelSort: "Cancel sorting",
32
+ filterTriggerAriaLabel: "Filter"
33
+ },
34
+ filterDropdown: {
35
+ searchPlaceholder: "Search filters",
36
+ emptyText: "No matching data",
37
+ resetText: "Reset",
38
+ confirmText: "Filter",
39
+ selectAllText: "Select all items"
40
+ },
41
+ empty: {
42
+ text: "No Data"
43
+ },
44
+ loading: {
45
+ text: "Loading..."
46
+ },
47
+ selection: {
48
+ selectAll: "Select current page",
49
+ selectInvert: "Invert current page",
50
+ selectNone: "Clear all"
51
+ }
52
+ };
53
+ export {
54
+ t as elementPlusTableEnUSLocale,
55
+ e as elementPlusTableLocale
56
+ };
@@ -0,0 +1,235 @@
1
+ const e = {
2
+ slots: {
3
+ root: [
4
+ "relative w-full min-w-0",
5
+ "font-[family-name:var(--vtg-table-font-family)]",
6
+ "text-[length:var(--vtg-table-font-size)]",
7
+ "leading-[var(--vtg-table-line-height)]"
8
+ ].join(" "),
9
+ wrapper: "w-full overflow-auto",
10
+ table: [
11
+ "w-full border-separate border-spacing-0",
12
+ "bg-[color:var(--vtg-table-bg)]",
13
+ "text-[color:var(--vtg-table-text-color)]"
14
+ ].join(" "),
15
+ thead: "",
16
+ tbody: "",
17
+ tr: "group/row transition-colors",
18
+ groupedHeaderTable: "border border-[color:var(--vtg-table-border-color)]",
19
+ groupedHeaderTh: [
20
+ "border-r border-[color:var(--vtg-table-border-color)] last:border-r-0",
21
+ "bg-[color:var(--color-surface-hover)]"
22
+ ].join(" "),
23
+ groupedHeaderTd: "border-r border-[color:var(--vtg-table-border-color)] last:border-r-0",
24
+ th: [
25
+ "relative text-left font-semibold",
26
+ "bg-[color:var(--vtg-table-header-bg)]",
27
+ "text-[color:var(--vtg-table-header-color)]",
28
+ "border-b border-[color:var(--vtg-table-border-color)]"
29
+ // Element Plus: 无表头分割线
30
+ ].join(" "),
31
+ td: [
32
+ "align-middle",
33
+ "bg-[color:var(--vtg-table-bg)]",
34
+ "text-[color:var(--vtg-table-text-color)]",
35
+ "border-b border-[color:var(--vtg-table-border-color)]"
36
+ ].join(" "),
37
+ empty: "py-5 text-center text-[color:var(--color-muted)]",
38
+ loading: [
39
+ "absolute inset-0 z-[2]",
40
+ "flex items-center justify-center",
41
+ "bg-[color:var(--vtg-table-loading-overlay-bg)]"
42
+ ].join(" "),
43
+ headerCellInner: "flex items-center",
44
+ bodyCellEllipsis: "block min-w-0 overflow-hidden text-ellipsis whitespace-nowrap",
45
+ // ---- 排序相关 ----
46
+ thSortable: "cursor-pointer select-none",
47
+ thSorted: "",
48
+ tdSorted: "",
49
+ sortButton: "inline-flex flex-col items-center justify-center text-xs leading-none ml-1",
50
+ sortIconDown: "-mt-[5px]",
51
+ sortAreaOuter: "flex min-w-0",
52
+ sortAreaWrapper: "flex items-center min-w-0",
53
+ sortAreaTitle: "min-w-0",
54
+ // ---- 筛选图标相关 ----
55
+ filterIconWrapper: "shrink-0 flex items-center",
56
+ filterIcon: "inline-flex items-center justify-center cursor-pointer transition-colors text-sm px-1 self-stretch",
57
+ // ---- 筛选下拉相关 ----
58
+ // 与 element-plus 官方 .el-table-filter 1:1 对齐:
59
+ // 2px 圆角、border-color-lighter、--el-box-shadow-light 等价的浅阴影
60
+ filterDropdown: [
61
+ "rounded-[2px] bg-[color:var(--color-surface)]",
62
+ "border border-[color:var(--vtg-border-color-lighter,var(--color-default))]",
63
+ "shadow-[0_0_12px_rgba(0,0,0,0.12)]",
64
+ "font-[family-name:var(--vtg-table-font-family)]",
65
+ "text-[length:var(--vtg-table-font-size)] leading-[var(--vtg-table-line-height)]",
66
+ "text-[color:var(--vtg-table-text-color)]"
67
+ ].join(" "),
68
+ // .el-table-filter__list: padding 5px 0; min-width 100px
69
+ filterDropdownList: "py-[5px] px-0 m-0 list-none min-w-[100px]",
70
+ // li 自身只控制指针;hover/selected/padding 全在 contentWrapper
71
+ filterDropdownItem: "cursor-pointer",
72
+ // 多选选中(默认 selected 槽):仅 checkbox label 变 primary 色,无背景;
73
+ // 通过 CSS variable arbitrary property 重定义子 span 颜色。
74
+ filterDropdownItemSelected: "[--color-on-surface:var(--color-primary)] font-medium hover:bg-[color:var(--color-control-item-hover-bg)]",
75
+ // 单选选中(element-plus highlight 模式):primary 底 + 白字 → 复用 var 重定义
76
+ filterDropdownItemSelectedSingle: "bg-[color:var(--color-primary)] [--color-on-surface:#ffffff] hover:bg-[color:var(--color-primary)]",
77
+ // hover:浅蓝底 + primary 文字(仅未选中态生效,与 element-plus 一致)
78
+ filterDropdownItemHover: "hover:bg-[color:var(--color-control-item-hover-bg)] hover:[--color-on-surface:var(--color-primary)]",
79
+ // 树形筛选 switcher 图标
80
+ filterDropdownSwitcher: "inline-flex items-center justify-center w-6 h-6 cursor-pointer text-xs text-[color:var(--color-muted)] transition-transform duration-200",
81
+ filterDropdownSwitcherExpanded: "rotate-0",
82
+ filterDropdownSwitcherCollapsed: "-rotate-90",
83
+ filterDropdownSwitcherNoop: "cursor-default invisible",
84
+ // 内容包裹层(checkbox + 文字),整行响应 hover/active;line-height 36px + padding 0 10px = 整行点击区
85
+ filterDropdownContentWrapper: "flex items-center gap-2 leading-[36px] px-[10px] flex-1 min-w-0",
86
+ filterDropdownTreeWrapper: "py-[5px]",
87
+ filterDropdownTreeList: "m-0 p-0 list-none [--vtg-table-filter-tree-indent-size:24px]",
88
+ filterDropdownTreeItem: "flex items-center cursor-pointer",
89
+ filterDropdownTreeContentWrapper: "flex items-center gap-2 leading-[36px] px-[10px] flex-1 min-w-0",
90
+ // 树形多选:与 menu 多选同款(primary 文字、无 bg)
91
+ filterDropdownTreeItemSelected: "[--color-on-surface:var(--color-primary)] font-medium hover:bg-[color:var(--color-control-item-hover-bg)]",
92
+ filterDropdownTreeItemMatched: "font-medium",
93
+ filterDropdownTreeCheckAll: "flex items-center cursor-pointer px-[10px] leading-[36px]",
94
+ // .el-table-filter__bottom: padding 8px + border-top;按钮顺序 Confirm 在左、Reset 在右 → flex-row-reverse
95
+ filterDropdownActions: "flex flex-row-reverse items-center justify-end gap-3 px-2 py-2 border-t border-[color:var(--vtg-border-color-lighter,var(--color-default))]",
96
+ // 底部按钮:覆盖 Button 的 type='primary'/'link' 视觉,降级为 element-plus 的纯文本风格(12px / 无背景边框 / hover→primary)
97
+ filterDropdownConfirmButton: "bg-transparent border-0 shadow-none text-[color:var(--vtg-table-text-color)] hover:bg-transparent hover:text-[color:var(--color-primary)] active:bg-transparent text-[12px] px-[3px] h-auto leading-none",
98
+ filterDropdownResetButton: "bg-transparent border-0 shadow-none text-[color:var(--vtg-table-text-color)] hover:bg-transparent hover:text-[color:var(--color-primary)] active:bg-transparent text-[12px] px-[3px] h-auto leading-none disabled:text-[color:var(--color-text-disabled,#a8abb2)] disabled:cursor-not-allowed",
99
+ filterDropdownSearch: "px-[10px] pt-2 pb-1",
100
+ filterDropdownSearchField: "flex items-center gap-2 rounded-[var(--vtg-input-border-radius)] border border-[color:var(--color-default)] bg-[color:var(--color-surface)] px-2",
101
+ filterDropdownSearchIcon: "inline-flex shrink-0 items-center justify-center text-[12px] text-[color:var(--color-muted)]",
102
+ filterDropdownSearchInput: "min-w-0 flex-1 border-0 bg-transparent px-0 shadow-none focus:border-transparent placeholder:text-[color:var(--color-muted)]",
103
+ filterDropdownListEmpty: "px-3 py-3 text-center text-[length:12px] leading-5 text-[color:var(--color-muted)] select-none cursor-default",
104
+ // ---- 空状态相关 ----
105
+ emptyWrapper: "flex flex-col items-center justify-center",
106
+ emptyIcon: "mb-2",
107
+ emptyText: "m-0 text-[color:var(--color-muted)] text-sm leading-[60px]",
108
+ // ---- 加载状态相关 ----
109
+ loadingSpinner: "inline-flex items-center justify-center text-[length:42px] text-[color:var(--color-primary)] animate-spin",
110
+ // ---- 行选中背景 ----
111
+ tdSelected: "",
112
+ tdRowHover: "bg-[color:var(--vtg-table-row-hover-bg)]",
113
+ tdRowSelectedHover: "",
114
+ // ---- 选择下拉相关 ----
115
+ selectionDropdown: [
116
+ "rounded bg-[color:var(--color-surface)] shadow-lg border border-[color:var(--color-default)]",
117
+ "font-[family-name:var(--vtg-table-font-family)]",
118
+ "text-[length:var(--vtg-table-font-size)] leading-[var(--vtg-table-line-height)]",
119
+ "text-[color:var(--vtg-table-text-color)]",
120
+ "p-1 min-w-[120px]"
121
+ ].join(" "),
122
+ selectionDropdownItem: "flex items-center cursor-pointer px-3 py-1.5 rounded-sm hover:bg-[color:var(--color-control-item-hover-bg)]",
123
+ selectionExtra: "inline-flex items-center justify-center cursor-pointer ml-1 text-xs text-[color:var(--color-muted)] hover:text-[color:var(--color-primary)] transition-colors",
124
+ // ---- 标题/页脚/摘要行 ----
125
+ title: [
126
+ "bg-[color:var(--vtg-table-header-bg)]",
127
+ "text-[color:var(--vtg-table-text-color)]",
128
+ "font-medium"
129
+ ].join(" "),
130
+ footer: [
131
+ "bg-[color:var(--vtg-table-header-bg)]",
132
+ "text-[color:var(--vtg-table-text-color)]"
133
+ ].join(" "),
134
+ summary: "",
135
+ summaryRow: "bg-[color:var(--vtg-table-header-bg)]",
136
+ summaryCell: [
137
+ "font-medium",
138
+ "bg-[color:var(--vtg-table-header-bg)]",
139
+ "text-[color:var(--vtg-table-text-color)]",
140
+ "border-b border-[color:var(--vtg-table-border-color)]"
141
+ ].join(" "),
142
+ // ---- 固定列/固定表头 ----
143
+ headerWrapper: "overflow-hidden",
144
+ bodyWrapper: "overflow-auto",
145
+ fixedCell: "sticky z-[2] bg-inherit",
146
+ fixedDividerLeft: "",
147
+ fixedDividerRight: "",
148
+ fixedShadowLeft: [
149
+ "after:absolute after:top-0 after:bottom-[-1px] after:right-0 after:w-[30px]",
150
+ "after:translate-x-full after:pointer-events-none",
151
+ "after:shadow-[inset_10px_0_8px_-8px_rgba(0,0,0,0.06)]"
152
+ ].join(" "),
153
+ fixedShadowRight: [
154
+ "after:absolute after:top-0 after:bottom-[-1px] after:left-0 after:w-[30px]",
155
+ "after:-translate-x-full after:pointer-events-none",
156
+ "after:shadow-[inset_-10px_0_8px_-8px_rgba(0,0,0,0.06)]"
157
+ ].join(" "),
158
+ fixedShadowLeftHidden: "after:shadow-none",
159
+ fixedShadowRightHidden: "after:shadow-none",
160
+ // ---- 展开行 ----
161
+ expandIcon: "inline-flex h-[23px] w-[23px] shrink-0 items-center justify-center border-0 bg-transparent p-0 text-[color:var(--vtg-table-text-color)] cursor-pointer align-middle transition-[color,transform] duration-200",
162
+ expandIconExpanded: "",
163
+ expandIconCollapsed: "",
164
+ expandIconSpaced: "cursor-default opacity-0",
165
+ expandIconDisabled: "cursor-not-allowed text-[color:var(--color-muted)]",
166
+ expandIconSymbol: "inline-flex items-center justify-center text-[12px] leading-none transition-transform duration-300 [&>svg]:h-[1em] [&>svg]:w-[1em]",
167
+ expandIconSymbolExpanded: "rotate-90",
168
+ expandIconSymbolCollapsed: "rotate-0",
169
+ treeExpandIcon: "me-1 inline-flex h-[23px] w-5 shrink-0 items-center justify-center border-0 bg-transparent p-0 text-[color:var(--vtg-table-text-color)] cursor-pointer align-middle transition-[color,transform] duration-200",
170
+ treeExpandIconExpanded: "",
171
+ treeExpandIconCollapsed: "",
172
+ treeExpandIconSpaced: "me-1 cursor-default opacity-0",
173
+ treeExpandIconDisabled: "me-1 cursor-not-allowed text-[color:var(--color-muted)]",
174
+ treeExpandIconSymbol: "inline-flex items-center justify-center text-[12px] leading-none transition-transform duration-300 [&>svg]:h-[1em] [&>svg]:w-[1em]",
175
+ treeExpandIconSymbolExpanded: "rotate-90",
176
+ treeExpandIconSymbolCollapsed: "rotate-0",
177
+ expandedRow: "",
178
+ expandedRowCell: "bg-[color:var(--vtg-table-expanded-row-bg,#fafafa)]",
179
+ // ---- 列拖拽调整宽度 ----
180
+ resizeHandle: ""
181
+ },
182
+ variants: {
183
+ size: {
184
+ large: {},
185
+ middle: {},
186
+ small: {}
187
+ },
188
+ bordered: {
189
+ true: {
190
+ root: "border border-[color:var(--vtg-table-border-color)] overflow-hidden",
191
+ table: "",
192
+ th: "border-r border-[color:var(--vtg-table-border-color)] last:border-r-0",
193
+ td: "border-r border-[color:var(--vtg-table-border-color)] last:border-r-0",
194
+ tbody: "[&>tr:last-child>td]:border-b-0",
195
+ title: "border-b border-[color:var(--vtg-table-border-color)]",
196
+ footer: "border-t border-[color:var(--vtg-table-border-color)]",
197
+ summaryCell: "border-r border-[color:var(--vtg-table-border-color)] last:border-r-0"
198
+ }
199
+ },
200
+ striped: {
201
+ true: {
202
+ td: "group-even/row:bg-[color:var(--vtg-table-row-striped-bg)]"
203
+ }
204
+ },
205
+ hoverable: {
206
+ true: {}
207
+ }
208
+ },
209
+ compoundSlots: [
210
+ {
211
+ slots: ["th", "td", "title", "footer", "summaryCell"],
212
+ size: "large",
213
+ class: "px-[var(--vtg-table-cell-padding-inline-lg)] py-[var(--vtg-table-cell-padding-block-lg)]"
214
+ },
215
+ {
216
+ slots: ["th", "td", "title", "footer", "summaryCell"],
217
+ size: "middle",
218
+ class: "px-[var(--vtg-table-cell-padding-inline-md)] py-[var(--vtg-table-cell-padding-block-md)]"
219
+ },
220
+ {
221
+ slots: ["th", "td", "title", "footer", "summaryCell"],
222
+ size: "small",
223
+ class: "px-[var(--vtg-table-cell-padding-inline-sm)] py-[var(--vtg-table-cell-padding-block-sm)]"
224
+ }
225
+ ],
226
+ defaultVariants: {
227
+ size: "middle",
228
+ bordered: !1,
229
+ striped: !1,
230
+ hoverable: !0
231
+ }
232
+ };
233
+ export {
234
+ e as elementPlusTableTheme
235
+ };
@@ -0,0 +1,21 @@
1
+ const o = {
2
+ slots: {
3
+ content: [
4
+ "text-white max-w-[250px] break-words relative",
5
+ "text-[length:var(--vtg-tooltip-font-size)]",
6
+ "leading-[20px]",
7
+ "bg-[color:var(--vtg-tooltip-bg)]",
8
+ "rounded-[var(--vtg-tooltip-border-radius)]",
9
+ "p-[var(--vtg-tooltip-padding)]",
10
+ "border border-[color:var(--vtg-tooltip-arrow-outer-color)]",
11
+ "shadow-[var(--vtg-tooltip-shadow,none)]"
12
+ ].join(" "),
13
+ arrow: "absolute block overflow-visible pointer-events-none",
14
+ arrowOuter: "absolute inset-0 w-0 h-0",
15
+ arrowInner: "absolute inset-0 w-0 h-0"
16
+ },
17
+ defaultVariants: {}
18
+ };
19
+ export {
20
+ o as elementPlusTooltipTheme
21
+ };
@@ -0,0 +1,92 @@
1
+ import { antdvTableTheme as b } from "./antdv/table.mjs";
2
+ import { antdvTableEnUSLocale as T, antdvTableLocale as r } from "./antdv/table-locale.mjs";
3
+ import { antdvButtonTheme as a } from "./antdv/button.mjs";
4
+ import { antdvCheckboxTheme as m } from "./antdv/checkbox.mjs";
5
+ import { antdvRadioTheme as u } from "./antdv/radio.mjs";
6
+ import { antdvInputTheme as i } from "./antdv/input.mjs";
7
+ import { antdvTooltipTheme as c } from "./antdv/tooltip.mjs";
8
+ import { antdvScrollbarTheme as s } from "./antdv/scrollbar.mjs";
9
+ import { elementPlusTableTheme as v } from "./element-plus/table.mjs";
10
+ import { elementPlusTableEnUSLocale as h, elementPlusTableLocale as l } from "./element-plus/table-locale.mjs";
11
+ import { elementPlusButtonTheme as p } from "./element-plus/button.mjs";
12
+ import { elementPlusCheckboxTheme as d } from "./element-plus/checkbox.mjs";
13
+ import { elementPlusRadioTheme as f } from "./element-plus/radio.mjs";
14
+ import { elementPlusInputTheme as P } from "./element-plus/input.mjs";
15
+ import { elementPlusTooltipTheme as L } from "./element-plus/tooltip.mjs";
16
+ import { elementPlusScrollbarTheme as x } from "./element-plus/scrollbar.mjs";
17
+ const n = {
18
+ antdv: {
19
+ table: b,
20
+ button: a,
21
+ checkbox: m,
22
+ radio: u,
23
+ input: i,
24
+ tooltip: c,
25
+ scrollbar: s,
26
+ tableLocale: r,
27
+ locales: {
28
+ "zh-CN": { table: r },
29
+ "en-US": { table: T }
30
+ }
31
+ },
32
+ "element-plus": {
33
+ table: v,
34
+ button: p,
35
+ checkbox: d,
36
+ radio: f,
37
+ input: P,
38
+ tooltip: L,
39
+ scrollbar: x,
40
+ tableLocale: l,
41
+ locales: {
42
+ "zh-CN": { table: l },
43
+ "en-US": { table: h }
44
+ }
45
+ }
46
+ };
47
+ function t(e = "antdv") {
48
+ return n[e] ?? n.antdv;
49
+ }
50
+ function A(e = "antdv") {
51
+ return t(e).table;
52
+ }
53
+ function D(e = "antdv") {
54
+ return t(e).button ?? a;
55
+ }
56
+ function F(e = "antdv") {
57
+ return t(e).checkbox ?? m;
58
+ }
59
+ function G(e = "antdv") {
60
+ return t(e).radio ?? u;
61
+ }
62
+ function H(e = "antdv") {
63
+ return t(e).input ?? i;
64
+ }
65
+ function J(e = "antdv") {
66
+ return t(e).tooltip ?? c;
67
+ }
68
+ function K(e = "antdv") {
69
+ return t(e).scrollbar ?? s;
70
+ }
71
+ function O(e = "antdv") {
72
+ return t(e).tableLocale;
73
+ }
74
+ function Q(e = "antdv", o = "zh-CN") {
75
+ return t(e).locales[o]?.table;
76
+ }
77
+ function V(e = "antdv", o = "zh-CN") {
78
+ return t(e).locales[o];
79
+ }
80
+ export {
81
+ V as resolveBuiltInLocale,
82
+ Q as resolveBuiltInTableLocale,
83
+ D as resolveButtonThemePreset,
84
+ F as resolveCheckboxThemePreset,
85
+ H as resolveInputThemePreset,
86
+ G as resolveRadioThemePreset,
87
+ K as resolveScrollbarThemePreset,
88
+ O as resolveTableLocalePreset,
89
+ A as resolveTableThemePreset,
90
+ t as resolveThemePreset,
91
+ J as resolveTooltipThemePreset
92
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtable-guild/vtable-guild",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "A highly customizable Vue 3 Table component library powered by tailwind-variants",
5
5
  "type": "module",
6
6
  "files": [
@@ -67,7 +67,7 @@
67
67
  "module": "./dist/index.mjs",
68
68
  "types": "./dist/index.d.ts",
69
69
  "scripts": {
70
- "build": "vite build && pnpm copy-css && node ./scripts/append-augmentation.mjs",
70
+ "build": "vite build && vite build --config vite.preset-cjs.config.ts && pnpm copy-css && node ./scripts/append-augmentation.mjs",
71
71
  "copy-css": "node ./scripts/copy-theme-css.mjs",
72
72
  "dev": "vite build --watch",
73
73
  "type-check": "vue-tsc --project ./tsconfig.build.json --noEmit",
@@ -78,6 +78,9 @@
78
78
  "peerDependencies": {
79
79
  "vue": "^3.5.0"
80
80
  },
81
+ "dependencies": {
82
+ "tailwind-variants": "^3.2.2"
83
+ },
81
84
  "devDependencies": {
82
85
  "@vtable-guild/core": "workspace:*",
83
86
  "@vtable-guild/icons": "workspace:*",