-
Notifications
You must be signed in to change notification settings - Fork 742
8000
square
prop (#4008) (894e8a6)table
variant (#3997) (1b6ab27)ui
field in items (#4060) (b9adc83)increment-disabled
/ decrement-disabled
props (#4141) (c7fba2e)collapsible
field in items (2be60cd), closes #3353 #3911tooltip
in items (46c2987), closes #4050tooltip
around thumbs (d140acc), closes #1469progress
prop to hide progress bar (#4125) (92632e9)z-index
on focused element (204953b)neutral
color (7d51a9e), closes #4084 #3629variant
(f2fd778), closes #3998UCheckbox
import (7551a85), closes #4090class
should have priority over ui
prop (e6e510b)div
for error
and help
slots (459a041)useAppConfig
reactive (12303a8)@nuxt/fonts
with default weights (276268d)value
field (#4105) (09b4699)div
tag for title
& description
(a57844e), closes #4096focus:outline-none
with link
variant (999a0f8)base
slot override (c63d2f3)useAppConfig
reactive (869c070), closes #3952Full Changelog: v3.1.1...v3.1.2
closeAll
method (#3984) (ac4c194)isOpen
method to check overlay state (#4041) (a4f3f6d)place-items-center
to grid row (#4034) (8dfdd63)meta
to ctrl
convert on non macos platforms (f3b8b17), closes #3869 #3318nuxt-nightly
(#3996) (bc0a296)value
field type (#3995) (195773e)border-bg
/ divide-bg
utilities (82b5f32)ring-offset-*
utilities (#3992) (e5df026)ui
object (591d59f), closes #3579@theme inline
to properly reference css variables (6131871), closes #4018Full Changelog: v3.1.0...v3.1.1
We've enhanced the utility class system to make it more intuitive and easier to use. While CSS variables provided flexibility, writing classes like text-(--ui-text-muted)
proved cumbersome. We've introduced three major improvements:
- <div class="text-(--ui-primary)">
+ <div class="text-primary">
- <div class="bg-(--ui-error)">
+ <div class="bg-error">
- <div class="text-(--ui-text-muted)">
+ <div class="text-muted">
- <div class="border-(--ui-border)">
+ <div class="border-default">
- <div class="bg-(--ui-bg-elevated)/50">
+ <div class="bg-elevated/50">
rounded-*
utilities to use our --ui-radius
CSS variable, making it easier to maintain consistent border radius across your application: https://ui.nuxt.com/getting-started/theme#radius- <div class="rounded-(--ui-radius)">
+ <div class="rounded-sm">
- <div class="rounded-[calc(var(--ui-radius)*1.5)]">
+ <div class="rounded-md">
- <div class="rounded-[calc(var(--ui-radius)*2)]">
+ <div class="rounded-lg">
These changes are fully backward compatible - existing CSS variable-based classes will continue to work while providing a more ergonomic alternative for new code.
<script setup lang="ts">
import type { CheckboxGroupItem, CheckboxGroupValue } from '@nuxt/ui'
const items = ref<CheckboxGroupItem[]>(['System', 'Light', 'Dark'])
const value = ref<CheckboxGroupValue[]>(['System'])
</script>
<template>
<UCheckboxGroup v-model="value" :items="items" />
</template>
card
and table
variants for more flexible layouts: https://ui.nuxt.com/components/radio-group#variant<script setup lang="ts">
import type { RadioGroupItem, RadioGroupValue } from '@nuxt/ui'
const items = ref<RadioGroupItem[]>(['System', 'Light', 'Dark'])
const value = ref<RadioGroupValue>('System')
</script>
<template>
<URadioGroup v-model="value" variant="table" :items="items" />
</template>
The Vue version now includes built-in support for Inertia.js. Enable it with the inertia: true
option in your vite.config.ts
:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
inertia: true
})
]
})
This automatically replaces RouterLink
with InertiaLink
in all components, providing seamless integration with your Inertia.js applications: https://ui.nuxt.com/getting-started/installation/vue#inertia
The module has been updated to use nuxt/module-builder@1.0.0, bringing improved build performance and better TypeScript support.
Following this change, we've refactored how component types are handled which brings full HMR support with app.config.ts
changes, this was only working when reloading the page previously.
This PR changes .open()
to return an overlay instance with a result
promise property instead of returning the promise directly, providing more flexibility:
<script setup lang="ts>
const modal = useOverlay()
- const result = await modal.open({ count: count.value })
+ const instance = modal.open({ count: count.value })
+ const result = await instance.result
</script>
portal
prop (#3688) (29fa462)select
event (#3678) (22edfd7)content-top
and content-bottom
slots (#3886) (1a46394)attach
prop to opt-out of nested form attachement (#3939) (1a0d7a3)resetSearchTermOnSelect
(cea881a), closes #3782stepSnapping
& disableWheelChange
props (#3731) (f5e6284)close:prevent
event (#3958) (f486423)rounded-*
utilities (#3906) (f9737c8).open()
(#3829) (f3098df)autofocus
/ autofocus-delay
props (0456670), closes #3717card
and table
variants (#3178) (4d138ad)onSelect
field in items (8640831)tr
and td
(#3866) (80dfa88)list-leading
and list-trailing
slots (#3837) (3447a06)autoresize-delay
prop (06414d3), closes #3730icon
, loading
, etc. props to match Input (cb193f1)resize-none
class with autoresize
prop (ffafd81)div
instead of h3
for header tag (75e4792), closes #3963@nuxt/module-builder
to v1 (#3801)The module has been updated to use nuxt/module-builder@1.0.0!
zod
and valibot
(#3618)We now rely on standard-schema for Form validation with valibot
and zod
. Make sure to upgrade to valibot@1.0.0
/ zod@3.24.0
if you use them in your app.
aria-*
& data-*
attrs (2bef1e2), closes #3007@select
event (#3269) (c0e14d0)Full Changelog: v2.21.1...v2.22.0
$attrs
to default slot (#3712) (88f349d)focus:outline-none
instead of focus:outline-hidden
(c231fe5), closes #3658group.id
as key (bc61d29)w-full
class (df00149)@__NO_SIDE_EFFECTS__
(82e2665)fadeFromIndex
prop proxy (f7604e5)help
to aria-describedby
attribute (#3691) (20c3392)searchTerm
on update:open
(3074632), closes #3620aria-current
like NuxtLink
/ RouterLink
(c531d02)active="true"
binding on html (d73768b)aria-*
& data-*
attrs (ade16b7)onClick
(370054b), closes #3631z-index
on viewport (0095d89), closes #3654caption
slot (4ebb94c)focus:outline-hidden
class (1769d5e)open
method type to infer close emit return type (#3716) (bd99c2d)nuxtApp.hooks
& useRuntimeHook
(23bfeb9)Full Changelog: v3.0.1...v3.0.2
You no longer need to use theme(static)
when importing tailwindcss
! 🎉
- @import "tailwindcss" theme(static);
+ @import "tailwindcss";
However, you might still need this when using Tailwind CSS variables in your code explicitly like this for example:
<span
:class="`bg-(--color-light) dark:bg-(--color-dark)`"
:style="{
'--color-light': `var(--color-${chip}-500)`,
'--color-dark': `var(--color-${chip}-400)`
}"
/>
We now rely on standard-schema for Form validation with valibot
and zod
. Make sure to upgrade to valibot@1.0.0
/ zod@3.24.0
if you use them in your app.
vaul-vue
(f401766)We've updated to vaul-vue@0.4.0
which powers the Drawer component. There's no longer a handle
slot, the theme handle
slot has changed a bit with some important values but you have access to a handle-only
prop now: https://ui.nuxt.com/components/drawer#handle-only
content
prop (5dec0e1)any
from proxySlots
(#3623) (764c41a)theme(static)
(#3630) (ecff9ab)disabled
on items (fe0bd83), closes nuxt/ui-pro#911@select
is used (#3580) (e80cc15)@compodium/examples
in auto-imports paths (#3585) (cc504b8)@nuxt/ui-pro
(#3603) (dec2730)Full Changelog: v3.0.0...v3.0.1
We are thrilled to introduce Nuxt UI v3, a comprehensive redesign of our UI library that delivers significant improvements in accessibility, performance, and developer experience. This major update represents over 1,500 commits of dedicated work, collaboration, and innovation from our team and the community.
Read the blog post announcement: https://nuxt.com/blog/nuxt-ui-v3
We've transitioned from Headless UI to Reka UI as our core component foundation, bringing:
Nuxt UI now leverages the latest Tailwind CSS v4, delivering:
We've adopted Tailwind Variants to power our design system, offering:
Nuxt UI provides significantly improved TypeScript support:
Use Nuxt UI in any Vue project without Nuxt by adding the Vite and Vue plugins to your configuration:
Get started with Nuxt UI for Vue →
We want to be transparent: migrating from Nuxt UI v2 to v3 requires significant effort. While we've maintained core concepts and components, Nuxt UI v3 has been rebuilt from the ground up to provide enhanced capabilities.
To upgrade your project:
This release represents thousands of hours of work from our team and the community. We'd like to thank everyone who contributed to making Nuxt UI v3 a reality, especially @romhml, @sandros94, and @hywax for their tremendous work.
Nuxt UI v3.0.0-beta.4 requires Nuxt v3.16 to work, please upgrade your Nuxt to continue using @nuxt/ui
:
nuxi upgrade --force
null
value in model (#3415) (cfe9b2e)useHead
in colors (5ecd227)Full Changelog: v3.0.0-beta.3...v3.0.0-beta.4
colorMode
option (d2ceead), closes #3143Full Changelog: v2.21.0...v2.21.1
required
in root props (60b7e2d)required
in multiple mode (01fa230), closes #2741Full Changelog: v3.0.0-beta.2...v3.0.0-beta.3