Releases: nuxt/ui
v4.0.0-alpha.1
📚 Documentation
You can check out the new docs for v4 on https://ui4.nuxt.com while in alpha.
🚨 Breaking Changes
- components: rename
nullify
modifier tonullable
and addoptional
(#4838) - module: update compatibility to nuxt 4
Read the migration guide to v4.
🚀 Features
🐛 Bug Fixes
- AuthForm: use
error
from form field (#4738) (00dfb6b) - BlogPost: ensure date slot renders (#4743) (4514880)
- ChangelogVersion/ChangelogVersions: handle RTL mode (#4777) (f91c408)
- ContentSearch/DashboardSearch: make
ui.modal
work (946c2ec) - module: add
@source
on components (a16465f), closes #4773 - PageCard: improve keyboard accessibility (#4733) (3029568)
- ProseImg: ensure unique motion layout id for images (#4720) (9480a0b)
- unplugin: handle components overrides in subdirectories (#4781) (69ee75e)
New Contributors
- @cco3 made their first contribution in #4808
- @fabianmerino made their first contribution in #4826
Full Changelog: v4.0.0-alpha.0...v4.0.0-alpha.1
v3.3.3
🚀 Features
🐛 Bug Fixes
- components: broken types for
update:model-value
event (#4853) (7133f50) - Form: default slot types (#4758) (a32cc37)
- Form: update
Form
interface to accept RegExp (#4821) (0c2d390) - InputMenu/Select/SelectMenu: show placeholder when model value is falsy (#4825) (90b5daf)
- InputMenu: prevent
focus-outside
event on content (77b6b9a) - Link: ensure target
_blank
is flagged as external for Inertia (#4746) (520b277) - Table: ensure
colspan
calc forloading
andempty
states (#4826) (bdcc8c4)
New Contributors
- @cco3 made their first contribution in #4808
- @fabianmerino made their first contribution in #4826
Full Changelog: v3.3.2...v3.3.3
v2.22.2
🐛 Bug Fixes
- Meter: correct vertical alignment of progress bar (#4735) (875be4b)
- SelectMenu/InputMenu: ensure object compare with
by
prop (#4791) (44382cd)
New Contributors
- @DanielPagani made their first contribution in #4735
Full Changelog: v2.22.1...v2.22.2
v4.0.0-alpha.0
📚 Documentation
You can check out the new docs for v4 on https://ui4.nuxt.com while in alpha.
🚨 Breaking Changes
- components: upgrade
ai-sdk
to v5 (#4698) (9545fdd) - FieldGroup: rename from
ButtonGroup
(#4596) (8aa96d1) - components: import
@nuxt/ui-pro
components (#4675) (f6ae153) - Marquee: rename from
PageMarquee
(#4741) (0a4d9b4) - PageAccordion: remove in favor of
Accordion
(#4734) (1c63aab)
Read the migration guide to v4.
Full Changelog: v3.3.2...v4.0.0-alpha.0
v3.3.2
This release ensures the
[email protected]
dependency is installed. The2.1.0
version is somehow broken at the moment: heroui-inc/tailwind-variants#259 / heroui-inc/tailwind-variants#258
Full Changelog: v3.3.1...v3.3.2
v3.3.1
🚀 Features
- Form: support error RegExp in exposed methods (#4608) (b8b74a0)
- Tree: add
item-wrapper
slot (#4521) (411d937) - useOverlay: return promise on
open
method (#4592) (58aac86)
🐛 Bug Fixes
- Drawer: improve closing animation with
inset
prop (#4676) (9da1527) - FileUpload: handle wildcard in dropzone
dataTypes
(#4671) (729bed4) - FileUpload: improve file removal a11y (#4607) (f90bba0)
- FileUpload: open dialog on keyup (#4629) (8e9265e)
- FileUpload: prevent default on keydown (#4633) (68d8a98)
- Input: incorrect rendering of type
date
/time
on iOS (#4715) (93cc83c) - InputMenu/Select/SelectMenu: add display value fallback when no items found (#4689) (34ca811)
- Select/InputMenu: handle focus via label inside a FormField (#4696) (55dbcd2)
- Tabs: add missing Badge import (#4594) (fbec29c)
- Toast: add type for progress
ui
prop (#4677) (a8af85c) - Tooltip: render only if
text
orkbds
are present (#4568) (5e39cbb)
New Contributors
- @calmyournerves made their first contribution in #4594
- @dev1-dylan made their first contribution in #4652
- @kazupon made their first contribution in #4674
- @cyrilf made their first contribution in #4597
Full Changelog: v3.3.0...v3.3.1
v3.3.0
✨ Highlights
☁️ New FileUpload Component
Introducing a powerful new FileUpload component that makes file uploads effortless with built-in drag-and-drop and validation support (#4564).

Learn more: https://ui.nuxt.com/components/file-upload
🎨 Global Default Variants
Configure global defaults for color
and size
across all components to reduce boilerplate and ensure consistent styling (#4400).
export default defineNuxtConfig({
modules: ['@nuxt/ui'],
css: ['~/assets/css/main.css'],
ui: {
theme: {
defaultVariants: {
color: 'neutral',
size: 'sm'
}
}
}
})
Learn more: https://ui.nuxt.com/getting-started/installation/nuxt#themedefaultvariants
📊 Enhanced Table Component
Major improvements to the Table component bring enhanced functionality and better user experience:
- Footer support for column summaries (#4194)
- Context menu support (#4259)
- Colspan and rowspan support (#4460)
- Row hover events for better interactivity (#2435)
- Custom styles in table and column meta (#4513)
Learn more: https://ui.nuxt.com/components/table
🚀 Features
- CommandPalette: add
footer
slot (#4457) (63730d6) - Drawer: add
nested
prop (e2695ee), closes #4320 - FileUpload: new component (#4564) (35dbe6c)
- Input/Textarea: add
default-value
prop (#4404) (fb9e7bb) - InputMenu: emit
remove-tag
event (#4511) (6ca7c8b) - InputTags: add
max-length
prop (b96a1cc), closes #4405 - Kbd: add
color
prop &soft
variant (#4549) (f336600) - module: add
theme.defaultVariants
option (#4400) (35f90b9) - Popover: add
reference
prop (b00e07f) - Table: add
footer
support to display column summary (#4194) (c355cac) - Table: add
style
to table and columnmeta
(#4513) (1db21d1) - Table: add row
hover
event (f903ec3), closes #2435 - Table: add support for
colspan
androwspan
(#4460) (7ef1933) - Table: add support for context menu (f62c5ec), closes #4259
- Tabs: add badge on items (#4553) (62ab016)
- Toast: progress bar with Progress component (ec569e4)
- Tooltip: add
reference
prop (69a7b95), closes #4430
🐛 Bug Fixes
- Button/Link: merge
active-class
/inactive-class
with app config (#4446) (9debce7) - Button: add
active
styles to behave likehover
on mobile (df8f202), closes #991 - Carousel/Tree: add type to button elements for accessibility (#4493) (fc24e03)
- Carousel: add
aria-current
attribute to active dot (#4447) (1ba8a55) - Carousel: improve accessibility (55e06e9), closes #4494
- Carousel: resolve plugins with page transitions (#4380) (3b67d54)
- ColorPicker: update color conversion logic (#4550) (6b6ec8c)
- CommandPalette: remove
rtl:space-x-reverse
from label (#4576) (4682ded) - defineShortcuts: allow extra keys to be combined with
shift
(#4456) (772631c) - defineShortcuts: always pass event to shotcut handler (#4516) (ef473c3)
- FormField: improve
error
type with boolean (a4d0ca7), closes #4496 - FormField: resolve minor accessibility and rendering issues (#4515) (c64c4cd)
- InputMenu/SelectMenu: filter null items in search (488707e)
- InputMenu/SelectMenu: improve display value without
valueKey
(4d4234d), closes #4528 - InputMenu/SelectMenu: only filter non-null fields (c92f908), closes #4509
- InputMenu: reset search term on mounted (cb160e6), closes #3993
- module: merge user's options when installing modules (78f92a2)
- NavigationMenu/Tabs: display badge when not undefined (b22891a)
- NavigationMenu/Tabs: proxy fallthrough attributes (836f748)
- RadioGroup: improve type safety for normalizeItem function (#4535) (bb99345)
- Table: add
scope
attribute to headers (#4417) (347694b) - Table: handle reactive columns (#4412) (4ce6540)
- theme: colors autocomplete in app config (752e2b6)
- Toast: only show progress when open (1d052ec), closes #4464
- Tooltip: display separator only with
text
andkbds
(#4570) (63476e5) - useLocale: ensure inject defaults to
en
(df1abf1), closes #4579 - useLocale: prevent hydration error when switching locale (15c7991)
- useOverlay: don't use
patch
when passing props toopen
(#4497) (5ad7dab) - useOverlay: improve props handling by mer...
v2.22.1
🐛 Bug Fixes
Full Changelog: v2.22.0...v2.22.1
v3.2.0
✨ Highlights
🏷️ New InputTags Component
A powerful new component for managing multiple input values with a clean, tag-based interface (#4261).
Learn more: https://ui.nuxt.com/components/input-tags
⏱️ New Timeline Component
Introducing the Timeline component for displaying chronological sequences and process flows (#4215).
Learn more: https://ui.nuxt.com/components/timeline
🚨 Breaking Changes
- useOverlay: correct spelling of
unmount
function (#4051)
🚀 Features
- Avatar: add
chip
prop (#4224) (03ac395) - Carousel: allow customization of active dot color (#4229) (2ee1c5a)
- CommandPalette: handle
children
in items (#4226) (59c26ec) - extendLocale: new composable (0f558fc), closes #3729
- Form: expose loading state to default slot (#4247) (ea0c459)
- InputTags: new component (#4261) (54bb228)
- Modal/Slideover: add
actions
slot (#4358) (8156971) - Modal/Slideover: add
close
method in slots (#4219) (5835eb5) - Select/SelectMenu/Tabs: expose trigger refs (7a2bd4e), closes #4292
- Select/SelectMenu: handle dynamic
autofocus
(1a4de49), closes #4324 - Table: add
body-top
/body-bottom
slots (#4354) (595fc64) - Timeline: new component (#4215) (8017767)
🐛 Bug Fixes
- Card/Drawer/Modal: prevent scrollbars overflow (#4368) (c3adc38)
- components: remove default
md
size on buttons (#4357) (be41aed) - defineShortcuts: allow
meta_-
shortcut (#4321) (4e7c1c9) - Form: conditionally type form data via
transform
prop (#4188) (37abcc6) - Form: expose reactive fields (#4386) (1a8feb7)
- InputMenu/SelectMenu: dynamic
empty
size (ba3c6e8), closes #4377 - Modal/Slideover: don't emit
close:prevent
oncloseAutoFocus
(150b334) - NavigationMenu: nested accordion context at every level (#4363) (2fa8db6)
- NavigationMenu: set content
max-height
inhorizontal
orientation (62bc7b2), closes #4208 - Pagination: match default button
size
(#4350) (4dd56c8) - Select/SelectMenu: display falsy values (7df7ee3)
- Select/SelectMenu: prevent empty string display when multiple (483e473)
- SelectMenu: dynamic input size (b0364b9)
- Table: use
tr
as separator (#4083) (edca3bc) - Toast: calc height on next tick (3bf5acb), closes #4265
- Toaster: smoother visibility transition for stacked toasts (#4367) (abfd0ed)
- useOverlay: correct spelling of
unmount
function (#4051) (546df57) - useOverlay: set props to original props when
defaultOpen
is set (#4308) (66355ba) - useOverlay: use original props when not provided to
open
(#4269) (bf56e15)
🌐 Locales
👋 New Contributors
- @JosephAnson made their first contribution in #4219
- @ra-jeev made their first contribution in #4252
- @tankosinn made their first contribution in #4188
- @dan-hale made their first contribution in #4247
- @syvixor made their first contribution in #4325
- @aa900031 made their first contribution in #4261
- @cram0 made their first contribution in #4334
- @larseberhardt made their first contribution in #4083
- @Sepush made their first contribution in #4368
- @Bobakanoosh made their first contribution in #4386
Full Changelog: v3.1.3...v3.2.0
v3.1.3
🚨 Breaking Changes
- NavigationMenu: revert new
collapsible
field
In previous patch, we introduced a new collapsible
field in items
to display children in collapsed
state as well as making the parent element respect its link attributes. However, it didn't feel right so we removed it in favor of 1e2a10b, 9cf9f25 and f2682fd.
- Parent items now respect their link attributes and clicking the trailing icon arrow expand/collapse its children.
- You can force a parent to behave like before (without link attributes) using
type: 'trigger'
. - When
collapsed
, you can use thepopover
/tooltip
props or item fields:
🚀 Features
- Modal/Slideover: add
after:enter
event (#4187) (d9e9fea) - NavigationMenu: add
tooltip
andpopover
props (f2682fd), closes #4186 - NavigationMenu: add
trigger
type in items (9cf9f25) - NavigationMenu: handle
vertical
orientation with Accordion instead of Collapsible (1e2a10b), closes #4072 #3911 - Popover: add
anchor
slot (#4119) (473513c)
🐛 Bug Fixes
- CheckboxGroup/RadioGroup: variant
table
borders in RTL mode (#4192) (43d281f) - CommandPalette: add
presentation
role to viewport (2ba94db) - ContextMenu/DropdownMenu: wrap groups in a viewport (dcf34a7), closes #3315
- Drawer: improve title & description accessibility (41087d4), closes #4199
- icons: update
loading
icon (#4163) (fe4e1f8) - Input/Textarea: define model modifiers types (#4195) (3243fb8)
- InputMenu/Select/SelectMenu: manual viewport to display scrollbars (f95abf8), closes #4069
- NavigationMenu: incorrect hover when disabled and active (d0be599)
- NavigationMenu: only display
tooltip
when collapsed (44f536f) - NavigationMenu: revert new
collapsible
field (3c78e2f) - Textarea: missing imports (#4207) (6aab62e)
- theme: define
old-neutral
color as static (#4193) (dae9f0b) - Tooltip: increase padding for consistency (0634a75)
🌐 Locales
- locale: add Kyrgyz language (#4189) (4053047)
- locale: add Lithuanian language (#4171) (d86956e)
- locale: add Malay language (#4160) (c00f6e8)
- locale: add Mongolian language (#4214) (44ea02c)
👋 New Contributors
- @syhmi made their first contribution in #4160
- @zikju made their first contribution in #4171
- @aloky made their first contribution in #4189
- @alireza-ab made their first contribution in #4192
- @alectrocute made their first contribution in #4163
- @scottcarlton made their first contribution in #4207
- @byambajav-m made their first contribution in #4214
Full Changelog: v3.1.2...v3.1.3