Skip to content

type errors on slots with vue-tsc 2.2.4 #3405

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
simonmaass opened this issue Feb 26, 2025 · 51 comments
Closed

type errors on slots with vue-tsc 2.2.4 #3405

simonmaass opened this issue Feb 26, 2025 · 51 comments
Labels
bug Something isn't working upstream v3 #1289

Comments

@simonmaass
Copy link

Environment

  • node: 22
  • nuxt: 3.15.4

Is this bug related to Nuxt or Vue?

Nuxt

Version

v3.0.0-alpha.13

Reproduction

not required

Description

run "npx nuxi typecheck"

 Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.

137         <slot :name="item.slot || 'content'" :item="item" :index="index">

Image

Additional context

No response

Logs

@simonmaass simonmaass added bug Something isn't working triage v3 #1289 labels Feb 26, 2025
@simonmaass
Copy link
Author

Looks like it is because of the update of vue-tsc from 2.2.0 to 2.2.4

@simonmaass simonmaass changed the title type errors on slots type errors on slots with vue-tsc 2.2.4 Feb 26, 2025
Copy link
Member

Indeed, we still have to look into this. I'd recommend setting the resolution to [email protected] or [email protected] for now.

@benjamincanac benjamincanac marked this as a duplicate of #3478 Mar 7, 2025
@Norbiros
Copy link
Contributor

Norbiros commented Mar 8, 2025

I wasn't able to fix this error by downgrading. It reduced error count from 36 to 1.

  Type '{ class: string | any[]; as: any; type: "button" | "submit" | "reset"; disabled: boolean | undefined; href: string; navigate: (e?: MouseEvent) => Promise<void>; rel: string | null; target: (string & {}) | ... 4 more ... | null; isExternal: boolean; }' is not assignable to type '{ readonly as?: string | undefined; readonly type?: string | undefined; readonly disabled?: boolean | undefined; readonly onClick?: ((e: MouseEvent) => void | Promise<void>)[] | ((e: MouseEvent) => void | Promise<...>) | undefined; ... 4 more ...; readonly isExternal?: boolean | undefined; }'.
    Types of property 'rel' are incompatible.
      Type 'string | null' is not assignable to type 'string | undefined'.
        Type 'null' is not assignable to type 'string | undefined'.

193     <ULinkBase
         ~~~~~~~~~

I think it may be related to 6120a15, but when I tried using pkg.pr.new I got a lot of errors related to missing useToast:

app/plugins/openFetch.ts:85:40 - error TS2304: Cannot find name 'useToast'.

85           nuxtApp.runWithContext(() => useToast().add({
                                          ~~~~~~~~

Which wasn't even touched between this commit and v3.0.0-beta.3. I even tried it patching with pnpm, but I still couldn't make it work.

Copy link
Member

I've fixed the LinkBase issue with [email protected] already in 6120a15.

I also encountered some issues with #imports when using pkg.pr.new which I managed to solve by adding a "unimport": "3.14.5" resolution but this was before 3.16 so not sure about this.

@Norbiros
Copy link
Contributor

Norbiros commented Mar 9, 2025

Yeah, thanks! It fixes this issue for me, but due to vuejs/language-tools#5183 I can't use 2.2.2, so I'm waiting for a fix.

Update: It seems to be related to vuejs/language-tools#5206 and vuejs/language-tools#5247 but using 3.0.0-alpha.0 doesn't fix this issue

Copy link
Member

Yeah I also tried 3.0.0-alpha.0 without success, we'll have to wait for a proper 3.0.0 release I guess 😬

@Norbiros
Copy link
Contributor

@benjamincanac are people from language-tools properly notified about this issue? Because I couldn't find any open issues/pull requests...

@Heartnett
Copy link

Heartnett commented Mar 13, 2025

Yeah I also tried 3.0.0-alpha.0 without success, we'll have to wait for a proper 3.0.0 release I guess 😬

v3 was released and is sill an issue.

@Heartnett
Copy link

Indeed, we still have to look into this. I'd recommend setting the resolution to [email protected] or [email protected] for now.

Downgrading to [email protected] does work (at least on my end).

@remihuigen
Copy link

Indeed, we still have to look into this. I'd recommend setting the resolution to [email protected] or [email protected] for now.

Downgrading to [email protected] does work (at least on my end).

Yup, fixed it for me as well

@cesswhite
Copy link

Indeed, we still have to look into this. I'd recommend setting the resolution to [email protected] or [email protected] for now.

Downgrading to [email protected] does work (at least on my end).

Yup, fixed it for me as well

also the downgrading work for me 🤷‍♂️

@KianYang-Lee
Copy link

Indeed, we still have to look into this. I'd recommend setting the resolution to [email protected] or [email protected] for now.

Downgrading to [email protected] does work (at least on my end).

Yup confirm it's working as well.

@gygoo
Copy link

gygoo commented Mar 16, 2025

I tried different versions:
[email protected]
[email protected]
[email protected]

but I still have 50 errors in @nuxt/[email protected] :(

Tips for collapsed sections
 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:102:12

    100 |       <AccordionHeader :class="ui.header({ class: props.ui?.header })">
    101 |         <AccordionTrigger :class="ui.trigger({ class: props.ui?.trigger, disabled: item.disabled })">
  > 102 |           <slot name="leading" :item="item" :index="index" :open="open">
        |            ^^^^
    103 |             <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    104 |           </slot>
    105 |

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:107:14

    105 |
    106 |           <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 107 |             <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey as string) }}</slot>
        |              ^^^^
    108 |           </span>
    109 |
    110 |           <slot name="trailing" :item="item" :index="index" :open="open">

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:110:12

    108 |           </span>
    109 |
  > 110 |           <slot name="trailing" :item="item" :index="index" :open="open">
        |            ^^^^
    111 |             <UIcon :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
    112 |           </slot>
    113 |         </AccordionTrigger>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type '({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:117:10

    115 |
    116 |       <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 })">
  > 117 |         <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open">
        |          ^^^^
    118 |           <div :class="ui.body({ class: props.ui?.body })">
    119 |             <slot :name="item.slot ? ${item.slot}-body: 'body'" :item="item" :index="index" :open="open">
    120 |               {{ item.content }}

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type '({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:119:14

    117 |         <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open">
    118 |           <div :class="ui.body({ class: props.ui?.body })">
  > 119 |             <slot :name="item.slot ? ${item.slot}-body: 'body'" :item="item" :index="index" :open="open">
        |              ^^^^
    120 |               {{ item.content }}
    121 |             </slot>
    122 |           </div>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator(props?: {} | undefined): any; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:89:16

    87 |           <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
    88 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
  > 89 |               <slot :name="item.slot || 'item'" :item="item" :index="index">
       |                ^^^^
    90 |                 <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="item" :active="index === items!.length - 1" :index="index">
    91 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    92 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator(props?: {} | undefined): any; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:90:18

    88 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
    89 |               <slot :name="item.slot || 'item'" :item="item" :index="index">
  > 90 |                 <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="item" :active="index === items!.length - 1" :index="index">
       |                  ^^^^
    91 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    92 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />
    93 |                 </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator(props?: {} | undefined): any; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:96:20

    94 |
    95 |                 <span v-if="get(item, props.labelKey as string) || !!slots[item.slot ? ${item.slot}-label: 'item-label']" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  > 96 |                   <slot :name="item.slot ? ${item.slot}-label: 'item-label'" :item="item" :active="index === items!.length - 1" :index="index">
       |                    ^^^^
    97 |                     {{ get(item, props.labelKey as string) }}
    98 |                   </slot>
    99 |                 </span>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator(props?: {} | undefined): any; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:101:18

     99 |                 </span>
    100 |
  > 101 |                 <slot :name="item.slot ? ${item.slot}-trailing: 'item-trailing'" :item="item" :active="index === items!.length - 1" :index="index" />
        |                  ^^^^
    102 |               </slot>
    103 |             </ULinkBase>
    104 |           </ULink>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator(props?: {} | undefined): any; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["separator"] & ((props?: {} | undefined) => any)> extends (props: infer P) => a...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:108:12

    106 |
    107 |         <li v-if="index < items!.length - 1" role="presentation" aria-hidden="true" :class="ui.separator({ class: props.ui?.separator })">
  > 108 |           <slot name="separator">
        |            ^^^^
    109 |             <UIcon :name="separatorIcon" :class="ui.separatorIcon({ class: props.ui?.separatorIcon })" />
    110 |           </slot>
    111 |         </li>

 ERROR(vue-tsc)  Argument of type '{ ui: { root: (slotProps?: ({ loading?: boolean | undefined; active?: boolean | undefined; } & ClassProp<ClassNameValue>) | undefined) => string; input: (slotProps?: ({ loading?: boolean | undefined; active?: boolean | undefined; } & ClassProp<ClassNameValue>) | undefined) => string; ... 20 more ...; itemLabelSuffix...' is not assignable to parameter of type 'NonNullable<({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends strin...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:264:12

    262 |       >
    263 |         <template v-if="close || !!slots.close" #trailing>
  > 264 |           <slot name="close" :ui="ui">
        |            ^^^^
    265 |             <UButton
    266 |               v-if="close"
    267 |               :icon="closeIcon || appConfig.ui.icons.close"

 ERROR(vue-tsc)  Argument of type '{ item: T & { labelHtml: string | undefined; suffixHtml: string | undefined; matches?: FuseResult<T>["matches"]; }; index: number; }' is not assignable to parameter of type '({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends string ? Record<....'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:298:18

    296 |             <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
    297 |               <ULinkBase v-bind="slotProps" :class="ui.item({ class: props.ui?.item, active: active || item.active })">
  > 298 |                 <slot :name="item.slot || group.slot || 'item'" :item="item" :index="index">
        |                  ^^^^
    299 |                   <slot :name="item.slot ? ${item.slot}-leading : group.slot ? ${group.slot}-leading : item-leading" :item="item" :index="index">
    300 |                     <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon, loading: true })" />
    301 |                     <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon, active: active || item.active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T & { labelHtml: string | undefined; suffixHtml: string | undefined; matches?: FuseResult<T>["matches"]; }; index: number; }' is not assignable to parameter of type '({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends string ? Record<....'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:299:20

    297 |               <ULinkBase v-bind="slotProps" :class="ui.item({ class: props.ui?.item, active: active || item.active })">
    298 |                 <slot :name="item.slot || group.slot || 'item'" :item="item" :index="index">
  > 299 |                   <slot :name="item.slot ? ${item.slot}-leading : group.slot ? ${group.slot}-leading : item-leading" :item="item" :index="index">
        |                    ^^^^
    300 |                     <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon, loading: true })" />
    301 |                     <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon, active: active || item.active })" />
    302 |                     <UAvatar v-else-if="item.avatar" :size="((props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: props.ui?.itemLeadingAvatar, active: active || item.active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T & { labelHtml: string | undefined; suffixHtml: string | undefined; matches?: FuseResult<T>["matches"]; }; index: number; }' is not assignable to parameter of type '({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends string ? Record<....'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:314:22

    312 |
    313 |                   <span v-if="item.labelHtml || get(item, props.labelKey as string) || !!slots[item.slot ? ${item.slot}-label : group.slot ? ${group.slot}-label : item-label]" :class="ui.itemLabel({ class: props.ui?.itemLabel, active: active || item.active })">
  > 314 |                     <slot :name="item.slot ? ${item.slot}-label : group.slot ? ${group.slot}-label : item-label" :item="item" :index="index">
        |                      ^^^^
    315 |                       <span v-if="item.prefix" :class="ui.itemLabelPrefix({ class: props.ui?.itemLabelPrefix })">{{ item.prefix }}</span>
    316 |
    317 |                       <span :class="ui.itemLabelBase({ class: props.ui?.itemLabelBase, active: active || item.active })" v-html="item.labelHtml || get(item, props.labelKey as string)" />

 ERROR(vue-tsc)  Argument of type '{ item: T & { labelHtml: string | undefined; suffixHtml: string | undefined; matches?: FuseResult<T>["matches"]; }; index: number; }' is not assignable to parameter of type '({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends string ? Record<....'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:324:22

    322 |
    323 |                   <span :class="ui.itemTrailing({ class: props.ui?.itemTrailing })">
  > 324 |                     <slot :name="item.slot ? ${item.slot}-trailing : group.slot ? ${group.slot}-trailing : item-trailing" :item="item" :index="index">
        |                      ^^^^
    325 |                       <span v-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: props.ui?.itemTrailingKbds })">
    326 |                         <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.ui?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />
    327 |                       </span>

 ERROR(vue-tsc)  Argument of type '{ searchTerm: string; }' is not assignable to parameter of type 'NonNullable<({ empty(props: { searchTerm?: string | undefined; }): any; close(props: { ui: any; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & Record<...> & (G["slot"] extends string ? Record<...> : Record<...>) & (T["slot"] extends strin...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/CommandPalette.vue:343:10

    341 |
    342 |       <div v-else :class="ui.empty({ class: props.ui?.empty })">
  > 343 |         <slot name="empty" :search-term="searchTerm">
        |          ^^^^
    344 |           {{ searchTerm ? t('commandPalette.noMatch', { searchTerm }) : t('commandPalette.noData') }}
    345 |         </slot>
    346 |       </div>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenu.vue:126:8

    124 |   <ContextMenuRoot v-bind="rootProps">
    125 |     <ContextMenuTrigger v-if="!!slots.default" as-child :disabled="disabled" :class="props.class">
  > 126 |       <slot />
        |        ^^^^
    127 |     </ContextMenuTrigger>
    128 |
    129 |     <UContextMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:65:6

    63 | <template>
    64 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 65 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
       |      ^^^^
    66 |       <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="(item as T)" :active="active" :index="index">
    67 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    68 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:66:8

    64 |   <DefineItemTemplate v-slot="{ item, active, index }">
    65 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
  > 66 |       <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="(item as T)" :active="active" :index="index">
       |        ^^^^
    67 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    68 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    69 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:73:10

    71 |
    72 |       <span v-if="get(item, props.labelKey as string) || !!slots[item.slot ? ${item.slot}-label: 'item-label']" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 73 |         <slot :name="item.slot ? ${item.slot}-label: 'item-label'" :item="(item as T)" :active="active" :index="index">
       |          ^^^^
    74 |           {{ get(item, props.labelKey as string) }}
    75 |         </slot>
    76 |

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:81:10

    79 |
    80 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 81 |         <slot :name="item.slot ? ${item.slot}-trailing: 'item-trailing'" :item="(item as T)" :active="active" :index="index">
       |          ^^^^
    82 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    83 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    84 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:160:8

    158 |       </ContextMenu.Group>
    159 |
  > 160 |       <slot />
        |        ^^^^
    161 |     </component>
    162 |   </ContextMenu.Portal>
    163 | </template>

 ERROR(vue-tsc)  Argument of type '{ open: boolean; }' is not assignable to parameter of type 'NonNullable<({ default(props: { open: boolean; }): any; item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))["default"] & ((props: { ...; }) => any)> extends (props: infer P) => any ? P...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue:136:8

    134 |   <DropdownMenuRoot v-slot="{ open }" v-bind="rootProps">
    135 |     <DropdownMenuTrigger v-if="!!slots.default" as-child :class="props.class" :disabled="disabled">
  > 136 |       <slot :open="open" />
        |        ^^^^
    137 |     </DropdownMenuTrigger>
    138 |
    139 |     <UDropdownMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })[string] & DropdownMenuSlots<T>[string] & {} extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:71:6

    69 | <template>
    70 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 71 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
       |      ^^^^
    72 |       <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="(item as T)" :active="active" :index="index">
    73 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    74 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })[string] & DropdownMenuSlots<T>[string] & {} extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:72:8

    70 |   <DefineItemTemplate v-slot="{ item, active, index }">
    71 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
  > 72 |       <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" :item="(item as T)" :active="active" :index="index">
       |        ^^^^
    73 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    74 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    75 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })[string] & DropdownMenuSlots<T>[string] & {} extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:79:10

    77 |
    78 |       <span v-if="get(item, props.labelKey as string) || !!slots[item.slot ? ${item.slot}-label: 'item-label']" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 79 |         <slot :name="item.slot ? ${item.slot}-label: 'item-label'" :item="(item as T)" :active="active" :index="index">
       |          ^^^^
    80 |           {{ get(item, props.labelKey as string) }}
    81 |         </slot>
    82 |

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })[string] & DropdownMenuSlots<T>[string] & {} extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:87:10

    85 |
    86 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 87 |         <slot :name="item.slot ? ${item.slot}-trailing: 'item-trailing'" :item="(item as T)" :active="active" :index="index">
       |          ^^^^
    88 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    89 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    90 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:169:8

    167 |       </DropdownMenu.Group>
    168 |
  > 169 |       <slot />
        |        ^^^^
    170 |     </component>
    171 |   </DropdownMenu.Portal>
    172 | </template>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; 'item-content': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:195:6

    193 | <template>
    194 |   <DefineLinkTemplate v-slot="{ item, active, index }">
  > 195 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
        |      ^^^^
    196 |       <slot :name="item.slot ? ${item.slot}-leading : 'item-leading'" :item="(item as T)" :active="active" :index="index">
    197 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    198 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; 'item-content': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:196:8

    194 |   <DefineLinkTemplate v-slot="{ item, active, index }">
    195 |     <slot :name="item.slot || 'item'" :item="(item as T)" :index="index">
  > 196 |       <slot :name="item.slot ? ${item.slot}-leading : 'item-leading'" :item="(item as T)" :active="active" :index="index">
        |        ^^^^
    197 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    198 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />
    199 |       </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; 'item-content': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:205:10

    203 |         :class="ui.linkLabel({ class: props.ui?.linkLabel })"
    204 |       >
  > 205 |         <slot :name="item.slot ? ${item.slot}-label : 'item-label'" :item="(item as T)" :active="active" :index="index">
        |          ^^^^
    206 |           {{ get(item, props.labelKey as string) }}
    207 |         </slot>
    208 |

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean | undefined; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; 'item-content': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:213:10

    211 |
    212 |       <span v-if="(!collapsed || orientation !== 'vertical') && (item.badge || (orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? ${item.slot}-content : 'item-content'])) || (orientation === 'vertical' && item.children?.length) || item.trailingIcon || !!slots[item.slot ? ${item.slot}-trailing : 'item-trailing'])" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 213 |         <slot :name="item.slot ? ${item.slot}-trailing : 'item-trailing'" :item="(item as T)" :active="active" :index="index">
        |          ^^^^
    214 |           <UBadge
    215 |             v-if="item.badge"
    216 |             color="neutral"

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; 'item-content': SlotProps<...>; } & Record<...> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:256:12

    254 |
    255 |         <NavigationMenuContent v-if="orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? ${item.slot}-content : 'item-content'])" v-bind="contentProps" :class="ui.content({ class: props.ui?.content })">
  > 256 |           <slot :name="item.slot ? ${item.slot}-content : 'item-content'" :item="(item as T)" :active="active" :index="index">
        |            ^^^^
    257 |             <ul :class="ui.childList({ class: props.ui?.childList })">
    258 |               <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: props.ui?.childItem })">
    259 |                 <ULink v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["indicator"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:144:16

    142 |           <StepperTrigger :class="ui.trigger({ class: props.ui?.trigger })">
    143 |             <StepperIndicator :class="ui.indicator({ class: props.ui?.indicator })">
  > 144 |               <slot name="indicator" :item="item">
        |                ^^^^
    145 |                 <UIcon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: props.ui?.indicator })" />
    146 |                 <template v-else>
    147 |                   {{ count + 1 }}

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["title"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:161:14

    159 |         <div :class="ui.wrapper({ class: props.ui?.wrapper })">
    160 |           <StepperTitle :class="ui.title({ class: props.ui?.title })">
  > 161 |             <slot name="title" :item="item">
        |              ^^^^
    162 |               {{ item.title }}
    163 |             </slot>
    164 |           </StepperTitle>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["description"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:166:14

    164 |           </StepperTitle>
    165 |           <StepperDescription :class="ui.description({ class: props.ui?.description })">
  > 166 |             <slot name="description" :item="item">
        |              ^^^^
    167 |               {{ item.description }}
    168 |             </slot>
    169 |           </StepperDescription>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["caption"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:312:10

    310 |     <table :class="ui.base({ class: [props.ui?.base] })">
    311 |       <caption v-if="caption" :class="ui.caption({ class: [props.ui?.caption] })">
  > 312 |         <slot name="caption">
        |          ^^^^
    313 |           {{ caption }}
    314 |         </slot>
    315 |       </caption>

 ERROR(vue-tsc)  Argument of type '{ column: Column<T, unknown>; header: Header<T, unknown>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:325:14

    323 |             :class="ui.th({ class: [props.ui?.th, header.column.columnDef.meta?.class?.th], pinned: !!header.column.getIsPinned() })"
    324 |           >
  > 325 |             <slot :name="${header.id}-header" v-bind="header.getContext()">
        |              ^^^^
    326 |               <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
    327 |             </slot>
    328 |           </th>

 ERROR(vue-tsc)  Argument of type '{ cell: Cell<T, unknown>; column: Column<T, unknown>; getValue: Getter<unknown>; renderValue: Getter<unknown>; row: Row<T>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:350:18

    348 |                 :class="ui.td({ class: [props.ui?.td, cell.column.columnDef.meta?.class?.td], pinned: !!cell.column.getIsPinned() })"
    349 |               >
  > 350 |                 <slot :name="${cell.column.id}-cell" v-bind="cell.getContext()">
        |                  ^^^^
    351 |                   <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
    352 |                 </slot>
    353 |               </td>

 ERROR(vue-tsc)  Argument of type '{ row: Row<T>; }' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["expanded"] & ((props: { ...; }) => any)> extends (props: infer P) => any ?...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:357:18

    355 |             <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
    356 |               <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
  > 357 |                 <slot name="expanded" :row="row" />
        |                  ^^^^
    358 |               </td>
    359 |             </tr>
    360 |           </template>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["loading"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:365:14

    363 |         <tr v-else-if="loading && !!slots['loading']">
    364 |           <td :colspan="columns?.length" :class="ui.loading({ class: props.ui?.loading })">
  > 365 |             <slot name="loading" />
        |              ^^^^
    366 |           </td>
    367 |         </tr>
    368 |

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["empty"] & ((props?: {} | undefined) => any)> extends (props: infer P) => a...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:371:14

    369 |         <tr v-else>
    370 |           <td :colspan="columns?.length" :class="ui.empty({ class: props.ui?.empty })">
  > 371 |             <slot name="empty">
        |              ^^^^
    372 |               {{ t('table.noData') }}
    373 |             </slot>
    374 |           </td>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:115:10

    113 |
    114 |       <TabsTrigger v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :disabled="item.disabled" :class="ui.trigger({ class: props.ui?.trigger })">
  > 115 |         <slot name="leading" :item="item" :index="index">
        |          ^^^^
    116 |           <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    117 |           <UAvatar v-else-if="item.avatar" :size="((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
    118 |         </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:121:12

    119 |
    120 |         <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 121 |           <slot :item="item" :index="index">{{ get(item, props.labelKey as string) }}</slot>
        |            ^^^^
    122 |         </span>
    123 |
    124 |         <slot name="trailing" :item="item" :index="index" />

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:124:10

    122 |         </span>
    123 |
  > 124 |         <slot name="trailing" :item="item" :index="index" />
        |          ^^^^
    125 |       </TabsTrigger>
    126 |     </TabsList>
    127 |

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type '({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & Record<string, SlotProps<T>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:130:10

    128 |     <template v-if="!!content">
    129 |       <TabsContent v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :class="ui.content({ class: props.ui?.content })">
  > 130 |         <slot :name="item.slot || 'content'" :item="item" :index="index">
        |          ^^^^
    131 |           {{ item.content }}
    132 |         </slot>
    133 |       </TabsContent>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; } & Record<string, SlotProps<...>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:166:12

    164 |       >
    165 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
  > 166 |           <slot :name="item.slot || 'item'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
        |            ^^^^
    167 |             <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
    168 |               <UIcon
    169 |                 v-if="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; } & Record<string, SlotProps<...>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:167:14

    165 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
    166 |           <slot :name="item.slot || 'item'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
  > 167 |             <slot :name="item.slot ? ${item.slot}-leading: 'item-leading'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
        |              ^^^^
    168 |               <UIcon
    169 |                 v-if="item.icon"
    170 |                 :name="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; } & Record<string, SlotProps<...>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:181:16

    179 |
    180 |             <span v-if="getItemLabel(item) || !!slots[item.slot ? ${item.slot}-label: 'item-label']" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  > 181 |               <slot :name="item.slot ? ${item.slot}-label: 'item-label'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
        |                ^^^^
    182 |                 {{ getItemLabel(item) }}
    183 |               </slot>
    184 |             </span>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; } & Record<string, SlotProps<...>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:187:16

    185 |
    186 |             <span v-if="item.trailingIcon || item.children?.length || !!slots[item.slot ? ${item.slot}-trailing: 'item-trailing']" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 187 |               <slot :name="item.slot ? ${item.slot}-trailing: 'item-trailing'" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }">
        |                ^^^^
    188 |                 <UIcon v-if="item.trailingIcon" :name="item.trailingIcon" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    189 |                 <UIcon v-else-if="item.children?.length" :name="trailingIcon ?? appConfig.ui.icons.chevronDown" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    190 |               </slot>

[vue-tsc] Found 50 errors.

(edited by moderator for clarity)

@Norbiros
Copy link
Contributor

Make sure you set it to 2.2.2 in resolutions field too

@NilsEvers
Copy link
Contributor

@benjamincanac The issue seems to be resolved in v3.0.0-alpha.2.
However, there's still a type-related issue in Nuxt UI that prevents this version from working.

The problem seems to be typing slotData as any in DropdownMenu.vue.

<template v-for="(_, name) in proxySlots" #[name]="slotData: any">
   <slot :name="name" v-bind="slotData" />
 </template>

Argument of type '(: any) => any' is not assignable to parameter of type 'SlotProps & (T["slot"] extends string ? Record<T["slot"], SlotProps> : Record<string, never>)[string]'.
Type '(: any) => any' is not assignable to type '(T["slot"] extends string ? Record<T["slot"], SlotProps> : Record<string, never>)[string]'.

@gygoo
Copy link

gygoo commented Mar 17, 2025

Unfortunately, even with resolutions, I still have 50 errors.

My config:

    "@nuxt/image": "^1.9.0",
    "@nuxt/ui": "^3.0.0",
    "@nuxtjs/i18n": "9.3.1",
    "@nuxtjs/seo": "^3.0.1",
    "@pinia/nuxt": "^0.10.1",
    "@tsndr/cloudflare-worker-jwt": "^3.1.4",
    "@types/js-cookie": "^3.0.6",
    "@unhead/shared": "^1.11.20",
    "@unhead/ssr": "^1.11.20",
    "@vueuse/core": "^13.0.0",
    "@vueuse/nuxt": "13.0.0",
    "camelcase-keys": "^9.1.3",
    "dotenv": "^16.4.7",
    "embla-carousel-auto-height": "^8.5.2",
    "embla-carousel-auto-scroll": "^8.5.2",
    "embla-carousel-autoplay": "^8.5.2",
    "embla-carousel-class-names": "^8.5.2",
    "embla-carousel-fade": "^8.5.2",
    "embla-carousel-vue": "^8.5.2",
    "embla-carousel-wheel-gestures": "^8.0.1",
    "graphql": "^16.10.0",
    "graphql-request": "^7.1.2",
    "html-entities": "^2.5.2",
    "jose": "^6.0.10",
    "maska": "^3.1.0",
    "nuxt": "^3.16.0",
    "oauth-1.0a": "2.2.6",
    "ohash": "^2.0.11",
    "pinia": "^3.0.1",
    "reka-ui": "^2.1.0",
    "sharp": "^0.33.5",
    "tailwind-variants": "^1.0.0",
    "vue": "latest",
    "vue-router": "latest",
    "zod": "^3.24.2"
  },
  "devDependencies": {
    "@antfu/eslint-config": "^4.10.1",
    "@commitlint/cli": "19.8.0",
    "@commitlint/config-conventional": "19.8.0",
    "@nuxt/test-utils": "^3.17.2",
    "@vue/test-utils": "^2.4.6",
    "eslint": "9.22.0",
    "happy-dom": "^17.4.4",
    "husky": "^9.1.7",
    "playwright-core": "^1.51.0",
    "ts-node": "^10.9.2",
    "typescript": "^5.8.2",
    "vite-plugin-graphql-loader": "^4.0.4",
    "vitest": "^3.0.8",
    "vue-tsc": "^2.2.2"
  },
  "resolutions": {
    "vue-tsc": "2.2.2"
  }


