@nuxt/ui 4.0.1 → 4.1.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 (234) hide show
  1. package/.nuxt/ui/calendar.ts +221 -9
  2. package/.nuxt/ui/chat-message.ts +10 -3
  3. package/.nuxt/ui/command-palette.ts +12 -2
  4. package/.nuxt/ui/context-menu.ts +3 -1
  5. package/.nuxt/ui/dropdown-menu.ts +3 -1
  6. package/.nuxt/ui/empty.ts +83 -0
  7. package/.nuxt/ui/index.ts +1 -0
  8. package/.nuxt/ui/input-menu.ts +12 -2
  9. package/.nuxt/ui/input-number.ts +25 -14
  10. package/.nuxt/ui/kbd.ts +1 -1
  11. package/.nuxt/ui/prose/code-tree.ts +1 -1
  12. package/.nuxt/ui/prose/img.ts +2 -1
  13. package/.nuxt/ui/select-menu.ts +12 -2
  14. package/.nuxt/ui/select.ts +4 -2
  15. package/.nuxt/ui/table.ts +8 -2
  16. package/.nuxt/ui/tree.ts +25 -11
  17. package/cli/templates.mjs +14 -2
  18. package/dist/module.d.mts +15 -0
  19. package/dist/module.json +2 -2
  20. package/dist/module.mjs +5 -2
  21. package/dist/runtime/components/Accordion.d.vue.ts +7 -1
  22. package/dist/runtime/components/Accordion.vue +4 -4
  23. package/dist/runtime/components/Accordion.vue.d.ts +7 -1
  24. package/dist/runtime/components/Alert.d.vue.ts +4 -4
  25. package/dist/runtime/components/Alert.vue +1 -1
  26. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  27. package/dist/runtime/components/AuthForm.d.vue.ts +3 -1
  28. package/dist/runtime/components/AuthForm.vue +1 -1
  29. package/dist/runtime/components/AuthForm.vue.d.ts +3 -1
  30. package/dist/runtime/components/Avatar.d.vue.ts +5 -4
  31. package/dist/runtime/components/Avatar.vue +10 -3
  32. package/dist/runtime/components/Avatar.vue.d.ts +5 -4
  33. package/dist/runtime/components/Badge.d.vue.ts +9 -3
  34. package/dist/runtime/components/Badge.vue +3 -3
  35. package/dist/runtime/components/Badge.vue.d.ts +9 -3
  36. package/dist/runtime/components/Banner.d.vue.ts +4 -2
  37. package/dist/runtime/components/Banner.vue +1 -1
  38. package/dist/runtime/components/Banner.vue.d.ts +4 -2
  39. package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
  40. package/dist/runtime/components/BlogPost.vue +2 -2
  41. package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
  42. package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
  43. package/dist/runtime/components/BlogPosts.vue +8 -2
  44. package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
  45. package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
  46. package/dist/runtime/components/Breadcrumb.vue +8 -8
  47. package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
  48. package/dist/runtime/components/Button.d.vue.ts +9 -3
  49. package/dist/runtime/components/Button.vue +3 -3
  50. package/dist/runtime/components/Button.vue.d.ts +9 -3
  51. package/dist/runtime/components/Calendar.d.vue.ts +4 -0
  52. package/dist/runtime/components/Calendar.vue +3 -1
  53. package/dist/runtime/components/Calendar.vue.d.ts +4 -0
  54. package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
  55. package/dist/runtime/components/ChangelogVersion.vue +3 -3
  56. package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
  57. package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
  58. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  59. package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
  60. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
  61. package/dist/runtime/components/ChatMessage.vue +1 -1
  62. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
  63. package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
  64. package/dist/runtime/components/ChatMessages.vue +24 -8
  65. package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
  66. package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
  67. package/dist/runtime/components/CommandPalette.vue +134 -68
  68. package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
  69. package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
  70. package/dist/runtime/components/ContextMenu.vue +2 -0
  71. package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
  72. package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
  73. package/dist/runtime/components/ContextMenuContent.vue +21 -11
  74. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
  75. package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
  76. package/dist/runtime/components/DashboardNavbar.vue +3 -3
  77. package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
  78. package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
  79. package/dist/runtime/components/DashboardSearch.vue +2 -2
  80. package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
  81. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  82. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
  83. package/dist/runtime/components/DashboardSidebar.vue +4 -4
  84. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
  85. package/dist/runtime/components/Drawer.vue +2 -5
  86. package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
  87. package/dist/runtime/components/DropdownMenu.vue +2 -0
  88. package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
  89. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
  90. package/dist/runtime/components/DropdownMenuContent.vue +21 -11
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
  92. package/dist/runtime/components/Empty.d.vue.ts +53 -0
  93. package/dist/runtime/components/Empty.vue +68 -0
  94. package/dist/runtime/components/Empty.vue.d.ts +53 -0
  95. package/dist/runtime/components/Error.d.vue.ts +0 -1
  96. package/dist/runtime/components/Error.vue +1 -1
  97. package/dist/runtime/components/Error.vue.d.ts +0 -1
  98. package/dist/runtime/components/FileUpload.d.vue.ts +6 -1
  99. package/dist/runtime/components/FileUpload.vue +8 -7
  100. package/dist/runtime/components/FileUpload.vue.d.ts +6 -1
  101. package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
  102. package/dist/runtime/components/FooterColumns.vue +2 -2
  103. package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
  104. package/dist/runtime/components/Header.d.vue.ts +4 -1
  105. package/dist/runtime/components/Header.vue +3 -3
  106. package/dist/runtime/components/Header.vue.d.ts +4 -1
  107. package/dist/runtime/components/Input.d.vue.ts +9 -3
  108. package/dist/runtime/components/Input.vue +3 -3
  109. package/dist/runtime/components/Input.vue.d.ts +9 -3
  110. package/dist/runtime/components/InputMenu.d.vue.ts +40 -10
  111. package/dist/runtime/components/InputMenu.vue +117 -65
  112. package/dist/runtime/components/InputMenu.vue.d.ts +40 -10
  113. package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
  114. package/dist/runtime/components/InputNumber.vue +7 -5
  115. package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
  116. package/dist/runtime/components/InputTags.d.vue.ts +10 -3
  117. package/dist/runtime/components/InputTags.vue +5 -5
  118. package/dist/runtime/components/InputTags.vue.d.ts +10 -3
  119. package/dist/runtime/components/Main.d.vue.ts +2 -4
  120. package/dist/runtime/components/Main.vue +1 -1
  121. package/dist/runtime/components/Main.vue.d.ts +2 -4
  122. package/dist/runtime/components/Modal.d.vue.ts +1 -4
  123. package/dist/runtime/components/Modal.vue +3 -6
  124. package/dist/runtime/components/Modal.vue.d.ts +1 -4
  125. package/dist/runtime/components/NavigationMenu.d.vue.ts +16 -4
  126. package/dist/runtime/components/NavigationMenu.vue +14 -7
  127. package/dist/runtime/components/NavigationMenu.vue.d.ts +16 -4
  128. package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
  129. package/dist/runtime/components/PageAnchors.vue +2 -2
  130. package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
  131. package/dist/runtime/components/PageCard.d.vue.ts +3 -1
  132. package/dist/runtime/components/PageCard.vue +1 -1
  133. package/dist/runtime/components/PageCard.vue.d.ts +3 -1
  134. package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
  135. package/dist/runtime/components/PageFeature.vue +1 -1
  136. package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
  137. package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
  138. package/dist/runtime/components/PageLinks.vue +2 -2
  139. package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
  140. package/dist/runtime/components/PageSection.d.vue.ts +3 -1
  141. package/dist/runtime/components/PageSection.vue +1 -1
  142. package/dist/runtime/components/PageSection.vue.d.ts +3 -1
  143. package/dist/runtime/components/Pagination.d.vue.ts +3 -1
  144. package/dist/runtime/components/Pagination.vue +1 -1
  145. package/dist/runtime/components/Pagination.vue.d.ts +3 -1
  146. package/dist/runtime/components/Popover.d.vue.ts +24 -23
  147. package/dist/runtime/components/Popover.vue +4 -4
  148. package/dist/runtime/components/Popover.vue.d.ts +24 -23
  149. package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
  150. package/dist/runtime/components/PricingPlan.vue +3 -3
  151. package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
  152. package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
  153. package/dist/runtime/components/PricingPlans.vue +7 -1
  154. package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
  155. package/dist/runtime/components/Select.d.vue.ts +20 -9
  156. package/dist/runtime/components/Select.vue +18 -9
  157. package/dist/runtime/components/Select.vue.d.ts +20 -9
  158. package/dist/runtime/components/SelectMenu.d.vue.ts +39 -11
  159. package/dist/runtime/components/SelectMenu.vue +114 -61
  160. package/dist/runtime/components/SelectMenu.vue.d.ts +39 -11
  161. package/dist/runtime/components/Separator.d.vue.ts +3 -1
  162. package/dist/runtime/components/Separator.vue +1 -1
  163. package/dist/runtime/components/Separator.vue.d.ts +3 -1
  164. package/dist/runtime/components/Slideover.d.vue.ts +1 -4
  165. package/dist/runtime/components/Slideover.vue +3 -6
  166. package/dist/runtime/components/Slideover.vue.d.ts +1 -4
  167. package/dist/runtime/components/Stepper.d.vue.ts +4 -1
  168. package/dist/runtime/components/Stepper.vue +1 -1
  169. package/dist/runtime/components/Stepper.vue.d.ts +4 -1
  170. package/dist/runtime/components/Table.d.vue.ts +21 -1
  171. package/dist/runtime/components/Table.vue +126 -60
  172. package/dist/runtime/components/Table.vue.d.ts +21 -1
  173. package/dist/runtime/components/Tabs.d.vue.ts +8 -3
  174. package/dist/runtime/components/Tabs.vue +3 -3
  175. package/dist/runtime/components/Tabs.vue.d.ts +8 -3
  176. package/dist/runtime/components/Textarea.d.vue.ts +9 -3
  177. package/dist/runtime/components/Textarea.vue +3 -3
  178. package/dist/runtime/components/Textarea.vue.d.ts +9 -3
  179. package/dist/runtime/components/Toast.d.vue.ts +4 -4
  180. package/dist/runtime/components/Toast.vue +1 -1
  181. package/dist/runtime/components/Toast.vue.d.ts +4 -4
  182. package/dist/runtime/components/Toaster.d.vue.ts +6 -0
  183. package/dist/runtime/components/Toaster.vue +6 -3
  184. package/dist/runtime/components/Toaster.vue.d.ts +6 -0
  185. package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
  186. package/dist/runtime/components/Tooltip.vue +1 -1
  187. package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
  188. package/dist/runtime/components/Tree.d.vue.ts +43 -5
  189. package/dist/runtime/components/Tree.vue +169 -81
  190. package/dist/runtime/components/Tree.vue.d.ts +43 -5
  191. package/dist/runtime/components/User.d.vue.ts +3 -1
  192. package/dist/runtime/components/User.vue +1 -1
  193. package/dist/runtime/components/User.vue.d.ts +3 -1
  194. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
  195. package/dist/runtime/components/content/ContentNavigation.vue +5 -5
  196. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
  197. package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
  198. package/dist/runtime/components/content/ContentSearch.vue +4 -2
  199. package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
  200. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  201. package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
  202. package/dist/runtime/components/content/ContentSurround.vue +4 -4
  203. package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
  204. package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
  205. package/dist/runtime/components/content/ContentToc.vue +2 -2
  206. package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
  207. package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
  208. package/dist/runtime/components/prose/Accordion.vue +3 -2
  209. package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
  210. package/dist/runtime/components/prose/CodeTree.vue +40 -36
  211. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
  212. package/dist/runtime/components/prose/Collapsible.vue +2 -2
  213. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
  214. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  215. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  216. package/dist/runtime/components/prose/Img.vue +14 -3
  217. package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
  218. package/dist/runtime/components/prose/Tabs.vue +3 -2
  219. package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
  220. package/dist/runtime/composables/useKbd.js +1 -1
  221. package/dist/runtime/composables/useToast.d.ts +3 -1
  222. package/dist/runtime/composables/useToast.js +4 -3
  223. package/dist/runtime/inertia/components/Link.vue +12 -7
  224. package/dist/runtime/locale/hr.d.ts +3 -0
  225. package/dist/runtime/locale/hr.js +129 -0
  226. package/dist/runtime/locale/index.d.ts +1 -0
  227. package/dist/runtime/locale/index.js +1 -0
  228. package/dist/runtime/types/index.d.ts +2 -1
  229. package/dist/runtime/types/index.js +2 -1
  230. package/dist/runtime/types/tv.d.ts +6 -0
  231. package/dist/shared/{ui.D-FDXAUi.mjs → ui.Cmctwxv6.mjs} +381 -48
  232. package/dist/unplugin.mjs +2 -1
  233. package/dist/vite.mjs +3 -2
  234. package/package.json +18 -17
