nuxt/ui v4.6.0 → v4.7.0

v4.7.0 is a feature-heavy release with two new components, locale-aware links, and a batch of fixes across navigation, chat, forms, and content. It also includes a few user-visible module and docs improvements that make the package easier to use in real apps.

What's new

  • Adds a new Listbox component for selectable lists with built-in search, virtualization, and rich item rendering. It is meant for cases where you want an always-visible list instead of the overlay behavior of SelectMenu (#6307).
  • Adds a new ProsePrompt component for showing pre-built AI prompts in docs, with one-click copy and direct IDE actions. The actions prop can expose copy, Cursor, and Windsurf actions from the prompt block (#6362).
  • Link now auto-localizes internal routes when @nuxtjs/i18n is installed. The same behavior flows through every component that accepts a to prop, so navigation menus, breadcrumbs, dropdowns, and command palettes can stay locale-aware without extra wiring (#5537).
  • AuthForm now exposes a separator slot, so you can replace the default separator between providers and form fields with custom content (#6305).
  • CommandPalette adds a group-label slot for custom group headers, and searchDelay for delaying search updates (#6329).
  • EditorSuggestionMenu now exposes TipTap suggestion matching options. That lets you customize trigger matching behavior through a suggestion prop, including cases like allowing a : trigger after / or letters (#6234).
  • Table now supports sticky headers and footers in virtualized mode by switching to a spacer-row approach (#6217).
  • Textarea now exposes an autoResize method, so you can resize it directly without simulating input events (#6120).

Fixes

  • ChatMessages no longer leaves the scroll-to-bottom indicator stuck on after messages are cleared, and streaming auto-scroll is more stable (#6239, #6297, #6357).
  • ChatPrompt no longer submits while IME composition is still active (#6280).
  • Header, DashboardSidebar, and Sidebar now allow proper autofocus when their mobile menus open, which restores focus trapping behavior (#6266).
  • Modal, Slideover, Drawer, and Popover no longer emit close:prevent twice on overlay clicks when dismissible is false (#6226).
  • Modal and Slideover now drop the empty header wrapper when no title or description is provided (#6381).
  • FieldGroup context no longer leaks into portal content such as modals, drawers, selects, popovers, tooltips, and menus (#6313).
  • Link now renders with a single root when custom is used, so v-show and $el resolution work correctly (#6310).
  • Select now supports the item-aligned position mode again (#6358).
  • InputDate and InputTime now give time segments more width, which fixes cramped layouts (#6339).
  • InputTags now picks up field-group styling correctly inside FieldGroup (#6326).
  • ProseImg now respects markdown width attributes instead of forcing full width (#6350).
  • ProsePre can now read code from the DOM when the code prop is missing (#6333).
  • ContentToc now uses the actual links passed in for scrollspy behavior instead of hardcoded heading tags (#6282).
  • PricingTable now aligns header elements correctly and handles RTL mode (#6111, #6382).
  • Accordion and Tabs now use stable item keys, which avoids remounts when items are reordered (#6380).
  • Avatar fallback text no longer uses leading-none, improving its baseline alignment (#6383).
  • FileUpload now uses the form field color and highlight values instead of raw props (#625?).

Other notable changes

  • The module now transpiles reka-ui to prevent injection errors (#6286).
  • Default variant resolution was moved into template logic so components can use the right values in render-time conditions as well as classes (#6361).
  • Inline style tag priority now uses a relative setting, which avoids pushing meta tags past crawlers’ limits (#6299).
  • @inertiajs/vue3 support was expanded to cover both ^2.0.7 and ^3.0.0 (#6243).
  • TypeScript was updated to v6 in development dependencies (#6267).

Contributors

@benjamincanac @J-Michalek @faizkhairi @Archetipo95 @nimonian @mrkaashee @tratteo @Ken-vdE @claylevering @ChronicStone @howwohmm @farnabaz @mateusznarowski @malik-jouda @harlan-zw @mikenewbon

Only the most active 50 of 60 merged PRs were included. See the full compare view.