@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
@@ -43,13 +43,13 @@ export default {
43
43
  "max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col",
44
44
  "origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"
45
45
  ],
46
- "viewport": "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
46
+ "viewport": "relative scroll-py-1 overflow-y-auto flex-1",
47
47
  "group": "p-1 isolate",
48
48
  "empty": "text-center text-muted",
49
49
  "label": "font-semibold text-highlighted",
50
50
  "separator": "-mx-1 my-1 h-px bg-border",
51
51
  "item": [
52
- "group relative w-full flex items-center select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50",
52
+ "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50",
53
53
  "transition-colors before:transition-colors"
54
54
  ],
55
55
  "itemLeadingIcon": [
@@ -62,7 +62,9 @@ export default {
62
62
  "itemLeadingChipSize": "",
63
63
  "itemTrailing": "ms-auto inline-flex gap-1.5 items-center",
64
64
  "itemTrailingIcon": "shrink-0",
65
+ "itemWrapper": "flex-1 flex flex-col min-w-0",
65
66
  "itemLabel": "truncate",
67
+ "itemDescription": "truncate text-muted",
66
68
  "input": "border-b border-default",
67
69
  "focusScope": "flex flex-col min-h-0"
68
70
  },
@@ -183,6 +185,14 @@ export default {
183
185
  },
184
186
  "type": {
185
187
  "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none"
188
+ },
189
+ "virtualize": {
190
+ "true": {
191
+ "viewport": "p-1 isolate"
192
+ },
193
+ "false": {
194
+ "viewport": "divide-y divide-default"
195
+ }
186
196
  }
187
197
  },