@@ -3,20 +3,24 @@ import theme from "#build/ui/table";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, ref, watch } from "vue";
6
+ import { computed, ref, watch, toRef } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { upperFirst } from "scule";
9
+ import { defu } from "defu";
9
10
  import { FlexRender, getCoreRowModel, getFilteredRowModel, getSortedRowModel, getExpandedRowModel, useVueTable } from "@tanstack/vue-table";
10
- import { reactiveOmit } from "@vueuse/core";
11
+ import { useVirtualizer } from "@tanstack/vue-virtual";
12
+ import { reactiveOmit, createReusableTemplate } from "@vueuse/core";
11
13
  import { useAppConfig } from "#imports";
12
14
  import { useLocale } from "../composables/useLocale";
13
15
  import { tv } from "../utils/tv";
16
+ defineOptions({ inheritAttrs: false });
14
17
  const props = defineProps({
15
18
  as: { type: null, required: false },
16
19
  data: { type: Array, required: false },
17
20
  columns: { type: Array, required: false },
18
21
  caption: { type: String, required: false },
19
22
  meta: { type: Object, required: false },
23
+ virtualize: { type: [Boolean, Object], required: false, default: false },
20
24
  empty: { type: String, required: false },
21
25
  sticky: { type: [Boolean, String], required: false },
22
26
  loading: { type: Boolean, required: false },
@@ -84,11 +88,25 @@ function processColumns(columns2) {
84
88
  });
85
89
  }
86
90
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.table || {} })({
87
- sticky: props.sticky,
91
+ sticky: props.virtualize ? false : props.sticky,
88
92
  loading: props.loading,
89
93
  loadingColor: props.loadingColor,
90
- loadingAnimation: props.loadingAnimation
94
+ loadingAnimation: props.loadingAnimation,
95
+ virtualize: !!props.virtualize
91
96
  }));
97
+ const [DefineTableTemplate, ReuseTableTemplate] = createReusableTemplate();
98
+ const [DefineRowTemplate, ReuseRowTemplate] = createReusableTemplate({
99
+ props: {
100
+ row: {
101
+ type: Object,
102
+ required: true
103
+ },
104
+ style: {
105
+ type: Object,
106
+ required: false
107
+ }
108
+ }
109
+ });
92
110
  const hasFooter = computed(() => {
93
111
  function hasFooterRecursive(columns2) {
94
112
  for (const column of columns2) {
@@ -116,9 +134,10 @@ const sortingState = defineModel("sorting", { type: Array, ...{ default: [] } })
116
134
  const groupingState = defineModel("grouping", { type: Array, ...{ default: [] } });
117
135
  const expandedState = defineModel("expanded", { type: [Boolean, Object], ...{ default: {} } });
118
136
  const paginationState = defineModel("pagination", { type: Object, ...{ default: {} } });
137
+ const rootRef = ref();
119
138
  const tableRef = ref(null);
120
139
  const tableApi = useVueTable({
121
- ...reactiveOmit(props, "as", "data", "columns", "caption", "sticky", "loading", "loadingColor", "loadingAnimation", "class", "ui"),
140
+ ...reactiveOmit(props, "as", "data", "columns", "virtualize", "caption", "sticky", "loading", "loadingColor", "loadingAnimation", "class", "ui"),
122
141
  data,
123
142
  get columns() {
124
143
  return columns.value;
@@ -195,6 +214,19 @@ const tableApi = useVueTable({
195
214
  }
196
215
  }
197
216
  });
217
+ const rows = computed(() => tableApi.getRowModel().rows);
218
+ const virtualizerProps = toRef(() => defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
219
+ estimateSize: 65,
220
+ overscan: 12
221
+ }));
222
+ const virtualizer = !!props.virtualize && useVirtualizer({
223
+ ...virtualizerProps.value,
224
+ get count() {
225
+ return rows.value.length;
226
+ },
227
+ getScrollElement: () => rootRef.value?.$el,
228
+ estimateSize: () => virtualizerProps.value.estimateSize
229
+ });
198
230
  function valueUpdater(updaterOrValue, ref2) {
199
231
  ref2.value = typeof updaterOrValue === "function" ? updaterOrValue(ref2.value) : updaterOrValue;
200
232
  }
@@ -209,7 +241,7 @@ function onRowSelect(e, row) {
209
241
  }
210
242
  e.preventDefault();
211
243
  e.stopPropagation();
212
- props.onSelect(row, e);
244
+ props.onSelect(e, row);
213
245
  }
214
246
  function onRowHover(e, row) {
215
247
  if (!props.onHover) {
@@ -233,21 +265,67 @@ function resolveValue(prop, arg) {
233
265
  }
234
266
  return prop;
235
267
  }
236
- watch(
237
- () => props.data,
238
- () => {
239
- data.value = props.data ? [...props.data] : [];
240
- },
241
- props.watchOptions
242
- );
268
+ watch(() => props.data, () => {
269
+ data.value = props.data ? [...props.data] : [];
270
+ }, props.watchOptions);
243
271
  defineExpose({
272
+ get $el() {
273
+ return rootRef.value?.$el;
274
+ },
244
275
  tableRef,
245
276
  tableApi
246
277
  });
247
278
  </script>
248
279
 
249
280
  <template>
250
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
281
+ <DefineRowTemplate v-slot="{ row, style }">
282
+ <tr
283
+ :data-selected="row.getIsSelected()"
284
+ :data-selectable="!!props.onSelect || !!props.onHover || !!props.onContextmenu"
285
+ :data-expanded="row.getIsExpanded()"
286
+ :role="props.onSelect ? 'button' : void 0"
287
+ :tabindex="props.onSelect ? 0 : void 0"
288
+ :class="ui.tr({
289
+ class: [
290
+ props.ui?.tr,
291
+ resolveValue(tableApi.options.meta?.class?.tr, row)
292
+ ]
293
+ })"
294
+ :style="[resolveValue(tableApi.options.meta?.style?.tr, row), style]"
295
+ @click="onRowSelect($event, row)"
296
+ @pointerenter="onRowHover($event, row)"
297
+ @pointerleave="onRowHover($event, null)"
298
+ @contextmenu="onRowContextmenu($event, row)"
299
+ >
300
+ <td
301
+ v-for="cell in row.getVisibleCells()"
302
+ :key="cell.id"
303
+ :data-pinned="cell.column.getIsPinned()"
304
+ :colspan="resolveValue(cell.column.columnDef.meta?.colspan?.td, cell)"
305
+ :rowspan="resolveValue(cell.column.columnDef.meta?.rowspan?.td, cell)"
306
+ :class="ui.td({
307
+ class: [
308
+ props.ui?.td,
309
+ resolveValue(cell.column.columnDef.meta?.class?.td, cell)
310
+ ],
311
+ pinned: !!cell.column.getIsPinned()
312
+ })"
313
+ :style="resolveValue(cell.column.columnDef.meta?.style?.td, cell)"
314
+ >
315
+ <slot :name="`${cell.column.id}-cell`" v-bind="cell.getContext()">
316
+ <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
317
+ </slot>
318
+ </td>
319
+ </tr>
320
+
321
+ <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
322
+ <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
323
+ <slot name="expanded" :row="row" />
324
+ </td>
325
+ </tr>
326
+ </DefineRowTemplate>
327
+
328
+ <DefineTableTemplate>
251
329
  <table ref="tableRef" :class="ui.base({ class: [props.ui?.base] })">
