@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
@@ -60,7 +60,7 @@ const features = computed(() => props.features?.map((feature) => typeof feature
60
60
  </div>
61
61
 
62
62
  <div v-if="billingCycle || billingPeriod || !!slots.billing" :class="ui.billing({ class: props.ui?.billing })">
63
- <slot name="billing">
63
+ <slot name="billing" :ui="ui">
64
64
  <span :class="ui.billingPeriod({ class: props.ui?.billingPeriod })">
65
65
  {{ billingPeriod || "\xA0" }}
66
66
  </span>
@@ -87,7 +87,7 @@ const features = computed(() => props.features?.map((feature) => typeof feature
87
87
  </slot>
88
88
  </div>
89
89
 
90
- <slot name="badge">
90
+ <slot name="badge" :ui="ui">
91
91
  <UBadge v-if="badge" color="primary" variant="subtle" v-bind="typeof badge === 'string' ? { label: badge } : badge" :class="ui.badge({ class: props.ui?.badge })" />
92
92
  </slot>
93
93
  </div>
@@ -122,7 +122,7 @@ const features = computed(() => props.features?.map((feature) => typeof feature
122
122
 
123
123
  <ReusePriceTemplate v-if="orientation === 'horizontal'" />
124
124
 
125
- <slot name="button">
125
+ <slot name="button" :ui="ui">
126
126
  <UButton v-if="button" v-bind="{ block: true, size: 'lg', ...button }" :class="ui.button({ class: props.ui?.button })" @click="button?.onClick" />
127
127
  </slot>
128
128
 
@@ -87,14 +87,20 @@ export interface PricingPlanProps {
87
87
  ui?: PricingPlan['slots'];
88
88
  }
89
89
  export interface PricingPlanSlots {
90
- badge(props?: {}): any;
90
+ badge(props: {
91
+ ui: PricingPlan['ui'];
92
+ }): any;
91
93
  title(props?: {}): any;
92
94
  description(props?: {}): any;
93
95
  price(props?: {}): any;
94
96
  discount(props?: {}): any;
95
- billing(props?: {}): any;
97
+ billing(props: {
98
+ ui: PricingPlan['ui'];
99
+ }): any;
96
100
  features(props?: {}): any;
97
- button(props?: {}): any;
101
+ button(props: {
102
+ ui: PricingPlan['ui'];
103
+ }): any;
98
104
  header(props?: {}): any;
99
105
  body(props?: {}): any;
100
106
  footer(props?: {}): any;
@@ -1,6 +1,6 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/pricing-plans';
3
- import type { PricingPlanProps } from '../types';
3
+ import type { PricingPlanProps, PricingPlanSlots } from '../types';
4
4
  import type { ComponentConfig } from '../types/tv';
5
5
  type PricingPlans = ComponentConfig<typeof theme, AppConfig, 'pricingPlans'>;
6
6
  export interface PricingPlansProps {
@@ -28,18 +28,25 @@ export interface PricingPlansProps {
28
28
  scale?: boolean;
29
29
  class?: any;
30
30
  }
31
- export interface PricingPlansSlots {
31
+ type ExtendSlotWithPlan<T extends PricingPlanProps, K extends keyof PricingPlanSlots> = PricingPlanSlots[K] extends (props: infer P) => any ? (props: P & {
32
+ plan: T;
33
+ }) => any : PricingPlanSlots[K];
34
+ export type PricingPlansSlots<T extends PricingPlanProps = PricingPlanProps> = {
35
+ [K in keyof PricingPlanSlots]: ExtendSlotWithPlan<T, K>;
36
+ } & {
32
37
  default(props?: {}): any;
33
- }
34
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlansProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlansProps> & Readonly<{}>, {
35
- orientation: PricingPlans["variants"]["orientation"];
36
- scale: boolean;
37
- compact: boolean;
38
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlansSlots>;
38
+ };
39
+ declare const __VLS_export: <T extends PricingPlanProps>(__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<{
40
+ props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps;
41
+ expose: (exposed: {}) => void;
42
+ attrs: any;
43
+ slots: PricingPlansSlots<T>;
44
+ emit: {};
45
+ }>) => import("vue").VNode & {
46
+ __ctx?: Awaited<typeof __VLS_setup>;
47
+ };
39
48
  declare const _default: typeof __VLS_export;
40
49
  export default _default;
41
- type __VLS_WithSlots<T, S> = T & {
42
- new (): {
43
- $slots: S;
44
- };
45
- };
50
+ type __VLS_PrettifyLocal<T> = {
51
+ [K in keyof T as K]: T[K];
52
+ } & {};
@@ -6,6 +6,7 @@ import theme from "#build/ui/pricing-plans";
6
6
  import { computed } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { useAppConfig } from "#imports";
9
+ import { omit } from "../utils";
9
10
  import { tv } from "../utils/tv";
10
11
  import UPricingPlan from "./PricingPlan.vue";
11
12
  const props = defineProps({
@@ -17,6 +18,7 @@ const props = defineProps({
17
18
  class: { type: null, required: false }
18
19
  });
19
20
  const slots = defineSlots();
21
+ const getProxySlots = () => omit(slots, ["default"]);
20
22
  const appConfig = useAppConfig();
21
23
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.pricingPlans || {} }));
22
24
  const count = computed(() => props.plans?.length || slots.default?.()?.flatMap(mapSlot).filter(Boolean)?.length || 3);
@@ -39,7 +41,11 @@ function mapSlot(slot) {
39
41
  :key="index"
40
42
  :orientation="orientation === 'vertical' ? 'horizontal' : 'vertical'"
41
43
  v-bind="plan"
42
- />
44
+ >
45
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
46
+ <slot :name="name" v-bind="slotData" :plan="plan" />
47
+ </template>
48
+ </UPricingPlan>
43
49
  </slot>
44
50
  </Primitive>
45
51
  </template>
@@ -1,6 +1,6 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/pricing-plans';
3
- import type { PricingPlanProps } from '../types';
3
+ import type { PricingPlanProps, PricingPlanSlots } from '../types';
4
4
  import type { ComponentConfig } from '../types/tv';
5
5
  type PricingPlans = ComponentConfig<typeof theme, AppConfig, 'pricingPlans'>;
6
6
  export interface PricingPlansProps {
@@ -28,18 +28,25 @@ export interface PricingPlansProps {
28
28
  scale?: boolean;
29
29
  class?: any;
30
30
  }
31
- export interface PricingPlansSlots {
31
+ type ExtendSlotWithPlan<T extends PricingPlanProps, K extends keyof PricingPlanSlots> = PricingPlanSlots[K] extends (props: infer P) => any ? (props: P & {
32
+ plan: T;
33
+ }) => any : PricingPlanSlots[K];
34
+ export type PricingPlansSlots<T extends PricingPlanProps = PricingPlanProps> = {
35
+ [K in keyof PricingPlanSlots]: ExtendSlotWithPlan<T, K>;
36
+ } & {
32
37
  default(props?: {}): any;
33
- }
34
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlansProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlansProps> & Readonly<{}>, {
35
- orientation: PricingPlans["variants"]["orientation"];
36
- scale: boolean;
37
- compact: boolean;
38
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlansSlots>;
38
+ };
39
+ declare const __VLS_export: <T extends PricingPlanProps>(__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<{
40
+ props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps;
41
+ expose: (exposed: {}) => void;
42
+ attrs: any;
43
+ slots: PricingPlansSlots<T>;
44
+ emit: {};
45
+ }>) => import("vue").VNode & {
46
+ __ctx?: Awaited<typeof __VLS_setup>;
47
+ };
39
48
  declare const _default: typeof __VLS_export;
40
49
  export default _default;
41
- type __VLS_WithSlots<T, S> = T & {
42
- new (): {
43
- $slots: S;
44
- };
45
- };
50
+ type __VLS_PrettifyLocal<T> = {
51
+ [K in keyof T as K]: T[K];
52
+ } & {};
@@ -9,6 +9,7 @@ type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
9
9
  export type SelectValue = AcceptableValue;
10
10
  export type SelectItem = SelectValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -22,9 +23,9 @@ export type SelectItem = SelectValue | {
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  value?: SelectValue;
24
25
  disabled?: boolean;
25
- onSelect?(e?: Event): void;
26
+ onSelect?: (e: Event) => void;
26
27
  class?: any;
27
- ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
28
+ ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
28
29
  [key: string]: any;
29
30
  };
30
31
  export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
@@ -80,6 +81,11 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
80
81
  * @defaultValue 'label'
81
82
  */
82
83
  labelKey?: GetItemKeys<T>;
84
+ /**
85
+ * When `items` is an array of objects, select the field to use as the description.
86
+ * @defaultValue 'description'
87
+ */
88
+ descriptionKey?: GetItemKeys<T>;
83
89
  items?: T;
84
90
  /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
85
91
  defaultValue?: GetModelValue<T, VK, M>;
@@ -102,29 +108,34 @@ export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemK
102
108
  type SlotProps<T extends SelectItem> = (props: {
103
109
  item: T;
104
110
  index: number;
111
+ ui: Select['ui'];
105
112
  }) => any;
106
113
  export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
107
114
  'leading'(props: {
108
115
  modelValue?: GetModelValue<A, VK, M>;
109
116
  open: boolean;
110
- ui: {
111
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
112
- };
117
+ ui: Select['ui'];
113
118
  }): any;
114
119
  'default'(props: {
115
120
  modelValue?: GetModelValue<A, VK, M>;
116
121
  open: boolean;
122
+ ui: Select['ui'];
117
123
  }): any;
118
124
  'trailing'(props: {
119
125
  modelValue?: GetModelValue<A, VK, M>;
120
126
  open: boolean;
121
- ui: {
122
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
123
- };
127
+ ui: Select['ui'];
124
128
  }): any;
125
129
  'item': SlotProps<T>;
126
130
  'item-leading': SlotProps<T>;
127
- 'item-label': SlotProps<T>;
131
+ 'item-label'(props: {
132
+ item: T;
133
+ index: number;
134
+ }): any;
135
+ 'item-description'(props: {
136
+ item: T;
137
+ index: number;
138
+ }): any;
128
139
  'item-trailing': SlotProps<T>;
129
140
  'content-top': (props?: {}) => any;
130
141
  'content-bottom': (props?: {}) => any;
@@ -31,6 +31,7 @@ const props = defineProps({
31
31
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
32
32
  valueKey: { type: null, required: false, default: "value" },
33
33
  labelKey: { type: null, required: false, default: "label" },
34
+ descriptionKey: { type: null, required: false, default: "description" },
34
35
  items: { type: null, required: false },
35
36
  defaultValue: { type: null, required: false },
36
37
  modelValue: { type: null, required: false },
@@ -155,7 +156,7 @@ defineExpose({
155
156
  </slot>
156
157
  </span>
157
158
 
158
- <slot :model-value="modelValue" :open="open">
159
+ <slot :model-value="modelValue" :open="open" :ui="ui">
159
160
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
160
161
  <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" :class="ui.value({ class: props.ui?.value })">
161
162
  {{ displayedModelValue }}
@@ -193,8 +194,8 @@ defineExpose({
193
194
  :value="isSelectItem(item) ? get(item, props.valueKey) : item"
194
195
  @select="isSelectItem(item) && item.onSelect?.($event)"
195
196
  >
196
- <slot name="item" :item="item" :index="index">
197
- <slot name="item-leading" :item="item" :index="index">
197
+ <slot name="item" :item="item" :index="index" :ui="ui">
198
+ <slot name="item-leading" :item="item" :index="index" :ui="ui">
198
199
  <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
199
200
  <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
200
201
  <UChip
@@ -207,14 +208,22 @@ defineExpose({
207
208
  />
208
209
  </slot>
209
210
 
210
- <SelectItemText :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
211
- <slot name="item-label" :item="item" :index="index">
212
- {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
213
- </slot>
214
- </SelectItemText>
211
+ <span :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
212
+ <SelectItemText :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
213
+ <slot name="item-label" :item="item" :index="index">
214
+ {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
215
+ </slot>
216
+ </SelectItemText>
217
+
218
+ <span v-if="isSelectItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" :class="ui.itemDescription({ class: [props.ui?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })">
219
+ <slot name="item-description" :item="item" :index="index">
220
+ {{ get(item, props.descriptionKey) }}
221
+ </slot>
222
+ </span>
223
+ </span>
215
224
 
216
225
  <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
217
- <slot name="item-trailing" :item="item" :index="index" />
226
+ <slot name="item-trailing" :item="item" :index="index" :ui="ui" />
218
227
 
219
228
  <SelectItemIndicator as-child>
220
229
  <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
@@ -9,6 +9,7 @@ type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
9
9
  export type SelectValue = AcceptableValue;
10
10
  export type SelectItem = SelectValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -22,9 +23,9 @@ export type SelectItem = SelectValue | {
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  value?: SelectValue;
24
25
  disabled?: boolean;
25
- onSelect?(e?: Event): void;
26
+ onSelect?: (e: Event) => void;
26
27
  class?: any;
27
- ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
28
+ ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
28
29
  [key: string]: any;
29
30
  };
30
31
  export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
@@ -80,6 +81,11 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
80
81
  * @defaultValue 'label'
81
82
  */
82
83
  labelKey?: GetItemKeys<T>;
84
+ /**
85
+ * When `items` is an array of objects, select the field to use as the description.
86
+ * @defaultValue 'description'
87
+ */
88
+ descriptionKey?: GetItemKeys<T>;
83
89
  items?: T;
84
90
  /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
85
91
  defaultValue?: GetModelValue<T, VK, M>;
@@ -102,29 +108,34 @@ export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemK
102
108
  type SlotProps<T extends SelectItem> = (props: {
103
109
  item: T;
104
110
  index: number;
111
+ ui: Select['ui'];
105
112
  }) => any;
106
113
  export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
107
114
  'leading'(props: {
108
115
  modelValue?: GetModelValue<A, VK, M>;
109
116
  open: boolean;
110
- ui: {
111
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
112
- };
117
+ ui: Select['ui'];
113
118
  }): any;
114
119
  'default'(props: {
115
120
  modelValue?: GetModelValue<A, VK, M>;
116
121
  open: boolean;
122
+ ui: Select['ui'];
117
123
  }): any;
118
124
  'trailing'(props: {
119
125
  modelValue?: GetModelValue<A, VK, M>;
120
126
  open: boolean;
121
- ui: {
122
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
123
- };
127
+ ui: Select['ui'];
124
128
  }): any;
125
129
  'item': SlotProps<T>;
126
130
  'item-leading': SlotProps<T>;
127
- 'item-label': SlotProps<T>;
131
+ 'item-label'(props: {
132
+ item: T;
133
+ index: number;
134
+ }): any;
135
+ 'item-description'(props: {
136
+ item: T;
137
+ index: number;
138
+ }): any;
128
139
  'item-trailing': SlotProps<T>;
129
140
  'content-top': (props?: {}) => any;
130
141
  'content-bottom': (props?: {}) => any;
@@ -9,6 +9,7 @@ type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
9
  export type SelectMenuValue = AcceptableValue;
10
10
  export type SelectMenuItem = SelectMenuValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -21,9 +22,9 @@ export type SelectMenuItem = SelectMenuValue | {
21
22
  */
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  disabled?: boolean;
24
- onSelect?(e?: Event): void;
25
+ onSelect?: (e: Event) => void;
25
26
  class?: any;
26
- ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
+ ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
27
28
  [key: string]: any;
28
29
  };
29
30
  export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover'>, UseComponentIconsProps {
@@ -78,6 +79,23 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
78
79
  * @defaultValue true
79
80
  */
80
81
  portal?: boolean | string | HTMLElement;
82
+ /**
83
+ * Enable virtualization for large lists.
84
+ * Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
85
+ * @defaultValue false
86
+ */
87
+ virtualize?: boolean | {
88
+ /**
89
+ * Number of items rendered outside the visible area
90
+ * @defaultValue 12
91
+ */
92
+ overscan?: number;
93
+ /**
94
+ * Estimated size (in px) of each item
95
+ * @defaultValue 32
96
+ */
97
+ estimateSize?: number;
98
+ };
81
99
  /**
82
100
  * When `items` is an array of objects, select the field to use as the value instead of the object itself.
83
101
  * @defaultValue undefined
@@ -88,6 +106,11 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
88
106
  * @defaultValue 'label'
89
107
  */
90
108
  labelKey?: GetItemKeys<T>;
109
+ /**
110
+ * When `items` is an array of objects, select the field to use as the description.
111
+ * @defaultValue 'description'
112
+ */
113
+ descriptionKey?: GetItemKeys<T>;
91
114
  items?: T;
92
115
  /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
116
  defaultValue?: GetModelValue<T, VK, M>;
@@ -136,32 +159,37 @@ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends
136
159
  type SlotProps<T extends SelectMenuItem> = (props: {
137
160
  item: T;
138
161
  index: number;
162
+ ui: SelectMenu['ui'];
139
163
  }) => any;
140
164
  export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
141
165
  'leading'(props: {
142
166
  modelValue?: GetModelValue<A, VK, M>;
143
167
  open: boolean;
144
- ui: {
145
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
146
- };
168
+ ui: SelectMenu['ui'];
147
169
  }): any;
148
170
  'default'(props: {
149
171
  modelValue?: GetModelValue<A, VK, M>;
150
172
  open: boolean;
173
+ ui: SelectMenu['ui'];
151
174
  }): any;
152
175
  'trailing'(props: {
153
176
  modelValue?: GetModelValue<A, VK, M>;
154
177
  open: boolean;
155
- ui: {
156
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
157
- };
178
+ ui: SelectMenu['ui'];
158
179
  }): any;
159
180
  'empty'(props: {
160
181
  searchTerm?: string;
161
182
  }): any;
162
183
  'item': SlotProps<T>;
163
184
  'item-leading': SlotProps<T>;
164
- 'item-label': SlotProps<T>;
185
+ 'item-label'(props: {
186
+ item: T;
187
+ index: number;
188
+ }): any;
189
+ 'item-description'(props: {
190
+ item: T;
191
+ index: number;
192
+ }): any;
165
193
  'item-trailing': SlotProps<T>;
166
194
  'content-top': (props?: {}) => any;
167
195
  'content-bottom': (props?: {}) => any;
@@ -229,7 +257,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
229
257
  };
230
258
  $forceUpdate: () => void;
231
259
  $nextTick: typeof import("vue").nextTick;
232
- $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (... /** Event handler when highlighted element changes. */args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
260
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
233
261
  } & Readonly<{
234
262
  as: import("reka-ui").AsTag | import("vue").Component;
235
263
  }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
@@ -279,7 +307,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
279
307
  };
280
308
  $forceUpdate: () => void;
281
309
  $nextTick: typeof import("vue").nextTick;
282
- $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (... /** Event handler when highlighted element changes. */args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
310
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
283
311
  } & Readonly<{
284
312
  as: import("reka-ui").AsTag | import("vue").Component;
285
313
  }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {