@vtable-guild/vtable-guild 2.2.1 → 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 (168) 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.d.ts +12 -0
  12. package/dist/core/src/components/VirtualList/VirtualList.d.ts.map +1 -1
  13. package/dist/core/src/components/VirtualList/VirtualList.mjs +373 -0
  14. package/dist/core/src/components/VirtualList/VirtualList.test.d.ts +2 -0
  15. package/dist/core/src/components/VirtualList/VirtualList.test.d.ts.map +1 -0
  16. package/dist/core/src/components/VirtualList/VirtualScrollBar.mjs +216 -0
  17. package/dist/core/src/components/VirtualList/hooks/useChildren.mjs +21 -0
  18. package/dist/core/src/components/VirtualList/hooks/useDiffItem.mjs +16 -0
  19. package/dist/core/src/components/VirtualList/hooks/useFrameWheel.mjs +48 -0
  20. package/dist/core/src/components/VirtualList/hooks/useGetSize.mjs +25 -0
  21. package/dist/core/src/components/VirtualList/hooks/useHeights.mjs +56 -0
  22. package/dist/core/src/components/VirtualList/hooks/useMobileTouchMove.mjs +40 -0
  23. package/dist/core/src/components/VirtualList/hooks/useOriginScroll.mjs +17 -0
  24. package/dist/core/src/components/VirtualList/hooks/useScrollDrag.mjs +41 -0
  25. package/dist/core/src/components/VirtualList/hooks/useScrollTo.mjs +88 -0
  26. package/dist/core/src/components/VirtualList/utils/CacheMap.mjs +24 -0
  27. package/dist/core/src/components/VirtualList/utils/algorithmUtil.mjs +22 -0
  28. package/dist/core/src/components/VirtualList/utils/isFirefox.mjs +4 -0
  29. package/dist/core/src/components/VirtualList/utils/scrollbarUtil.mjs +7 -0
  30. package/dist/core/src/composables/useScrollbar.mjs +55 -0
  31. package/dist/core/src/composables/useTheme.mjs +92 -0
  32. package/dist/core/src/index.d.ts +1 -0
  33. package/dist/core/src/index.d.ts.map +1 -1
  34. package/dist/core/src/plugin/index.mjs +27 -0
  35. package/dist/core/src/utils/classPrefix.mjs +100 -0
  36. package/dist/core/src/utils/devWarn.d.ts +4 -0
  37. package/dist/core/src/utils/devWarn.d.ts.map +1 -0
  38. package/dist/core/src/utils/devWarn.mjs +5 -0
  39. package/dist/core/src/utils/mergeDeep.mjs +20 -0
  40. package/dist/core/src/utils/props.mjs +33 -0
  41. package/dist/core/src/utils/tv.mjs +19 -0
  42. package/dist/icons/src/AntdvEmptyIcon.mjs +37 -0
  43. package/dist/icons/src/AntdvSpinIndicator.mjs +23 -0
  44. package/dist/icons/src/CaretDownIcon.d.ts.map +1 -1
  45. package/dist/icons/src/CaretDownIcon.mjs +9 -0
  46. package/dist/icons/src/CaretRightIcon.d.ts.map +1 -1
  47. package/dist/icons/src/CaretUpIcon.d.ts.map +1 -1
  48. package/dist/icons/src/CaretUpIcon.mjs +9 -0
  49. package/dist/icons/src/DownOutlinedIcon.d.ts.map +1 -1
  50. package/dist/icons/src/DownOutlinedIcon.mjs +9 -0
  51. package/dist/icons/src/ElArrowDownIcon.d.ts.map +1 -1
  52. package/dist/icons/src/ElArrowDownIcon.mjs +9 -0
  53. package/dist/icons/src/ElCaretBottomIcon.d.ts.map +1 -1
  54. package/dist/icons/src/ElCaretBottomIcon.mjs +9 -0
  55. package/dist/icons/src/ElCaretTopIcon.d.ts.map +1 -1
  56. package/dist/icons/src/ElCaretTopIcon.mjs +9 -0
  57. package/dist/icons/src/ElFilterIcon.d.ts.map +1 -1
  58. package/dist/icons/src/ElLoadingIcon.mjs +28 -0
  59. package/dist/icons/src/FilterFilledIcon.d.ts.map +1 -1
  60. package/dist/icons/src/FilterFilledIcon.mjs +9 -0
  61. package/dist/icons/src/SearchIcon.d.ts.map +1 -1
  62. package/dist/icons/src/SearchIcon.mjs +9 -0
  63. package/dist/icons/src/createSvgIcon.d.ts +13 -0
  64. package/dist/icons/src/createSvgIcon.d.ts.map +1 -0
  65. package/dist/icons/src/createSvgIcon.mjs +23 -0
  66. package/dist/index.mjs +82 -10141
  67. package/dist/table/src/components/ColGroup.mjs +25 -0
  68. package/dist/table/src/components/ExpandIcon.mjs +60 -0
  69. package/dist/table/src/components/FilterDropdown.d.ts.map +1 -1
  70. package/dist/table/src/components/FilterDropdown.mjs +324 -0
  71. package/dist/table/src/components/FilterIcon.mjs +30 -0
  72. package/dist/table/src/components/ResizeHandle.mjs +28 -0
  73. package/dist/table/src/components/SelectionCheckbox.mjs +33 -0
  74. package/dist/table/src/components/SelectionDropdown.d.ts.map +1 -1
  75. package/dist/table/src/components/SelectionDropdown.mjs +73 -0
  76. package/dist/table/src/components/SelectionRadio.mjs +28 -0
  77. package/dist/table/src/components/SortButton.mjs +30 -0
  78. package/dist/table/src/components/Table.d.ts.map +1 -1
  79. package/dist/table/src/components/Table.mjs +781 -0
  80. package/dist/table/src/components/TableBody.mjs +124 -0
  81. package/dist/table/src/components/TableCell.d.ts.map +1 -1
  82. package/dist/table/src/components/TableCell.mjs +222 -0
  83. package/dist/table/src/components/TableEmpty.mjs +38 -0
  84. package/dist/table/src/components/TableHeader.mjs +51 -0
  85. package/dist/table/src/components/TableHeaderCell.d.ts.map +1 -1
  86. package/dist/table/src/components/TableHeaderCell.mjs +391 -0
  87. package/dist/table/src/components/TableLoading.mjs +46 -0
  88. package/dist/table/src/components/TableRow.mjs +34 -0
  89. package/dist/table/src/components/VTable.vue.d.ts.map +1 -1
  90. package/dist/table/src/components/VTable.vue.mjs +155 -0
  91. package/dist/table/src/components/VTable.vue2.mjs +4 -0
  92. package/dist/table/src/components/VTableSummary.mjs +29 -0
  93. package/dist/table/src/components/VTableSummaryCell.d.ts.map +1 -1
  94. package/dist/table/src/components/VTableSummaryCell.mjs +68 -0
  95. package/dist/table/src/components/VTableSummaryRow.mjs +19 -0
  96. package/dist/table/src/components/VirtualTableBody.d.ts.map +1 -1
  97. package/dist/table/src/components/VirtualTableBody.mjs +172 -0
  98. package/dist/table/src/composables/bench-fixtures.d.ts +28 -0
  99. package/dist/table/src/composables/bench-fixtures.d.ts.map +1 -0
  100. package/dist/table/src/composables/index.d.ts +2 -1
  101. package/dist/table/src/composables/index.d.ts.map +1 -1
  102. package/dist/table/src/composables/useColumns.d.ts +6 -1
  103. package/dist/table/src/composables/useColumns.d.ts.map +1 -1
  104. package/dist/table/src/composables/useColumns.mjs +81 -0
  105. package/dist/table/src/composables/useControlledColumnState.d.ts +24 -0
  106. package/dist/table/src/composables/useControlledColumnState.d.ts.map +1 -0
  107. package/dist/table/src/composables/useControlledColumnState.mjs +23 -0
  108. package/dist/table/src/composables/useExpand.mjs +37 -0
  109. package/dist/table/src/composables/useFilter.bench.d.ts +2 -0
  110. package/dist/table/src/composables/useFilter.bench.d.ts.map +1 -0
  111. package/dist/table/src/composables/useFilter.d.ts.map +1 -1
  112. package/dist/table/src/composables/useFilter.mjs +68 -0
  113. package/dist/table/src/composables/useFixedColumnStyle.d.ts +18 -0
  114. package/dist/table/src/composables/useFixedColumnStyle.d.ts.map +1 -0
  115. package/dist/table/src/composables/useFixedColumnStyle.mjs +21 -0
  116. package/dist/table/src/composables/useHoverState.mjs +26 -0
  117. package/dist/table/src/composables/useResize.mjs +42 -0
  118. package/dist/table/src/composables/useScroll.d.ts +5 -4
  119. package/dist/table/src/composables/useScroll.d.ts.map +1 -1
  120. package/dist/table/src/composables/useScroll.mjs +68 -0
  121. package/dist/table/src/composables/useSelection.bench.d.ts +2 -0
  122. package/dist/table/src/composables/useSelection.bench.d.ts.map +1 -0
  123. package/dist/table/src/composables/useSelection.d.ts.map +1 -1
  124. package/dist/table/src/composables/useSelection.mjs +246 -0
  125. package/dist/table/src/composables/useSorter.bench.d.ts +2 -0
  126. package/dist/table/src/composables/useSorter.bench.d.ts.map +1 -0
  127. package/dist/table/src/composables/useSorter.d.ts +1 -5
  128. package/dist/table/src/composables/useSorter.d.ts.map +1 -1
  129. package/dist/table/src/composables/useSorter.mjs +161 -0
  130. package/dist/table/src/composables/useTreeData.bench.d.ts +2 -0
  131. package/dist/table/src/composables/useTreeData.bench.d.ts.map +1 -0
  132. package/dist/table/src/composables/useTreeData.d.ts +2 -0
  133. package/dist/table/src/composables/useTreeData.d.ts.map +1 -1
  134. package/dist/table/src/composables/useTreeData.mjs +92 -0
  135. package/dist/table/src/composables/useVirtual.mjs +19 -0
  136. package/dist/table/src/constants.mjs +8 -0
  137. package/dist/table/src/context.d.ts +90 -85
  138. package/dist/table/src/context.d.ts.map +1 -1
  139. package/dist/table/src/context.mjs +4 -0
  140. package/dist/table/src/index.d.ts.map +1 -1
  141. package/dist/table/src/index.mjs +23 -0
  142. package/dist/table/src/preset-config.mjs +35 -0
  143. package/dist/table/src/utils/cell.mjs +79 -0
  144. package/dist/table/src/utils/popupPosition.d.ts +20 -0
  145. package/dist/table/src/utils/popupPosition.d.ts.map +1 -0
  146. package/dist/table/src/utils/popupPosition.mjs +24 -0
  147. package/dist/table/src/utils/popupPosition.test.d.ts +2 -0
  148. package/dist/table/src/utils/popupPosition.test.d.ts.map +1 -0
  149. package/dist/table/src/utils/vnode.mjs +10 -0
  150. package/dist/theme/src/presets/antdv/button.mjs +70 -0
  151. package/dist/theme/src/presets/antdv/checkbox.mjs +51 -0
  152. package/dist/theme/src/presets/antdv/input.mjs +40 -0
  153. package/dist/theme/src/presets/antdv/radio.mjs +34 -0
  154. package/dist/theme/src/presets/antdv/scrollbar.mjs +22 -0
  155. package/dist/theme/src/presets/antdv/table-locale.mjs +55 -0
  156. package/dist/theme/src/presets/antdv/table.mjs +285 -0
  157. package/dist/theme/src/presets/antdv/tooltip.mjs +20 -0
  158. package/dist/theme/src/presets/element-plus/button.mjs +70 -0
  159. package/dist/theme/src/presets/element-plus/checkbox.mjs +65 -0
  160. package/dist/theme/src/presets/element-plus/input.mjs +39 -0
  161. package/dist/theme/src/presets/element-plus/radio.mjs +34 -0
  162. package/dist/theme/src/presets/element-plus/scrollbar.mjs +22 -0
  163. package/dist/theme/src/presets/element-plus/table-locale.mjs +56 -0
  164. package/dist/theme/src/presets/element-plus/table.mjs +235 -0
  165. package/dist/theme/src/presets/element-plus/tooltip.mjs +21 -0
  166. package/dist/theme/src/presets/index.mjs +92 -0
  167. package/package.json +5 -2
  168. package/dist/index.cjs +0 -1