188
198
  "compoundVariants": [
@@ -46,7 +46,7 @@ export default {
46
46
  "label": "font-semibold text-highlighted",
47
47
  "separator": "-mx-1 my-1 h-px bg-border",
48
48
  "item": [
49
- "group relative w-full flex items-center select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50",
49
+ "group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50",
50
50
  "transition-colors before:transition-colors"
51
51
  ],
52
52
  "itemLeadingIcon": [
@@ -59,7 +59,9 @@ export default {
59
59
  "itemLeadingChipSize": "",
60
60
  "itemTrailing": "ms-auto inline-flex gap-1.5 items-center",
61
61
  "itemTrailingIcon": "shrink-0",
62
- "itemLabel": "truncate"
62
+ "itemWrapper": "flex-1 flex flex-col min-w-0",
63
+ "itemLabel": "truncate",
64
+ "itemDescription": "truncate text-muted"
63
65
  },
64
66
  "variants": {
65
67
  "fieldGroup": {
package/.nuxt/ui/table.ts CHANGED
@@ -18,10 +18,10 @@ const loadingColor = [
18
18
  export default {
19
19
  "slots": {
20
20
  "root": "relative overflow-auto",
21
- "base": "min-w-full overflow-clip",
21
+ "base": "min-w-full",
22
22
  "caption": "sr-only",
23
23
  "thead": "relative",
24
- "tbody": "divide-y divide-default [&>tr]:data-[selectable=true]:hover:bg-elevated/50 [&>tr]:data-[selectable=true]:focus-visible:outline-primary",
24
+ "tbody": "[&>tr]:data-[selectable=true]:hover:bg-elevated/50 [&>tr]:data-[selectable=true]:focus-visible:outline-primary",
25
25
  "tfoot": "relative",
26
26
  "tr": "data-[selected=true]:bg-elevated/50",
27
27
  "th": "px-4 py-3.5 text-sm text-highlighted text-left rtl:text-right font-semibold [&:has([role=checkbox])]:pe-0",
@@ -31,6 +31,12 @@ export default {
31
31
  "loading": "py-6 text-center"
32
32
  },
33
33
  "variants": {
34
+ "virtualize": {
35
+ "false": {
36
+ "base": "overflow-clip",
37
+ "tbody": "divide-y divide-default"
38
+ }
39
+ },
34
40
  "pinned": {
35
41
  "true": {
36
42
  "th": "sticky bg-default/75 data-[pinned=left]:left-0 data-[pinned=right]:right-0",
package/.nuxt/ui/tree.ts CHANGED
@@ -19,16 +19,21 @@ const size = [
19
19
  export default {
20
20
  "slots": {
21
21
  "root": "relative isolate",
22
- "item": "",
23
- "listWithChildren": "ms-4.5 border-s border-default",
22
+ "item": "w-full",
23
+ "listWithChildren": "border-s border-default",
24
24
  "itemWithChildren": "ps-1.5 -ms-px",
25
- "link": "relative group w-full flex items-center text-sm before:absolute before:inset-y-px before:inset-x-0 before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
26
- "linkLeadingIcon": "shrink-0",
25
+ "link": "relative group w-full flex items-center text-sm select-none before:absolute before:inset-y-px before:inset-x-0 before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
26
+ "linkLeadingIcon": "shrink-0 relative",
27
27
  "linkLabel": "truncate",
28
28
  "linkTrailing": "ms-auto inline-flex gap-1.5 items-center",
29
- "linkTrailingIcon": "shrink-0 transform transition-transform duration-200 group-data-[expanded=true]:rotate-180"
29
+ "linkTrailingIcon": "shrink-0 transform transition-transform duration-200 group-data-expanded:rotate-180"
30
30
  },
31
31
  "variants": {
32
+ "virtualize": {
33
+ "true": {
34
+ "root": "overflow-y-auto"
35
+ }
36
+ },
32
37
  "color": {
33
38
  "primary": {
34
39
  "link": "focus-visible:before:ring-primary"
@@ -54,26 +59,31 @@ export default {
54
59
  },
55
60
  "size": {
56
61
  "xs": {
62
+ "listWithChildren": "ms-4",
57
63
  "link": "px-2 py-1 text-xs gap-1",
58
64
  "linkLeadingIcon": "size-4",
59
65
  "linkTrailingIcon": "size-4"
60
66
  },
61
67
  "sm": {
68
+ "listWithChildren": "ms-4.5",
62
69
  "link": "px-2.5 py-1.5 text-xs gap-1.5",
63
70
  "linkLeadingIcon": "size-4",
64
71
  "linkTrailingIcon": "size-4"
65
72
  },
66
73
  "md": {
74
+ "listWithChildren": "ms-5",
67
75
  "link": "px-2.5 py-1.5 text-sm gap-1.5",
68
76
  "linkLeadingIcon": "size-5",
69
77
  "linkTrailingIcon": "size-5"
70
78
  },
71
79
  "lg": {
80
+ "listWithChildren": "ms-5.5",
72
81
  "link": "px-3 py-2 text-sm gap-2",
73
82
  "linkLeadingIcon": "size-5",
74
83
  "linkTrailingIcon": "size-5"
75
84
  },
76
85
  "xl": {
86
+ "listWithChildren": "ms-6",
77
87
  "link": "px-3 py-2 text-base gap-2",
78
88
  "linkLeadingIcon": "size-6",
79
89
  "linkTrailingIcon": "size-6"
@@ -82,12 +92,6 @@ export default {
82
92
  "selected": {
83
93
  "true": {
84
94
  "link": "before:bg-elevated"
85
- },
86
- "false": {
87
- "link": [
88
- "hover:not-disabled:text-highlighted hover:not-disabled:before:bg-elevated/50",
89
- "transition-colors before:transition-colors"
90
- ]
91
95
  }
92
96
  },
93
97
  "disabled": {
@@ -145,6 +149,16 @@ export default {
145
149
  "class": {
146
150
  "link": "text-highlighted"
147
151
  }
152
+ },
153
+ {
154
+ "selected": false,
155
+ "disabled": false,
156
+ "class": {
157
+ "link": [
158
+ "hover:text-highlighted hover:before:bg-elevated/50",
159
+ "transition-colors before:transition-colors"
160
+ ]
161
+ }
148
162
  }
149
163
  ],
150
164
  "defaultVariants": {
package/cli/templates.mjs CHANGED
@@ -141,22 +141,34 @@ const test = ({ name, prose, content }) => {
141
141
  ? undefined
142
142
  : `
143
143
  import { describe, it, expect } from 'vitest'
144
+ import { axe } from 'vitest-axe'
145
+ import { mountSuspended } from '@nuxt/test-utils/runtime'
144
146
  import ${upperName} from '../../${content ? '../' : ''}src/runtime/components/${content ? 'content/' : ''}${upperName}.vue'
145
147
  import type { ${upperName}Props, ${upperName}Slots } from '../../${content ? '../' : ''}src/runtime/components/${content ? 'content/' : ''}${upperName}.vue'
146
148
  import ComponentRender from '../${content ? '../' : ''}component-render'
147
149
 
148
150
  describe('${upperName}', () => {
151
+ const props = {}
152
+
149
153
  it.each([
150
154
  // Props
151
155
  ['with as', { props: { as: 'section' } }],
152
156
  ['with class', { props: { class: '' } }],
153
157
  ['with ui', { props: { ui: {} } }],
154
158
  // Slots
155
- ['with default slot', { slots: { default: () => 'Default slot' } }]
159
+ ['with default slot', { props, slots: { default: () => 'Default slot' } }]
156
160
  ])('renders %s correctly', async (nameOrHtml: string, options: { props?: ${upperName}Props, slots?: Partial<${upperName}Slots> }) => {
157
161
  const html = await ComponentRender(nameOrHtml, options, ${upperName})
158
162
  expect(html).toMatchSnapshot()
159
163
  })
164
+
165
+ it('passes accessibility tests', async () => {
166
+ const wrapper = await mountSuspended(${upperName}, {
167
+ props
168
+ })
169
+
170
+ expect(await axe(wrapper.element)).toHaveNoViolations()
171
+ })
160
172
  })
161
173
  `
162
174
  }
@@ -167,7 +179,7 @@ const docs = ({ name, primitive }) => {
167
179
  const upperName = splitByCase(name).map(p => upperFirst(p)).join('')
168
180
 
169
181
  return {
170
- filename: `docs/content/3.components/${kebabName}.md`,
182
+ filename: `docs/content/docs/2.components/${kebabName}.md`,
171
183
  contents: `---
172
184
  title: ${upperName}
173
185
  description: ''
package/dist/module.d.mts CHANGED
@@ -63,6 +63,21 @@ interface ModuleOptions {
63
63
  * @defaultValue false
64
64
  */
65
65
  content?: boolean;
66
+ /**
67
+ * Experimental features
68
+ */
69
+ experimental?: {
70
+ /**
71
+ * Enable automatic component detection for tree-shaking
72
+ * Only generates theme files for components actually used in your app
73
+ * - `true`: Enable automatic detection
74
+ * - `string[]`: Enable detection and include additional components (useful for dynamic components)
75
+ * @defaultValue false
76
+ * @example true
77
+ * @example ['Modal', 'Dropdown']
78
+ */
79
+ componentDetection?: boolean | string[];
80
+ };
66
81
  }
67
82
  declare module '#app' {
68
83
  interface RuntimeNuxtHooks {
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxt/ui",
3
- "version": "4.0.1",
3
+ "version": "4.1.0",
4
4
  "docs": "https://ui.nuxt.com/docs/getting-started/installation/nuxt",
5
5
  "configKey": "ui",
6
6
  "compatibility": {
@@ -8,6 +8,6 @@
8
8
  },
9
9
  "builder": {
10
10
  "@nuxt/module-builder": "1.0.2",
11
- "unbuild": "3.6.0"
11
+ "unbuild": "3.6.1"
12
12
  }
13
13
  }
package/dist/module.mjs CHANGED
@@ -1,14 +1,17 @@
1
1
  import { defu } from 'defu';
2
2
  import { defineNuxtModule, createResolver, addPlugin, hasNuxtModule, addComponentsDir, addImportsDir, installModule } from '@nuxt/kit';
3
- import { d as defaultOptions, r as resolveColors, a as getDefaultUiConfig, b as addTemplates } from './shared/ui.D-FDXAUi.mjs';
3
+ import { d as defaultOptions, r as resolveColors, a as getDefaultUiConfig, b as addTemplates } from './shared/ui.Cmctwxv6.mjs';
4
4
  import '../dist/runtime/utils/index.js';
5
5
  import 'node:url';
6
+ import 'node:fs/promises';
7
+ import 'pathe';
8
+ import 'tinyglobby';
6
9
  import 'scule';
7
10
  import 'knitwork';
8
11
  import 'tailwindcss/colors';
9
12
 
10
13
  const name = "@nuxt/ui";
11
- const version = "4.0.1";
14
+ const version = "4.1.0";
12
15
 
13
16
  const module = defineNuxtModule({
14
17
  meta: {
@@ -51,16 +51,22 @@ type SlotProps<T extends AccordionItem> = (props: {
51
51
  item: T;
52
52
  index: number;
53
53
  open: boolean;
54
+ ui: Accordion['ui'];
54
55
  }) => any;
55
56
  export type AccordionSlots<T extends AccordionItem = AccordionItem> = {
56
57
  leading: SlotProps<T>;
57
- default: SlotProps<T>;
58
+ default(props: {
59
+ item: T;
60
+ index: number;
61
+ open: boolean;
62
+ }): any;
58
63
  trailing: SlotProps<T>;
59
64
  content: SlotProps<T>;
60
65
  body: SlotProps<T>;
61
66
  } & DynamicSlots<T, 'body', {
62
67
  index: number;
63
68
  open: boolean;
69
+ ui: Accordion['ui'];
64
70
  }>;
65
71
  declare const __VLS_export: <T extends AccordionItem>(__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<{
66
72
  props: __VLS_PrettifyLocal<AccordionProps<T> & {
@@ -45,7 +45,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.accordion ||
45
45
  >
46
46
  <AccordionHeader as="div" :class="ui.header({ class: [props.ui?.header, item.ui?.header] })">
47
47
  <AccordionTrigger :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger], disabled: item.disabled })">
48
- <slot name="leading" :item="item" :index="index" :open="open">
48
+ <slot name="leading" :item="item" :index="index" :open="open" :ui="ui">
49
49
  <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item?.ui?.leadingIcon] })" />
50
50
  </slot>
51
51
 
@@ -53,16 +53,16 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.accordion ||
53
53
  <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey) }}</slot>
54
54
  </span>
55
55
 
56
- <slot name="trailing" :item="item" :index="index" :open="open">
56
+ <slot name="trailing" :item="item" :index="index" :open="open" :ui="ui">
57
57
  <UIcon :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: [props.ui?.trailingIcon, item.ui?.trailingIcon] })" />
58
58
  </slot>
59
59
  </AccordionTrigger>
60
60
  </AccordionHeader>
61
61
 
62
62
  <AccordionContent v-if="item.content || !!slots.content || item.slot && !!slots[item.slot] || !!slots.body || item.slot && !!slots[`${item.slot}-body`]" :class="ui.content({ class: [props.ui?.content, item.ui?.content] })">
63
- <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open">
63
+ <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open" :ui="ui">
64
64
  <div :class="ui.body({ class: [props.ui?.body, item.ui?.body] })">
65
- <slot :name="item.slot ? `${item.slot}-body` : 'body'" :item="item" :index="index" :open="open">
65
+ <slot :name="item.slot ? `${item.slot}-body` : 'body'" :item="item" :index="index" :open="open" :ui="ui">
66
66
  {{ item.content }}
67
67
  </slot>
68
68
  </div>
@@ -51,16 +51,22 @@ type SlotProps<T extends AccordionItem> = (props: {
51
51
  item: T;
52
52
  index: number;
53
53
  open: boolean;
54
+ ui: Accordion['ui'];
54
55
  }) => any;
55
56
  export type AccordionSlots<T extends AccordionItem = AccordionItem> = {
56
57
  leading: SlotProps<T>;
57
- default: SlotProps<T>;
58
+ default(props: {
59
+ item: T;
60
+ index: number;
61
+ open: boolean;
62
+ }): any;
58
63
  trailing: SlotProps<T>;
59
64
  content: SlotProps<T>;
60
65
  body: SlotProps<T>;
61
66
  } & DynamicSlots<T, 'body', {
62
67
  index: number;
63
68
  open: boolean;
69
+ ui: Accordion['ui'];
64
70
  }>;
65
71
  declare const __VLS_export: <T extends AccordionItem>(__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<{
66
72
  props: __VLS_PrettifyLocal<AccordionProps<T> & {
@@ -56,14 +56,14 @@ export interface AlertEmits {
56
56
  'update:open': [value: boolean];
57
57
  }
58
58
  export interface AlertSlots {
59
- leading(props?: {}): any;
59
+ leading(props: {
60
+ ui: Alert['ui'];
61
+ }): any;
60
62
  title(props?: {}): any;
61
63
  description(props?: {}): any;
62
64
  actions(props?: {}): any;
63
65
  close(props: {
64
- ui: {
65
- [K in keyof Required<Alert['slots']>]: (props?: Record<string, any>) => string;
66
- };
66
+ ui: Alert['ui'];
67
67
  }): any;
68
68
  }
69
69
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -40,7 +40,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.alert || {} }
40
40
 
41
41
  <template>
42
42
  <Primitive :as="as" :data-orientation="orientation" :class="ui.root({ class: [props.ui?.root, props.class] })">
43
- <slot name="leading">
43
+ <slot name="leading" :ui="ui">
44
44
  <UAvatar v-if="avatar" :size="props.ui?.avatarSize || ui.avatarSize()" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
45
45
  <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
46
46
  </slot>
@@ -56,14 +56,14 @@ export interface AlertEmits {
56
56
  'update:open': [value: boolean];
57
57
  }
58
58
  export interface AlertSlots {
59
- leading(props?: {}): any;
59
+ leading(props: {
60
+ ui: Alert['ui'];
61
+ }): any;
60
62
  title(props?: {}): any;
61
63
  description(props?: {}): any;
62
64
  actions(props?: {}): any;
63
65
  close(props: {
64
- ui: {
65
- [K in keyof Required<Alert['slots']>]: (props?: Record<string, any>) => string;
66
- };
66
+ ui: Alert['ui'];
67
67
  }): any;
68
68
  }
69
69
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -79,7 +79,9 @@ type DynamicFieldSlots<T, F, SlotProps = {
79
79
  type DynamicFormFieldSlots<T> = Record<string, (props?: {}) => any> & Record<`${keyof T extends string ? keyof T : never}-${'label' | 'description' | 'hint' | 'help' | 'error'}`, (props?: {}) => any>;
80
80
  export type AuthFormSlots<T extends object = object, F extends AuthFormField = AuthFormField> = {
81
81
  header(props?: {}): any;
82
- leading(props?: {}): any;
82
+ leading(props: {
83
+ ui: AuthForm['ui'];
84
+ }): any;
83
85
  title(props?: {}): any;
84
86
  description(props?: {}): any;
85
87
  providers(props?: {}): any;
@@ -79,7 +79,7 @@ function omitFieldProps(field) {
79
79
  <div v-if="icon || !!slots.icon || (title || !!slots.title) || (description || !!slots.description) || !!slots.header" :class="ui.header({ class: props.ui?.header })">
80
80
  <slot name="header">
81
81
  <div v-if="icon || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
82
- <slot name="leading">
82
+ <slot name="leading" :ui="ui">
83
83
  <UIcon v-if="icon" :name="icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
84
84
  </slot>
85
85
  </div>
@@ -79,7 +79,9 @@ type DynamicFieldSlots<T, F, SlotProps = {
79
79
  type DynamicFormFieldSlots<T> = Record<string, (props?: {}) => any> & Record<`${keyof T extends string ? keyof T : never}-${'label' | 'description' | 'hint' | 'help' | 'error'}`, (props?: {}) => any>;
80
80
  export type AuthFormSlots<T extends object = object, F extends AuthFormField = AuthFormField> = {
81
81
  header(props?: {}): any;
82
- leading(props?: {}): any;
82
+ leading(props: {
83
+ ui: AuthForm['ui'];
84
+ }): any;
83
85
  title(props?: {}): any;
84
86
  description(props?: {}): any;
85
87
  providers(props?: {}): any;
@@ -8,7 +8,10 @@ export interface AvatarProps {
8
8
  * The element or component this component should render as.
9
9
  * @defaultValue 'span'
10
10
  */
11
- as?: any;
11
+ as?: any | {
12
+ root?: any;
13
+ img?: any;
14
+ };
12
15
  src?: string;
13
16
  alt?: string;
14
17
  /**
@@ -28,9 +31,7 @@ export interface AvatarProps {
28
31
  export interface AvatarSlots {
29
32
  default(props?: {}): any;
30
33
  }
31
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AvatarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{}>, {
32
- as: any;
33
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AvatarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
35
  default?: (props: {}) => any;
35
36
  }>;
36
37
  declare const _default: typeof __VLS_export;
@@ -5,6 +5,7 @@ import theme from "#build/ui/avatar";
5
5
  <script setup>
6
6
  import { ref, computed, watch } from "vue";
7
7
  import { Primitive, Slot } from "reka-ui";
8
+ import { defu } from "defu";
8
9
  import { useAppConfig } from "#imports";
9
10
  import ImageComponent from "#build/ui-image-component";
10
11
  import { useAvatarGroup } from "../composables/useAvatarGroup";
@@ -13,7 +14,7 @@ import UIcon from "./Icon.vue";
13
14
  import UChip from "./Chip.vue";
14
15
  defineOptions({ inheritAttrs: false });
15
16
  const props = defineProps({
16
- as: { type: null, required: false, default: "span" },
17
+ as: { type: null, required: false },
17
18
  src: { type: String, required: false },
18
19
  alt: { type: String, required: false },
19
20
  icon: { type: [String, Object], required: false },
@@ -24,6 +25,12 @@ const props = defineProps({
24
25
  style: { type: null, required: false },
25
26
  ui: { type: null, required: false }
26
27
  });
28
+ const as = computed(() => {
29
+ if (typeof props.as === "string" || typeof props.as?.render === "function") {
30
+ return { root: props.as };
31
+ }
32
+ return defu(props.as, { root: "span" });
33
+ });
27
34
  const fallback = computed(() => props.text || (props.alt || "").split(" ").map((word) => word.charAt(0)).join("").substring(0, 2));
28
35
  const appConfig = useAppConfig();
29
36
  const { size } = useAvatarGroup(props);
@@ -55,13 +62,13 @@ function onError() {
55
62
  <template>
56
63
  <component
57
64
  :is="props.chip ? UChip : Primitive"
58
- :as="as"
65
+ :as="as.root"
59
66
  v-bind="props.chip ? typeof props.chip === 'object' ? { inset: true, ...props.chip } : { inset: true } : {}"
60
67
  :class="ui.root({ class: [props.ui?.root, props.class] })"
61
68
  :style="props.style"
62
69
  >
63
70
  <component
64
- :is="ImageComponent"
71
+ :is="as.img || ImageComponent"
65
72
  v-if="src && !error"
66
73
  :src="src"
67
74
  :alt="alt"
@@ -8,7 +8,10 @@ export interface AvatarProps {
8
8
  * The element or component this component should render as.
9
9
  * @defaultValue 'span'
10
10
  */
11
- as?: any;
11
+ as?: any | {
12
+ root?: any;
13
+ img?: any;
14
+ };
12
15
  src?: string;
13
16
  alt?: string;
14
17
  /**
@@ -28,9 +31,7 @@ export interface AvatarProps {
28
31
  export interface AvatarSlots {
29
32
  default(props?: {}): any;
30
33
  }
31
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AvatarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{}>, {
32
- as: any;
33
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<AvatarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
35
  default?: (props: {}) => any;
35
36
  }>;
36
37
  declare const _default: typeof __VLS_export;
@@ -28,9 +28,15 @@ export interface BadgeProps extends Omit<UseComponentIconsProps, 'loading' | 'lo
28
28
  ui?: Badge['slots'];
29
29
  }
30
30
  export interface BadgeSlots {
31
- leading(props?: {}): any;
32
- default(props?: {}): any;
33
- trailing(props?: {}): any;
31
+ leading(props: {
32
+ ui: Badge['ui'];
33
+ }): any;
34
+ default(props: {
35
+ ui: Badge['ui'];
36
+ }): any;
37
+ trailing(props: {
38
+ ui: Badge['ui'];
39
+ }): any;
34
40
  }
35
41
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
36
42
  as: any;
@@ -42,18 +42,18 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.badge || {} }
42
42
 
43
43
  <template>
44
44
  <Primitive :as="as" :class="ui.base({ class: [props.ui?.base, props.class] })">
45
- <slot name="leading">
45
+ <slot name="leading" :ui="ui">
46
46
  <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
47
47
  <UAvatar v-else-if="!!avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
48
48
  </slot>
49
49
 
50
- <slot>
50
+ <slot :ui="ui">
51
51
  <span v-if="label !== void 0 && label !== null" :class="ui.label({ class: props.ui?.label })">
52
52
  {{ label }}
53
53
  </span>
54
54
  </slot>
55
55
 
56
- <slot name="trailing">
56
+ <slot name="trailing" :ui="ui">
57
57
  <UIcon v-if="isTrailing && trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
58
58
  </slot>
59
59
  </Primitive>
@@ -28,9 +28,15 @@ export interface BadgeProps extends Omit<UseComponentIconsProps, 'loading' | 'lo
28
28
  ui?: Badge['slots'];
29
29
  }
30
30
  export interface BadgeSlots {
31
- leading(props?: {}): any;
32
- default(props?: {}): any;
33
- trailing(props?: {}): any;
31
+ leading(props: {
32
+ ui: Badge['ui'];
33
+ }): any;
34
+ default(props: {
35
+ ui: Badge['ui'];
36
+ }): any;
37
+ trailing(props: {
38
+ ui: Badge['ui'];
39
+ }): any;
34
40
  }
35
41
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
36
42
  as: any;
@@ -49,11 +49,13 @@ export interface BannerProps {
49
49
  ui?: Banner['slots'];
50
50
  }
51
51
  export interface BannerSlots {
52
- leading(props?: {}): any;
52
+ leading(props: {
53
+ ui: Banner['ui'];
54
+ }): any;
53
55
  title(props?: {}): any;
54
56
  actions(props?: {}): any;
55
57
  close(props: {
56
- ui: any;
58
+ ui: Banner['ui'];
57
59
  }): any;
58
60
  }
59
61
  export interface BannerEmits {
@@ -76,7 +76,7 @@ function onClose() {
76
76
  <div :class="ui.left({ class: props.ui?.left })" />
77
77
 
78
78
  <div :class="ui.center({ class: props.ui?.center })">
79
- <slot name="leading">
79
+ <slot name="leading" :ui="ui">
80
80
  <UIcon v-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
81
81
  </slot>
82
82
 
@@ -49,11 +49,13 @@ export interface BannerProps {
49
49
  ui?: Banner['slots'];
50
50
  }
51
51
  export interface BannerSlots {
52
- leading(props?: {}): any;
52
+ leading(props: {
53
+ ui: Banner['ui'];
54
+ }): any;
53
55
  title(props?: {}): any;
54
56
  actions(props?: {}): any;
55
57
  close(props: {
56
- ui: any;
58
+ ui: Banner['ui'];
57
59
  }): any;
58
60
  }
59
61
  export interface BannerEmits {