Releases: nuxt/ui
v2.12.3
🐛 Bug Fixes
Full Changelog: v2.12.2...v2.12.3
v2.12.2
v2.12.1
🐛 Bug Fixes
- Button: inherit nuxt link props without breaking
nuxt-component-meta
(d3e19dc), closes #578 - InputMenu: take
option-attribute
into account to display label (1a93791) - Link: prevent
type
bind on<a>
(b0df864) - SelectMenu: take
option-attribute
into account to display label (b9fe74b), closes #1151 - Tooltip: typo in kbd component (4405d32)
👋 New Contributors
- @Speelwolf made their first contribution in #1235
Full Changelog: v2.12.0...v2.12.1
v2.12.0
Read our updated documentation on https://ui.nuxt.com.
✨ Highlights
- New
InputMenu
component
Like the SelectMenu
, it allows you to create an autocomplete input with real-time suggestions.
🚀 Features
- Breadcrumb: handle
labelClass
and mergeiconClass
(f623ec1) - Dropdown: handle
labelClass
and mergeiconClass
(1c9835d), closes #716 - Dropdown: handle manual mode (3844714), closes #1143
- Form: expose
submit
function (#1186) (4a25a12) - InputMenu: new component (#1095) (6d8d82a)
- Pagination: add
disabled
prop (0976833), closes #1189 - SelectMenu: add
empty
slot when no options (5d1919a), closes #1089 - SelectMenu: allow control of search query (f735db0), closes #1174
- SelectMenu: allow creating option despite search (#1080) (0fdc8f7)
- Table: add
sort-mode
prop (56e0c9a), closes #1149 - Table: add custom sort function to columns (#1075) (4f3af6c)
- VerticalNavigation: ability to add dividers (#963) (ffd20b3)
- VerticalNavigation: handle
labelClass
and mergeiconClass
(a79f7c0)
🐛 Bug Fixes
- Alert: always pass a function to actions click events (5d78111), closes #1197
- Card: remove
overflow-hidden
on wrapper (4124406), closes #806 #1034 - config: prevent class merge of
avatar
size (b22bd70) - Dropdown: improve placement with
hover
mode (c6aa421), closes #1179 - Dropdown: merge item
class
(7151b7b), closes #1157 - Form: invalid errors when using
clear
by path (#1165) (97a3975) - Form: memory leak (#1185) (ea2a24b)
- forms: dont disable inputs and selects on
loading
(3258167), closes #1117 - Link: handle
active
override when value is false (83631cc) - Popover: allow manual mode without blocking normal behaviour (3334e2a)
- Popover: improve placement with
hover
mode (bc00f9c), closes #781 - RadioGroup: pass
option.disabled
to children (0c8ab9d), closes #1109 - Table: display nothing instead of error when key is missing (00d0fd5), closes #1173
- Table: respect sort prop updates from parent component (#1208) (c6841d0)
- Toggle: add missing
change
event (4c84839), closes #1113 - useShortcuts: include
contenteditable="plaintext-only"
elements inusingInput
(#1159) (648eec3) - VerticalNavigation: improve accessibility (#948) (29e64ca)
👋 New Contributors
- @jchrobakk made their first contribution in #1141
- @slugcat-dev made their first contribution in #1159
- @nathanjcollins made their first contribution in #1145
- @neilmispelaar made their first contribution in #948
- @akintoluvic made their first contribution in #1181
- @Ragura made their first contribution in #1075
- @ivantopo made their first contribution in #1208
Full Changelog: v2.11.1...v2.12.0
v2.11.1
🐛 Bug Fixes
- Breadcrumb: handle divider in rtl (#1049) (e53cdea)
- CommandPalette: missing right padding on input with close button (ad33b26)
- components: move remaining classes to config (#1039) (e408eab)
- module: prevent class merging on
default
children (f07968a), closes #1076 - Notification: handle dynamic backgrounds (#1063) (1f0f618)
- RadioGroup: props reactivity issues (#1065) (7196d81)
- types: favor
Record<string, any>>
instead ofobject
(4d72a75) - types: improve with strict mode (#1041) (4a9b66a)
- types: workaround for
popper
weak type (5718dfd), closes #644
👋 New Contributors
- @emechpi made their first contribution in #1063
Full Changelog: v2.11.0...v2.11.1
v2.11.0
Read our updated documentation on https://ui.nuxt.com.
✨ Highlights
🛠️ Components
- New
Breadcrumb
component
- New
Chip
component
This component behave exactly like the chip
prop on the Avatar
and is meant to replace it in the next major version. The advantage of having a specific component for this is to be able to use on any component:
⌨️ App Config types
We've introduced prop types with validators in https://github.com/nuxt/ui/releases/tag/v2.9.0 to enable autocomplete. Initially, this feature was compatible only with the default configuration of @nuxt/ui
. Now, autocomplete functionality extends to custom values specified in your app.config.ts
. As an illustration, consider the following definition in app.config.ts
:
export default defineAppConfig({
ui: {
button: {
color: {
custom: {
subtle: '...'
}
}
}
}
})
Autocomplete will now function for the color
and variant
props of the Button
and include your custom values:
🪄 Dynamic Icons
The Icon
component now has a dynamic
prop that will use nuxt-icon instead of the default behaviour with egoist/tailwindcss-icons.
This can be quite useful when using dynamic class names or for icons coming from a database for example.
This behaviour can be changed globally in your app.config.ts
through ui.icons.dynamic
:
export default defineAppConfig({
ui: {
primary: 'green',
gray: 'slate',
icons: {
dynamic: true
}
}
})
🎨 Custom Icons
The ui.icons
option in your nuxt.config.ts
can now be an object to completely override the @egoist/tailwindcss-icons
plugin, this can be quite useful if you want to use a custom icon collection for example:
import { getIconCollections } from '@egoist/tailwindcss-icons'
export default defineNuxtConfig({
ui: {
icons: {
// might solve stretch bug on generate, see https://github.com/egoist/tailwindcss-icons/issues/23
extraProperties: {
'-webkit-mask-size': 'contain',
'-webkit-mask-position': 'center'
},
collections: {
foo: {
icons: {
'arrow-left': {
// svg body
body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18" />',
// svg width and height, optional
width: 24,
height: 24
}
}
},
...getIconCollections(['heroicons', 'simple-icons'])
}
}
}
})
🛟 Tailwind CSS bundle
There is an open issue #877 to reduce the final bundle size as Tailwind CSS generate classes for all the components at the moment. As a first step to solve this, we've splitted the config of each component into separate files in #930 so you can have at least the option to exclude files manually in your tailwind.config.ts
:
import { resolve } from 'pathe'
import type { Config } from 'tailwindcss'
export default <Partial<Config>>{
content: {
files: [
'!' + resolve('node_modules/@nuxt/ui/dist/runtime/ui.config/data/table.mjs'),
'!' + resolve('node_modules/@nuxt/ui/dist/runtime/ui.config/overlays/modal.mjs')
]
}
}
🚀 Features
- Breadcrumb: new component (#506) (a35bfc7)
- Checkbox: config
label
,required
andhelp
size (a1b38c4) - Chip: new component (#886) (d4f1b5e)
- FormGroup: add eager validation (#992) (d39e2de)
- Icon: switch to
nuxt-icon
withdynamic
prop or app config (#862) (c601fc6) - module: allow options override of
@egoist/tailwindcss-icons
plugin (#1013) (ec58948) - Notification: customize default timeout (#1003) (83c3be7)
- Popover: ability to add overlay (#1014) (06d4510)
- SelectMenu: allows to clear search query on close (#968) (11ccbbb)
- Textarea: add default slot for complex usages (55697e6), closes #971
- Toggle: add
size
prop (#950) (3c71bf3) - types: support custom values from
app.config.ts
(#863) (7339324)
🐛 Bug Fixes
- Alert: improve config options (91511b9), closes #760
- Alert: prevent
gap
when no close button or action (9a1a1b8), closes #831 - ButtonGroup: handle components with children (#999) (f4be95d)
- CommandPalette: activate first option after async search (#981) (a975939)
- defineShortcuts: support minus
-
key (#962) (de38afd) - Dropdown: pass event to
click
function (60fa2be) - Dropdown: use
NuxtLink
withcustom
prop to close on select (f323379), closes #899 - FormGroup: hydration mismatch on inputId (#942) (a3046aa)
- FormGroup: remove inputId if the input is a fieldset (#914) (e81d5cf)
- Input/Textarea: add
v-model
modifiers (#856) (68f6956) - Link: handle
active
state whento
prop is not provided (6cc77a3), closes #988 - Link: reactivity issue with
active
prop (15a40f5), closes nuxt/nuxt.com#1432 - module:
boolean
types and bump nuxt to3.8.2
(#1006) (ca62ce1) - module: use correct alias for
#ui-colors
(#913) (c84438f) - Notification: improve config options (7cb987d)
- Notification: prevent
gap
when no close button or action (ded6a7f) - Notifications: teleport to
body
(#909) (8451f4d) - Progress: percentage calculation (#939) (c55871b)
- Radio: prevent
help
text from inlining with label (#894) (a2d70f0) - **SelectMe...
v2.10.0
Read our updated documentation on https://ui.nuxt.com.
✨ Highlights
- New
Divider
component
- New
RadioGroup
component
- New
Progress
component
- New
Meter/MeterGroup
components
🚀 Features
- CommandPalette: handle
filter
attribute in groups (#871) (8ba2a79) - Divider: new component (#757) (eb9ce6a)
- Form: handle
@error
event (#718) (e16379f) - Input/Textarea: allow specifying autofocus delay for page transitions (#816) (8bfd359)
- Meter: new component (#827) (abbcc37)
- Pagination: add first and last page buttons (#842) (c5ce997)
- Popover: manual mode & horizontal offset (#781) (92b8618)
- Dropdown/SelectMenu/ContextMenu/Popover/Tooltip:
arrow
option &popper
docs (#875) (f785ecd) - Progress: new component (#697) (2c5559b)
- RadioGroup: configurable label size (#881) (5a2644b)
- RadioGroup: new component (#730) (23d5dc7)
- Range: add
2xs
,xs
,xl
and2xl
sizes to match progress component (3cb3914), closes #673 - Table: add
v-model:sort
prop (#803) (9f4d88e)
🐛 Bug Fixes
- Accordion: toggle correct element when keyboard press (#805) (96296c3)
- Dropdown: use
NuxtLink
instead ofULink
(#882) (c37ad8b) - FormGroup: ensure size exists in config (#695) (f5f3388)
- Modal: remove padding on mobile with
fullscreen
enabled (550ac10), closes #811 - Notification: add roles for accessibility (#724) (40f3b16)
- Table: enable sorting for nested column keys (#835) (b4f7b03)
- Table: prevent
@select
event call when selecting all rows (#838) (51f4d54) - Tabs: truncate buttons content (ddbb431), closes #796
- types: handle sub-objects in
app.config.ts
(button colors) (7be2af7), closes #858
👋 New Contributors
- @claytonchew made their first contribution in #788
- @albertcito made their first contribution in #718
- @nilsso made their first contribution in #781
- @acidjazz made their first contribution in #816
- @DarkGhostHunter made their first contribution in #803
- @MuhammadM1998 made their first contribution in #724
- @mwohlan made their first contribution in #835
- @maxsteinwand made their first contribution in #842
- @brycecammo made their first contribution in #859
- @connerblanton made their first contribution in #868
A huge thank you to everyone who contributed to make this release, this is truly an awesome community ❤️
Full Changelog: v2.9.0...v2.10.0
v2.9.0
Read our updated documentation on https://ui.nuxt.com
✨ Highlights
This release focuses on performance and DX:
-
Props having a validator are now typed to provide autocomplete
-
Lodash has been completely removed from
@nuxt/ui
-
Overall bundle size has been greatly reduced by only loading the config of the components used
-
app.config.ts
now also uses tailwind-merge like theui
prop to smartly merge classes
Like #509 in https://github.com/nuxt/ui/releases/tag/v2.8.0, breaking changes might occur but it's highly unlikely as you'd already rewrite the entire config line anyway. You can still go back to the old behaviour by setting the strategy to override
either in the app.config.ts
for the config or specifically in the ui
prop.
Everything is explained in #692, I'd recommend reading it.
🚀 Features
- FormGroup: add slots (#714) (2fc9385)
- Link: add
active
prop to override default behaviour (#732) (8257a11) - Link: add
as
prop (#535) (e404912) - module: use
tailwind-merge
forapp.config
& move config to components & type props (#692) (34d2f57) - module: remove
lodash-es
(#648) (d6476d1) - Table: add ability to custom style for
td
andtr
(#741) (874447c)
🐛 Bug Fixes
- Accordion: close other items in circular order (#735) (6887f73)
- FormGroup: use explicit label instead of implicit label (#638) (681f0e5)
- Pagination: handle
max > 5
andmax
equal total pages (#728) (a071e4b) - Range: fix track pseudo-elements for mozilla (#636) (8955595)
- SelectMenu: handle numbers (0544a01), closes #574
- Table: add missing classes in
app.config.ts
(a603ea5), closes #655 - Table: select all rows without select listener (#652) (83d609d)
- Tabs: add visible focus indicator on active tabs (#690) (be734fc)
- Tabs: allow custom keys in
TabItem
(#671) (15e418e) - Tabs: prevent focus of
TabPanel
withtabindex="-1"
(cbb2f28)
👋 New Contributors
- @farnabaz made their first contribution in #664
- @Sma11X made their first contribution in #652
- @iBobik made their first contribution in #671
- @Flowko made their first contribution in #648
- @HigherOrderLogic made their first contribution in #690
- @Levy-from-Odessa made their first contribution in #714
Full Changelog: v2.8.1...v2.9.0
v2.8.1
🐛 Bug Fixes
- Form: fix
getValibotError
to avoid importingsafeParseAsync
(#640) (e8daf7f) - Form: fix valibot imports (#617) (1a7eb27)
- Pagination: page numbers not clickable (#624) (c1e0654)
👋 New Contributors
- @LemonAppleMo made their first contribution in #624
- @jduartea made their first contribution in #640
Full Changelog: v2.8.0...v2.8.1
v2.8.0
✨ Highlights
NuxtLabs UI is now Nuxt UI, this rebranding involves the transfer of the repository from nuxtlabs
to nuxt
GitHub organization. Both packages are now @nuxt/ui
and @nuxt/ui-edge
, previous @nuxthq
ones will be deprecated.
The documentation has also been moved to https://ui.nuxt.com and got itself a brand new landing page.
nuxtlabs-ui-to-nuxt-ui.mp4
🚨 Breaking Changes
- use
tailwind-merge
for class merging (#509)
Everything is explained in the PR description, I'd strongly recommend reading it.
🚀 Features
- Avatar: add
icon
prop as fallback (df3b202) - Avatar: handle
icon
default fromapp.config.ts
(55daed0) - ButtonGroup: add
orientation
prop (#603) (b3bc6e2) - Form: add
valibot
support (#615) (ab5153a) - Form: improve form control and input validation trigger (#487) (6d7973f)
- Modal: add
fullscreen
prop (#523) (7e2bebd) - module: add
DEFAULT
shade toprimary
color (#493) (c6056ed) - module: use
tailwind-merge
for class merging (#509) (8880bdc) - Table: support nested keys in columns (#503) (858886a)
- Tabs: control selected index (#490) (aaf09ad)
🐛 Bug Fixes
- Alert: fix wrong type of
actions
(#507) (b243e8c) - AvatarGroup: add
justify-end
to wrapper to prevent right align (e578b0d) - AvatarGroup: pass default
size
to max avatar (e49c673) - Badge: allow
label
as number (7c157ce) - Button: add missing prop types (#508) (a8a1c15)
- Form: use safeParseAsync for zod (#497) (8b19b18)
- Popover: handle
hover
mode with padding like dropdown (dc951ff) - Radio: put back
id
for label selection (9b3a22e) - SelectMenu: invalid
gap
values (998314e) - Table: empty state is displayed if null (#517) (44ba758)
- Table: missing component imports (#608) (d936316)
- Tabs: recompute marker position when
v-model
changes (#524) (fdce429) - Tooltip: hide on touch devices (#580) (f1ed007)
Full Changelog: v2.7.0...v2.8.0