@@ -0,0 +1,108 @@
1
+ import { defineComponent as l, createVNode as c } from "vue";
2
+ import { useTheme as i } from "../composables/useTheme.mjs";
3
+ const s = {
4
+ slots: {
5
+ root: "inline-flex items-center justify-center border font-normal transition-all duration-200 ease-[cubic-bezier(0.645,0.045,0.355,1)] leading-[1.5714] cursor-pointer",
6
+ inner: ""
7
+ },
8
+ variants: {
9
+ type: {
10
+ default: {
11
+ root: "bg-[color:var(--color-surface)] text-[color:var(--color-on-surface)] border-[color:var(--color-border,#d9d9d9)] shadow-[0_2px_0_rgba(0,0,0,0.02)] hover:text-[color:var(--color-primary-hover)] hover:border-[color:var(--color-primary-hover)]"
12
+ },
13
+ primary: {
14
+ root: "bg-[color:var(--color-primary)] text-white border-transparent shadow-[0_2px_0_rgba(5,145,255,0.1)] hover:bg-[color:var(--color-primary-hover)] active:bg-[color:var(--color-primary-active,#0958d9)]"
15
+ },
16
+ link: {
17
+ root: "bg-transparent text-[color:var(--color-primary)] border-transparent shadow-none hover:text-[color:var(--color-primary-hover)] active:text-[color:var(--color-primary-active,#0958d9)]"
18
+ }
19
+ },
20
+ size: {
21
+ sm: {
22
+ root: "h-[var(--vtg-btn-height-sm)] px-[var(--vtg-btn-padding-sm)] rounded-[var(--vtg-btn-border-radius-sm,4px)] text-[length:var(--vtg-table-font-size)]"
23
+ },
24
+ md: {
25
+ root: "h-[var(--vtg-btn-height-md)] px-[var(--vtg-btn-padding-md)] rounded-[var(--vtg-btn-border-radius)] text-[length:var(--vtg-table-font-size)]"
26
+ }
27
+ },
28
+ disabled: {
29
+ true: {
30
+ root: "cursor-not-allowed"
31
+ }
32
+ }
33
+ },
34
+ compoundVariants: [{
35
+ type: "default",
36
+ disabled: !0,
37
+ class: {
38
+ root: "bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] text-[color:var(--color-text-disabled)] border-[color:var(--color-border,#d9d9d9)] shadow-none hover:bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] hover:text-[color:var(--color-text-disabled)] hover:border-[color:var(--color-border,#d9d9d9)]"
39
+ }
40
+ }, {
41
+ type: "primary",
42
+ disabled: !0,
43
+ class: {
44
+ root: "bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] text-[color:var(--color-text-disabled)] border-[color:var(--color-border,#d9d9d9)] shadow-none hover:bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] hover:text-[color:var(--color-text-disabled)] hover:border-[color:var(--color-border,#d9d9d9)]"
45
+ }
46
+ }, {
47
+ type: "link",
48
+ disabled: !0,
49
+ class: {
50
+ root: "text-[color:var(--color-text-disabled)] hover:text-[color:var(--color-text-disabled)]"
51
+ }
52
+ }, {
53
+ type: "link",
54
+ size: "sm",
55
+ class: {
56
+ root: "px-1"
57
+ }
58
+ }],
59
+ defaultVariants: {
60
+ type: "default",
61
+ size: "md",
62
+ disabled: !1
63
+ }
64
+ }, v = /* @__PURE__ */ l({
65
+ name: "VButton",
66
+ props: {
67
+ type: {
68
+ type: String,
69
+ default: "default"
70
+ },
71
+ size: {
72
+ type: String,
73
+ default: "md"
74
+ },
75
+ disabled: {
76
+ type: Boolean,
77
+ default: !1
78
+ },
79
+ ui: {
80
+ type: Object,
81
+ default: void 0
82
+ },
83
+ class: {
84
+ type: String,
85
+ default: void 0
86
+ }
87
+ },
88
+ emits: ["click"],
89
+ setup(r, {
90
+ emit: o,
91
+ slots: e
92
+ }) {
93
+ const {
94
+ slots: t
95
+ } = i("button", s, r);
96
+ function a(d) {
97
+ r.disabled || o("click", d);
98
+ }
99
+ return () => c("button", {
100
+ class: t.root(),
101
+ disabled: r.disabled,
102
+ onClick: a
103
+ }, [e.default?.()]);
104
+ }
105
+ });
106
+ export {
107
+ v as default
108
+ };
@@ -0,0 +1,84 @@
1
+ import { defineComponent as n, createVNode as o } from "vue";
2
+ import { useTheme as l } from "../composables/useTheme.mjs";
3
+ const i = {
4
+ slots: {
5
+ root: ["relative inline-flex items-center justify-center", "w-[var(--vtg-checkbox-size)] h-[var(--vtg-checkbox-size)]", "rounded-[var(--vtg-checkbox-border-radius)]", "border border-[color:var(--color-border,#d9d9d9)]", "bg-[color:var(--color-surface)]", "cursor-pointer transition-all duration-300 shrink-0", "hover:border-[color:var(--color-primary)]"].join(" "),
6
+ checkMark: ["pointer-events-none absolute box-border", "top-1/2 left-[22%]", "w-[5.71px] h-[9.14px]", "border-b-2 border-r-2 border-[color:var(--vtg-checkbox-check-color,#fff)]", "[transform:rotate(45deg)_translate(-50%,_-50%)]"].join(" "),
7
+ indeterminateMark: ["pointer-events-none absolute top-1/2 left-1/2", "w-2 h-2 rounded-[1px]", "bg-[color:var(--vtg-checkbox-indeterminate-color,var(--color-primary))]", "-translate-x-1/2 -translate-y-1/2"].join(" ")
8
+ },
9
+ variants: {
10
+ checked: {
11
+ true: {
12
+ root: "bg-[color:var(--color-primary)] border-[color:var(--color-primary)] hover:bg-[color:var(--color-primary-hover)] hover:border-transparent"
13
+ }
14
+ },
15
+ indeterminate: {
16
+ true: {
17
+ root: ""
18
+ }
19
+ },
20
+ disabled: {
21
+ true: {
22
+ root: "bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] border-[color:var(--color-border,#d9d9d9)] cursor-not-allowed hover:border-[color:var(--color-border,#d9d9d9)]"
23
+ }
24
+ }
25
+ },
26
+ defaultVariants: {
27
+ checked: !1,
28
+ indeterminate: !1,
29
+ disabled: !1
30
+ }
31
+ }, h = /* @__PURE__ */ n({
32
+ name: "VCheckbox",
33
+ props: {
34
+ checked: {
35
+ type: Boolean,
36
+ default: !1
37
+ },
38
+ disabled: {
39
+ type: Boolean,
40
+ default: !1
41
+ },
42
+ indeterminate: {
43
+ type: Boolean,
44
+ default: !1
45
+ },
46
+ ui: {
47
+ type: Object,
48
+ default: void 0
49
+ },
50
+ class: {
51
+ type: String,
52
+ default: void 0
53
+ }
54
+ },
55
+ emits: ["update:checked", "change"],
56
+ setup(e, {
57
+ emit: a
58
+ }) {
59
+ const {
60
+ slots: r
61
+ } = l("checkbox", i, e);
62
+ function c(d) {
63
+ if (e.disabled) return;
64
+ const t = !e.checked;
65
+ a("update:checked", t), a("change", t, d);
66
+ }
67
+ return () => o("span", {
68
+ role: "checkbox",
69
+ "aria-checked": e.indeterminate ? "mixed" : e.checked,
70
+ "aria-disabled": e.disabled,
71
+ class: r.root(),
72
+ onClick: c
73
+ }, [e.checked && o("span", {
74
+ "aria-hidden": "true",
75
+ class: r.checkMark()
76
+ }, null), e.indeterminate && !e.checked && o("span", {
77
+ "aria-hidden": "true",
78
+ class: r.indeterminateMark()
79
+ }, null)]);
80
+ }
81
+ });
82
+ export {
83
+ h as default
84
+ };
@@ -0,0 +1,82 @@
1
+ import { defineComponent as d, createVNode as u } from "vue";
2
+ import { useTheme as i } from "../composables/useTheme.mjs";
3
+ const s = {
4
+ slots: {
5
+ root: ["w-full box-border", "rounded-[var(--vtg-input-border-radius)]", "h-[var(--vtg-input-height)]", "px-[var(--vtg-input-padding-inline)]", "text-[length:var(--vtg-input-font-size)]", "font-[family-name:var(--vtg-table-font-family)]", "leading-[var(--vtg-table-line-height)]", "bg-[color:var(--color-surface)]", "text-[color:var(--color-on-surface)]", "border border-[color:var(--color-border,#d9d9d9)]", "outline-none transition-all duration-200", "focus:border-[color:var(--color-primary)]", "focus:shadow-[0_0_0_2px_rgba(5,145,255,0.1)]", "placeholder:text-[color:var(--color-text-placeholder,rgba(0,0,0,0.25))]", "hover:border-[color:var(--color-primary-hover)]"].join(" ")
6
+ },
7
+ variants: {
8
+ bare: {
9
+ true: {
10
+ root: "min-w-0 bg-transparent outline-none border-0 shadow-none p-0 focus:shadow-none"
11
+ }
12
+ },
13
+ disabled: {
14
+ true: {
15
+ root: "bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] text-[color:var(--color-text-disabled)] cursor-not-allowed"
16
+ }
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ bare: !1,
21
+ disabled: !1
22
+ }
23
+ }, f = /* @__PURE__ */ d({
24
+ name: "VInput",
25
+ props: {
26
+ value: {
27
+ type: String,
28
+ default: ""
29
+ },
30
+ placeholder: {
31
+ type: String,
32
+ default: ""
33
+ },
34
+ disabled: {
35
+ type: Boolean,
36
+ default: !1
37
+ },
38
+ bare: {
39
+ type: Boolean,
40
+ default: !1
41
+ },
42
+ inputClass: {
43
+ type: [String, Array, Object],
44
+ default: void 0
45
+ },
46
+ ui: {
47
+ type: Object,
48
+ default: void 0
49
+ },
50
+ class: {
51
+ type: String,
52
+ default: void 0
53
+ }
54
+ },
55
+ emits: ["update:value", "change", "pressEnter"],
56
+ setup(e, {
57
+ emit: o
58
+ }) {
59
+ const {
60
+ slots: a
61
+ } = i("input", s, e);
62
+ function l(t) {
63
+ const r = t.target.value;
64
+ o("update:value", r), o("change", r);
65
+ }
66
+ function n(t) {
67
+ t.key === "Enter" && o("pressEnter", t);
68
+ }
69
+ return () => u("input", {
70
+ class: [a.root(), e.inputClass],
71
+ type: "text",
72
+ value: e.value,
73
+ placeholder: e.placeholder,
74
+ disabled: e.disabled,
75
+ onInput: l,
76
+ onKeydown: n
77
+ }, null);
78
+ }
79
+ });
80
+ export {
81
+ f as default
82
+ };
@@ -0,0 +1,69 @@
1
+ import { defineComponent as l, createVNode as a } from "vue";
2
+ import { useTheme as i } from "../composables/useTheme.mjs";
3
+ const c = {
4
+ slots: {
5
+ root: ["inline-flex items-center justify-center", "w-[var(--vtg-radio-size)] h-[var(--vtg-radio-size)]", "rounded-full", "border border-[length:var(--vtg-radio-border-width)] border-[color:var(--color-border,#d9d9d9)]", "bg-[color:var(--color-surface)]", "cursor-pointer transition-all duration-300 shrink-0", "hover:border-[color:var(--color-primary)]"].join(" "),
6
+ dot: "rounded-full w-[var(--vtg-radio-size)] h-[var(--vtg-radio-size)] transition-transform duration-300 ease-[cubic-bezier(0.78,0.14,0.15,0.86)]"
7
+ },
8
+ variants: {
9
+ checked: {
10
+ true: {
11
+ root: "border-[color:var(--color-primary)] bg-[color:var(--color-primary)]",
12
+ dot: "scale-[0.375] bg-[color:var(--color-surface)]"
13
+ }
14
+ },
15
+ disabled: {
16
+ true: {
17
+ root: "bg-[color:var(--color-bg-disabled,rgba(0,0,0,0.04))] cursor-not-allowed hover:border-[color:var(--color-border,#d9d9d9)]"
18
+ }
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ checked: !1,
23
+ disabled: !1
24
+ }
25
+ }, u = /* @__PURE__ */ l({
26
+ name: "VRadio",
27
+ props: {
28
+ checked: {
29
+ type: Boolean,
30
+ default: !1
31
+ },
32
+ disabled: {
33
+ type: Boolean,
34
+ default: !1
35
+ },
36
+ ui: {
37
+ type: Object,
38
+ default: void 0
39
+ },
40
+ class: {
41
+ type: String,
42
+ default: void 0
43
+ }
44
+ },
45
+ emits: ["update:checked", "change"],
46
+ setup(e, {
47
+ emit: r
48
+ }) {
49
+ const {
50
+ slots: o
51
+ } = i("radio", c, e);
52
+ function d(t) {
53
+ e.disabled || e.checked || (r("update:checked", !0), r("change", !0, t));
54
+ }
55
+ return () => a("span", {
56
+ role: "radio",
57
+ "aria-checked": e.checked,
58
+ "aria-disabled": e.disabled,
59
+ class: o.root(),
60
+ onClick: d
61
+ }, [a("span", {
62
+ "aria-hidden": "true",
63
+ class: o.dot()
64
+ }, null)]);
65
+ }
66
+ });
67
+ export {
68
+ u as default
69
+ };
@@ -0,0 +1,179 @@
1
+ import { defineComponent as N, inject as O, ref as s, h as L, createVNode as n } from "vue";
2
+ import { useTheme as j } from "../composables/useTheme.mjs";
3
+ import { useScrollbar as B } from "../composables/useScrollbar.mjs";
4
+ import { prefixVtgClassNames as A } from "../utils/classPrefix.mjs";
5
+ import { VTABLE_GUILD_INJECTION_KEY as D } from "../plugin/index.mjs";
6
+ import m from "./ScrollbarBar.mjs";
7
+ const E = {
8
+ slots: {
9
+ root: "group relative overflow-hidden",
10
+ wrap: "overflow-auto scrollbar-none h-full",
11
+ view: "block min-w-full w-max",
12
+ track: "absolute z-[3] rounded opacity-0 transition-opacity duration-300 group-hover:opacity-100",
13
+ trackVertical: "right-0.5 top-0.5 bottom-0.5 w-[var(--vtg-scrollbar-thumb-width)]",
14
+ trackHorizontal: "bottom-0.5 left-0.5 right-0.5 h-[var(--vtg-scrollbar-thumb-width)]",
15
+ thumb: ["relative w-full", "h-full", "rounded-[var(--vtg-scrollbar-thumb-radius)]", "bg-[color:var(--vtg-scrollbar-thumb-bg)]", "hover:bg-[color:var(--vtg-scrollbar-thumb-hover-bg)]", "transition-colors cursor-pointer"].join(" ")
16
+ },
17
+ defaultVariants: {}
18
+ };
19
+ function c(e) {
20
+ if (e !== void 0)
21
+ return typeof e == "number" ? `${e}px` : e;
22
+ }
23
+ const G = /* @__PURE__ */ N({
24
+ name: "VScrollbar",
25
+ props: {
26
+ height: {
27
+ type: [String, Number],
28
+ default: void 0
29
+ },
30
+ maxHeight: {
31
+ type: [String, Number],
32
+ default: void 0
33
+ },
34
+ native: {
35
+ type: Boolean,
36
+ default: !1
37
+ },
38
+ always: {
39
+ type: Boolean,
40
+ default: !1
41
+ },
42
+ minSize: {
43
+ type: Number,
44
+ default: 20
45
+ },
46
+ tag: {
47
+ type: String,
48
+ default: "div"
49
+ },
50
+ wrapClass: {
51
+ type: String,
52
+ default: void 0
53
+ },
54
+ wrapStyle: {
55
+ type: [String, Object, Array],
56
+ default: void 0
57
+ },
58
+ viewClass: {
59
+ type: String,
60
+ default: void 0
61
+ },
62
+ viewStyle: {
63
+ type: [String, Object, Array],
64
+ default: void 0
65
+ },
66
+ ui: {
67
+ type: Object,
68
+ default: void 0
69
+ },
70
+ class: {
71
+ type: String,
72
+ default: void 0
73
+ }
74
+ },
75
+ emits: ["scroll"],
76
+ setup(e, {
77
+ emit: b,
78
+ slots: g,
79
+ expose: S
80
+ }) {
81
+ const f = O(D, null), {
82
+ slots: a
83
+ } = j("scrollbar", E, e), t = s(null), v = s(null), o = s(!1), {
84
+ verticalThumbSize: y,
85
+ verticalThumbOffset: w,
86
+ verticalVisible: x,
87
+ horizontalThumbSize: p,
88
+ horizontalThumbOffset: T,
89
+ horizontalVisible: C,
90
+ update: d
91
+ } = B(t, v, {
92
+ minSize: e.minSize
93
+ });
94
+ function z() {
95
+ d(), t.value && b("scroll", {
96
+ scrollTop: t.value.scrollTop,
97
+ scrollLeft: t.value.scrollLeft
98
+ });
99
+ }
100
+ function h({
101
+ ratio: l,
102
+ vertical: i
103
+ }) {
104
+ const r = t.value;
105
+ if (r)
106
+ if (i) {
107
+ const u = r.scrollHeight - r.clientHeight;
108
+ r.scrollTop = l * u;
109
+ } else {
110
+ const u = r.scrollWidth - r.clientWidth;
111
+ r.scrollLeft = l * u;
112
+ }
113
+ }
114
+ function k(l) {
115
+ t.value?.scrollTo(l);
116
+ }
117
+ function H(l) {
118
+ t.value && (t.value.scrollTop = l);
119
+ }
120
+ function V(l) {
121
+ t.value && (t.value.scrollLeft = l);
122
+ }
123
+ return S({
124
+ update: d,
125
+ scrollTo: k,
126
+ setScrollTop: H,
127
+ setScrollLeft: V,
128
+ wrapRef: t
129
+ }), () => {
130
+ const l = {};
131
+ e.height && (l.height = c(e.height)), e.maxHeight && (l.maxHeight = c(e.maxHeight));
132
+ const i = {};
133
+ e.maxHeight && (i.maxHeight = c(e.maxHeight));
134
+ const r = L(e.tag, {
135
+ ref: v,
136
+ class: [a.view(), e.viewClass],
137
+ style: e.viewStyle
138
+ }, g.default?.());
139
+ return n("div", {
140
+ class: a.root(),
141
+ style: l,
142
+ onMouseover: () => {
143
+ o.value = !0;
144
+ },
145
+ onMouseleave: () => {
146
+ o.value = !1;
147
+ }
148
+ }, [n("div", {
149
+ ref: t,
150
+ class: [a.wrap(), e.wrapClass, e.native ? "" : A("scrollbar-none", f?.cssMode ?? "prebuilt", f?.classPrefix ?? "vtg")],
151
+ style: [i, e.wrapStyle ?? {}],
152
+ onScroll: z
153
+ }, [r]), !e.native && x.value && n(m, {
154
+ vertical: !0,
155
+ thumbSize: y.value,
156
+ thumbOffset: w.value,
157
+ visible: o.value,
158
+ always: e.always,
159
+ trackClass: a.track(),
160
+ trackDirectionClass: a.trackVertical(),
161
+ thumbClass: a.thumb(),
162
+ onScroll: h
163
+ }, null), !e.native && C.value && n(m, {
164
+ vertical: !1,
165
+ thumbSize: p.value,
166
+ thumbOffset: T.value,
167
+ visible: o.value,
168
+ always: e.always,
169
+ trackClass: a.track(),
170
+ trackDirectionClass: a.trackHorizontal(),
171
+ thumbClass: a.thumb(),
172
+ onScroll: h
173
+ }, null)]);
174
+ };
175
+ }
176
+ });
177
+ export {
178
+ G as default
179
+ };
@@ -0,0 +1,103 @@
1
+ import { defineComponent as w, ref as v, onBeforeUnmount as C, createVNode as g } from "vue";
2
+ const B = /* @__PURE__ */ w({
3
+ name: "ScrollbarBar",
4
+ props: {
5
+ vertical: {
6
+ type: Boolean,
7
+ default: !0
8
+ },
9
+ thumbSize: {
10
+ type: Number,
11
+ required: !0
12
+ },
13
+ thumbOffset: {
14
+ type: Number,
15
+ required: !0
16
+ },
17
+ visible: {
18
+ type: Boolean,
19
+ default: !1
20
+ },
21
+ always: {
22
+ type: Boolean,
23
+ default: !1
24
+ },
25
+ trackClass: {
26
+ type: String,
27
+ default: ""
28
+ },
29
+ trackDirectionClass: {
30
+ type: String,
31
+ default: ""
32
+ },
33
+ thumbClass: {
34
+ type: String,
35
+ default: ""
36
+ }
37
+ },
38
+ emits: ["scroll"],
39
+ setup(e, {
40
+ emit: h
41
+ }) {
42
+ const l = v(null), o = v(!1), c = v(!1);
43
+ let b = 0;
44
+ function k(t) {
45
+ t.preventDefault(), t.stopPropagation(), o.value = !0, b = (e.vertical ? t.clientY : t.clientX) - e.thumbOffset, document.addEventListener("mousemove", s), document.addEventListener("mouseup", i), document.onselectstart = () => !1;
46
+ }
47
+ function s(t) {
48
+ if (!o.value || !l.value) return;
49
+ const n = l.value.getBoundingClientRect(), r = e.vertical ? n.height : n.width, f = (e.vertical ? t.clientY : t.clientX) - b, a = r - e.thumbSize, m = Math.max(0, Math.min(f, a)), d = a > 0 ? m / a : 0;
50
+ h("scroll", {
51
+ ratio: d,
52
+ vertical: e.vertical
53
+ });
54
+ }
55
+ function i() {
56
+ o.value = !1, document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", i), document.onselectstart = null;
57
+ }
58
+ function M(t) {
59
+ if (t.target === l.value) {
60
+ t.preventDefault();
61
+ const n = l.value.getBoundingClientRect(), r = e.vertical ? n.height : n.width, f = (e.vertical ? t.clientY - n.top : t.clientX - n.left) - e.thumbSize / 2, a = r - e.thumbSize, m = Math.max(0, Math.min(f, a)), d = a > 0 ? m / a : 0;
62
+ h("scroll", {
63
+ ratio: d,
64
+ vertical: e.vertical
65
+ });
66
+ }
67
+ }
68
+ function S() {
69
+ c.value = !0;
70
+ }
71
+ function y() {
72
+ c.value = !1;
73
+ }
74
+ return C(() => {
75
+ document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", i), document.onselectstart = null;
76
+ }), () => {
77
+ const t = e.always || e.visible || c.value || o.value, u = e.vertical ? {
78
+ height: `${e.thumbSize}px`,
79
+ transform: `translateY(${e.thumbOffset}px)`
80
+ } : {
81
+ width: `${e.thumbSize}px`,
82
+ transform: `translateX(${e.thumbOffset}px)`
83
+ };
84
+ return g("div", {
85
+ ref: l,
86
+ class: [e.trackClass, e.trackDirectionClass],
87
+ style: t ? {
88
+ opacity: 1
89
+ } : void 0,
90
+ onMousedown: M,
91
+ onMouseenter: S,
92
+ onMouseleave: y
93
+ }, [g("div", {
94
+ class: e.thumbClass,
95
+ style: u,
96
+ onMousedown: k
97
+ }, null)]);
98
+ };
99
+ }
100
+ });
101
+ export {
102
+ B as default
103
+ };