252
330
  <caption v-if="caption || !!slots.caption" :class="ui.caption({ class: [props.ui?.caption] })">
253
331
  <slot name="caption">
@@ -284,51 +362,21 @@ defineExpose({
284
362
  <tbody :class="ui.tbody({ class: [props.ui?.tbody] })">
285
363
  <slot name="body-top" />
286
364
 
287
- <template v-if="tableApi.getRowModel().rows?.length">
288
- <template v-for="row in tableApi.getRowModel().rows" :key="row.id">
289
- <tr
290
- :data-selected="row.getIsSelected()"
291
- :data-selectable="!!props.onSelect || !!props.onHover || !!props.onContextmenu"
292
- :data-expanded="row.getIsExpanded()"
293
- :role="props.onSelect ? 'button' : void 0"
294
- :tabindex="props.onSelect ? 0 : void 0"
295
- :class="ui.tr({
296
- class: [
297
- props.ui?.tr,
298
- resolveValue(tableApi.options.meta?.class?.tr, row)
299
- ]
300
- })"
301
- :style="resolveValue(tableApi.options.meta?.style?.tr, row)"
302
- @click="onRowSelect($event, row)"
303
- @pointerenter="onRowHover($event, row)"
304
- @pointerleave="onRowHover($event, null)"
305
- @contextmenu="onRowContextmenu($event, row)"
306
- >
307
- <td
308
- v-for="cell in row.getVisibleCells()"
309
- :key="cell.id"
310
- :data-pinned="cell.column.getIsPinned()"
311
- :colspan="resolveValue(cell.column.columnDef.meta?.colspan?.td, cell)"
312
- :rowspan="resolveValue(cell.column.columnDef.meta?.rowspan?.td, cell)"
313
- :class="ui.td({
314
- class: [
315
- props.ui?.td,
316
- resolveValue(cell.column.columnDef.meta?.class?.td, cell)
317
- ],
318
- pinned: !!cell.column.getIsPinned()
319
- })"
320
- :style="resolveValue(cell.column.columnDef.meta?.style?.td, cell)"
321
- >
322
- <slot :name="`${cell.column.id}-cell`" v-bind="cell.getContext()">
323
- <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
324
- </slot>
325
- </td>
326
- </tr>
327
- <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
328
- <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
329
- <slot name="expanded" :row="row" />
330
- </td>
331
- </tr>
365
+ <template v-if="rows.length">
366
+ <template v-if="virtualizer">
367
+ <template v-for="(virtualRow, index) in virtualizer.getVirtualItems()" :key="rows[virtualRow.index]?.id">
368
+ <ReuseRowTemplate
369
+ :row="rows[virtualRow.index]"
370
+ :style="{
371
+ height: `${virtualRow.size}px`,
372
+ transform: `translateY(${virtualRow.start - index * virtualRow.size}px)`
373
+ }"
374
+ />
375
+ </template>
376
+ </template>
377
+
378
+ <template v-else>
379
+ <ReuseRowTemplate v-for="row in rows" :key="row.id" :row="row" />
332
380
  </template>