I also tested versions: v3.0.0-alpha.2 and [email protected].
I still have:

[vue-tsc] Found 50 errors. Watching for file changes.

ex:
 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type '({ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; } & Record<string, SlotProps<...>> & (T["slot"] extends string ? Record<...> : Record<...>))[string] & SlotProps<...> extends (props: infer P) => any ? P : {}'.
 FILE  /node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:187:16

@kstraszewski
Copy link

I've also tested different version of vue-tsc:
2.2.2, 2.2.0. 2.1.10, 2.2.8 and also 3.0.0-alpha.2 all of them gives me 50 errors :/

@Aietes
Copy link

Aietes commented Mar 19, 2025

@benjamincanac The issue seems to be resolved in v3.0.0-alpha.2. However, there's still a type-related issue in Nuxt UI that prevents this version from working.

The problem seems to be typing slotData as any in DropdownMenu.vue.

<template v-for="(_, name) in proxySlots" #[name]="slotData: any">

Argument of type '(: any) => any' is not assignable to parameter of type 'SlotProps & (T["slot"] extends string ? Record<T["slot"], SlotProps> : Record<string, never>)[string]'.
Type '(: any) => any' is not assignable to type '(T["slot"] extends string ? Record<T["slot"], SlotProps> : Record<string, never>)[string]'.

We are on vue-tsc 3 alpha, and only have this one error left.

@darkbasic
Copy link

darkbasic commented Mar 19, 2025

Update: It seems to be related to vuejs/language-tools#5206 and vuejs/language-tools#5247 but using 3.0.0-alpha.0 doesn't fix this issue

3.0.0-alpha.2 does indeed fix vuejs/language-tools#5206 for me.

Edit: nevermind the "fix" is simply due to broken error mapping once again: vuejs/language-tools#5206 (comment)

@sandros94
Copy link
Member

sandros94 commented Mar 19, 2025

