Releases: nuxt/ui
v3.0.0-beta.3
🚀 Features
🐛 Bug Fixes
- InputMenu/SelectMenu: proxy
requiredin root props (60b7e2d) - InputMenu: wrong
requiredin multiple mode (01fa230), closes #2741 - Pagination: add missing slots (a47c5ff), closes #3441
- Pagination: wrong next link (e823022), closes #3008
- templates: prevent overriding existing colors (ccbd89c), closes #3426
👋 New Contributors
- @HessamCheraghi made their first contribution in #3447
- @Baroshem made their first contribution in #3449
Full Changelog: v3.0.0-beta.2...v3.0.0-beta.3
v3.0.0-beta.2
🐛 Bug Fixes
Full Changelog: v3.0.0-beta.1...v3.0.0-beta.2
v3.0.0-beta.1
✨ Highlights
- Tree: new component (#3180)
🚨 Breaking Changes
- deps: update tailwindcss to ^4.0.8 (#3373)
Tailwind CSS made some breaking changes in 4.0.8 where they don't rely on the module graph to discover classes anymore and where they remove unused CSS variables.
The first issue has been fixed internally in #3373 but for the second you now need to use theme(static) when importing tailwindcss: https://ui3.nuxt.dev/getting-started/theme#theme
@import "tailwindcss" theme(static);
@import "@nuxt/ui";
@theme static {
--color-green-50: #EFFDF5;
--color-green-100: #D9FBE8;
--color-green-200: #B3F5D1;
--color-green-300: #75EDAE;
--color-green-400: #00DC82;
--color-green-500: #00C16A;
--color-green-600: #00A155;
--color-green-700: #007F45;
--color-green-800: #016538;
--color-green-900: #0A5331;
--color-green-950: #052E16;
}You can read more about this in #3374
- module: remove devtools in favor of
compodium(#3380)
@romhml who initially created the Nuxt UI devtools, moved all the logic into a separate compodium module in #3380 to avoid polluting the @nuxt/ui package with 7MB+ of component metas.
This module now works for any component in your app, not just Nuxt UI ones which gives way more flexibility.
You can install the module in your Nuxt application with one command:
npx nuxi module add compodium
- useOverlay: handle programmatic modals and slideovers (#3279)
@genu who initially created the useModal and useSlideover composables in Nuxt UI v2 made a significant refactor in #3279 which merges the two composables into a single useOverlay composable. This is a big breaking change but brings lots of improvements as you can read in the PR.
🚀 Features
- Form: add prop to disable state transformation (#3356) (015ceac)
- module: remove devtools in favor of compodium (#3380) (7a8c00c)
- Table: add
selectevent (#2822) (0668a39) - Tree: new component (#3180) (71728d3)
- useOverlay: handle programmatic modals and slideovers (#3279) (108d36f)
🐛 Bug Fixes
- Avatar: render on SSR (67e5465)
- CommandPalette: wrong ellipsis color (ada04f6)
- components: missing
$attrsbind (#3152) (fb36df5) - Drawer/Modal/Slideover: disable close autofocus (ae30f94), closes #3227
- Form: ensure loading state resets to false after an error (#3359) (19d76c8)
- Link: improve external links handling in vue (b53f77b)
- Modal/Slideover: add wrapper around title & description (bc01136)
- Modal/Slideover: fixed header height (d33a83e), closes #3333
- Modal: use
dvhunit (aefa09c) - module: use key when merging modules options (9821894)
- Tooltip: bind
$attrson trigger (637f5d3), closes #3339 #2897 - vite: exclude
@nuxt/uifrom vite pre-optimization (#3352) (09492f7)
👋 New Contributors
- @alihardan made their first contribution in #3359
Full Changelog: v3.0.0-alpha.13...v3.0.0-beta.1
v3.0.0-alpha.13
✨ Highlights
🎨 Tailwind CSS classes
Thanks to #2967, you can now use classes like text-primary dark:text-primary-400 like in Nuxt UI v2. We dynamically write into the @theme directive of Tailwind CSS to define the Nuxt UI design system colors (theme.colors) as Tailwind CSS colors.
🚨 Breaking Changes
- useToast: don't return a promise on
add - Toast: rename
clicktoonClickfor consistency - Alert/Toast: add
orientationprop
🚀 Features
- Alert/Toast: add
orientationprop (2c192ac) - Badge: add support within button groups (#3224) (10fb843)
- Card: add
variantprop (847d4aa) - CommandPalette: support link props in items (e2b78a7), closes #3190
- ContextMenu/DropdownMenu/NavigationMenu: add
external-iconprop (5846c1e), closes #2996 - Drawer: add
insetprop (6d9b9ed), closes #2994 - locale: add Azerbaijani language (#3209) (0fb6753)
- locale: add Bengali (বাংলা) language (#3321) (1d09a2a)
- module: generate
tailwindcsstheme colors (#2967) (443a0be) - Table: extends core options and support other options like
pagination(#3177) (4aa3179) - Toast: handle vnodes in
titleanddescription(abd2be1), closes #3226 - unplugin: expose options for embedded plugins, throw warnings for duplication (#3207) (6c20f8a)
- useToast: proxy emits (089185f)
🐛 Bug Fixes
- App: wrap
ModalProvider/SlideoverProviderinsideTooltipProvider(cd0a9d3), closes #3236 - Badge: missing
UAvatarimport (49dd088), closes #3203 - Calendar/InputMenu/Textarea: add missing
PartialStringtype onuiprop (9d29e0b), closes #3299 - Card: remove
shadow-smfor consistency (8097fff) - Link: allow usage without
vue-routerin vue (f55e869), closes #3001 - locale: export
km(#3201) (995e07d) - Modal/Slideover: improve
title&descriptionaccessibility (e419dcb), closes #3267 #3215 - Modal: always fullscreen on mobile (#2637) (7641d89)
- NavigationMenu: disable collapsible with
collapsedprop (07e1b4f) - NavigationMenu: remove negative mb causing overflow issues (0e46c3e)
- NavigationMenu: wrong
levelcompute onverticalorientation (c1c9da4) - SelectMenu: wrap content with
FocusScope(e7e7585), closes #2657 - Table: proxy props without
useForwardProps(f0553eb) - Toast: rename
clicktoonClickfor consistency (533e889) - useToast: don't return a promise on
add(153f341)
👋 New Contributors
- @typed-sigterm made their first contribution in #3188
- @VisualYuki made their first contribution in #3198
- @chz made their first contribution in #3209
- @who-jonson made their first contribution in #3321
Full Changelog: v3.0.0-alpha.12...v3.0.0-alpha.13
v3.0.0-alpha.12
🚨 Breaking Changes
- ColorPicker: migrate from
colortocolortranslator(#3097) - Form: include nested state in submit data (#3028)
- locale: remove emoji fallback for Chinese (#3134) (1a95104)
🚀 Features
- css: add
lightvariant to reverse colors (75f7064) - FormField: set
aria-describedbyandaria-invalidattributes (#3123) (b95b913) - Form: form validation properties (#3137) (c0b485d)
- locale: add Hebrew language (#3181) (f395877)
- locale: add Hindi language (#3170) (8e96daa)
- locale: add Hungarian language (#3129) (891ba1f)
- locale: add Khmer language (#3119) (64421a1)
- locale: add Norwegian Bokmål language (#3095) (9ccfe8f)
- NavigationMenu: add
collapsedprop (3fc2210) - NavigationMenu: add
contentOrientationprop (ac86ee0) - NavigationMenu: handle
labeltype in items (27fdc8e), closes #2993
🐛 Bug Fixes
- Alert: allow actions wrap (#3083) (e7c10bc)
- Avatar: handle loading manually to support
@nuxt/image(00c5f26), closes nuxt/ui-pro#727 - Avatar: hide fallback when image is loaded (36d7402), closes nuxt/ui-pro#727
- Button: wrong avatar size with
blockprop (ba1dd13) - colors: move css variables to
baselayer (533ccec), closes #3075 - components: prevent multiple
appConfigidentifier import (#3186) (cd16b95) - ContextMenu/DropdownMenu: remove unnecessary bindings in html (9b5a957)
- Form: include nested state in submit data (#3028) (de9ecb1)
- Form: standard schema validation no longer wrapped in
valueobject (#3104) (8f7f579) - locale: remove emoji fallback for Chinese (#3134) (1a95104)
- locale: year translation missing
ñines(#3090) (1bf370e) - NavigationMenu: handle children recursively in vertical orientation (2b7ff3e), closes #3128
- NavigationMenu: highlight open items on
horizontalorientation only (931211a) - useToast: add in queue and improve unique ids (aafddd8), closes #2686
👋 New Contributors
- @zAlweNy26 made their first contribution in #3087
- @IsraelOrtuno made their first contribution in #3090
- @sifferhans made their first contribution in #3095
- @nidexingg made their first contribution in #3119
- @outluch made their first contribution in #3160
- @nexoscreator made their first contribution in #3170
- @toto6038 made their first contribution in #3134
- @nandordudas made their first contribution in #3129
- @sagiv1996 made their first contribution in #3181
Full Changelog: v3.0.0-alpha.11...v3.0.0-alpha.12
v2.21.0
v3.0.0-alpha.11
🚨 Breaking Changes
- Modal/Popover/Slideover: rename
prevent-closetodismissible
🚀 Features
- Badge: rework sizes (d9967f5)
- CommandPalette: add
autofocusprop (#2942) (1b3c919) - locale: add Danish language (#2952) (e1d385a)
- locale: add Estonian language (#3036) (01bf99e)
- locale: add Finnish language (#3013) (c770ae1)
- locale: add Greek language (#2975) (b326a14)
- locale: add Indonesian language (#3024) (a18ad84)
- locale: add Swedish language (#3012) (0201a3d)
- locale: add Thai language (#2980) (c8cd06e)
- locale: add Ukrainian language (#2908) (5efae59)
- locale: add Viet language (#2986) (ffba108)
- module: allow
tvcustomization throughapp.config(#2938) (30ba53e)
🐛 Bug Fixes
- Accordion/Collapsible/NavigationMenu/Tabs: define
unmountOnHidedefault (4344e36) - Avatar: bind
$attrsonAvatarFallback(#2933) (7f64198) - Badge: reduce radius on
smsize (f97d2e3) - CommandPalette/SelectMenu: missing translations (#3057) (d5dba0e)
- components: enable pointer events on menus (#2881) (f85b098)
- defineShortcuts: handle extract when using
onSelectoronClick(#2896) (2e17fb6) - DropdownMenu/ContextMenu: correct bindings of
checkboxitems (#2921) (4c5a4fb) - FormField: restore
eager-validationprop behavior (#3031) (41dc11c) - InputMenu: removing
tagdoes not changemodelValue(#3054) (5a44394) - locale: improve Traditional Chinese translation (#3051) (5c2c55f)
- Modal/Popover/Slideover: rename
prevent-closetodismissible+ uniformize docs (6fb426f) - NavigationMenu:
arrowstyles afterreka-uimigration (9759320) - NavigationMenu: highlight border on children only with
verticalorientation (e931880) - NavigationMenu: remove
w-fullon root slot (ef7ecd2), closes #3000 - NavigationMenu: unbind link on collapsible trigger with
verticalorientation (82d6344) - SelectMenu: handle
resetSearchTermOnBlurmanually (#3082) (c902a40) - Stepper: correct item
valuetype (4f05b1a) - Stepper: wrong
itemintitle&descriptionslots (473194f), closes #2888 - templates: allow any string in colors autocomplete (5183582), closes #2143
- templates: infer variants types in generated theme (2c99bb8)
- unplugin: invalid url schema on windows (#2899) (9b4694f)
- vue: head injection (#2929) (7302a84)
👋 New Contributors
- @corydeppen made their first contribution in #2870
- @Dodobibi made their first contribution in #2896
- @ilya-buligin made their first contribution in #2908
- @HugoRCD made their first contribution in #2933
- @brunobelloni made their first contribution in #2942
- @rigtigeEmil made their first contribution in #2952
- @MickL made their first contribution in #2846
- @d3xt3r9 made their first contribution in #2975
- @nttps made their first contribution in #2980
- @narr07 made their first contribution in #3024
- @Pwntus made their first contribution in #3013
- @Bitcreep made their first contribution in #3036
- @Barbapapazes made their first contribution in #3055
- @ChiahongHong made their first contribution in #3051
Full Changelog: v3.0.0-alpha.10...v3.0.0-alpha.11
v3.0.0-alpha.10
✨ Highlights
Reka UI
With #2448, Nuxt UI v3 is now using Reka UI v1.0.0-alpha.6: the new major of Radix Vue which brings significant improvements.
However, there are a few breaking changes:
Checkbox
- The
indeterminateprop has been removed in favor ofv-model/default-value:boolean | "indeterminate"
CommandPalette
- The
filterfield on groups has been renamed toignoreFilterfor consistency
InputMenu/SelectMenu
- The
filterprop has been removed in favor ofignore-filter&filter-fields - The
create-itemprop no longer assign tov-modelto provide more flexibility when working with objects. You have to do it yourself in the@createevent which now receive only the typed string as argument.
Tabs
- The content of inactive items is no longer rendered when unmounted by default, use
:unmount-on-hide="false"to get the same result
You can read the Reka UI migration guide if you're interested: https://reka-ui.com/docs/guides/migration#form-component although most of the changes have been done internally.
Calendar
A new Calendar component has been introduced: https://ui3.nuxt.dev/components/calendar
ColorPicker
A new ColorPicker component has been introduced: https://ui3.nuxt.dev/components/color-picker

Stepper
A new Stepper component has been introduced: https://ui3.nuxt.dev/components/stepper
🚀 Features
- Avatar: add
defaultslot for fallback (b741ef3) - Calendar: add
iconprops (#2778) (0f64802) - Calendar: implement component (#2618) (2e9aeb5)
- ColorPicker: implement component (#2670) (e475b64)
- CommandPalette: add
activefield on items for consistency (3765537) - css: use
color-schemeutilities on body (a2512f6) - i18n: add Dutch locale (#2728) (3baddfd)
- i18n: add Turkish locale (#2716) (de8228e)
- locale: add Brazilian Portuguese language (#2825) (b7ff7d8)
- locale: add Japanese language (#2794) (ecc4755)
- locale: add Portuguese language (#2855) (8b5d412)
- locale: add Slovak language (#2821) (68a10f0)
- locale: translate Korean (#2703) (2cbf83e)
- module: migrate to
reka-ui(#2448) (81ac076) - NavigationMenu: handle
item.trailingIcondisplay (4b653ef) - Stepper: new component (#2733) (6484d01)
- Table: handle
meta.classonthandtd(#2790) (004a577)
🐛 Bug Fixes
- Breadcrumb: missing
aria-hiddenon presentation items (a7a1227), closes #2725 - Calendar: handle icons in RTL mode (#2770) (e7b69b7)
- Calendar: omit
as/asChildprops (9478fc0) - ColorPicker: handle RTL mode (#2858) (f98b91c)
- CommandPalette: keep
ignoreFiltergroups at their place (#2833) (3b9ca22) - components: apply class on
triggerinstead ofcontentwhen present (a6ecef0), closes #2132 - components: specify
collisionPaddingto all menus (148b024) - defineShortcuts: return
useEventListenerto unregister the listener (80befc1), closes #2031 - devtools: error with renderer when
colorModeis disabled (#2792) (f06fbaf) - Form: resolve async validation in yup & issue directly mutate state (#2702) (c9806da)
- icons: make
loadingicon clockwise (#2797) (bc2bcb3) - Link: partial query match for Vue (#2787) (a6c2205)
- locale: improve German translation (#2826) (c440c91)
- Modal: prevent from going out of screen (b7ba2c7), closes #2711
- NavigationMenu: wrong badge class (86f2b48), closes #2766
- Progress: handle
horizontalanimation in RTL mode (#2723) (0baa3a0) - Stepper: handle RTL mode (#2844) (198d04d)
- Stepper: missing import (816bb69)
- Table: handle
loadinganimation in RTL mode (#2771) (b1550d5) - Tabs: prevent hover on disabled (a938d24)
- Tabs: truncate not working (c1ff978)
- types: handle array of strings in AppConfig (#2854) (4b241ba)
- useLocale: update locale import to enable tree shaking (#2735) (3bccb67)
👋 New Contributors
- @hasanmumin made their first contribution in #2716
- @Arcitezz made their first contribution in #2728
- @AnOrdinaryPeople made their first contribution in #2735
- @kotering made their first contribution in #2794
- @jakubkoje made their first contribution in #2821
- @phbe made their first contribution in #2826
- @ChristopheCVB made their first contribution in #2854
Full Changelog: v3.0.0-alpha.9...v3.0.0-alpha.10
v2.20.0
🚨 Breaking Changes
- Form: resolve async validation in yup & issue directly mutate state (#2701)
🚀 Features
- Accordion: add
closeevent (#2750) (419a24f) - Badge: handle
iconprop (#2594) (0d1a76e) - InputMenu/SelectMenu: add support for
dot notationinbyprop (#2607) (53df9d9) - Link: allow partial query match for
activeClass(#2663) (03e24f4) - Notification: add
pauseTimeoutOnHoverprop (#2661) (11b8c3d) - Table: add contextmenu handling to table rows (#2283) (c9e6256)
- Table: add custom
@select:allevent (#2581) (ac323c4) - Table: allow dynamically render
checkbox(#2549) (d6daf46)
🐛 Bug Fixes
- AvatarGroup/ButtonGroup/MeterGroup: allow deeply partial
uiconfig (#2542) (bf58086) - Carousel: wrong
uitype withstrategy(07ef771) - components: replace
as constwith correct type in config (#2652) (51c8b8e) - DatePicker: undefined
dayIndex(#2545) (ce955d2) - Form: resolve async validation in yup & issue directly mutate state (#2701) (f3632dd)
- Form: use parsed value from
joiinstead of original state (#2587) (acecff4) - InputMenu/SelectMenu: use
byprop to compare objects & support dot notation invalue-attribute(#2566) (7154254) - Link:
exactQueryprop type (#2781) (4cde571) - Notification: element renders even when no
notificationis present (#2561) (d4e408c) - Table: data outdated when rows change (#2600) (b23f2de)
- Table: missing type on props
loadingState(#2551) (6e66990) - Table: prevent
onClickwhile blocking element (#2592) (9703786) - types: improve
DeepPartialtype for App Config (#2621) (976b03f)
👋 New Contributors
- @Snack-X made their first contribution in #2542
- @nfpocket made their first contribution in #2283
- @julien1619 made their first contribution in #2621
- @jcahal made their first contribution in #2653
- @gioboa made their first contribution in #2652
- @Jevin0 made their first contribution in #2714
- @hansemannn made their first contribution in #2750
- @HarshPatel5940 made their first contribution in #2661
Full Changelog: v2.19.2...v2.20.0
v3.0.0-alpha.9
This release is based on latest
[email protected]and[email protected].
✨ Highlights
Internationalization (i18n)
Nuxt UI v3 now supports internationalization for Nuxt and Vue with automatic direction (ltr / rtl) and already 12 locales translated.
You can read more on https://ui3.nuxt.dev/getting-started/i18n/nuxt
InputNumber
A new InputNumber component based on https://www.radix-vue.com/components/number-field.html.
You can read more on https://ui3.nuxt.dev/components/input-number
PinInput
A new PinInput component based on https://www.radix-vue.com/components/pin-input.html
You can read more on https://ui3.nuxt.dev/components/pin-input
🚀 Features
- css: add
--ui-bg-muted/--ui-border-mutedvariables (7f6db45) - Form: apply transformations (#2550) (75c5e87)
- FormField: add
error-patternprop (#2601) (143612e) - InputMenu/SelectMenu: add
create-itemprop (#2472) (f516d7b) - InputNumber: implement component (#2577) (bd2f077)
- Link: allow partial query match for its active state (#2664) (7329900)
- locale: add Persian language (#2682) (14fb21b)
- locale: add Polish language (#2678) (2fc36c8)
- locale: add support for Arabic (#2582) (602a667)
- locale: add support for Czech (#2593) (4889d30)
- locale: add support for Italian (#2583) (4fbbb25)
- locale: translate Chinese (#2580) (febda5c)
- locale: translate Spanish (#2644) (8ed434c)
- module: support i18n in components (#2553) (2636240)
- NavigationMenu: control items
open&defaultOpenon vertical (30218f1), closes #2608 - PinInput: implement component (#2570) (95aa6f6)
- Popover: add
prevent-closeprop (ea97759), closes #2245 - SelectMenu: use
UInputin search to handle props like icon (ff1e079), closes #2021 - Table: add
captionprop (446f9c1)
🐛 Bug Fixes
- App: missing
vueimports (ddb4690) - App: remove
dirprop (#2630) (7cc26d0) - Breadcrumb/Carousel/Pagination: handle icons in RTL mode (#2633) (e5119a9)
- Breadcrumb: render as
nav(756f791), closes #2649 - Button: improve neutral solid variant hover (8d85498)
- Carousel: use
dirfrom locale (#2647) (1fbbfe8) - ContextMenu/DropdownMenu: relative imports with prefix (47f58f5)
- css:
--font-family-sansrenamed to--font-sans(#2680) (b2fa657) - css: remove useless spacing override (8d00265)
- FormField: missing conditions to apply container classes (#2631) (9241ba1)
- Form: match
error-patternon input validation (#2606) (3584a33) - InputMenu/SelectMenu: init
filterwithlabelKey(18931ac) - InputMenu/SelectMenu: look in
itemsonly withvalue-attribute(0ceafe1), closes #2464 - InputMenu/SelectMenu: multiple not working with generic boolean casting (503f701), closes #2541
- InputMenu/SelectMenu: use
isEqualfromohash(f943f88) - Link: missing relative import (#2588) (95a0bbc)
- Modal/Slideover: prevent
escwithprevent-closeprop (9e2cc5b), closes #2501 - module: remove
fast-deep-equalin favor of customisEqual(37a3597) - module: skip devtools renderer page injection if router integration is disabled (#2571) (afe4003)
- Textarea:
autoresizedoes not work when initializingmodelValue(#2681) (d3a079a) - Toaster: teleport to
body(b0be26d), closes #2404 - Toast: unreachable behind overlays (#2650) (0daac5b)
👋 New Contributors
- @BlackWhite2000 made their first contribution in #2580
- @yeonjulee1005 made their first contribution in #2588
- @adamkasper made their first contribution in #2593
- @Akryum made their first contribution in #2631
- @AaronDewes made their first contribution in #2676
- @tkmcc made their first contribution in #2680
- @mehotkhan made their first contribution in #2682
Full Changelog: v3.0.0-alpha.8...v3.0.0-alpha.9