333
381
  </template>
334
382
 
@@ -349,7 +397,13 @@ defineExpose({
349
397
  <slot name="body-bottom" />
350
398
  </tbody>
351
399
 
352
- <tfoot v-if="hasFooter" :class="ui.tfoot({ class: [props.ui?.tfoot] })">
400
+ <tfoot
401
+ v-if="hasFooter"
402
+ :class="ui.tfoot({ class: [props.ui?.tfoot] })"
403
+ :style="virtualizer ? {
404
+ transform: `translateY(${virtualizer.getTotalSize() - virtualizer.getVirtualItems().length * virtualizerProps.estimateSize}px)`
405
+ } : void 0"
406
+ >
353
407
  <tr :class="ui.separator({ class: [props.ui?.separator] })" />
354
408
 
355
409
  <tr v-for="footerGroup in tableApi.getFooterGroups()" :key="footerGroup.id" :class="ui.tr({ class: [props.ui?.tr] })">
@@ -375,5 +429,17 @@ defineExpose({
375
429
  </tr>
376
430
  </tfoot>
377
431
  </table>
432
+ </DefineTableTemplate>
433
+
434
+ <Primitive ref="rootRef" :as="as" v-bind="$attrs" :class="ui.root({ class: [props.ui?.root, props.class] })">
435
+ <div
436
+ v-if="virtualizer"
437
+ :style="{
438
+ height: `${virtualizer.getTotalSize()}px`
439
+ }"
440
+ >
441
+ <ReuseTableTemplate />
442
+ </div>
443
+ <ReuseTableTemplate v-else />
378
444
  </Primitive>
379
445
  </template>
@@ -2,6 +2,7 @@ import type { Ref, WatchOptions } from 'vue';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import type { Cell, Header, RowData, TableMeta } from '@tanstack/table-core';
4
4
  import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
5
+ import type { VirtualizerOptions } from '@tanstack/vue-virtual';
5
6
  import theme from '#build/ui/table';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  declare module '@tanstack/table-core' {
@@ -49,6 +50,23 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
49
50
  columns?: TableColumn<T>[];
50
51
  caption?: string;
51
52
  meta?: TableMeta<T>;
53
+ /**
54
+ * Enable virtualization for large datasets.
55
+ * Note: when enabled, the divider between rows and sticky properties are not supported.
56
+ * @defaultValue false
57
+ */
58
+ virtualize?: boolean | (Partial<Omit<VirtualizerOptions<Element, Element>, 'getScrollElement' | 'count' | 'estimateSize' | 'overscan'>> & {
59
+ /**
60
+ * Number of items rendered outside the visible area
61
+ * @defaultValue 12
62
+ */
63
+ overscan?: number;
64
+ /**
65
+ * Estimated size (in px) of each item
66
+ * @defaultValue 65
67
+ */
68
+ estimateSize?: number;
69
+ });
52
70
  /**
53
71
  * The text to display when the table is empty.
54
72
  * @defaultValue t('table.noData')
@@ -56,6 +74,7 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
56
74
  empty?: string;
57
75
  /**
58
76
  * Whether the table should have a sticky header or footer. True for both, 'header' for header only, 'footer' for footer only.
77
+ * Note: this prop is not supported when `virtualize` is true.
59
78
  * @defaultValue false
60
79
  */
61
80
  sticky?: boolean | 'header' | 'footer';
@@ -136,7 +155,7 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
136
155
  * @see [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)
137
156
  */
138
157
  facetedOptions?: FacetedOptions<T>;
139
- onSelect?: (row: TableRow<T>, e?: Event) => void;
158
+ onSelect?: (e: Event, row: TableRow<T>) => void;
140
159
  onHover?: (e: Event, row: TableRow<T> | null) => void;
141
160
  onContextmenu?: ((e: Event, row: TableRow<T>) => void) | Array<((e: Event, row: TableRow<T>) => void)>;
142
161
  class?: any;
@@ -186,6 +205,7 @@ declare const __VLS_export: <T extends TableData>(__VLS_props: NonNullable<Await
186
205
  "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
187
206
  }> & import("vue").PublicProps;
188
207
  expose: (exposed: import("vue").ShallowUnwrapRef<{
208
+ readonly $el: any;
189
209
  tableRef: Ref<HTMLTableElement | null, HTMLTableElement | null>;
190
210
  tableApi: import("@tanstack/table-core").Table<T>;
191
211
  }>) => void;
@@ -69,16 +69,21 @@ export interface TabsEmits extends TabsRootEmits<string | number> {
69
69
  type SlotProps<T extends TabsItem> = (props: {
70
70
  item: T;
71
71
  index: number;
72
+ ui: Tabs['ui'];
72
73
  }) => any;
73
74
  export type TabsSlots<T extends TabsItem = TabsItem> = {
74
75
  'leading': SlotProps<T>;
75
- 'default': SlotProps<T>;
76
+ 'default'(props: {
77
+ item: T;
78
+ index: number;
79
+ }): any;
76
80
  'trailing': SlotProps<T>;
77
81
  'content': SlotProps<T>;
78
- 'list-leading': (props?: {}) => any;
79
- 'list-trailing': (props?: {}) => any;
82
+ 'list-leading'(props?: {}): any;
83
+ 'list-trailing'(props?: {}): any;
80
84
  } & DynamicSlots<T, undefined, {
81
85
  index: number;
86
+ ui: Tabs['ui'];
82
87
  }>;
83
88
  declare const __VLS_export: <T extends TabsItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
84
89
  props: __VLS_PrettifyLocal<TabsProps<T> & {
@@ -66,7 +66,7 @@ defineExpose({
66
66
  :disabled="item.disabled"
67
67
  :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })"
68
68
  >
69
- <slot name="leading" :item="item" :index="index">
69
+ <slot name="leading" :item="item" :index="index" :ui="ui">
70
70
  <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item.ui?.leadingIcon] })" />
71
71
  <UAvatar v-else-if="item.avatar" :size="item.ui?.leadingAvatarSize || props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="item.avatar" :class="ui.leadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.leadingAvatar] })" />