I'm going to take a look at 3.0.0-alpha.2 tomorrow and update my PR #3331 (although we must wait for stable to be sure upstream has mapped everything)

ATM only two aspects of that PR needs to be addressed for it to be reviewed:

  • dynamically typing all additional properties that components like UNavigationMenu, UInputMenu, USelectMenu etc. support
  • type dynamic slots, I got them working with 2.2.0, but light up like a christmast tree with any later vue-tsc versions 😕

@gygoo
Copy link

gygoo commented Mar 31, 2025

Hey, I updated the packages to the latest versions today.
Unfortunately, I’m still getting errors with the slots :(

ERROR(vue-tsc) Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps; default: SlotProps; trailing: SlotProps; content: SlotProps; body: SlotProps; } & DynamicSlots<...>)["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.

.
.
.

[vue-tsc] Found 44 errors. Watching for file changes.



@SoCuul
Copy link

SoCuul commented Mar 31, 2025

@benjamincanac I think this may have been part of the issue, but not entirely.

I first tried downgrading to [email protected]. This got rid of all of the slot errors.

I also tried downgrading to [email protected] as suggested here, but that led to an additional error not seen on v2.2.0:

Nuxt 3.16.1 with Nitro 2.11.8                                                                                                                 nuxi  6:06:50 AM
                                                                                                                                                    6:06:51 AM
   Local:    http://localhost:3000/
   Network:  use --host to expose

   DevTools: press Shift + Option + D in the browser (v2.3.2)                                                                                      6:06:51 AM

 Nuxt Icon server bundle mode is set to local                                                                                                     6:06:53 AM
 Vite client built in 24ms                                                                                                                        6:06:53 AM
 Vite server built in 133ms                                                                                                                       6:06:53 AM

 ERROR  [uncaughtException] getLanguagePlugins is not a function                                                                                    6:06:53 AM

    at Object.apply (node_modules/.pnpm/@volar+typescript@2.1.6/node_modules/@volar/typescript/lib/node/proxyCreateProgram.js:12:67)
    at getBuilderCreationParameters (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/dist/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:130522:18)
    at createSemanticDiagnosticsBuilderProgram (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/dist/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:131177:5)
    at createNewProgram (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/dist/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:133257:22)
    at synchronizeProgram (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/dist/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:133221:7)
    at Object.createWatchProgram (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/dist/checkers/vueTsc/typescript-vue-tsc/lib/typescript.js:133129:3)
    at Object.configureServer (node_modules/.pnpm/vite-plugin-checker@0.9.1_eslint@9.23.0_jiti@2.4.2__optionator@0.9.4_typescript@5.8.2_v_4f24b610efffeedf20cfeb4fd229bbc6/node_modules/vite-plugin-checker/src/checkers/vueTsc/main.ts:143:13)

However, the one error that still remains is the following, and does not seem to be related to this.

Nuxt 3.16.1 with Nitro 2.11.8                                                                                                                 nuxi  6:08:17 AM
                                                                                                                                                    6:08:17 AM
   Local:    http://localhost:3000/
   Network:  use --host to expose

   DevTools: press Shift + Option + D in the browser (v2.3.2)                                                                                      6:08:17 AM

 Nuxt Icon server bundle mode is set to local                                                                                                     6:08:18 AM
 Vite client built in 23ms                                                                                                                        6:08:18 AM
 Vite server built in 138ms                                                                                                                       6:08:18 AM
 Nuxt Nitro server built in 389ms                                                                                                           nitro 6:08:19 AM
 Vite client warmed up in 1ms                                                                                                                     6:08:19 AM
 [ERROR] Could not resolve "#build/app.config"

    node_modules/.pnpm/@nuxt+ui@3.0.2_@babel+parser@7.27.0_db0@0.3.1_embla-carousel@8.5.2_ioredis@5.6.0_magica_31f89cd058d8b77b3442b765da8f3a40/node_modules/@nuxt/ui/dist/runtime/vue/stubs.js:3:22:
      3  import appConfig from "#build/app.config";
                               ~~~~~~~~~~~~~~~~~~~

  The package import "#build/app.config" is not defined in this "imports" map:

    node_modules/.pnpm/@nuxt+ui@3.0.2_@babel+parser@7.27.0_db0@0.3.1_embla-carousel@8.5.2_ioredis@5.6.0_magica_31f89cd058d8b77b3442b765da8f3a40/node_modules/@nuxt/ui/package.json:45:13:
      45    "imports": {              ^

  You can mark the path "#build/app.config" as external to exclude it from the bundle, which will
  remove this error and leave the unresolved path in the bundle.


 ERROR  error while updating dependencies:                                                                                                          6:08:19 AM
Error: Build failed with 1 error:
node_modules/.pnpm/@nuxt+ui@3.0.2_@babel+parser@7.27.0_db0@0.3.1_embla-carousel@8.5.2_ioredis@5.6.0_magica_31f89cd058d8b77b3442b765da8f3a40/node_modules/@nuxt/ui/dist/runtime/vue/stubs.js:3:22: ERROR: Could not resolve "#build/app.config"
    at failureErrorWithLog (/Users/main/Documents/nuxt_project/node_modules/.pnpm/esbuild@0.25.2/node_modules/esbuild/lib/main.js:1477:15)
    at /Users/main/Documents/nuxt_project/node_modules/.pnpm/esbuild@0.25.2/node_modules/esbuild/lib/main.js:946:25
    at /Users/main/Documents/nuxt_project/node_modules/.pnpm/esbuild@0.25.2/node_modules/esbuild/lib/main.js:1355:9
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)

                                                                                                                                                  6:08:22 AM
[vue-tsc] Found 0 errors. Watching for file changes.

Copy link
Member

benjamincanac commented Mar 31, 2025

@SoCuul You can use [email protected]. Do you have a postinstall script that runs nuxt prepare? 🤔 If you do please open a new issue with a reproduction.

@simonmaass
Copy link
Author

@benjamincanac just FYI - with tsc 3.0.0-alpha.2 and newest commit i dont get any errors anymore

@Norbiros
Copy link
Contributor

Norbiros commented Apr 1, 2025

I can also confirm that! I managed to get this PR working Gwardia-Czapli/StoryPointsCasino#18

@gygoo
Copy link

gygoo commented Apr 2, 2025

@simonmaass How did you install vue-tsc version 3.0.0-alpha.2 with the newest commit?

"vue-tsc": "https://pkg.pr.new/vue-tsc@7107d0a" - it doesn’t work correctly on my end

@Norbiros
Copy link
Contributor

Norbiros commented Apr 2, 2025

Vue TSC and newest commit of nuxt ui

@simonmaass
Copy link
Author

@gygoo

"vue-tsc": "3.0.0-alpha.2"
"@nuxt/ui": "https://pkg.pr.new/@nuxt/ui@4d138ad"

@gygoo
Copy link

gygoo commented Apr 2, 2025

my package.json
  "dependencies": {
    "@nuxt/image": "^1.10.0",
    "@nuxt/scripts": "^0.11.5",
    "@nuxt/ui": "https://pkg.pr.new/@nuxt/ui@4d138ad",
    "@nuxtjs/i18n": "9.4.0",
    "@nuxtjs/seo": "^3.0.2",
    "@pinia/nuxt": "^0.10.1",
    "@tsndr/cloudflare-worker-jwt": "^3.1.4",
    "@types/js-cookie": "^3.0.6",
    "@types/lodash.isequal": "^4.5.8",
    "@unhead/shared": "^2.0.3",
    "@unhead/ssr": "^2.0.3",
    "@vueuse/core": "^13.0.0",
    "@vueuse/nuxt": "13.0.0",
    "camelcase-keys": "^9.1.3",
    "dotenv": "^16.4.7",
    "embla-carousel-auto-height": "^8.5.2",
    "embla-carousel-auto-scroll": "^8.5.2",
    "embla-carousel-autoplay": "^8.5.2",
    "embla-carousel-class-names": "^8.5.2",
    "embla-carousel-fade": "^8.5.2",
    "embla-carousel-vue": "^8.5.2",
    "embla-carousel-wheel-gestures": "^8.0.1",
    "graphql": "^16.10.0",
    "graphql-request": "^7.1.2",
    "html-entities": "^2.6.0",
    "jose": "^6.0.10",
    "lodash.isequal": "^4.5.0",
    "maska": "^3.1.1",
    "nuxt": "^3.16.2",
    "oauth-1.0a": "2.2.6",
    "ohash": "^2.0.11",
    "pinia": "^3.0.1",
    "reka-ui": "^2.2.0",
    "sharp": "^0.33.5",
    "tailwind-variants": "^1.0.0",
    "vue": "latest",
    "vue-router": "latest",
    "zod": "^3.24.2"
  },
  "devDependencies": {
    "@antfu/eslint-config": "^4.11.0",
    "@commitlint/cli": "19.8.0",
    "@commitlint/config-conventional": "19.8.0",
    "@nuxt/test-utils": "^3.17.2",
    "@vue/test-utils": "^2.4.6",
    "eslint": "9.23.0",
    "happy-dom": "^17.4.4",
    "husky": "^9.1.7",
    "playwright-core": "^1.51.1",
    "ts-node": "^10.9.2",
    "typescript": "^5.8.2",
    "vite-plugin-graphql-loader": "^4.0.4",
    "vitest": "^3.1.1",
    "vue-tsc": "3.0.0-alpha.2"
  },
  "resolutions": {
    "vue-tsc": "3.0.0-alpha.2"
  }

and I still have 44 errors:

LOG
ERROR 
 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:105:12

    103 |       <AccordionHeader :class="ui.header({ class: props.ui?.header })">
    104 |         <AccordionTrigger :class="ui.trigger({ class: props.ui?.trigger, disabled: item.disabled })">
  > 105 |           <slot name="leading" :item="item" :index="index" :open="open">
        |            ^^^^
    106 |             <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    107 |           </slot>
    108 |

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:110:14

    108 |
    109 |           <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 110 |             <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey as string) }}</slot>
        |              ^^^^
    111 |           </span>
    112 |
    113 |           <slot name="trailing" :item="item" :index="index" :open="open">

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:113:12

    111 |           </span>
    112 |
  > 113 |           <slot name="trailing" :item="item" :index="index" :open="open">
        |            ^^^^
    114 |             <UIcon :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
    115 |           </slot>
    116 |         </AccordionTrigger>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["content" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:120:10

    118 |
    119 |       <AccordionContent v-if="item.content || !!slots.content || (item.slot && !!slots[item.slot as keyof AccordionSlots<T>]) || !!slots.body || (item.slot && !!slots[${item.slot}-body as keyof AccordionSlots<T>])" :class="ui.content({ class: props.ui?.content })">
  > 120 |         <slot :name="((item.slot || 'content') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
        |          ^^^^
    121 |           <div :class="ui.body({ class: props.ui?.body })">
    122 |             <slot :name="((item.slot ? ${item.slot}-body: 'body') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
    123 |               {{ item.content }}

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["content" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:122:14

    120 |         <slot :name="((item.slot || 'content') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
    121 |           <div :class="ui.body({ class: props.ui?.body })">
  > 122 |             <slot :name="((item.slot ? ${item.slot}-body: 'body') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
        |              ^^^^
    123 |               {{ item.content }}
    124 |             </slot>
    125 |           </div>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:92:16

    90 |           <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
    91 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
  > 92 |               <slot :name="((item.slot || 'item') as keyof BreadcrumbSlots<T>)" :item="item" :index="index">
       |                ^^^^
    93 |                 <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
    94 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    95 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:93:18

    91 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
    92 |               <slot :name="((item.slot || 'item') as keyof BreadcrumbSlots<T>)" :item="item" :index="index">
  > 93 |                 <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
       |                  ^^^^
    94 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    95 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />
    96 |                 </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:99:20

     97 |
     98 |                 <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof BreadcrumbSlots<T>]" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  >  99 |                   <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
        |                    ^^^^
    100 |                     {{ get(item, props.labelKey as string) }}
    101 |                   </slot>
    102 |                 </span>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:104:18

    102 |                 </span>
    103 |
  > 104 |                 <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index" />
        |                  ^^^^
    105 |               </slot>
    106 |             </ULinkBase>
    107 |           </ULink>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenu.vue:140:8

    138 |   <ContextMenuRoot v-bind="rootProps">
    139 |     <ContextMenuTrigger v-if="!!slots.default" as-child :disabled="disabled" :class="props.class">
  > 140 |       <slot />
        |        ^^^^
    141 |     </ContextMenuTrigger>
    142 |
    143 |     <UContextMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:72:6

    70 | <template>
    71 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 72 |     <slot :name="((item.slot || 'item') as keyof ContextMenuSlots<T>)" :item="item" :index="index">
       |      ^^^^
    73 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
    74 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    75 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:73:8

    71 |   <DefineItemTemplate v-slot="{ item, active, index }">
    72 |     <slot :name="((item.slot || 'item') as keyof ContextMenuSlots<T>)" :item="item" :index="index">
  > 73 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |        ^^^^
    74 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    75 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    76 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:80:10

    78 |
    79 |       <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof ContextMenuSlots<T>]" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 80 |         <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |          ^^^^
    81 |           {{ get(item, props.labelKey as string) }}
    82 |         </slot>
    83 |

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:88:10

    86 |
    87 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 88 |         <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |          ^^^^
    89 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    90 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    91 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:167:8

    165 |       </ContextMenu.Group>
    166 |
  > 167 |       <slot />
        |        ^^^^
    168 |     </component>
    169 |   </ContextMenu.Portal>
    170 | </template>

 ERROR(vue-tsc)  Argument of type '{ open: boolean; }' is not assignable to parameter of type 'NonNullable<({ default(props: { open: boolean; }): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props: { ...; }) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue:149:8

    147 |   <DropdownMenuRoot v-slot="{ open }" v-bind="rootProps">
    148 |     <DropdownMenuTrigger v-if="!!slots.default" as-child :class="props.class" :disabled="disabled">
  > 149 |       <slot :open="open" />
        |        ^^^^
    150 |     </DropdownMenuTrigger>
    151 |
    152 |     <UDropdownMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:78:6

    76 | <template>
    77 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 78 |     <slot :name="((item.slot || 'item') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :index="index">
       |      ^^^^
    79 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
    80 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    81 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:79:8

    77 |   <DefineItemTemplate v-slot="{ item, active, index }">
    78 |     <slot :name="((item.slot || 'item') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :index="index">
  > 79 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |        ^^^^
    80 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    81 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    82 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:86:10

    84 |
    85 |       <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof DropdownMenuContentSlots<T>]" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 86 |         <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |          ^^^^
    87 |           {{ get(item, props.labelKey as string) }}
    88 |         </slot>
    89 |

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:94:10

    92 |
    93 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 94 |         <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |          ^^^^
    95 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    96 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    97 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:176:8

    174 |       </DropdownMenu.Group>
    175 |
  > 176 |       <slot />
        |        ^^^^
    177 |     </component>
    178 |   </DropdownMenu.Portal>
    179 | </template>

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:221:6

    219 | <template>
    220 |   <DefineLinkTemplate v-slot="{ item, active, index }">
  > 221 |     <slot :name="((item.slot || 'item') as keyof NavigationMenuSlots<T>)" :item="item" :index="index">
        |      ^^^^
    222 |       <slot :name="((item.slot ? ${item.slot}-leading : 'item-leading') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
    223 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    224 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:222:8

    220 |   <DefineLinkTemplate v-slot="{ item, active, index }">
    221 |     <slot :name="((item.slot || 'item') as keyof NavigationMenuSlots<T>)" :item="item" :index="index">
  > 222 |       <slot :name="((item.slot ? ${item.slot}-leading : 'item-leading') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |        ^^^^
    223 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    224 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />
    225 |       </slot>

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:231:10

    229 |         :class="ui.linkLabel({ class: props.ui?.linkLabel })"
    230 |       >
  > 231 |         <slot :name="((item.slot ? ${item.slot}-label : 'item-label') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |          ^^^^
    232 |           {{ get(item, props.labelKey as string) }}
    233 |         </slot>
    234 |

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:239:10

    237 |
    238 |       <span v-if="(!collapsed || orientation !== 'vertical') && (item.badge || (orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>])) || (orientation === 'vertical' && item.children?.length) || item.trailingIcon || !!slots[(item.slot ? ${item.slot}-trailing : 'item-trailing') as keyof NavigationMenuSlots<T>])" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 239 |         <slot :name="((item.slot ? ${item.slot}-trailing : 'item-trailing') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |          ^^^^
    240 |           <UBadge
    241 |             v-if="item.badge"
    242 |             color="neutral"

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:282:12

    280 |
    281 |         <NavigationMenuContent v-if="orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>])" v-bind="contentProps" :class="ui.content({ class: props.ui?.content })">
  > 282 |           <slot :name="((item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |            ^^^^
    283 |             <ul :class="ui.childList({ class: props.ui?.childList })">
    284 |               <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: props.ui?.childItem })">
    285 |                 <ULink v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["indicator"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:147:16

    145 |           <StepperTrigger :class="ui.trigger({ class: props.ui?.trigger })">
    146 |             <StepperIndicator :class="ui.indicator({ class: props.ui?.indicator })">
  > 147 |               <slot name="indicator" :item="item">
        |                ^^^^
    148 |                 <UIcon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: props.ui?.indicator })" />
    149 |                 <template v-else>
    150 |                   {{ count + 1 }}

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["title"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:164:14

    162 |         <div :class="ui.wrapper({ class: props.ui?.wrapper })">
    163 |           <StepperTitle :class="ui.title({ class: props.ui?.title })">
  > 164 |             <slot name="title" :item="item">
        |              ^^^^
    165 |               {{ item.title }}
    166 |             </slot>
    167 |           </StepperTitle>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["description"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:169:14

    167 |           </StepperTitle>
    168 |           <StepperDescription :class="ui.description({ class: props.ui?.description })">
  > 169 |             <slot name="description" :item="item">
        |              ^^^^
    170 |               {{ item.description }}
    171 |             </slot>
    172 |           </StepperDescription>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<T, { slot: string; }>; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>> & { ...; } & DynamicSlots<...>)["title" | ... 3 more ... | (T["slot"] extends string ? T["slot"] : never)]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:178:8

    176 |
    177 |     <div v-if="currentStep?.content || !!slots.content || currentStep?.slot" :class="ui.content({ class: props.ui?.description })">
  > 178 |       <slot
        |        ^^^^
    179 |         :name="((currentStep?.slot || 'content') as keyof StepperSlots<T>)"
    180 |         :item="(currentStep as Extract<T, { slot: string }>)"
    181 |       >

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["caption"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:317:10

    315 |     <table :class="ui.base({ class: [props.ui?.base] })">
    316 |       <caption v-if="caption || !!slots.caption" :class="ui.caption({ class: [props.ui?.caption] })">
  > 317 |         <slot name="caption">
        |          ^^^^
    318 |           {{ caption }}
    319 |         </slot>
    320 |       </caption>

 ERROR(vue-tsc)  Argument of type '{ column: Column<T, unknown>; header: Header<T, unknown>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:330:14

    328 |             :class="ui.th({ class: [props.ui?.th, header.column.columnDef.meta?.class?.th], pinned: !!header.column.getIsPinned() })"
    329 |           >
  > 330 |             <slot :name="${header.id}-header" v-bind="header.getContext()">
        |              ^^^^
    331 |               <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
    332 |             </slot>
    333 |           </th>

 ERROR(vue-tsc)  Argument of type '{ cell: Cell<T, unknown>; column: Column<T, unknown>; getValue: Getter<unknown>; renderValue: Getter<unknown>; row: Row<T>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:355:18

    353 |                 :class="ui.td({ class: [props.ui?.td, cell.column.columnDef.meta?.class?.td], pinned: !!cell.column.getIsPinned() })"
    354 |               >
  > 355 |                 <slot :name="${cell.column.id}-cell" v-bind="cell.getContext()">
        |                  ^^^^
    356 |                   <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
    357 |                 </slot>
    358 |               </td>

 ERROR(vue-tsc)  Argument of type '{ row: Row<T>; }' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["expanded"] & ((props: { ...; }) => any)> extends (props: infer P) => any ?...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:362:18

    360 |             <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
    361 |               <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
  > 362 |                 <slot name="expanded" :row="row" />
        |                  ^^^^
    363 |               </td>
    364 |             </tr>
    365 |           </template>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["loading"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:370:14

    368 |         <tr v-else-if="loading && !!slots['loading']">
    369 |           <td :colspan="columns?.length" :class="ui.loading({ class: props.ui?.loading })">
  > 370 |             <slot name="loading" />
        |              ^^^^
    371 |           </td>
    372 |         </tr>
    373 |

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["empty"] & ((props?: {} | undefined) => any)> extends (props: infer P) => a...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:376:14

    374 |         <tr v-else>
    375 |           <td :colspan="columns?.length" :class="ui.empty({ class: props.ui?.empty })">
  > 376 |             <slot name="empty">
        |              ^^^^
    377 |               {{ empty || t('table.noData') }}
    378 |             </slot>
    379 |           </td>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:118:10

    116 |
    117 |       <TabsTrigger v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :disabled="item.disabled" :class="ui.trigger({ class: props.ui?.trigger })">
  > 118 |         <slot name="leading" :item="item" :index="index">
        |          ^^^^
    119 |           <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    120 |           <UAvatar v-else-if="item.avatar" :size="((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
    121 |         </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:124:12

    122 |
    123 |         <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 124 |           <slot :item="item" :index="index">{{ get(item, props.labelKey as string) }}</slot>
        |            ^^^^
    125 |         </span>
    126 |
    127 |         <slot name="trailing" :item="item" :index="index" />

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:127:10

    125 |         </span>
    126 |
  > 127 |         <slot name="trailing" :item="item" :index="index" />
        |          ^^^^
    128 |       </TabsTrigger>
    129 |     </TabsList>
    130 |

 ERROR(vue-tsc)  Argument of type '{ item: Extract<T, { slot: string; }>; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>> & { ...; } & DynamicSlots<...>)["content" | ... 3 more ... | (T["slot"] extends string ? T["slot"] : never)]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:133:10

    131 |     <template v-if="!!content">
    132 |       <TabsContent v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :class="ui.content({ class: props.ui?.content })">
  > 133 |         <slot :name="((item.slot || 'content') as keyof TabsSlots<T>)" :item="(item as Extract<T, { slot: string; }>)" :index="index">
        |          ^^^^
    134 |           {{ item.content }}
    135 |         </slot>
    136 |       </TabsContent>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:182:12

    180 |       >
    181 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
  > 182 |           <slot :name="((item.slot || 'item') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |            ^^^^
    183 |             <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
    184 |               <UIcon
    185 |                 v-if="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:183:14

    181 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
    182 |           <slot :name="((item.slot || 'item') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
  > 183 |             <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |              ^^^^
    184 |               <UIcon
    185 |                 v-if="item.icon"
    186 |                 :name="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:197:16

    195 |
    196 |             <span v-if="getItemLabel(item) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof TreeSlots<T>]" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  > 197 |               <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof TreeSlots<T>)" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |                ^^^^
    198 |                 {{ getItemLabel(item) }}
    199 |               </slot>
    200 |             </span>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:203:16

    201 |
    202 |             <span v-if="item.trailingIcon || item.children?.length || !!slots[(item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof TreeSlots<T>]" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 203 |               <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof TreeSlots<T>)" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |                ^^^^
    204 |                 <UIcon v-if="item.trailingIcon" :name="item.trailingIcon" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    205 |                 <UIcon v-else-if="item.children?.length" :name="trailingIcon ?? appConfig.ui.icons.chevronDown" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    206 |               </slot>

[vue-tsc] Found 44 errors. Watching for file changes.


 ERROR 
 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:105:12

    103 |       <AccordionHeader :class="ui.header({ class: props.ui?.header })">
    104 |         <AccordionTrigger :class="ui.trigger({ class: props.ui?.trigger, disabled: item.disabled })">
  > 105 |           <slot name="leading" :item="item" :index="index" :open="open">
        |            ^^^^
    106 |             <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    107 |           </slot>
    108 |

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:110:14

    108 |
    109 |           <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 110 |             <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey as string) }}</slot>
        |              ^^^^
    111 |           </span>
    112 |
    113 |           <slot name="trailing" :item="item" :index="index" :open="open">

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>)["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:113:12

    111 |           </span>
    112 |
  > 113 |           <slot name="trailing" :item="item" :index="index" :open="open">
        |            ^^^^
    114 |             <UIcon :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
    115 |           </slot>
    116 |         </AccordionTrigger>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:120:10

    118 |
    119 |       <AccordionContent v-if="item.content || !!slots.content || (item.slot && !!slots[item.slot as keyof AccordionSlots<T>]) || !!slots.body || (item.slot && !!slots[${item.slot}-body as keyof AccordionSlots<T>])" :class="ui.content({ class: props.ui?.content })">
  > 120 |         <slot :name="((item.slot || 'content') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
        |          ^^^^
    121 |           <div :class="ui.body({ class: props.ui?.body })">
    122 |             <slot :name="((item.slot ? ${item.slot}-body: 'body') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
    123 |               {{ item.content }}

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; open: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; body: SlotProps<T>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Accordion.vue:122:14

    120 |         <slot :name="((item.slot || 'content') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
    121 |           <div :class="ui.body({ class: props.ui?.body })">
  > 122 |             <slot :name="((item.slot ? ${item.slot}-body: 'body') as keyof AccordionSlots<T>)" :item="item" :index="index" :open="open">
        |              ^^^^
    123 |               {{ item.content }}
    124 |             </slot>
    125 |           </div>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:92:16

    90 |           <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
    91 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
  > 92 |               <slot :name="((item.slot || 'item') as keyof BreadcrumbSlots<T>)" :item="item" :index="index">
       |                ^^^^
    93 |                 <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
    94 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    95 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:93:18

    91 |             <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
    92 |               <slot :name="((item.slot || 'item') as keyof BreadcrumbSlots<T>)" :item="item" :index="index">
  > 93 |                 <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
       |                  ^^^^
    94 |                   <UIcon v-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
    95 |                   <UAvatar v-else-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active: index === items!.length - 1 })" />
    96 |                 </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:99:20

     97 |
     98 |                 <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof BreadcrumbSlots<T>]" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  >  99 |                   <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index">
        |                    ^^^^
    100 |                     {{ get(item, props.labelKey as string) }}
    101 |                   </slot>
    102 |                 </span>

 ERROR(vue-tsc)  Argument of type '{ item: T; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<T>; 'item-leading': SlotProps<T>; 'item-label': SlotProps<T>; 'item-trailing': SlotProps<T>; separator: any; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["separator" | ... 4 more ... | keyof DynamicSlots<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Breadcrumb.vue:104:18

    102 |                 </span>
    103 |
  > 104 |                 <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof BreadcrumbSlots<T>)" :item="item" :active="index === items!.length - 1" :index="index" />
        |                  ^^^^
    105 |               </slot>
    106 |             </ULinkBase>
    107 |           </ULink>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenu.vue:140:8

    138 |   <ContextMenuRoot v-bind="rootProps">
    139 |     <ContextMenuTrigger v-if="!!slots.default" as-child :disabled="disabled" :class="props.class">
  > 140 |       <slot />
        |        ^^^^
    141 |     </ContextMenuTrigger>
    142 |
    143 |     <UContextMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:72:6

    70 | <template>
    71 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 72 |     <slot :name="((item.slot || 'item') as keyof ContextMenuSlots<T>)" :item="item" :index="index">
       |      ^^^^
    73 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
    74 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    75 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:73:8

    71 |   <DefineItemTemplate v-slot="{ item, active, index }">
    72 |     <slot :name="((item.slot || 'item') as keyof ContextMenuSlots<T>)" :item="item" :index="index">
  > 73 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |        ^^^^
    74 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    75 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    76 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:80:10

    78 |
    79 |       <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof ContextMenuSlots<T>]" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 80 |         <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |          ^^^^
    81 |           {{ get(item, props.labelKey as string) }}
    82 |         </slot>
    83 |

 ERROR(vue-tsc)  Argument of type '{ item: ContextMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["default" | ... 4 more ... | (MergeTypes<...>["slot"] extends s...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:88:10

    86 |
    87 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 88 |         <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof ContextMenuSlots<T>)" :item="item" :active="active" :index="index">
       |          ^^^^
    89 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    90 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    91 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ default(props?: {} | undefined): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/ContextMenuContent.vue:167:8

    165 |       </ContextMenu.Group>
    166 |
  > 167 |       <slot />
        |        ^^^^
    168 |     </component>
    169 |   </ContextMenu.Portal>
    170 | </template>

 ERROR(vue-tsc)  Argument of type '{ open: boolean; }' is not assignable to parameter of type 'NonNullable<({ default(props: { open: boolean; }): any; item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<...>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>)["default"] & ((props: { ...; }) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue:149:8

    147 |   <DropdownMenuRoot v-slot="{ open }" v-bind="rootProps">
    148 |     <DropdownMenuTrigger v-if="!!slots.default" as-child :class="props.class" :disabled="disabled">
  > 149 |       <slot :open="open" />
        |        ^^^^
    150 |     </DropdownMenuTrigger>
    151 |
    152 |     <UDropdownMenuContent

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:78:6

    76 | <template>
    77 |   <DefineItemTemplate v-slot="{ item, active, index }">
  > 78 |     <slot :name="((item.slot || 'item') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :index="index">
       |      ^^^^
    79 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
    80 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    81 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:79:8

    77 |   <DefineItemTemplate v-slot="{ item, active, index }">
    78 |     <slot :name="((item.slot || 'item') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :index="index">
  > 79 |       <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |        ^^^^
    80 |         <UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, loading: true })" />
    81 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: uiOverride?.itemLeadingIcon, color: item?.color, active })" />
    82 |         <UAvatar v-else-if="item.avatar" :size="((props.uiOverride?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: uiOverride?.itemLeadingAvatar, active })" />

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:86:10

    84 |
    85 |       <span v-if="get(item, props.labelKey as string) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof DropdownMenuContentSlots<T>]" :class="ui.itemLabel({ class: uiOverride?.itemLabel, active })">
  > 86 |         <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |          ^^^^
    87 |           {{ get(item, props.labelKey as string) }}
    88 |         </slot>
    89 |

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; }> & Omit<DropdownMenuSlots<T>, "default"> & { ...; })["default" | ... 4 more ... | Exclude<...>]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:94:10

    92 |
    93 |       <span :class="ui.itemTrailing({ class: uiOverride?.itemTrailing })">
  > 94 |         <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof DropdownMenuContentSlots<T>)" :item="(item as Extract<NestedItem<T>, { slot: string; }>)" :active="active" :index="index">
       |          ^^^^
    95 |           <UIcon v-if="item.children?.length" :name="appConfig.ui.icons.chevronRight" :class="ui.itemTrailingIcon({ class: uiOverride?.itemTrailingIcon, color: item?.color, active })" />
    96 |           <span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: uiOverride?.itemTrailingKbds })">
    97 |             <UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="((props.uiOverride?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()) as KbdProps['size'])" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<(Omit<DropdownMenuSlots<T>, "default"> & { default(props?: {} | undefined): any; })["default"] & ((props?: {} | undefined) => any)> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue:176:8

    174 |       </DropdownMenu.Group>
    175 |
  > 176 |       <slot />
        |        ^^^^
    177 |     </component>
    178 |   </DropdownMenu.Portal>
    179 | </template>

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:221:6

    219 | <template>
    220 |   <DefineLinkTemplate v-slot="{ item, active, index }">
  > 221 |     <slot :name="((item.slot || 'item') as keyof NavigationMenuSlots<T>)" :item="item" :index="index">
        |      ^^^^
    222 |       <slot :name="((item.slot ? ${item.slot}-leading : 'item-leading') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
    223 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    224 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:222:8

    220 |   <DefineLinkTemplate v-slot="{ item, active, index }">
    221 |     <slot :name="((item.slot || 'item') as keyof NavigationMenuSlots<T>)" :item="item" :index="index">
  > 222 |       <slot :name="((item.slot ? ${item.slot}-leading : 'item-leading') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |        ^^^^
    223 |         <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
    224 |         <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />
    225 |       </slot>

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:231:10

    229 |         :class="ui.linkLabel({ class: props.ui?.linkLabel })"
    230 |       >
  > 231 |         <slot :name="((item.slot ? ${item.slot}-label : 'item-label') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |          ^^^^
    232 |           {{ get(item, props.labelKey as string) }}
    233 |         </slot>
    234 |

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean | undefined; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:239:10

    237 |
    238 |       <span v-if="(!collapsed || orientation !== 'vertical') && (item.badge || (orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>])) || (orientation === 'vertical' && item.children?.length) || item.trailingIcon || !!slots[(item.slot ? ${item.slot}-trailing : 'item-trailing') as keyof NavigationMenuSlots<T>])" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 239 |         <slot :name="((item.slot ? ${item.slot}-trailing : 'item-trailing') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |          ^^^^
    240 |           <UBadge
    241 |             v-if="item.badge"
    242 |             color="neutral"

 ERROR(vue-tsc)  Argument of type '{ item: NavigationMenuItem; active: boolean; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; 'item-content': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 4 more ... | (MergeTypes<...>["slot"] extends ...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue:282:12

    280 |
    281 |         <NavigationMenuContent v-if="orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>])" v-bind="contentProps" :class="ui.content({ class: props.ui?.content })">
  > 282 |           <slot :name="((item.slot ? ${item.slot}-content : 'item-content') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
        |            ^^^^
    283 |             <ul :class="ui.childList({ class: props.ui?.childList })">
    284 |               <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: props.ui?.childItem })">
    285 |                 <ULink v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["indicator"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:147:16

    145 |           <StepperTrigger :class="ui.trigger({ class: props.ui?.trigger })">
    146 |             <StepperIndicator :class="ui.indicator({ class: props.ui?.indicator })">
  > 147 |               <slot name="indicator" :item="item">
        |                ^^^^
    148 |                 <UIcon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: props.ui?.indicator })" />
    149 |                 <template v-else>
    150 |                   {{ count + 1 }}

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["title"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:164:14

    162 |         <div :class="ui.wrapper({ class: props.ui?.wrapper })">
    163 |           <StepperTitle :class="ui.title({ class: props.ui?.title })">
  > 164 |             <slot name="title" :item="item">
        |              ^^^^
    165 |               {{ item.title }}
    166 |             </slot>
    167 |           </StepperTitle>

 ERROR(vue-tsc)  Argument of type '{ item: T; }' is not assignable to parameter of type 'NonNullable<({ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>)["description"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:169:14

    167 |           </StepperTitle>
    168 |           <StepperDescription :class="ui.description({ class: props.ui?.description })">
  > 169 |             <slot name="description" :item="item">
        |              ^^^^
    170 |               {{ item.description }}
    171 |             </slot>
    172 |           </StepperDescription>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<T, { slot: string; }>; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ indicator: SlotProps<T>; title: SlotProps<T>; description: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T>> & { ...; } & DynamicSlots<...>)["title" | ... 3 more ... | (T["slot"] extends string ? T["slot"] : never)]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Stepper.vue:178:8

    176 |
    177 |     <div v-if="currentStep?.content || !!slots.content || currentStep?.slot" :class="ui.content({ class: props.ui?.description })">
  > 178 |       <slot
        |        ^^^^
    179 |         :name="((currentStep?.slot || 'content') as keyof StepperSlots<T>)"
    180 |         :item="(currentStep as Extract<T, { slot: string }>)"
    181 |       >

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["caption"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:317:10

    315 |     <table :class="ui.base({ class: [props.ui?.base] })">
    316 |       <caption v-if="caption || !!slots.caption" :class="ui.caption({ class: [props.ui?.caption] })">
  > 317 |         <slot name="caption">
        |          ^^^^
    318 |           {{ caption }}
    319 |         </slot>
    320 |       </caption>

 ERROR(vue-tsc)  Argument of type '{ column: Column<T, unknown>; header: Header<T, unknown>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:330:14

    328 |             :class="ui.th({ class: [props.ui?.th, header.column.columnDef.meta?.class?.th], pinned: !!header.column.getIsPinned() })"
    329 |           >
  > 330 |             <slot :name="${header.id}-header" v-bind="header.getContext()">
        |              ^^^^
    331 |               <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
    332 |             </slot>
    333 |           </th>

 ERROR(vue-tsc)  Argument of type '{ cell: Cell<T, unknown>; column: Column<T, unknown>; getValue: Getter<unknown>; renderValue: Getter<unknown>; row: Row<T>; table: Table<T>; }' is not assignable to parameter of type '({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<string, (props: HeaderContext<...>) => any> & Record<...> & Record<...> & Record<...>)[string] & ((props: HeaderContext<...>) => any) &...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:355:18

    353 |                 :class="ui.td({ class: [props.ui?.td, cell.column.columnDef.meta?.class?.td], pinned: !!cell.column.getIsPinned() })"
    354 |               >
  > 355 |                 <slot :name="${cell.column.id}-cell" v-bind="cell.getContext()">
        |                  ^^^^
    356 |                   <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
    357 |                 </slot>
    358 |               </td>

 ERROR(vue-tsc)  Argument of type '{ row: Row<T>; }' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["expanded"] & ((props: { ...; }) => any)> extends (props: infer P) => any ?...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:362:18

    360 |             <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
    361 |               <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
  > 362 |                 <slot name="expanded" :row="row" />
        |                  ^^^^
    363 |               </td>
    364 |             </tr>
    365 |           </template>

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["loading"] & ((props?: {} | undefined) => any)> extends (props: infer P) =>...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:370:14

    368 |         <tr v-else-if="loading && !!slots['loading']">
    369 |           <td :colspan="columns?.length" :class="ui.loading({ class: props.ui?.loading })">
  > 370 |             <slot name="loading" />
        |              ^^^^
    371 |           </td>
    372 |         </tr>
    373 |

 ERROR(vue-tsc)  Argument of type '{}' is not assignable to parameter of type 'NonNullable<({ expanded: (props: { row: Row<T>; }) => any; empty: (props?: {} | undefined) => any; loading: (props?: {} | undefined) => any; caption: (props?: {} | undefined) => any; } & Record<...> & Record<...> & Record<...> & Record<...>)["empty"] & ((props?: {} | undefined) => any)> extends (props: infer P) => a...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Table.vue:376:14

    374 |         <tr v-else>
    375 |           <td :colspan="columns?.length" :class="ui.empty({ class: props.ui?.empty })">
  > 376 |             <slot name="empty">
        |              ^^^^
    377 |               {{ empty || t('table.noData') }}
    378 |             </slot>
    379 |           </td>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["leading"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:118:10

    116 |
    117 |       <TabsTrigger v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :disabled="item.disabled" :class="ui.trigger({ class: props.ui?.trigger })">
  > 118 |         <slot name="leading" :item="item" :index="index">
        |          ^^^^
    119 |           <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
    120 |           <UAvatar v-else-if="item.avatar" :size="((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
    121 |         </slot>

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["default"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:124:12

    122 |
    123 |         <span v-if="get(item, props.labelKey as string) || !!slots.default" :class="ui.label({ class: props.ui?.label })">
  > 124 |           <slot :item="item" :index="index">{{ get(item, props.labelKey as string) }}</slot>
        |            ^^^^
    125 |         </span>
    126 |
    127 |         <slot name="trailing" :item="item" :index="index" />

 ERROR(vue-tsc)  Argument of type '{ item: T; index: number; }' is not assignable to parameter of type 'NonNullable<({ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>)["trailing"] & SlotProps<...>> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:127:10

    125 |         </span>
    126 |
  > 127 |         <slot name="trailing" :item="item" :index="index" />
        |          ^^^^
    128 |       </TabsTrigger>
    129 |     </TabsList>
    130 |

 ERROR(vue-tsc)  Argument of type '{ item: Extract<T, { slot: string; }>; index: number; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ leading: SlotProps<T>; default: SlotProps<T>; trailing: SlotProps<T>; content: SlotProps<T>; } & DynamicSlots<T, undefined, { ...; }>> & { ...; } & DynamicSlots<...>)["default" | ... 3 more ... | (T["slot"] extends string ? T["slot"] : never)]> extends (props: infer P) => any ? P : {}'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tabs.vue:133:10

    131 |     <template v-if="!!content">
    132 |       <TabsContent v-for="(item, index) of items" :key="index" :value="item.value || String(index)" :class="ui.content({ class: props.ui?.content })">
  > 133 |         <slot :name="((item.slot || 'content') as keyof TabsSlots<T>)" :item="(item as Extract<T, { slot: string; }>)" :index="index">
        |          ^^^^
    134 |           {{ item.content }}
    135 |         </slot>
    136 |       </TabsContent>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:182:12

    180 |       >
    181 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
  > 182 |           <slot :name="((item.slot || 'item') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |            ^^^^
    183 |             <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
    184 |               <UIcon
    185 |                 v-if="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:183:14

    181 |         <button :disabled="item.disabled || disabled" :class="ui.link({ class: props.ui?.link, selected: isSelected, disabled: item.disabled || disabled })">
    182 |           <slot :name="((item.slot || 'item') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
  > 183 |             <slot :name="((item.slot ? ${item.slot}-leading: 'item-leading') as keyof TreeSlots<T>)" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |              ^^^^
    184 |               <UIcon
    185 |                 v-if="item.icon"
    186 |                 :name="item.icon"

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:197:16

    195 |
    196 |             <span v-if="getItemLabel(item) || !!slots[(item.slot ? ${item.slot}-label: 'item-label') as keyof TreeSlots<T>]" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
  > 197 |               <slot :name="((item.slot ? ${item.slot}-label: 'item-label') as keyof TreeSlots<T>)" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |                ^^^^
    198 |                 {{ getItemLabel(item) }}
    199 |               </slot>
    200 |             </span>

 ERROR(vue-tsc)  Argument of type '{ item: Extract<NestedItem<T>, { slot: string; }>; index: number; level: number; expanded: boolean; selected: boolean; }' is not assignable to parameter of type 'NonNullable<(Readonly<{ item: SlotProps<NestedItem<T>>; 'item-leading': SlotProps<NestedItem<T>>; 'item-label': SlotProps<NestedItem<T>>; 'item-trailing': SlotProps<...>; } & DynamicSlots<...>> & { ...; } & DynamicSlots<...>)["item" | ... 3 more ... | (NestedItem<...>["slot"] extends string ? NestedItem<...>["slot"]...'.
 FILE  /app/node_modules/@nuxt/ui/dist/runtime/components/Tree.vue:203:16

    201 |
    202 |             <span v-if="item.trailingIcon || item.children?.length || !!slots[(item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof TreeSlots<T>]" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
  > 203 |               <slot :name="((item.slot ? ${item.slot}-trailing: 'item-trailing') as keyof TreeSlots<T>)" v-bind="{ item, index, level, expanded: isExpanded, selected: isSelected }" :item="(item as Extract<NestedItem<T>, { slot: string; }>)">
        |                ^^^^
    204 |                 <UIcon v-if="item.trailingIcon" :name="item.trailingIcon" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    205 |                 <UIcon v-else-if="item.children?.length" :name="trailingIcon ?? appConfig.ui.icons.chevronDown" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon })" />
    206 |               </slot>

[vue-tsc] Found 44 errors. Watching for file changes.

(edited by moderator for clarity)

@sandros94
Copy link
Member

I might be wrong but as far as I understand the [email protected] release still lacks some of the changes in regard of slots, so it might be just failing silently. alpha.3 should be close to public release so I'll keep an eye on that.

But keep in mind that I'm also working on the windows CI which introduces a new module-builder that also changes how types are generated and executed, this could help as well.

PS:
@gygoo please use collapsed sections when you paste logs, as it severely hurts navigating this issue in the long run. Also, you might just have dirty dependencies, have you tried to simply deplete the node_modules folder and reinstall with the updated package.json?

@darkbasic
Copy link

I confirm that alpha.2 fails silently.

@gygoo
Copy link

gygoo commented Apr 3, 2025

Sorry for not using collapsed sections.

I’m running the following commands:

rm -rf node_modules && rm -rf .nuxt && rm -rf .output
rm -f package-lock.json
npm cache clean --force
npm i
npm run dev

And I still get:
[vue-tsc] Found 44 errors. Watching for file changes.

@DrJume
Copy link

DrJume commented Apr 10, 2025

For me, the newest vue-tsc version that worked was v2.0.24.

@Gobler
Copy link
Contributor

Gobler commented Apr 16, 2025

Do we have any new information about this bug?
I have tried all the suggested solutions above - unfortunately, when I use the new version of Nuxt UI I always get errors related to the slots...
The fixes that came in the previous release reduced the number of errors but did not eliminate them and the work, unfortunately, is very cumbersome...

Interestingly - if I restart the TS server already after building the application everything seems to work correctly, but if the nuxt server requires a restart (for example, some changes in configuration) the errors reappear which is totally strange to me because either it should work or not ;p

@simonmaass
Copy link
Author

@Gobler i noticed the same behavior with the restart... very weird

@sandros94
Copy link
Member

I forgot to give an update here, my bad 🙄

This issue is split on two sides, one here and one upstream on vue-tsc.

The later one has been already fixed with vuejs/language-tools#5247, althout it is only available via 3.0.0-alpha.X releases curretly. Considering the immense working they are doing (to fix stuff like the communication with the TS server, has you noticed) it is not clear if this could be backported to a v2 release. There is still hope tho.

On Nuxt UI side of things this has been fixed via #3857 that will be available next release along with many other changes and fixes.

You might be questioning: "why this hasn't been marked as resolved then?"

I'm glad you asked 😬

Atm all the vue-tsc versions between 2.2.4-2.2.8 (inclouded) do have this bug. Versions prior to that were silently failing and, as mentioned, the actual upstream fix is only available via the v3 pre-releases. Which they are fast and easy to install via npm, but require manual installation for VSCode (via VSIX artifacts in vuejs/language-tools#5261), not to mention they might not be fully compatible with other IDEs.
What I'm trying to say is that there is still no stable release with the fix available. You either stick with a 2.2.2 release or commit to a v3 pre-release (once a new release for Nuxt UI comes around).

Small side-note for whoever wants to contribute to Nuxt UI: We are still internally on 2.2.2 because there is still a bug caused by typechecking docs. I haven't found it yet, but it is causing a false-positive slot typing issue.

Credits go to @KazariEX who helped me immensively debug and work on this for a few hours

@Norbiros
Copy link
Contributor

@sandros94 I’m successfully using the latest snapshots of @nuxt/ui and vue-tsc in some projects — slot errors are resolved, which is great. However, I started seeing type errors related to the form component:

app/components/Auth.vue:25:61 - error TS2322: Type '(event: FormSubmitEvent<{ email: string; password: string; }>) => Promise<void>' is not assignable to type '(payload: FormSubmitEvent<object>) => void'.
  Types of parameters 'event' and 'payload' are incompatible.
    Type 'FormSubmitEvent<object>' is not assignable to type 'FormSubmitEvent<{ email: string; password: string; }>'.
      Type 'FormSubmitEvent<object>' is not assignable to type '{ data: { email: string; password: string; }; }'.
        Types of property 'data' are incompatible.
          Type '{}' is missing the following properties from type '{ email: string; password: string; }': email, password

25   <UForm :schema="schema" :state="state" class="space-y-4" @submit="onSubmit">
                                                               ~~~~~~

This is 1:1 example copied from docs. Not sure if it's related to the typechecking issue in the docs that you mentioned earlier, but just wanted to report it in case it's still relevant.

@simonmaass
Copy link
Author

@Norbiros i can confirm the error on the onSubmit function - i have the same problem!

@sandros94
Copy link
Member

However, I started seeing type errors related to the form component:

[...]

This is 1:1 example copied from docs. Not sure if it's related to the typechecking issue in the docs that you mentioned earlier, but just wanted to report it in case it's still relevant.

Yes we noticed it too, thanks.
No it is not related to docs but indeed there are quite a few type issues with the form component that we have been tracking for the last couple of days. Although a different error, this is one of those that was silently failing prior to these changes (including the new module builder), so the issue is correct

@albertcito
Copy link
Contributor

I installed ui-pro but it display 117 errors :(

My TS versions are

"typescript": "5.6.3",
"vue-tsc": "2.2.0"

Someone knows how to solve it?

Display 117 errors ↓
Errors  Files
     3  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/Banner.vue:11
     6  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/BlogPost.vue:12
    13  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/content/ContentNavigation.vue:13
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/content/ContentSurround.vue:79
     6  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/content/ContentToc.vue:12
     1  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/DashboardNavbar.vue:84
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/DashboardPanel.vue:45
     4  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/DashboardSidebar.vue:152
     5  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/FooterColumns.vue:66
     1  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/Header.vue:151
     4  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/Page.vue:9
     6  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageAnchors.vue:58
     7  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageCard.vue:11
     3  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageCTA.vue:67
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageFeature.vue:62
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageHeader.vue:47
     4  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageHero.vue:65
     5  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageLinks.vue:60
     1  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageList.vue:36
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageLogos.vue:70
     6  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageMarquee.vue:10
     7  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PageSection.vue:12
     4  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PricingPlan.vue:11
     3  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/PricingPlans.vue:11
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/prose/Callout.vue:11
     3  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/prose/Card.vue:11
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/prose/CodeCollapse.vue:53
     4  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/prose/CodePreview.vue:29
     2  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/prose/CodeTree.vue:144
     5  ../../node_modules/@nuxt/ui-pro/dist/runtime/components/User.vue:63

@shaunnbarron
Copy link

Error free with latest vue-tsc (v2.2.10 )

@syczuan
Copy link

syczuan commented Apr 23, 2025

Error free with latest vue-tsc (v2.2.10 )

Using vue-tsc v2.2.10 worked for me.

Copy link
Member

It seems [email protected] fixes the issue indeed, might have been fixed by vuejs/language-tools#5247!

@yulafezmesi
Copy link

"typescript": "^5.8.3",
"vue-tsc": "2.2.10",
"@nuxt/ui": "^3.0.2",

hey! still having some issues upon these versions. am i missing something?

Image

Copy link
Member

This never ends 😅 @yulafezmesi Would you mind trying with latest package? https://pkg.pr.new/@nuxt/ui@1a46394

@yulafezmesi
Copy link

This never ends 😅 @yulafezmesi Would you mind trying with latest package? https://pkg.pr.new/@nuxt/ui@1a46394

yeap, works well with this version, ty :)

however, within upcoming release, having some issues autoimport composables defineShortcuts, useOverlay. says not defined. i'll open a new issue for that.

Copy link
Member

Don't bother, this is another issue with unimport not working with pkg.pr.new. You can set this resolution to fix it: "unimport": "4.1.1".

@yulafezmesi
Copy link

oh great. thanks!

Don't bother, this is another issue with unimport not working with pkg.pr.new. You can set this resolution to fix it: "unimport": "4.1.1".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working upstream v3 #1289
Projects
None yet
Development

No branches or pull requests