72
72
  </slot>
@@ -75,7 +75,7 @@ defineExpose({
75
75
  <slot :item="item" :index="index">{{ get(item, props.labelKey) }}</slot>
76
76
  </span>
77
77
 
78
- <slot name="trailing" :item="item" :index="index">
78
+ <slot name="trailing" :item="item" :index="index" :ui="ui">
79
79
  <UBadge
80
80
  v-if="item.badge !== void 0"
81
81
  color="neutral"
@@ -92,7 +92,7 @@ defineExpose({
92
92
 
93
93
  <template v-if="!!content">
94
94
  <TabsContent v-for="(item, index) of items" :key="index" :value="item.value ?? String(index)" :class="ui.content({ class: [props.ui?.content, item.ui?.content, item.class] })">
95
- <slot :name="item.slot || 'content'" :item="item" :index="index">
95
+ <slot :name="item.slot || 'content'" :item="item" :index="index" :ui="ui">
96
96
  {{ item.content }}
97
97
  </slot>
98
98
  </TabsContent>
@@ -69,16 +69,21 @@ export interface TabsEmits extends TabsRootEmits<string | number> {
69
69
  type SlotProps<T extends TabsItem> = (props: {
70
70
  item: T;
71
71
  index: number;
72
+ ui: Tabs['ui'];
72
73
  }) => any;
73
74
  export type TabsSlots<T extends TabsItem = TabsItem> = {
74
75
  'leading': SlotProps<T>;
75
- 'default': SlotProps<T>;
76
+ 'default'(props: {
77
+ item: T;
78
+ index: number;
79
+ }): any;
76
80
  'trailing': SlotProps<T>;
77
81
  'content': SlotProps<T>;
78
- 'list-leading': (props?: {}) => any;
79
- 'list-trailing': (props?: {}) => any;
82
+ 'list-leading'(props?: {}): any;
83
+ 'list-trailing'(props?: {}): any;
80
84
  } & DynamicSlots<T, undefined, {
81
85
  index: number;
86
+ ui: Tabs['ui'];
82
87
  }>;
83
88
  declare const __VLS_export: <T extends TabsItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
84
89
  props: __VLS_PrettifyLocal<TabsProps<T> & {
@@ -49,9 +49,15 @@ export interface TextareaEmits<T extends TextareaValue = TextareaValue> {
49
49
  'change': [event: Event];
50
50
  }
51
51
  export interface TextareaSlots {
52
- leading(props?: {}): any;
53
- default(props?: {}): any;
54
- trailing(props?: {}): any;
52
+ leading(props: {
53
+ ui: Textarea['ui'];
54
+ }): any;
55
+ default(props: {
56
+ ui: Textarea['ui'];
57
+ }): any;
58
+ trailing(props: {
59
+ ui: Textarea['ui'];
60
+ }): any;
55
61
  }
56
62
  declare const __VLS_export: <T extends TextareaValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
57
63
  props: __VLS_PrettifyLocal<TextareaProps<T> & {
@@ -157,17 +157,17 @@ defineExpose({
157
157
  @focus="emitFormFocus"
158
158
  />
159
159
 
160
- <slot />
160
+ <slot :ui="ui" />
161
161
 
162
162
  <span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
163
- <slot name="leading">
163
+ <slot name="leading" :ui="ui">
164
164
  <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
165
165
  <UAvatar v-else-if="!!avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
166
166
  </slot>
167
167
  </span>
168
168
 
169
169
  <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
170
- <slot name="trailing">
170
+ <slot name="trailing" :ui="ui">
171
171
  <UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
172
172
  </slot>
173
173
  </span>
@@ -49,9 +49,15 @@ export interface TextareaEmits<T extends TextareaValue = TextareaValue> {
49
49
  'change': [event: Event];
50
50
  }
51
51
  export interface TextareaSlots {
52
- leading(props?: {}): any;
53
- default(props?: {}): any;
54
- trailing(props?: {}): any;
52
+ leading(props: {
53
+ ui: Textarea['ui'];
54
+ }): any;
55
+ default(props: {
56
+ ui: Textarea['ui'];
57
+ }): any;
58
+ trailing(props: {
59
+ ui: Textarea['ui'];
60
+ }): any;
55
61
  }
56
62
  declare const __VLS_export: <T extends TextareaValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
57
63
  props: __VLS_PrettifyLocal<TextareaProps<T> & {
@@ -58,14 +58,14 @@ export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open'
58
58
  export interface ToastEmits extends ToastRootEmits {
59
59
  }
60
60
  export interface ToastSlots {
61
- leading(props?: {}): any;
61
+ leading(props: {
62
+ ui: Toast['ui'];
63
+ }): any;
62
64
  title(props?: {}): any;
63
65
  description(props?: {}): any;
64
66
  actions(props?: {}): any;
65
67
  close(props: {
66
- ui: {
67
- [K in keyof Required<Toast['slots']>]: (props?: Record<string, any>) => string;
68
- };
68
+ ui: Toast['ui'];
69
69
  }): any;
70
70
  }
71
71
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ToastProps, {
@@ -66,7 +66,7 @@ defineExpose({
66
66
  :class="ui.root({ class: [props.ui?.root, props.class] })"
67
67
  :style="{ '--height': height }"
68
68
  >
69
- <slot name="leading">
69
+ <slot name="leading" :ui="ui">
70
70
  <UAvatar v-if="avatar" :size="props.ui?.avatarSize || ui.avatarSize()" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
71
71
  <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
72
72
  </slot>
@@ -58,14 +58,14 @@ export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open'
58
58
  export interface ToastEmits extends ToastRootEmits {
59
59
  }
60
60
  export interface ToastSlots {
61
- leading(props?: {}): any;
61
+ leading(props: {
62
+ ui: Toast['ui'];
63
+ }): any;
62
64
  title(props?: {}): any;
63
65
  description(props?: {}): any;
64
66
  actions(props?: {}): any;
65
67
  close(props: {
66
- ui: {
67
- [K in keyof Required<Toast['slots']>]: (props?: Record<string, any>) => string;
68
- };
68
+ ui: Toast['ui'];
69
69
  }): any;
70
70
  }
71
71
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ToastProps, {
@@ -24,6 +24,11 @@ export interface ToasterProps extends Omit<ToastProviderProps, 'swipeDirection'>
24
24
  * @defaultValue true
25
25
  */
26
26
  portal?: boolean | string | HTMLElement;
27
+ /**
28
+ * Maximum number of toasts to display at once.
29
+ * @defaultValue 5
30
+ */
31
+ max?: number;
27
32
  class?: any;
28
33
  ui?: Toaster['slots'];
29
34
  }
@@ -34,6 +39,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Toaste
34
39
  progress: boolean;
35
40
  expand: boolean;
36
41
  duration: number;
42
+ max: number;
37
43
  portal: boolean | string | HTMLElement;
38
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ToasterSlots>;
39
45
  declare const _default: typeof __VLS_export;
@@ -6,11 +6,11 @@ export default {
6
6
  </script>
7
7
 
8
8
  <script setup>
9
- import { ref, computed, toRef } from "vue";
9
+ import { ref, computed, toRef, provide } from "vue";
10
10
  import { ToastProvider, ToastViewport, ToastPortal, useForwardProps } from "reka-ui";
11
11
  import { reactivePick } from "@vueuse/core";
12
12
  import { useAppConfig } from "#imports";
13
- import { useToast } from "../composables/useToast";
13
+ import { useToast, toastMaxInjectionKey } from "../composables/useToast";
14
14
  import { usePortal } from "../composables/usePortal";
15
15
  import { omit } from "../utils";
16
16
  import { tv } from "../utils/tv";
@@ -20,16 +20,19 @@ const props = defineProps({
20
20
  expand: { type: Boolean, required: false, default: true },
21
21
  progress: { type: Boolean, required: false, default: true },
22
22
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
23
+ max: { type: Number, required: false, default: 5 },
23
24
  class: { type: null, required: false },
24
25
  ui: { type: null, required: false },
25
26
  label: { type: String, required: false },
26
27
  duration: { type: Number, required: false, default: 5e3 },
28
+ disableSwipe: { type: Boolean, required: false },
27
29
  swipeThreshold: { type: Number, required: false }
28
30
  });
29
31
  defineSlots();
30
32
  const { toasts, remove } = useToast();
31
33
  const appConfig = useAppConfig();
32
- const providerProps = useForwardProps(reactivePick(props, "duration", "label", "swipeThreshold"));
34
+ provide(toastMaxInjectionKey, toRef(() => props.max));
35
+ const providerProps = useForwardProps(reactivePick(props, "duration", "label", "swipeThreshold", "disableSwipe"));
33
36
  const portalProps = usePortal(toRef(() => props.portal));
34
37
  const swipeDirection = computed(() => {
35
38
  switch (props.position) {
@@ -24,6 +24,11 @@ export interface ToasterProps extends Omit<ToastProviderProps, 'swipeDirection'>
24
24
  * @defaultValue true
25
25
  */
26
26
  portal?: boolean | string | HTMLElement;
27
+ /**
28
+ * Maximum number of toasts to display at once.
29
+ * @defaultValue 5
30
+ */
31
+ max?: number;
27
32
  class?: any;
28
33
  ui?: Toaster['slots'];
29
34
  }
@@ -34,6 +39,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Toaste
34
39
  progress: boolean;
35
40
  expand: boolean;
36
41
  duration: number;
42
+ max: number;
37
43
  portal: boolean | string | HTMLElement;
38
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ToasterSlots>;
39
45
  declare const _default: typeof __VLS_export;
@@ -40,7 +40,9 @@ export interface TooltipSlots {
40
40
  default(props: {
41
41
  open: boolean;
42
42
  }): any;
43
- content(props?: {}): any;
43
+ content(props: {
44
+ ui: Tooltip['ui'];
45
+ }): any;
44
46
  }
45
47
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<TooltipProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
46
48
  "update:open": (value: boolean) => any;
@@ -48,7 +48,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.tooltip || {}
48
48
 
49
49
  <TooltipPortal v-bind="portalProps">
50
50
  <TooltipContent v-bind="contentProps" :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })">
51
- <slot name="content">
51
+ <slot name="content" :ui="ui">
52
52
  <span v-if="text" :class="ui.text({ class: props.ui?.text })">{{ text }}</span>
53
53
 
54
54
  <span v-if="kbds?.length" :class="ui.kbds({ class: props.ui?.kbds })">
@@ -40,7 +40,9 @@ export interface TooltipSlots {
40
40
  default(props: {
41
41
  open: boolean;
42
42
  }): any;
43
- content(props?: {}): any;
43
+ content(props: {
44
+ ui: Tooltip['ui'];
45
+ }): any;
44
46
  }
45
47
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<TooltipProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
46
48
  "update:open": (value: boolean) => any;