Compare commits

..

1405 Commits

Author SHA1 Message Date
Benjamin Canac
16a4b0bbb1 up 2025-05-15 16:48:25 +02:00
Benjamin Canac
dd34d49cd9 Merge branch 'v3' into docs/ai-search 2025-05-15 16:47:37 +02:00
Benjamin Canac
d29e1481f2 chore(deps): update @nuxt/ui-pro 2025-05-15 15:57:54 +02:00
Benjamin Canac
79aa161c6d docs(showcase): remove submit button 2025-05-15 15:42:25 +02:00
Benjamin Canac
94ea75f441 docs(content): update badges 2025-05-15 15:30:02 +02:00
Benjamin Canac
0c368c8ab8 chore(release): v3.1.2 2025-05-15 15:26:25 +02:00
renovate[bot]
c5796c4f82 chore(deps): update all non-major dependencies (v3) (#4129)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-15 15:10:05 +02:00
Benjamin Canac
204953b780 fix(ButtonGroup): add z-index on focused element 2025-05-15 14:30:56 +02:00
Benjamin Canac
2e4c3082a1 fix(InputNumber): handle inside button group
Resolves #4155
2025-05-15 14:26:32 +02:00
Benjamin Canac
f2fd778c0a fix(Checkbox/RadioGroup): render correct element without variant
Resolves #3998
2025-05-15 11:32:15 +02:00
Romain Hamel
d79da9d7b6 fix(FormField): block form field injection after use (#4150) 2025-05-14 19:24:47 +02:00
Benjamin Canac
a4429eee09 docs(app): add theme query in examples page 2025-05-14 19:05:06 +02:00
Benjamin Canac
0905b2b3d5 chore(components): move back item.class on link
Partial revert of #4060
2025-05-14 18:18:21 +02:00
Hugo Richard
c7fba2e0eb feat(InputNumber): add increment-disabled / decrement-disabled props (#4141) 2025-05-14 17:41:34 +02:00
Maxime Pauvert
4167f04205 docs(theme): add note about color definition (#3976)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-14 14:32:19 +02:00
Benjamin Canac
276268d311 fix(module): configure @nuxt/fonts with default weights 2025-05-14 13:18:09 +02:00
Benjamin Canac
717e35f098 docs(app): improve slug page metas 2025-05-14 12:55:58 +02:00
Benjamin Canac
459a0410ab fix(FormField): use div for error and help slots 2025-05-14 12:55:58 +02:00
J-Michalek
b9adc83e78 feat(components): add ui field in items (#4060)
Co-authored-by: Jakub <jakub.michalek@freelo.io>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-13 17:40:29 +02:00
Benjamin Canac
d7a4d029b7 fix(Slider): handle generic types 2025-05-13 17:21:42 +02:00
Benjamin Canac
3c8d6cd01d fix(Input/Textarea): handle generic types
Resolves nuxt/ui-pro#887
2025-05-13 17:18:06 +02:00
Benjamin Canac
67da90a2f6 fix(Link): consistent behavior between nuxt, vue and inertia (#4134) 2025-05-13 14:45:18 +02:00
Daniele Nicosia
894e8a61b6 feat(Badge): add square prop (#4008)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-13 14:44:23 +02:00
TribeWeb
1b6ab271ea feat(CheckboxGroup): add table variant (#3997)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-13 14:28:15 +02:00
Vachmara
0dc4678c68 fix(NavigationMenu): arrow position conflict (#4137)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-13 14:02:02 +02:00
kacijan
e86dc79e51 feat(locale): add Slovenian language (#4140)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-13 12:45:52 +02:00
renovate[bot]
35997377a6 chore(deps): update nuxt framework to ^3.17.3 (v3) (#4133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 17:17:58 +02:00
Benjamin Canac
12303a87be fix(inertia): make useAppConfig reactive
Follow-up 869c0708bd
2025-05-12 17:11:19 +02:00
renovate[bot]
f84ccddcd6 chore(deps): lock file maintenance (v3) (#4081)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: HugoRCD <hugo.richard@epitech.eu>
2025-05-12 16:42:17 +02:00
Benjamin Canac
869c0708bd fix(vue): make useAppConfig reactive
Resolves #3952

Co-Authored-By: Hugo Richard <hugo.richard@epitech.eu>
2025-05-12 15:05:25 +02:00
Benjamin Canac
c63d2f380a fix(Toaster): allow base slot override 2025-05-12 14:53:09 +02:00
Hugo Richard
92632e969e feat(Toast): add progress prop to hide progress bar (#4125)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-12 14:47:02 +02:00
renovate[bot]
f6d7994a55 chore(deps): update all non-major dependencies (v3) (#4127)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:56:05 +02:00
Benjamin Canac
f738f68f76 docs(navigation-menu): improve 2025-05-12 11:31:23 +02:00
Benjamin Canac
17d6803329 docs(ComponentProps): improve schema collapsible display 2025-05-12 11:31:22 +02:00
Benjamin Canac
732a67aa88 docs(app): remove banner 2025-05-12 11:31:22 +02:00
renovate[bot]
bdf129fc38 chore(deps): update tailwindcss to ^4.1.6 (v3) (#4128)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:18:16 +02:00
Benjamin Canac
d140acc608 feat(Slider): handle tooltip around thumbs
Resolves #1469
2025-05-10 21:53:12 +02:00
Mateusz Kalinowski
cc20a26f07 fix(ColorPicker): make thumb touch draggable (#4101)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-10 20:03:56 +02:00
Hugo Richard
983c6382d1 docs(llms): handle prose props in llms-full.txt (#4111) 2025-05-10 19:52:01 +02:00
Benjamin Canac
37eabc89bd docs(tabs): improve active item example
Resolves #4092
2025-05-10 18:11:33 +02:00
Benjamin Canac
a57844e416 fix(Stepper): use div tag for title & description
Resolves #4096
2025-05-10 17:59:27 +02:00
Benjamin Canac
2be60cddfe feat(NavigationMenu): add collapsible field in items
Resolves #3353, resolves #3911

Reverts 07e1b4f1f4
2025-05-10 17:51:49 +02:00
Norbiros
09b4699aea fix(Select): support more primitive types in value field (#4105) 2025-05-10 15:06:20 +02:00
Benjamin Canac
46c2987ebf feat(NavigationMenu): handle tooltip in items
Resolves #4050
2025-05-10 13:09:21 +02:00
Malik
f244d15b96 fix(Badge/Button): handle zero value in label correctly (#4108) 2025-05-09 19:27:00 +02:00
Benjamin Canac
1820e3cc6f up 2025-05-09 19:10:05 +02:00
Benjamin Canac
450948646a docs(app): implement AI search 2025-05-09 18:26:28 +02:00
Benjamin Canac
aaa60c0798 chore(github): update reproduire workflow 2025-05-09 15:08:21 +02:00
Hugo Richard
5467d71cc2 docs(llms): some ::component-code not parsed in llms-full.txt (#4099)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-09 13:49:06 +02:00
renovate[bot]
941a54e5e3 chore(deps): update all non-major dependencies (v3) (#4078)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-09 10:40:46 +02:00
Benjamin Canac
655f98ffed docs(Header): update raycast extension link 2025-05-08 18:46:09 +02:00
Benjamin Canac
999a0f8467 fix(Tabs): set focus:outline-none with link variant 2025-05-07 21:20:36 +02:00
Benjamin Canac
2739939c46 chore(deps): update @nuxt/ui-pro 2025-05-07 19:37:21 +02:00
Benjamin Canac
2a241c87c3 chore(github): update reproduire workflow 2025-05-07 17:29:40 +02:00
Benjamin Canac
e6e510b848 fix(components): class should have priority over ui prop 2025-05-07 17:23:27 +02:00
Benjamin Canac
a655da1394 chore(github): add reproduire workflow 2025-05-07 15:58:36 +02:00
Benjamin Canac
3a71256d59 docs(contributions): update content url 2025-05-07 15:58:36 +02:00
Benjamin Canac
404359a6ca chore(github): improve v3 issue templates 2025-05-07 15:58:36 +02:00
Igor G
1e4e9c4708 docs(table): add grouped rows example (#4074)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-07 15:25:59 +02:00
Benjamin Canac
6f07f6bd6e docs(examples): remove key from useFetch with params watch 2025-05-07 10:52:06 +02:00
Benjamin Canac
4c1093bde4 docs(examples): add missing @vueuse/core imports 2025-05-07 10:51:46 +02:00
Benjamin Canac
7d51a9e479 fix(Calendar): wrong color for today date with neutral color
Resolves #4084

Possible regression of #3629
2025-05-06 17:36:46 +02:00
Benjamin Canac
04bdbcfc6e chore(module): remove processCSSVariables option
Not needed since https://github.com/nuxt/fonts/releases/tag/v0.11.0
2025-05-06 17:02:12 +02:00
Benjamin Canac
58aa296425 playground(vue): missing fonts 2025-05-06 16:49:36 +02:00
Benjamin Canac
d3df3bb929 fix(templates): dont write unused variants in theme files 2025-05-06 16:03:28 +02:00
Benjamin Canac
4863775e17 docs(app): fix tabs trigger width
Regression of 06e5689da8
2025-05-06 15:22:52 +02:00
Benjamin Canac
7551a85ad2 fix(CheckboxGroup): relative UCheckbox import
Resolves #4090
2025-05-06 12:15:54 +02:00
Benjamin Canac
c2bcb8e264 docs(kbd): update title to fix llms-full.txt 2025-05-06 10:45:31 +02:00
renovate[bot]
88124b85c5 chore(deps): update dependency reka-ui to ^2.2.1 (v3) (#4082)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-05 18:46:26 +02:00
Benjamin Canac
9f539c9545 chore(renovate): remove vue-tsc ignore 2025-05-05 18:25:34 +02:00
Benjamin Canac
41d4ffe5b5 chore(renovate): add group for reka-ui 2025-05-05 18:20:11 +02:00
renovate[bot]
d8a0bbe710 chore(deps): update nuxt framework to ^3.17.2 (v3) (#4079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 18:09:35 +02:00
Benjamin Canac
06e5689da8 fix(Tabs): prevent trigger truncate without parent width
Resolves #4056
2025-05-05 15:47:27 +02:00
Benjamin Canac
67d19f582a docs(team): center cards 2025-05-05 15:01:24 +02:00
Benjamin Canac
650bc40253 docs(index): update contributors count 2025-05-05 15:01:24 +02:00
renovate[bot]
2f0f317a12 chore(deps): update devdependency vite to ^6.3.5 (v3) (#4071)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 14:55:16 +02:00
renovate[bot]
d2a26939ad chore(deps): update all non-major dependencies (v3) (#4066)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 10:14:30 +02:00
renovate[bot]
b7a8146898 chore(deps): update tailwindcss to ^4.1.5 (v3) (#4067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 10:14:12 +02:00
Victor Bianchi
e81464a43e fix(inertia): link always render as anchor tag (#3989)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Eugen Istoc <eugenistoc@gmail.com>
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2025-05-04 17:36:45 +02:00
Benjamin Canac
4b3d2a7b00 chore(deps): update @nuxt/ui-pro 2025-05-02 19:20:03 +02:00
Benjamin Canac
6f6fa6ae4a chore(release): v3.1.1 2025-05-02 18:28:20 +02:00
Jez McKean
c7bb6d4c4b docs(toast): fix toaster example links (#4044) 2025-05-02 18:20:10 +02:00
Daniel Jimenez Gutierrez
c23f85fe33 docs(use-overlay): typo on unMount method (#4047) 2025-05-02 18:18:47 +02:00
Benjamin Canac
591d59fe89 fix(theme): improve app config types for ui object
Resolves #3579
2025-05-02 17:06:20 +02:00
Benjamin Canac
caa3bf9c7e docs(carousel): improve thumbnails example
Resolves #4032
2025-05-02 11:58:55 +02:00
Benjamin Canac
2731011bb7 docs(nuxt.config): put back local module import 2025-05-02 11:52:43 +02:00
Benjamin Canac
aebf0b3dca fix(NavigationMenu): remove sm:w-auto from content slot
Resolves #3987

Reverts abe0859691
2025-05-02 11:48:34 +02:00
renovate[bot]
6651987dc6 chore(deps): update nuxt framework to ^3.17.1 (v3) (#4003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-02 10:21:32 +02:00
Eugen Istoc
61aabd72e4 chore(deps): add missing vue-component-type-helpers dependency (#4043) 2025-05-01 22:57:50 +02:00
Vitor Camarotto
8dfdd63ce3 fix(Calendar): add place-items-center to grid row (#4034) 2025-05-01 19:02:06 +02:00
renovate[bot]
e6369a6746 chore(deps): update devdependency vite to v6.3.4 [security] (v3) (#4037)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-01 18:49:10 +02:00
Eugen Istoc
a4f3f6d531 feat(useOverlay): add isOpen method to check overlay state (#4041) 2025-05-01 18:48:41 +02:00
Sandro Circi
c5bdec0f64 fix(templates): put back args to watch in dev (#4033) 2025-05-01 18:47:03 +02:00
renovate[bot]
87a7828931 chore(deps): update dependency motion-v to v1 (v3) (#4004)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-30 15:48:32 +02:00
Hugo Richard
501468960b docs(templates): add portfolio template (#4031) 2025-04-30 15:33:06 +02:00
Benjamin Canac
13cd6be679 docs(command-palette): wrong reka-ui link 2025-04-29 22:46:59 +02:00
Benjamin Canac
e421ea57ec docs(pin-input): missing reka-ui link 2025-04-29 22:46:59 +02:00
Malik
799d7ae422 docs(input-number): broken reka-ui link (#4028)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-29 22:44:53 +02:00
Benjamin Canac
be9b1f659a docs(team): update grid 2025-04-29 18:16:59 +02:00
Eugen Istoc
39e29fccf1 fix(useOverlay): improve types and docs (#4012)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-29 18:09:39 +02:00
reslear
195773ec7d fix(RadioGroup): improve items value field type (#3995) 2025-04-29 18:02:38 +02:00
Benjamin Canac
d7710795df chore(github): add playground job in module workflow (#4021) 2025-04-29 17:48:09 +02:00
Benjamin Canac
53f8b34bef chore: use module workspace 2025-04-29 17:21:43 +02:00
Benjamin Canac
df83ab355e chore(deps): update vue-tsc (#4023) 2025-04-29 17:07:24 +02:00
Hugo Richard
e5df026993 fix(theme): add missing ring-offset-* utilities (#3992)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-29 16:10:53 +02:00
Benjamin Canac
6131871a0d fix(theme): use @theme inline to properly reference css variables
Resolves #4018

https://tailwindcss.com/docs/theme#referencing-other-variables
2025-04-29 14:39:08 +02:00
Alain Limoges
9543bce787 docs(form-field/switch): fix typo (#4015) 2025-04-29 14:36:40 +02:00
renovate[bot]
5e345a8a73 chore(deps): update all non-major dependencies (v3) (#4002)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-29 14:36:40 +02:00
Benjamin Canac
8acf3c51db fix(theme): define default shades for named tailwindcss colors
Resolves #3977
2025-04-29 14:36:31 +02:00
Benjamin Canac
f3b8b17dc5 fix(defineShortcuts): bring back meta to ctrl convert on non macos platforms
Resolves #3869, resolves #3318

Co-Authored-By: Sylvain Marroufin <marroufin.sylvain@gmail.com>
2025-04-29 14:36:31 +02:00
Daniel Roe
bc0a296f9d fix(module): support nuxt-nightly (#3996) 2025-04-29 14:36:31 +02:00
Eugen Istoc
ac4c1946ec feat(useOverlay): add closeAll method (#3984) 2025-04-29 14:36:31 +02:00
Benjamin Canac
82b5f322eb fix(theme): add missing border-bg / divide-bg utilities 2025-04-29 14:36:19 +02:00
Benjamin Canac
fb6cf708a6 chore(deps): update @nuxt/content 2025-04-24 21:35:59 +02:00
Benjamin Canac
8ab1f75e47 chore(github): revert docs trigger 2025-04-24 17:44:30 +02:00
Benjamin Canac
e9b19349ba chore(deps): update @nuxt/ui-pro 2025-04-24 16:16:57 +02:00
Benjamin Canac
b2b206e3f4 docs: update badges 2025-04-24 16:16:29 +02:00
Benjamin Canac
b779064129 docs(radio-group): add missing types on variant 2025-04-24 16:16:29 +02:00
Benjamin Canac
94155258e2 chore(github): prevent docs workflow to run on tags 2025-04-24 16:16:29 +02:00
Maxime Pauvert
c63a6dd133 chore(readme): add pro link (#3970) 2025-04-24 15:43:12 +02:00
Benjamin Canac
79833035de chore(release): v3.1.0 2025-04-24 14:29:07 +02:00
Benjamin Canac
79e7c7b729 chore(deps): update @nuxt/ui-pro 2025-04-24 13:00:11 +02:00
Benjamin Canac
bc06185282 fix(CheckboxGroup): proxy slots & ui prop 2025-04-24 12:38:44 +02:00
Guillaume REMBERT
6e27304d8c fix(Table): improve data reactivity (#3967)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-24 12:10:37 +02:00
Benjamin Canac
b4f8ac7ff7 chore(deps): update nuxt-component-meta 2025-04-24 12:10:29 +02:00
renovate[bot]
a2fa1accaa chore(deps): update all non-major dependencies (v3) (#3946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 12:03:00 +02:00
kyyy
f486423381 feat(Modal/Popover/Slideover): add close:prevent event (#3958)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-23 17:38:44 +02:00
Romain Hamel
975331a7b1 docs(installation): update instructions for inertia (#3964)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-23 17:36:06 +02:00
Benjamin Canac
75e4792f7f fix(Accordion): use div instead of h3 for header tag
Resolves #3963
2025-04-23 16:12:13 +02:00
Benjamin Canac
4a969a8b9e chore(github): add release workflow on v3* tags 2025-04-23 15:31:30 +02:00
Benjamin Canac
664a8c7524 chore(deps): missing caret on motion-v 2025-04-23 13:08:23 +02:00
Benjamin Canac
fbcc3139a3 chore(Skeleton): remove aria-busy:cursor-progress class 2025-04-23 11:25:43 +02:00
Guillaume Chau
1a46394668 feat(components): add new content-top and content-bottom slots (#3886)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-23 11:02:50 +02:00
Benjamin Canac
9ca213bd33 fix(InputMenu/SelectMenu): remove valueKey string case
Resolves #3949

Regression of #3331
2025-04-23 10:22:28 +02:00
kyyy
3484832822 fix(Skeleton): improve accessibility (#3613)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 22:06:05 +02:00
andr35
80dfa88ea4 feat(Table): conditionally apply classes to tr and td (#3866)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 21:14:57 +02:00
Benjamin Canac
d710141a1b chore(deps): update nuxt-component-meta 2025-04-22 18:50:45 +02:00
Hugo Richard
d3e2a3f33a docs(checkbox-group): add og images (#3957) 2025-04-22 18:47:55 +02:00
TribeWeb
9c3d53a02d feat(CheckboxGroup): new component (#3862)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2025-04-22 18:03:27 +02:00
Polly
22edfd708a feat(Carousel): add select event (#3678)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 16:44:47 +02:00
Kheuval
e25aa78050 docs(table): add infinite scroll example (#3656)
Co-authored-by: Hadrien Hartstein <hadrien@emagma.fr>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 16:14:59 +02:00
Igor G
122e8ac8f4 fix(Table): pass header colspan to th (#3926) 2025-04-22 16:07:23 +02:00
Hung Chang
5fc6312ab1 docs(carousel): add thumbnails example (#3740)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 15:44:40 +02:00
Stijn Slats
83f0a24704 docs(table): add drag and drop example (#3700)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 15:31:57 +02:00
Evan Schleret
13c299533f docs(calendar): add external controls example (#3793)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-22 15:17:17 +02:00
Nathanaël Louison
db11db6ff1 fix(usePortal): adjust portal target resolution logic (#3954) 2025-04-22 12:05:14 +02:00
Benjamin Canac
50863635d6 fix(Alert/Toast): display actions when using slots
Fixes #3950
2025-04-21 18:25:52 +02:00
Nathanaël Louison
29fa46276d feat(App): add global portal prop (#3688)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-21 17:42:55 +02:00
Benjamin Canac
7a35baebc7 chore(templates): wrong theme keys for fill and stroke 2025-04-21 16:52:57 +02:00
Benjamin Canac
b6f6cee1a9 chore(deps): update @nuxt/ui-pro 2025-04-21 16:27:51 +02:00
Benjamin Canac
d49e0dadee feat(module): define neutral utilities (#3629)
Co-authored-by: Sébastien Chopin <atinux@gmail.com>
2025-04-21 15:20:53 +02:00
renovate[bot]
2b315fd855 chore(deps): lock file maintenance (v3) (#3941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 11:48:01 +02:00
Romain Hamel
f42949820b fix(Form): input and output type inference (#3938)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-21 11:04:23 +02:00
renovate[bot]
d2ba99797c chore(deps): update pnpm to v10.9.0 (v3) (#3944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 11:02:27 +02:00
renovate[bot]
fd23038b1a chore(deps): update devdependency release-it to v19 (v3) (#3931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 11:01:51 +02:00
renovate[bot]
fe3ec0c183 chore(deps): update all non-major dependencies (v3) (#3888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 10:42:50 +02:00
Romain Hamel
1a0d7a3103 feat(Form): add attach prop to opt-out of nested form attachement (#3939) 2025-04-20 17:29:36 +02:00
Federico Mameli
c31bffad1b fix(vite): vitest skipping nuxt imports transformations (#3925) 2025-04-18 10:34:21 +02:00
Sébastien Chopin
dd8f7a77a5 docs: don't import color mode from vueuse (#3929) 2025-04-18 09:04:26 +02:00
ExXTreMe315
eb46e31ffb docs(modal): typo in programmatic emit (#3918)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-17 17:49:04 +02:00
Lo
8ea99f0c4f docs(color-mode): fix computed setter logic in ColorModeButton.vue example (#3903) 2025-04-17 17:18:26 +02:00
Hannes Küttner
f6b376110c fix(InputMenu/Select/SelectMenu): add min-w-fit to content slot (#3922) 2025-04-17 14:13:55 +02:00
Hannes Küttner
01d8dc72ad fix(components): respect transform-origin in popper content (#3919)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-17 12:05:04 +02:00
Benjamin Canac
445aac2d57 docs(templates): add chat template 2025-04-16 18:08:11 +02:00
Hugo Richard
391828a2c2 docs(llms): improve llms-full.txt content (#3848)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-16 16:55:42 +02:00
Soryn
02b6b38a56 docs: change favicon color on theme color change (#3917) 2025-04-16 16:50:23 +02:00
Danila Poyarkov
47cdc2e1d8 fix(Link): proxy download property (#3879) 2025-04-16 16:15:13 +02:00
Benjamin Canac
a7d3097f8d chore(locale): order exports 2025-04-16 16:12:44 +02:00
Benjamin Canac
7ac7aa9ba7 feat(module): define default color shades (#3916) 2025-04-16 16:10:54 +02:00
Benjamin Canac
f9737c8f40 feat(module): dynamic rounded-* utilities (#3906) 2025-04-16 15:57:32 +02:00
Benjamin Canac
4e39cc59f8 chore(deps): update @nuxt/ui-pro 2025-04-16 15:47:36 +02:00
renovate[bot]
28accc4aa0 chore(deps): lock file maintenance (v3) (#3812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 10:31:03 +02:00
Sandro Circi
5d10f242bd chore(github): separate builds (#3885) 2025-04-16 10:26:10 +02:00
ElshadBeg
2d5c881639 chore(locale): rename Uyghur language code (#3908) 2025-04-16 10:25:44 +02:00
Selemon Brahanu
ad63753b5e docs(installation): improve .vscode/settings.json json (#3881)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-15 17:53:20 +02:00
Neil Richter
e5a1e26f9d fix(types): allow color identifiers with dashes (#3896) 2025-04-15 10:58:14 +02:00
Maxime Pauvert
113e2e7166 docs(form): fix typo in expose section (#3895) 2025-04-15 10:28:57 +02:00
renovate[bot]
9d4880be35 chore(deps): update tailwindcss to ^4.1.4 (v3) (#3899)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-15 10:22:42 +02:00
Sandro Circi
8dd9d08209 fix(types): improve dynamic slots (#3857) 2025-04-14 16:09:20 +02:00
Benjamin Canac
f309a46b8d chore(deps): update @nuxt/ui-pro 2025-04-14 14:13:21 +02:00
Benjamin Canac
d5bcb0da59 docs(content): improve examples 2025-04-14 12:42:07 +02:00
Benjamin Canac
0a3cc5a25d docs(SupportedLanguages): add mapping for kk 2025-04-14 11:20:37 +02:00
Benjamin Canac
52735fdd40 docs(nuxt.config): remove hub.vectorize config 2025-04-14 11:18:31 +02:00
renovate[bot]
59fd4d52e1 chore(deps): update all non-major dependencies (v3) (#3854)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-14 11:04:50 +02:00
Iván Máximiliano, Lo Giudice
8e78eb15c8 fix(Form): loses focus on submit (#3796)
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2025-04-14 11:02:27 +02:00
ElshadBeg
b7fc69baa7 feat(locale): add Uyghur language (#3878) 2025-04-14 10:48:40 +02:00
Altynbek
43153c4e91 feat(locale): add Kazakh language (#3875) 2025-04-14 10:48:14 +02:00
Romain Hamel
d059efca25 feat(unplugin): routing support for inertia (#3845)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-14 10:47:26 +02:00
Benjamin Canac
eea14155aa fix(types): handle ClassValue in ui prop
Resolves #3860
2025-04-12 18:28:44 +02:00
Benjamin Canac
4ba8503c60 chore(deps): update @nuxt/ui-pro 2025-04-12 18:28:02 +02:00
Maxime Pauvert
fdee2522bb feat(Form): export loading state (#3861) 2025-04-12 17:54:20 +02:00
Benjamin Canac
39c861a64b fix(components): refactor types after @nuxt/module-builder upgrade (#3855) 2025-04-12 17:53:03 +02:00
Jeremy Woertink
333b7e4c9b docs(components): add missing children field in items (#3846) 2025-04-11 14:46:11 +02:00
Nikolay Larsen
f42a79b5ef feat(locale): add Tajik language (#3850) 2025-04-11 14:33:52 +02:00
Hugo Richard
50012d4866 docs(components): update og images (#3859) 2025-04-11 14:26:22 +02:00
Benjamin Canac
b558b8c5aa docs(form): display theme
Resolves #3752
2025-04-10 21:55:36 +02:00
Guillaume Chau
3447a062b6 feat(Tabs): add list-leading and list-trailing slots (#3837)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-10 21:50:20 +02:00
Sukka
063a23e738 docs(prettier): load from jsdelivr.net instead of unpkg.com (#3575) 2025-04-10 20:53:45 +02:00
renovate[bot]
da0150a9ec chore(deps): update all non-major dependencies (v3) (#3830)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-10 20:45:39 +02:00
Benjamin Canac
981de8b295 docs: prepare for chat components (#3844) 2025-04-10 19:31:12 +02:00
Sandro Circi
fb4c210b41 chore: simplify theme imports in dev (#3851) 2025-04-10 15:59:04 +02:00
Sandro Circi
8c68af5e3b chore: run test suite on windows (#3479)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-10 11:41:23 +02:00
Hugo Richard
81b46ab880 docs(components): add new og images (#3824) 2025-04-09 18:39:09 +02:00
Benjamin Canac
619b6f2a0e chore(Textarea): put back styles 2025-04-09 17:38:19 +02:00
Benjamin Canac
25913188a7 docs(form): improve joi example 2025-04-09 17:30:04 +02:00
Eugen Istoc
f3098df84a feat(OverlayProvider)!: return an overlay instance from .open() (#3829) 2025-04-09 17:26:12 +02:00
Sandro Circi
3deed4c271 fix(Tree): simplify reusable template types (#3836) 2025-04-09 14:05:59 +02:00
Benjamin Canac
e6b1c238b9 docs(form): improve types 2025-04-09 12:20:38 +02:00
Benjamin Canac
626b023ddb docs(showcase): add learnvue.co 2025-04-09 12:20:38 +02:00
Benjamin Canac
4c667f75f4 chore(package): export utils 2025-04-08 17:48:43 +02:00
Daniel Roe
e04dd53046 chore(deps): bump vue-sfc-transformer (#3822) 2025-04-08 17:33:37 +02:00
Benjamin Canac
d25265c8b7 fix(CommandPalette): consistent alignement with other components 2025-04-08 17:29:02 +02:00
renovate[bot]
7d8353ffdc chore(deps): update all non-major dependencies (v3) (#3806)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 15:04:26 +02:00
Benjamin Canac
ba534f18b9 fix(CommandPalette): prevent hover background on disabled items 2025-04-08 15:03:29 +02:00
Benjamin Canac
864083156a feat(Select): handle onSelect field in items 2025-04-08 14:51:53 +02:00
Benjamin Canac
8435a0fe16 fix(InputMenu/SelectMenu): prevent disabled items to be selected
Resolves #3474
2025-04-08 14:43:58 +02:00
Benjamin Canac
d339dcbfb8 fix(Carousel): move arrows inside container on mobile
Resolves #3813
2025-04-08 14:25:26 +02:00
Benjamin Canac
cd7ab413f6 docs(migration): describe onClick change
Resolves #3825
2025-04-08 12:58:31 +02:00
Benjamin Canac
cea881abdc feat(InputMenu/SelectMenu): handle resetSearchTermOnSelect
Resolves #3782
2025-04-08 12:20:28 +02:00
Benjamin Canac
d227a105d8 fix(CommandPalette): increase input font size to avoid zoom 2025-04-07 18:53:30 +02:00
Benjamin Canac
f6ff157bc4 chore(Textarea): apply same styles as Input
Partial revert of cb193f1d25
2025-04-07 13:58:30 +02:00
renovate[bot]
21fbd07639 chore(deps): update all non-major dependencies (v3) (#3800)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-05 11:12:58 +02:00
renovate[bot]
de234e8aeb chore(deps): update tailwindcss to ^4.1.3 (v3) (#3798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-05 11:05:48 +02:00
Benjamin Canac
95a7707963 chore(module): improve meta 2025-04-05 10:50:19 +02:00
Benjamin Canac
24b54f6d9a chore(deps): update @nuxt/module-builder (#3799)
Co-authored-by: Daniel Roe <daniel@roe.dev>
2025-04-05 10:42:16 +02:00
Benjamin Canac
b3e37688d9 chore(module): update metas 2025-04-04 23:22:06 +02:00
Benjamin Canac
eeba3b4049 docs(app): clean seo metas 2025-04-04 23:12:17 +02:00
How Bizarre
a0c9731f63 feat(locale): add Bulgarian language (#3783)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-04 21:42:18 +02:00
Benjamin Canac
af1bf1bbde chore(NavigationMenu): remove slots types in createReusableTemplate 2025-04-04 17:14:51 +02:00
Benjamin Canac
54a7d04217 docs(showcase): update items 2025-04-04 17:14:51 +02:00
Vachmara
dfa2113db4 docs(showcase): fix contrast on light mode (#3790) 2025-04-04 12:11:12 +02:00
Benjamin Canac
abe0859691 fix(NavigationMenu): add sm:w-auto content slot
Resolves #3788
2025-04-04 11:42:47 +02:00
renovate[bot]
cf91f3c4cf chore(deps): update all non-major dependencies (v3) (#3768)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-04 11:10:48 +02:00
renovate[bot]
175fc73e63 chore(deps): update tailwindcss to ^4.1.2 (v3) (#3787)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-04 10:12:34 +02:00
Benjamin Canac
1d459803dc fix(Stepper): ui prop override on icon and content slots
Resolves #3785
2025-04-03 14:51:07 +02:00
Robin
60e2ee9a6c docs(Header): add GitHub link in mobile menu (#3721) 2025-04-03 12:26:43 +02:00
GuiFernandes
7f1c6caa6e docs(radio-group): items only accept strings or numbers (#3781) 2025-04-03 12:21:35 +02:00
Benjamin Canac
7ac17ae7e8 docs(showcase): update 2025-04-03 12:10:54 +02:00
Sandro Circi
52a97e2df7 fix(InputMenu/SelectMenu): support arbitrary value (#3779) 2025-04-02 22:28:09 +02:00
Benjamin Canac
041989549a docs(textarea): add badge on unreleased props 2025-04-02 18:06:01 +02:00
Benjamin Canac
31c37ce1a1 docs(radio-group): add badge on unreleased props
Resolves #3765, resolves nuxt/ui-pro#952
2025-04-02 18:04:29 +02:00
renovate[bot]
74cb2c3769 chore(deps): update tailwindcss to ^4.1.1 (v3) (#3770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 14:39:29 +02:00
Benjamin Canac
5025e15d14 docs(app): improve images lazy loading 2025-04-02 14:28:35 +02:00
Hugo Richard
36c24ffe5c docs: add showcase page (#3659)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-04-02 13:06:46 +02:00
Benjamin Canac
b3a6b861cd docs(app): improve links 2025-04-02 12:25:36 +02:00
Benjamin Canac
c21eb32c70 docs: add team page 2025-04-02 12:20:26 +02:00
Benjamin Canac
44e6ba039d docs(drawer): add responsive example
Resolves #3772
2025-04-02 10:54:53 +02:00
renovate[bot]
ef75610244 chore(deps): update nuxt framework to ^3.16.2 (v3) (#3769)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 21:22:16 +02:00
Benjamin Canac
ffafd81e1e feat(Textarea): add resize-none class with autoresize prop 2025-04-01 12:44:50 +02:00
Benjamin Canac
06414d344b feat(Textarea): add autoresize-delay prop
Resolves #3730
2025-04-01 12:38:21 +02:00
Benjamin Canac
cb193f1d25 feat(Textarea): add icon, loading, etc. props to match Input 2025-04-01 12:38:21 +02:00
Benjamin Canac
4d8179ba08 chore(Input/InputNumber/PinInput/Textarea): clean functions order 2025-04-01 12:05:57 +02:00
Benjamin Canac
ce767c8429 chore(cli): fix tv import 2025-04-01 10:36:52 +02:00
Malik
1ae5cc09cb fix(ContextMenu/DropdownMenu): handle RTL mode (#3744) 2025-03-31 23:07:40 +02:00
Benjamin Canac
9d2fed1250 fix(InputMenu): emit change on multiple item removal
Fixes #3756
2025-03-31 21:14:43 +02:00
Benjamin Canac
924515ad07 chore(README): add contribution guide
Resolves #3757
2025-03-31 17:57:12 +02:00
Romain Hamel
4d138ad671 feat(RadioGroup): add card and table variants (#3178)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-31 16:34:31 +02:00
renovate[bot]
615fcfd73b chore(deps): update all non-major dependencies (v3) (#3755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 14:13:04 +02:00
Robin Simonklein
f5e62849c9 feat(InputNumber): add support for stepSnapping & disableWheelChange props (#3731) 2025-03-31 13:59:47 +02:00
Daniele Nicosia
f25fed58e9 fix(InputMenu/SelectMenu): correctly call onSelect events (#3735) 2025-03-31 13:58:42 +02:00
renovate[bot]
ca15bc0c75 chore(deps): update all non-major dependencies (v3) (#3722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 13:55:40 +02:00
renovate[bot]
29f004db95 chore(deps): lock file maintenance (v3) (#3746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 10:52:25 +02:00
Norbiros
97274f15b8 fix(ContextMenuContent/DropdownMenuContent): remove unwanted any (#3741) 2025-03-30 19:41:38 +02:00
Benjamin Canac
8471fb9fa4 docs(ThemePicker): wrong neutral color 2025-03-28 23:01:04 +01:00
Benjamin Canac
9ec159e207 chore(tsconfig): ignore playground-vue 2025-03-28 19:06:02 +01:00
Benjamin Canac
0456670dac feat(PinInput): add autofocus / autofocus-delay props
Resolves #3717
2025-03-28 19:05:10 +01:00
Benjamin Canac
f05dbd26d1 chore(release): v3.0.2 2025-03-28 16:57:21 +01:00
Benjamin Canac
9be36d328c playground(app): add title 2025-03-28 16:55:11 +01:00
renovate[bot]
4f28e1fe96 chore(deps): update all non-major dependencies (v3) (#3698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-28 16:43:12 +01:00
Eugen Istoc
bd99c2d850 fix(useOverlay): refine open method type to infer close emit return type (#3716) 2025-03-28 16:42:48 +01:00
Benjamin Canac
23bfeb9370 fix(vue): mock nuxtApp.hooks & useRuntimeHook 2025-03-28 15:07:54 +01:00
仿生狮子
88f349d0d7 fix(Avatar): proxy $attrs to default slot (#3712) 2025-03-28 10:27:25 +01:00
Daniele Nicosia
e7e6745599 fix(types): add missing export for ButtonGroup (#3709) 2025-03-27 23:41:33 +01:00
Benjamin Canac
d2c832292a chore(deps): update @nuxt/ui-pro 2025-03-27 23:22:44 +01:00
Benjamin Canac
bc61d29cce fix(CommandPalette): use group.id as key 2025-03-27 21:32:38 +01:00
Malik
777fe4a309 playground: improve rtl (#3707) 2025-03-27 19:18:58 +01:00
Benjamin Canac
3074632523 fix(InputMenu): reset searchTerm on update:open
Resolves #3620
2025-03-27 16:27:48 +01:00
Benjamin Canac
94b6e520f5 fix(InputMenu/SelectMenu): empty search results 2025-03-27 12:18:46 +01:00
Benjamin Canac
754dd36473 docs(SupportedLanguages): reorder mapping 2025-03-27 12:16:39 +01:00
Benjamin Canac
67a52b6f4e test(Table): update snapshots 2025-03-26 17:40:36 +01:00
Benjamin Canac
2e7d4989b5 chore(github): prevent running module nuxt-ui-pro job on forks 2025-03-26 17:33:32 +01:00
Benjamin Canac
c07a79571f docs(slug): add purchase and affilitate in community links 2025-03-26 17:31:24 +01:00
Benjamin Canac
4cebdb5152 chore(deps): update @nuxt/ui-pro 2025-03-26 17:31:19 +01:00
Benjamin Canac
06dfb963be chore(CommandPalette): improve placeholder tsdoc 2025-03-26 17:31:19 +01:00
Benjamin Canac
4ebb94cd7e fix(Table): wrong condition on caption slot 2025-03-26 17:31:19 +01:00
Benjamin Canac
afff54fecd feat(Table): add empty prop 2025-03-26 17:31:18 +01:00
renovate[bot]
7ec08017e0 chore(deps): update all non-major dependencies (v3) (#3695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 15:36:26 +01:00
Romain Hamel
3dd88bacec fix(Form): clear dirty state after submit (#3692) 2025-03-26 13:48:28 +01:00
renovate[bot]
d6d7971d44 chore(deps): update tailwindcss to ^4.0.17 (v3) (#3690)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 13:48:02 +01:00
Romain Hamel
20c33920d0 fix(FormField): add help to aria-describedby attribute (#3691) 2025-03-26 13:47:38 +01:00
Stijn Slats
a63047b79a docs(accordion): add drag and drop example (#3684)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-26 11:07:47 +01:00
renovate[bot]
f3e32ba5a2 chore(deps): update all non-major dependencies (v3) (#3667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 10:59:21 +01:00
renovate[bot]
bd3f54aa80 chore(deps): update tailwindcss to ^4.0.16 (v3) (#3682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 10:44:06 +01:00
Hugo Richard
9509c37af8 docs: improve lighthouse score and accessibility (#3673) 2025-03-25 16:23:35 +01:00
Benjamin Canac
df00149598 fix(Container): add w-full class 2025-03-25 16:23:05 +01:00
Bobbie Goede
f72c886d3a docs(i18n): remove next tag from @nuxtjs/i18n installation (#3675) 2025-03-25 10:07:58 +01:00
Benjamin Canac
c531d0248b fix(Link): handle aria-current like NuxtLink / RouterLink 2025-03-24 23:57:46 +01:00
Benjamin Canac
d73768b704 fix(Link): prevent active="true" binding on html 2025-03-24 23:56:28 +01:00
Sandro Circi
b9983549a4 fix(components): improve generic types (#3331)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-24 21:38:13 +01:00
Benjamin Canac
370054b20c fix(Link): proxy onClick
Resolves #3631
2025-03-24 19:08:09 +01:00
Hugo Richard
4a2b77d86c feat(Calendar): allow year and month buttons styling (#3672) 2025-03-24 19:00:28 +01:00
Benjamin Canac
ade16b76cf fix(Link): properly pick all aria-* & data-* attrs 2025-03-24 18:58:49 +01:00
Benjamin Canac
1babad4f74 chore(github): update stale to close needs reproduction 2025-03-24 16:22:22 +01:00
Benjamin Canac
8fb8dc29cf docs(nuxt.config): update vite.optimizeDeps 2025-03-24 16:22:22 +01:00
renovate[bot]
e0ec60d1b1 chore(deps): update devdependency wrangler to v4 (v3) (#3554)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 15:36:34 +01:00
Benjamin Canac
3db3058395 docs(index): improve marquees performances 2025-03-24 15:33:01 +01:00
Benjamin Canac
0095d8916b fix(NavigationMenu): add z-index on viewport
Resolves #3654
2025-03-24 15:11:47 +01:00
Sébastien Chopin
58ae62413d docs: add missing redirect 2025-03-24 14:49:05 +01:00
Benjamin Canac
1965495768 chore(deps): remove typescript resolution 2025-03-24 14:41:50 +01:00
Benjamin Canac
5465fcb61d chore(deps): update peerDependencies 2025-03-24 14:12:19 +01:00
Benjamin Canac
ef8ebaf687 chore(renovate): ignore peerDependencies 2025-03-24 14:01:57 +01:00
Benjamin Canac
1094881878 playground(deps): add zod 2025-03-24 14:01:14 +01:00
Romain Hamel
d6fd18fc4f chore(deps): declare form validation libraries as peerDependencies (#3666) 2025-03-24 13:53:35 +01:00
Benjamin Canac
e2e079f0d8 chore(github): improve module workflow 2025-03-24 12:37:04 +01:00
Benjamin Canac
cec9dadc7a chore(docs/playground): add vite.optimizeDeps 2025-03-24 12:37:04 +01:00
Vahe Sargsyan
c76f590097 feat(locale): add Armenian language (#3664) 2025-03-24 11:29:32 +01:00
renovate[bot]
4dee7c3bd3 chore(deps): lock file maintenance (v3) (#3662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 11:26:00 +01:00
renovate[bot]
47bbe35d2a chore(deps): update all non-major dependencies (v3) (#3636)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-24 11:16:11 +01:00
Benjamin Canac
60bcd4fdf0 chore(defineLocale): put back @__NO_SIDE_EFFECTS__ 2025-03-24 11:03:26 +01:00
Benjamin Canac
c231fe5f26 fix(Button): use focus:outline-none instead of focus:outline-hidden
Resolves #3658
2025-03-24 10:50:06 +01:00
Benjamin Canac
1769d5ed6e fix(Tabs): remove focus:outline-hidden class 2025-03-24 10:48:50 +01:00
Benjamin Canac
68787b26fd fix(Switch): prevent transition on focus outline 2025-03-24 10:48:03 +01:00
Benjamin Canac
f7604e565f fix(Drawer): remove fadeFromIndex prop proxy 2025-03-23 15:56:33 +01:00
Benjamin Canac
82e26655a4 fix(defineLocale/defineShortcuts): remove @__NO_SIDE_EFFECTS__ 2025-03-23 14:53:58 +01:00
Benjamin Canac
2453714136 chore(deps): move @standard-schema/spec to dependencies 2025-03-23 12:52:33 +01:00
Benjamin Canac
973f36539d chore(github): enable ui pro integration 2025-03-21 21:24:47 +01:00
Benjamin Canac
05ab54d03a chore(release): v3.0.1 2025-03-21 16:10:20 +01:00
Benjamin Canac
db83df5f5e chore(github): update integration workflow (#3643) 2025-03-21 15:59:34 +01:00
Shadow
a5168666b7 fix(Calendar): grey out days outside of displayed month (#3639) 2025-03-21 11:12:39 +01:00
renovate[bot]
f30d45c79a chore(deps): update tailwindcss to ^4.0.15 (v3) (#3638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 22:40:18 +01:00
Benjamin Canac
31be5f656e chore(Drawer): put back shrink-0 on handle 2025-03-20 22:25:37 +01:00
Benjamin Canac
0ef5f3b77b chore(github): remove integration env 2025-03-20 22:15:05 +01:00
Benjamin Canac
a0fec4e467 docs(deps): use only one motion library 2025-03-20 22:14:14 +01:00
Benjamin Canac
f401766e26 chore(deps): update vaul-vue 2025-03-20 21:52:14 +01:00
Benjamin Canac
70f469b868 chore(github): update integration workflow 2025-03-20 17:38:09 +01:00
Benjamin Canac
f92df1f661 chore(github): update integration workflow 2025-03-20 16:59:06 +01:00
Benjamin Canac
16edbdf1f0 chore(github): update integration workflow 2025-03-20 16:45:34 +01:00
Benjamin Canac
fe0bd83d11 fix(RadioGroup): handle disabled on items
Resolves nuxt/ui-pro#911
2025-03-20 16:36:58 +01:00
Benjamin Canac
8a26de230b chore(github): update integration workflow 2025-03-20 16:29:38 +01:00
Benjamin Canac
65a6861b54 chore(github): update integration workflow 2025-03-20 16:19:22 +01:00
Sandro Circi
ecff9abc72 fix(module): handle tailwindcss import without theme(static) (#3630)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-20 15:53:57 +01:00
renovate[bot]
06bc7d3028 chore(deps): update all non-major dependencies (v3) (#3591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 15:15:49 +01:00
Halwest Manguri
b2034ccc91 feat(locale): add Central Kurdish language (#3566)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-20 15:15:21 +01:00
Mickael Chanrion
53cf1b4c14 feat(locale): add Catalan language (#3550)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-20 15:09:43 +01:00
Mark
0229b0fd46 feat(locale): add Romanian language (#3587) 2025-03-20 15:04:52 +01:00
Ulugbek Nagmatov
302e04bd77 feat(locale): add Uzbek language (#3548)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-20 15:03:51 +01:00
Arbaz Irshad
126ba2326f feat(locale): add Urdu language (#3611) 2025-03-20 15:00:57 +01:00
Sébastien Chopin
dfc27514ec docs: add redirects from v2 structure (#3634) 2025-03-20 12:55:27 +01:00
Benjamin Canac
26321c4857 test: update snapshots 2025-03-20 12:47:15 +01:00
Benjamin Canac
5dec0e16e2 feat(components): handle events in content prop 2025-03-20 12:39:57 +01:00
Benjamin Canac
f4c417d9ef fix(Modal/Slideover/Toast): prevent unnecessary close instantiation 2025-03-20 12:14:21 +01:00
Benjamin Canac
9046b9d679 docs(Header): remove extraneous prop on navigation menu 2025-03-20 11:59:46 +01:00
Benjamin Canac
99df056cad docs(app): remove hydrate attributes on stars 2025-03-20 00:06:35 +01:00
renovate[bot]
08bebcae48 chore(deps): update nuxt framework to ^3.16.1 (v3) (#3626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 22:04:37 +01:00
Norbiros
764c41a0c6 fix(ContextMenu/DropdownMenu): remove any from proxySlots (#3623) 2025-03-19 22:03:09 +01:00
Benjamin Canac
2abcc24018 chore(github): update integration workflow 2025-03-19 18:38:40 +01:00
Benjamin Canac
67f90f5f26 chore(github): update integration workflow 2025-03-19 18:06:22 +01:00
Benjamin Canac
024fccf8bb chore(github): update integration workflow 2025-03-19 17:38:16 +01:00
Benjamin Canac
edb0f0afc6 docs(app): improve stars lazy loading 2025-03-19 14:54:14 +01:00
Benjamin Canac
fd160339a6 chore(deps): update @nuxt/ui-pro 2025-03-19 12:57:51 +01:00
Benjamin Canac
2a023b9060 docs(app): improve safelist 2025-03-19 12:33:23 +01:00
Benjamin Canac
ab52830dc8 docs(Banner): allow to close 2025-03-19 12:33:23 +01:00
Romain Hamel
9a4bb34d7d refactor(Form)!: drop explicit support for zod and valibot (#3617) 2025-03-19 12:18:26 +01:00
Romain Hamel
02184b016a chore(Form): improve TSDoc (#3619) 2025-03-19 12:17:52 +01:00
Daniel Roe
57efc78a3b fix(module): mark functions used in exports as pure (#3604) 2025-03-18 14:48:28 +01:00
Benjamin Canac
dec2730aae fix(useLocale): unique symbol to use in @nuxt/ui-pro (#3603) 2025-03-18 12:09:36 +01:00
Rizwan
c8ca604bdf docs(migration): improve useOverlay section (#3601) 2025-03-18 12:04:22 +01:00
Benjamin Canac
ef86108f14 chore(components): add eol in script tag to fix syntax highlight 2025-03-18 10:52:04 +01:00
Harlan Wilton
a1caac47c5 docs: broken 404 pages (#3598) 2025-03-18 10:01:19 +01:00
renovate[bot]
fad715d8df chore(deps): lock file maintenance (v3) (#3582)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 18:32:13 +01:00
Benjamin Canac
b0d0d926ab chore(colors): put back tagPriority
Partial revert of #3589
2025-03-17 18:24:14 +01:00
Romain Hamel
a8e6b74e38 docs(installation): improve vscode recommendations (#3592)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-17 17:01:44 +01:00
renovate[bot]
177fb79cb4 chore(deps): update all non-major dependencies (v3) (#3551)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-17 16:08:26 +01:00
Benjamin Canac
175c7027a3 docs(app): put back carbon ads 2025-03-17 16:05:32 +01:00
Romain Hamel
cc504b8a4b fix(unplugin): include @compodium/examples in auto-imports paths (#3585) 2025-03-17 15:16:42 +01:00
Harlan Wilton
0897e9ef05 fix(vue): missing unhead context (#3589)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-17 15:09:02 +01:00
Benjamin Canac
6588ae8669 docs: clean badges 2025-03-17 14:25:37 +01:00
Benjamin Canac
0b41cebee4 docs(nuxt.config): fix local extends
Related to https://github.com/nuxt/nuxt/issues/31311
2025-03-17 14:24:40 +01:00
Kheuval
e80cc1592f fix(Table): allow links to be opened when @select is used (#3580) 2025-03-17 11:38:37 +01:00
Estéban
5d52af6292 docs(pro): update barbapapazes description (#3577) 2025-03-16 12:06:46 +01:00
Nils Evers
5e62493321 fix(types): add missing export for Icon (#3568) 2025-03-15 12:13:50 +01:00
Jeremy Woertink
37f8619c1a docs(migration): fix typo (#3563) 2025-03-15 12:12:34 +01:00
Benjamin Canac
5376a835f7 docs(pro): disable launch offer 2025-03-15 11:03:43 +01:00
Benjamin Canac
f2ba755ba5 chore(github): update integration workflow 2025-03-13 16:15:17 +01:00
Benjamin Canac
c8d712747f chore(github): update integration workflow 2025-03-13 16:09:00 +01:00
Benjamin Canac
816cf50b37 chore(github): update integration workflow 2025-03-13 15:59:42 +01:00
Benjamin Canac
3c60f70cab chore(github): add integration workflow 2025-03-13 15:27:09 +01:00
renovate[bot]
05758fa915 chore(deps): update tailwindcss to ^4.0.14 (v3) (#3553)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-13 14:43:05 +01:00
Maxime Pauvert
ce4b229264 chore(readme): fix npm badge (#3540) 2025-03-13 14:30:39 +01:00
Benjamin Canac
09b4e9e282 chore(vercel): put back config 2025-03-13 13:59:57 +01:00
Sébastien Chopin
50d68a636c docs: add ui pro banner 2025-03-12 18:16:15 +01:00
Sébastien Chopin
7646c95c73 docs(pro): launch offer 2025-03-12 17:05:52 +01:00
Benjamin Canac
4c30baffe0 chore(vercel): remove useless file 2025-03-12 16:19:12 +01:00
Benjamin Canac
0b411936c4 chore: use ui.nuxt.com url 2025-03-12 16:17:43 +01:00
Benjamin Canac
047582c246 chore(deps): update @nuxt/ui-pro 2025-03-12 16:17:43 +01:00
Benjamin Canac
b00f1206f6 docs: update for v3.0.0 release 2025-03-12 16:17:43 +01:00
Benjamin Canac
9ba5cfe70c chore(github): use ui.nuxt.com url in v3 2025-03-12 16:17:43 +01:00
Benjamin Canac
ee9aca33fd chore(github): use ui2.nuxt.com 2025-03-12 16:17:43 +01:00
Sébastien Chopin
8d29e50340 docs: fix og image 2025-03-12 16:09:41 +01:00
Sébastien Chopin
0ad18d0a7a docs(installation): rename template to ui 2025-03-12 15:39:52 +01:00
Benjamin Canac
4c96909020 chore(release): v3.0.0 2025-03-12 15:33:38 +01:00
Benjamin Canac
06dee66722 chore(package): update release command 2025-03-12 15:04:12 +01:00
Benjamin Canac
8494f50d98 docs: rename dev to v2 2025-03-12 15:04:05 +01:00
Benjamin Canac
cc7bdf9247 chore(release): v3.0.0-beta.4 2025-03-12 14:15:31 +01:00
renovate[bot]
8cbf6d2d58 chore(deps): update all non-major dependencies (v3) (#3521)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-12 14:10:05 +01:00
renovate[bot]
881f977fe4 chore(deps): update tailwindcss to ^4.0.13 (v3) (#3526)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-12 13:55:27 +01:00
Romain Hamel
6e03d9c6ef feat(Form): global errors (#3482)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-11 14:50:36 +01:00
Benjamin Canac
5ecd2271ca fix(vue): prevent calling useHead in colors 2025-03-11 10:36:13 +01:00
Benjamin Canac
556ebb0b36 playground-vue: add logo 2025-03-11 09:59:36 +01:00
Benjamin Canac
3a56e3cf45 chore(deps): update @nuxt/ui-pro 2025-03-11 09:59:36 +01:00
renovate[bot]
34dfe7d4b3 chore(deps): update all non-major dependencies (v3) (#3518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-11 09:59:17 +01:00
GU Yiling
54468ca0f2 docs(figma): improve figma to code section (#3520) 2025-03-11 09:58:13 +01:00
Alex
a9c8eb3f60 feat(useLocale): handle generic messages (#3100)
Co-authored-by: hywax <me@hywax.space>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-10 18:37:28 +01:00
Eugen Istoc
04fc367568 docs(migration): fix typo (#3516) 2025-03-10 15:49:22 +01:00
Eugen Istoc
2b4e88d727 docs(migration): describe useToast and useOverlay (#3509)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-10 14:08:57 +01:00
Benjamin Canac
c713f3015d chore(deps): add vue / vue-router as dependencies 2025-03-10 12:42:56 +01:00
Benjamin Canac
0a603e41f9 chore(Pagination): remove vue-router import 2025-03-10 12:34:40 +01:00
renovate[bot]
8329fedd1a chore(deps): lock file maintenance (v3) (#3508)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 11:53:10 +01:00
renovate[bot]
e289db874d chore(deps): update all non-major dependencies (v3) (#3502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 11:24:02 +01:00
Benjamin Canac
cbc5675e04 chore(vitest): improve config to ignore docs .c12 2025-03-10 11:14:41 +01:00
Benjamin Canac
66686d2d2a chore(deps): remove happy-dom resolution 2025-03-10 11:13:56 +01:00
Benjamin Canac
e67906aa0b chore(renovate): ignore vaul-vue 2025-03-10 10:59:42 +01:00
renovate[bot]
20fb8252f7 chore(deps): update vueuse monorepo to v13 (v3) (major) (#3512)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 10:47:48 +01:00
Iván Máximiliano, Lo Giudice
97c8098d4a fix(Form): input blur validation on submit (#3504) 2025-03-09 13:56:03 +01:00
Benjamin Canac
fbc3200ec5 chore(deps): update @nuxt/ui-pro 2025-03-09 13:00:33 +01:00
Benjamin Canac
243f981ff4 docs(app): add missing cache-key on mdc 2025-03-09 12:30:49 +01:00
renovate[bot]
9979a1c818 chore(deps): update nuxt framework to ^3.16.0 (v3) (#3484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Pooya Parsa <pooya@pi0.io>
2025-03-09 12:28:54 +01:00
renovate[bot]
619bf0d7c9 chore(deps): update all non-major dependencies (v3) (#3497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 23:13:20 +01:00
Benjamin Canac
21dbf01888 fix(Button): missing import
Related to nuxt/ui#3417
2025-03-08 22:48:53 +01:00
renovate[bot]
a208dedaea chore(deps): update dependency tailwind-variants to v1 (v3) (#3499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-08 19:40:23 +01:00
Benjamin Canac
6120a15a99 chore(LinkBase): update types for nuxt@3.16 2025-03-08 15:42:25 +01:00
renovate[bot]
b1552e447d chore(deps): update all non-major dependencies (v3) (#3489)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-08 12:48:04 +01:00
Benjamin Canac
36ec141c16 docs(installation): improve continuous releases section 2025-03-08 12:21:17 +01:00
Benjamin Canac
7940f5c0aa chore(templates): add tsdoc on ui app config key 2025-03-07 18:33:48 +01:00
Iván Máximiliano, Lo Giudice
cfe9b2ecf3 feat(Input/Textarea): allow null value in model (#3415) 2025-03-07 18:17:30 +01:00
Benjamin Canac
ed7710a890 docs(deps): update @nuxt/ui-pro 2025-03-07 18:08:29 +01:00
Benjamin Canac
83725ac048 chore(release): v3.0.0-beta.3 2025-03-07 15:38:35 +01:00
renovate[bot]
af2f8987a3 chore(deps): update all non-major dependencies (v3) (#3473)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-07 14:56:42 +01:00
renovate[bot]
f6250f979a chore(deps): update tailwindcss to ^4.0.12 (v3) (#3480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-07 14:41:55 +01:00
Benjamin Canac
87ecee6308 docs(components): move group class on card 2025-03-07 14:29:53 +01:00
Benjamin Canac
476408f6e5 docs(SupportedLanguages): add he mapping and comments 2025-03-07 14:26:13 +01:00
Benjamin Canac
e016fdea18 docs(deps): update shiki-transformer-color-highlight 2025-03-06 17:47:36 +01:00
Benjamin Canac
d9a6218524 docs(app): dont filter components on framework in search 2025-03-06 17:33:43 +01:00
Benjamin Canac
2ae338e8a5 docs: improve marketing
Co-Authored-By: Sébastien Chopin <atinux@gmail.com>
2025-03-06 17:07:15 +01:00
Benjamin Canac
a6f93ca1ce docs(nuxt.config): add redirect 2025-03-06 16:58:47 +01:00
Benjamin Canac
63266d366d docs(Header): improve logo based on route 2025-03-06 16:58:38 +01:00
Benjamin Canac
5671618c9a docs(components): remove useless div around stars 2025-03-06 16:38:01 +01:00
Benjamin Canac
60497174a3 docs(deps): update @nuxt/ui-pro 2025-03-06 16:04:59 +01:00
renovate[bot]
704abf7917 chore(deps): update tailwindcss to ^4.0.11 (v3) (#3468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 14:38:57 +01:00
renovate[bot]
a1de006055 chore(deps): update all non-major dependencies (v3) (#3442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-06 14:38:18 +01:00
Sébastien Chopin
4f51d19e2b docs: add landing page (#3448)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-06 12:50:22 +01:00
Benjamin Canac
196ffbc989 docs(app): display components in search 2025-03-06 11:58:30 +01:00
Jakub Andrzejewski
a6f58cba14 docs(migration): improve changed components section (#3449)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-06 11:42:16 +01:00
renovate[bot]
977fed0122 chore(deps): update tailwindcss to ^4.0.10 (v3) (#3460)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-05 19:51:44 +01:00
Benjamin Canac
bd2d4848d2 feat(Button): handle active state
Resolves #3417
2025-03-05 18:52:58 +01:00
Benjamin Canac
e3ce1f7a41 docs(theme): fix duplicate blocks 2025-03-05 14:31:27 +01:00
Benjamin Canac
08f092fd15 playground(table): add select event 2025-03-04 16:22:23 +01:00
renovate[bot]
3f7df7be9b chore(deps): update dependency ohash to v2 (v3) (#3362)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Roe <daniel@roe.dev>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-03-04 16:18:54 +01:00
Benjamin Canac
99e531d8df feat(Table): add loading slot
Resolves #3444
2025-03-04 14:11:29 +01:00
Benjamin Canac
a47c5ff466 fix(Pagination): add missing slots
Resolves #3441
2025-03-04 13:57:51 +01:00
Benjamin Canac
60b7e2d69e fix(InputMenu/SelectMenu): proxy required in root props 2025-03-04 12:59:01 +01:00
Benjamin Canac
01fa230eae fix(InputMenu): wrong required in multiple mode
Resolves #2741
2025-03-04 12:54:39 +01:00
Benjamin Canac
e823022b19 fix(Pagination): wrong next link
Resolves #3008
2025-03-04 12:08:43 +01:00
Benjamin Canac
25e503bc83 chore(components): improve tsdoc 2025-03-04 11:58:31 +01:00
Hessam A. Cheraghi
629c54261a docs(calendar): other calendar systems (#3447) 2025-03-04 10:41:00 +01:00
Romain Hamel
fb4e05c65f chore(components): add @IconifyIcon tag on icon properties (#3445) 2025-03-04 10:40:13 +01:00
Benjamin Canac
ccbd89c908 fix(templates): prevent overriding existing colors
Resolves #3426
2025-03-03 19:34:30 +01:00
Benjamin Canac
145fce1b30 docs(migration): invalid classes 2025-03-03 18:40:57 +01:00
Benjamin Canac
52a92c658f docs(migration): add ui pro components table 2025-03-03 18:39:57 +01:00
Benjamin Canac
557dca9a22 docs(migration): add page 2025-03-03 17:59:10 +01:00
Benjamin Canac
bd23cf3e9d docs(deps): update @nuxt/ui-pro 2025-03-03 17:17:00 +01:00
Benjamin Canac
4514171a3f docs(theme): fix config section 2025-03-03 16:56:57 +01:00
Sébastien Chopin
d76f9c4fe4 docs(pricing): update testimonials 2025-03-03 16:41:36 +01:00
Benjamin Canac
62f71f3fbc docs(getting-started): improve 2025-03-03 15:36:36 +01:00
Benjamin Canac
6daa8f1e31 docs(getting-started): update for beta 2025-03-03 12:33:04 +01:00
Benjamin Canac
5783d0d931 docs(getting-started): remove Radix Vue mention 2025-03-03 12:32:38 +01:00
renovate[bot]
58568c642d chore(deps): lock file maintenance (v3) (#3435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 12:05:13 +01:00
renovate[bot]
02329c78c2 chore(deps): update all non-major dependencies (v3) (#3423)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 11:50:53 +01:00
Hugo Richard
9f241de1b5 docs: update raycast extension link (#3431) 2025-03-02 10:35:14 +01:00
Eugen Istoc
7f420d9bec docs(modal/slideover): update close method in tips to use emit('close') (#3421) 2025-03-01 11:08:09 +01:00
Sébastien Chopin
80b701d270 docs(template): add link to vue templates and add starter 2025-03-01 09:42:41 +01:00
Sébastien Chopin
21175c8c59 docs(pro): improve responsive for screenshots marquee 2025-02-28 23:27:07 +01:00
Benjamin Canac
dd708da235 docs: update badges 2025-02-28 19:12:35 +01:00
Sébastien Chopin
f1758ef9d0 docs(template): Add flex-1 on screenshots 2025-02-28 18:57:53 +01:00
Sébastien Chopin
0d1fccc3c5 docs(pro): animate screenshots on landing page 2025-02-28 18:31:48 +01:00
Benjamin Canac
6446130b5d docs(tree): wrong reka-ui link 2025-02-28 17:32:22 +01:00
Benjamin Canac
8632891323 chore(release): v3.0.0-beta.2 2025-02-28 17:27:17 +01:00
Benjamin Canac
0e3c63eb54 fix(useOverlay): missing imports 2025-02-28 17:17:45 +01:00
Benjamin Canac
c555c1640e fix(OverlayProvider): missing import 2025-02-28 17:17:36 +01:00
Benjamin Canac
fffbd1400b chore(release): v3.0.0-beta.1 2025-02-28 16:39:47 +01:00
Benjamin Canac
105ef5721d chore(package): prepare beta release 2025-02-28 16:35:09 +01:00
Benjamin Canac
fa214e659f chore(package): use beta tag 2025-02-28 16:35:09 +01:00
Sébastien Chopin
8ba5f8e245 docs: fix templates images on dark mode 2025-02-28 16:27:24 +01:00
Sébastien Chopin
aea5436d4a chore(readme): update og image 2025-02-28 16:18:07 +01:00
Benjamin Canac
6ba4056cb4 chore(OverlayProvider): fix types 2025-02-28 16:09:06 +01:00
Benjamin Canac
61f4ae0e80 chore(OverlayProvider): missing import 2025-02-28 15:58:45 +01:00
Benjamin Canac
c98c9037ed chore: improve composables imports 2025-02-28 15:52:26 +01:00
renovate[bot]
3a24cc0c8e chore(deps): update all non-major dependencies (v3) (#3411)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 15:45:52 +01:00
Benjamin Canac
8e50d366bd chore(package): export components and composables 2025-02-28 15:33:49 +01:00
Romain Hamel
7a8c00c374 feat(module)!: remove devtools in favor of compodium (#3380)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-28 15:33:13 +01:00
Sébastien Chopin
c140f5edeb docs: rename explore to community 2025-02-28 12:24:54 +01:00
Christian López C
0668a399dc feat(Table): add select event (#2822)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-28 12:05:48 +01:00
Sébastien Chopin
99bdbdeec1 docs: add missing headline for roadmap page 2025-02-27 23:57:53 +01:00
Sébastien Chopin
41397ca8bb docs: og image for components (#3414) 2025-02-27 23:38:57 +01:00
Benjamin Canac
dbc85b6149 docs(navigation-menu): update unused links 2025-02-27 17:42:54 +01:00
Eugen Istoc
108d36fd8a feat(useOverlay)!: handle programmatic modals and slideovers (#3279)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-27 17:32:48 +01:00
Benjamin Canac
607d9a7b4e chore(vue): auto import useAppConfig 2025-02-27 14:58:01 +01:00
Benjamin Canac
5d5f2a02eb chore(vue): stub useColorMode 2025-02-27 12:03:49 +01:00
Benjamin Canac
23ca5a5862 chore(vue): export defineShortcuts & useLocale composables 2025-02-26 22:13:40 +01:00
Benjamin Canac
955000285b chore(vue): add useCookie stub 2025-02-26 21:40:22 +01:00
Sébastien Chopin
dfda53fa20 docs: rename ui3 to ui in vue starter 2025-02-26 19:37:59 +01:00
Hugo Richard
2cb4bd8a72 docs(app): enable support for @nuxt/ui-pro with vue (#3191)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Farnabaz <farnabaz@gmail.com>
2025-02-26 19:00:45 +01:00
Benjamin Canac
b53f77b304 fix(Link): improve external links handling in vue 2025-02-26 15:57:36 +01:00
Sébastien Chopin
2e8403c7e4 docs: various marketing improvements (#3400)
Co-authored-by: HugoRCD <hugo.richard@epitech.eu>
2025-02-26 14:25:52 +01:00
renovate[bot]
d787cd1a2c chore(deps): lock file maintenance (v3) (#3388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 12:44:59 +01:00
renovate[bot]
673c8d9937 chore(deps): update all non-major dependencies (v3) (#3358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-26 12:21:37 +01:00
renovate[bot]
f1728d6476 chore(deps): update tailwindcss to ^4.0.9 (v3) (#3401)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 11:54:01 +01:00
Benjamin Canac
9d011870dc docss(css): source to root dir 2025-02-26 11:34:06 +01:00
Benjamin Canac
c3dcbcf4f8 playground(css): source to root dir 2025-02-26 11:33:59 +01:00
Benjamin Canac
015308fdfe chore(templates): missing static on theme def
Resolves #3399
2025-02-25 23:07:44 +01:00
Benjamin Canac
9a3008d031 docs(deps): update @nuxt/ui-pro 2025-02-25 15:39:54 +01:00
renovate[bot]
85b45f6275 chore(deps): update tailwindcss to ^4.0.8 (v3) (#3373)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-25 12:59:52 +01:00
Benjamin Canac
f401b68fa7 chore(Tree): missing type import 2025-02-25 12:25:14 +01:00
Sébastien Chopin
a5d75b661d docs: move back to nuxt content stable version 2025-02-25 12:11:58 +01:00
Sébastien Chopin
10f12c995c docs: re-order templates 2025-02-25 12:06:45 +01:00
Benjamin Canac
8ea95a3ce4 chore(deps): set tailwindcss resolution 2025-02-24 17:22:35 +01:00
Romain Hamel
71728d3c3f feat(Tree): new component (#3180)
Co-authored-by: hywax <me@hywax.space>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Sébastien Chopin <atinux@gmail.com>
Co-authored-by: Sébastien Chopin <seb@nuxt.com>
2025-02-24 11:22:36 +01:00
Sébastien Chopin
2d07cefacc docs: use correct cursor for link component 2025-02-24 10:50:37 +01:00
Maxime Pauvert
b5519a3342 docs(Header): fix github link (#3383) 2025-02-24 10:28:40 +01:00
Sébastien Chopin
a74273124d docs: display pro like on other places 2025-02-21 16:20:40 +01:00
Sébastien Chopin
7f1cf5c71f docs: add children in components route 2025-02-21 16:15:17 +01:00
Benjamin Canac
e0e8774da5 docs(components): improve categories 2025-02-21 13:02:57 +01:00
Benjamin Canac
8b207139b4 docs(getting-started): add rounded on video 2025-02-21 13:02:37 +01:00
Benjamin Canac
fb36df5302 fix(components): missing $attrs bind (#3152) 2025-02-21 12:26:34 +01:00
Sébastien Chopin
0a8f49275e docs(components): add page (#3365)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-21 12:15:42 +01:00
Benjamin Canac
e8c786885b chore(Toaster): fix ts error 2025-02-20 20:58:57 +01:00
Benjamin Canac
1466a2741d chore(deps): update reka-ui and vaul-vue 2025-02-20 16:27:22 +01:00
Benjamin Canac
b27c0f44f5 chore(components): random TS errors 2025-02-20 16:17:16 +01:00
Benjamin Canac
5f42d5df3a docs(deps): update @nuxt/ui-pro 2025-02-20 12:16:23 +01:00
Benjamin Canac
ae0f231bcc docs(installation): wrong tailwindcss@next package 2025-02-20 12:16:09 +01:00
Ali Hardan
19d76c8b75 fix(Form): ensure loading state resets to false after an error (#3359)
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2025-02-19 19:39:50 +01:00
Benjamin Canac
ca659bd6ed docs(deps): update @nuxt/ui-pro 2025-02-19 17:24:57 +01:00
Benjamin Canac
bc01136da7 fix(Modal/Slideover): add wrapper around title & description
Follow up of d33a83e147
2025-02-19 17:24:44 +01:00
Benjamin Canac
637f5d342e fix(Tooltip): bind $attrs on trigger
Resolves #3339, resolves #2897
2025-02-19 16:23:09 +01:00
Romain Hamel
015ceacb11 feat(Form): add prop to disable state transformation (#3356) 2025-02-19 16:22:36 +01:00
renovate[bot]
6a42c70b35 chore(deps): update devdependency vite to ^6.1.1 (v3) (#3355)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-19 15:40:52 +01:00
Benjamin Canac
d33a83e147 fix(Modal/Slideover): fixed header height
Resolves #3333
2025-02-19 15:19:38 +01:00
Anthony Fu
09492f79f2 fix(vite): exclude @nuxt/ui from vite pre-optimization (#3352)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-19 13:47:46 +01:00
Benjamin Canac
a8f9a02833 playground-vue(deps): update vite 2025-02-19 12:11:47 +01:00
Benjamin Canac
d958fc27c2 chore(deps): remove vite resolution 2025-02-19 12:04:03 +01:00
renovate[bot]
5b1e710800 chore(deps): update all non-major dependencies (v3) (#3342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-19 11:59:47 +01:00
renovate[bot]
61b6008732 chore(deps): update tailwindcss to ^4.0.7 (v3) (#3350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-19 11:48:32 +01:00
Benjamin Canac
a14a09b6ea docs(avatar): remove reka-ui link 2025-02-18 18:14:38 +01:00
Benjamin Canac
b6ec519ca9 docs(theme): update icon 2025-02-18 18:05:09 +01:00
Benjamin Canac
67e546504d fix(Avatar): render on SSR
Co-Authored-By: Sébastien Chopin <seb@nuxt.com>
2025-02-18 18:04:59 +01:00
Benjamin Canac
572e567528 docs(theme): improve @source section 2025-02-18 12:55:54 +01:00
Benjamin Canac
d29a6cba0e docs(app): move safelist back into app.vue 2025-02-18 12:11:16 +01:00
Benjamin Canac
ada04f64a5 fix(CommandPalette): wrong ellipsis color 2025-02-18 11:15:23 +01:00
Benjamin Canac
aefa09c69b fix(Modal): use dvh unit 2025-02-18 11:01:43 +01:00
Benjamin Canac
ae30f9423d fix(Drawer/Modal/Slideover): disable close autofocus
Resolves #3227
2025-02-18 10:59:14 +01:00
Sébastien Chopin
e64fd290b2 docs: fix seo on templates page 2025-02-17 23:44:34 +01:00
Benjamin Canac
9821894532 fix(module): use key when merging modules options 2025-02-17 15:22:07 +01:00
Benjamin Canac
114fcd263a docs(deps): update @nuxt/ui-pro 2025-02-17 14:52:56 +01:00
Benjamin Canac
be12aa4633 chore(release): v3.0.0-alpha.13 2025-02-17 14:31:49 +01:00
Benjamin Canac
6058a13ff5 docs(deps): update @nuxt/ui-pro 2025-02-17 13:05:28 +01:00
Benjamin Canac
0c827d2981 chore(Avatar/Stepper): fix types for vue-tsc@2.2.0 2025-02-17 12:37:54 +01:00
Benjamin Canac
408ebf0f00 test(Table): fix types 2025-02-17 12:37:33 +01:00
Benjamin Canac
63c4d97986 playground-vue(deps): update typescript 2025-02-17 12:37:26 +01:00
Benjamin Canac
10259c477c chore(deps): set rollup and vue resolutions 2025-02-17 12:13:28 +01:00
Benjamin Canac
3f0856c288 playground-vue: move styles into main.css 2025-02-17 12:13:13 +01:00
Benjamin Canac
dbdb4b6a38 playground: move styles into main.css 2025-02-17 12:10:32 +01:00
Benjamin Canac
32b0fbf594 docs: move styles into main.css 2025-02-17 11:59:33 +01:00
renovate[bot]
47be7e1b71 chore(deps): lock file maintenance (v3) (#3336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-17 10:59:52 +01:00
renovate[bot]
d623b37e76 chore(deps): update all non-major dependencies (v3) (#3317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-17 10:44:53 +01:00
Benjamin Canac
6c52b5146d docs(deps): update @nuxt/ui-pro 2025-02-16 21:38:06 +01:00
Benjamin Canac
f92bac64a9 docs(nuxt.config): remove nitro.prerender.failOnError 2025-02-16 19:28:19 +01:00
Benjamin Canac
416342486d chore(deps): update @nuxt/ui-pro 2025-02-16 19:23:43 +01:00
Benjamin Canac
07781c3fb4 chore(deps): update vue-tsc resolution 2025-02-16 16:52:32 +01:00
Benjamin Canac
036ba4c57f chore(Table): update types 2025-02-16 16:33:49 +01:00
Benjamin Canac
37276dda5e chore(github): deploy docs on push 2025-02-16 16:22:56 +01:00
Benjamin Canac
6c7bacd0ba chore(deps): update & remove happy-dom resolution 2025-02-16 16:14:55 +01:00
Benjamin Canac
b6d771d427 playground-vue(app): add missing components 2025-02-16 12:53:19 +01:00
Benjamin Canac
cbaf9ec776 docs(app): clean css variables 2025-02-16 12:53:13 +01:00
Sandro Circi
7641d89552 fix(Modal): always fullscreen on mobile (#2637)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-16 12:52:21 +01:00
Benjamin Canac
f55e869637 fix(Link): allow usage without vue-router in vue
Resolves #3001
2025-02-16 12:18:03 +01:00
Benjamin Canac
0275076c1b docs(content): add icons 2025-02-15 23:42:53 +01:00
Benjamin Canac
e25f2f0b05 docs(app): reduce tabs size 2025-02-15 23:42:28 +01:00
Benjamin Canac
f74953a4ad docs(app): improve command palette icons 2025-02-15 23:15:37 +01:00
Benjamin Canac
3a3ae07d88 docs(deps): update @nuxt/ui-pro 2025-02-15 19:02:10 +01:00
B. Jonson
1d09a2aa35 feat(locale): add Bengali (বাংলা) language (#3321)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-15 18:45:54 +01:00
Benjamin Canac
f0553ebb49 fix(Table): proxy props without useForwardProps
https://github.com/nuxt/ui/issues/3255#issuecomment-2640503829
2025-02-15 18:43:33 +01:00
Benjamin Canac
fa92053116 docs(ThemePicker): improve design 2025-02-15 18:25:19 +01:00
Benjamin Canac
76c527d8b9 docs(define-shortcuts): clarify meta key on windows
Resolves #3318
2025-02-15 16:33:16 +01:00
Benjamin Canac
6d9b9edc55 feat(Drawer): add inset prop
Resolves #2994
2025-02-15 16:21:41 +01:00
Benjamin Canac
fabf42735e docs(nuxt.config): disable nitro.prerender.failOnError 2025-02-15 13:28:34 +01:00
Benjamin Canac
847d4aa752 feat(Card): add variant prop 2025-02-14 19:23:07 +01:00
Maxime Pauvert
7a56903f47 docs: fix pro templates url (#3319) 2025-02-14 17:42:28 +01:00
Benjamin Canac
c480e1d77f chore(package): add .nuxt/ui.css to files 2025-02-14 16:55:23 +01:00
Benjamin Canac
0a1c76c82e playground-vue(deps): clean 2025-02-14 16:41:37 +01:00
Sébastien Chopin
69d49a5214 docs: remove unused prop in terms 2025-02-14 15:16:36 +01:00
Benjamin Canac
5846c1e2ee feat(ContextMenu/DropdownMenu/NavigationMenu): add external-icon prop
Resolves #2996
2025-02-14 15:00:06 +01:00
Sébastien Chopin
ba3ed86ae1 docs: add marketing pages (#3308)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-14 14:18:14 +01:00
renovate[bot]
d4bc9b3d0e chore(deps): update pnpm to v10 (v3) (#3234)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-14 12:33:55 +01:00
renovate[bot]
83365da00e chore(deps): update all non-major dependencies (v3) (#3293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-14 12:01:16 +01:00
Benjamin Canac
77697910be docs(deps): update @nuxt/ui-pro 2025-02-13 23:06:57 +01:00
Maxime Pauvert
5775532689 docs(theme): fix source definition with content (#3313) 2025-02-13 22:27:55 +01:00
Benjamin Canac
df44779953 docs(deps): update @nuxt/ui-pro 2025-02-13 17:51:31 +01:00
Benjamin Canac
186c024fcb docs(command-palette): disable all autofocus 2025-02-13 16:29:40 +01:00
Benjamin Canac
0c8a272d42 docs(ComponentCode): fix edge-case 2025-02-13 16:26:12 +01:00
Benjamin Canac
ff6658ea71 docs(app): missing blackAsPrimary feature on error page 2025-02-13 11:57:47 +01:00
Benjamin Canac
8097fff79d fix(Card): remove shadow-sm for consistency 2025-02-13 11:57:34 +01:00
Benjamin Canac
03a00b59e5 docs(deps): update @nuxt/ui-pro 2025-02-12 21:47:48 +01:00
Benjamin Canac
2b56c291ca chore(deps): set vite resolution 2025-02-12 21:43:15 +01:00
Benjamin Canac
4c417716c1 chore: update prettier workers version 2025-02-12 21:41:52 +01:00
Benjamin Canac
7de4b3bfda docs(app): improve safelist 2025-02-12 18:36:59 +01:00
Benjamin Canac
9cd8d3df40 docs(LogoPro): add collapsed prop 2025-02-12 18:36:36 +01:00
Benjamin Canac
115350d298 docs(app): typo 2025-02-12 18:36:19 +01:00
Benjamin Canac
9d29e0b407 fix(Calendar/InputMenu/Textarea): add missing PartialString type on ui prop
Resolves #3299
2025-02-12 11:51:21 +01:00
renovate[bot]
c00e1d72d9 chore(deps): update all non-major dependencies (v3) (#3238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 21:20:04 +01:00
Benjamin Canac
e7e75858d7 fix(SelectMenu): wrap content with FocusScope
Resolves #2657
2025-02-11 15:14:06 +01:00
renovate[bot]
80e6c1d264 chore(deps): update tailwindcss to ^4.0.6 (v3) (#3274)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-11 14:58:36 +01:00
Hugo Richard
39c0a60955 docs(calendar): fix date picker example (#3284) 2025-02-10 15:13:21 +01:00
Chandara H. Wei
3413608168 docs(SupportedLanguages): wrong flag emoji for Khmer language (#3278) 2025-02-09 13:33:33 +01:00
Benjamin Canac
0363bf7c66 chore(README): wrong radix-vue link 2025-02-09 12:43:38 +01:00
renovate[bot]
bef3675a89 chore(deps): update dependency @nuxt/devtools-kit to v2 (v3) (#3253)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-07 21:44:03 +01:00
Sébastien Chopin
3eec33be53 docs(theme): fix when using neutral color on pre-rendering 2025-02-07 17:56:51 +01:00
Benjamin Canac
e419dcbe61 fix(Modal/Slideover): improve title & description accessibility
Resolves #3267, resolves #3215
2025-02-07 16:48:47 +01:00
Benjamin Canac
2ee47e5c9e docs(deps): update @nuxt/ui-pro 2025-02-07 13:01:58 +01:00
Benjamin Canac
54e6841ad0 dectools(app): use error css var 2025-02-07 13:01:49 +01:00
Sandro Circi
104852a55c chore: use new syntax for css variables (#3258)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-07 11:24:14 +01:00
Benjamin Canac
8e7c52e1fb docs(theme): handle neutral color on ssr 2025-02-07 11:13:57 +01:00
Benjamin Canac
e779764465 docs(deps): update @nuxt/ui-pro 2025-02-06 21:14:42 +01:00
renovate[bot]
71ed7ce6b0 chore(deps): update tailwindcss to ^4.0.4 (v3) (#3257)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-06 17:29:31 +01:00
Benjamin Canac
443a0be017 feat(module): generate tailwindcss theme colors (#2967)
Co-authored-by: HugoRCD <hugo.richard@epitech.eu>
Co-authored-by: Sébastien Chopin <seb@nuxt.com>
2025-02-06 17:29:03 +01:00
Muhammad Mahmoud
4aa317944e feat(Table): extends core options and support other options like pagination (#3177)
Co-authored-by: Sandros94 <sandro.circi@digitoolmedia.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-05 22:04:00 +01:00
Farnabaz
c5bb540519 docs(llms): generate llms.txt from content (#3246) 2025-02-05 18:25:39 +01:00
Benjamin Canac
dfa48828ff chore(types): add missing VNode import 2025-02-05 16:13:59 +01:00
Benjamin Canac
089185fbe4 feat(useToast): proxy emits 2025-02-05 15:44:15 +01:00
Benjamin Canac
abd2be1aa6 feat(Toast): handle vnodes in title and description
Resolves #3226
2025-02-05 15:32:20 +01:00
Denis Moshkin
d94b304d0c chore(package): add keywords (#3243) 2025-02-05 13:50:56 +01:00
Benjamin Canac
153f341a8c fix(useToast)!: don't return a promise on add 2025-02-05 13:44:26 +01:00
Benjamin Canac
533e889589 fix(Toast)!: rename click to onClick for consistency 2025-02-05 13:44:21 +01:00
Benjamin Canac
2c192ac145 feat(Alert/Toast)!: add orientation prop 2025-02-05 13:44:21 +01:00
Benjamin Canac
cd0a9d39d8 fix(App): wrap ModalProvider / SlideoverProvider inside TooltipProvider
Resolves #3236
2025-02-04 21:45:24 +01:00
Benjamin Canac
87234cb4da chore(package): export utils 2025-02-04 16:31:46 +01:00
Benjamin Canac
86ac79b6b4 chore(templates): import from @nuxt/ui 2025-02-04 16:27:10 +01:00
Benjamin Canac
e595314b2b chore(types): export utils 2025-02-04 15:38:02 +01:00
renovate[bot]
ac08569a34 chore(deps): update all non-major dependencies (v3) (#3231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Farnabaz <farnabaz@gmail.com>
2025-02-04 15:38:02 +01:00
Benjamin Canac
961711c7b7 docs(form): import types from @nuxt/ui 2025-02-04 14:56:49 +01:00
José Duarte Alleuy
10fb843f8f feat(Badge): add support within button groups (#3224)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-02-03 12:11:22 +01:00
renovate[bot]
deddc7cf97 chore(deps): lock file maintenance (v3) (#3229)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 10:59:18 +01:00
renovate[bot]
86e8ccd8e6 chore(deps): update all non-major dependencies (v3) (#3205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 10:41:33 +01:00
Benjamin Canac
7b4f612cc9 chore(deps): add caret range specifier to @standard-schema/spec 2025-02-02 19:23:28 +01:00
renovate[bot]
618c1159f2 chore(deps): update devdependency @nuxt/eslint-config to v1 (v3) (#3212)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 19:16:07 +01:00
Hugo Richard
f21e923a64 docs(ComponentTheme): broken github link (#3223) 2025-02-02 11:38:54 +01:00
renovate[bot]
69bc686efd chore(deps): update tailwindcss to ^4.0.3 (v3) (#3221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-01 18:21:16 +01:00
Chingiz Mammadov
0fb6753c9d feat(locale): add Azerbaijani language (#3209) 2025-01-31 23:59:14 +01:00
renovate[bot]
e354d1b3a2 chore(deps): update tailwindcss to ^4.0.2 (v3) (#3219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-31 23:57:02 +01:00
Benjamin Canac
07e1b4f1f4 fix(NavigationMenu): disable collapsible with collapsed prop 2025-01-30 14:19:13 +01:00
Anthony Fu
6c20f8a9ea feat(unplugin): expose options for embedded plugins, throw warnings for duplication (#3207) 2025-01-30 12:17:42 +01:00
renovate[bot]
ce3eaaa7b9 chore(deps): update tailwindcss to ^4.0.1 (v3) (#3206)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-30 11:51:08 +01:00
Benjamin Canac
49dd0885a0 fix(Badge): missing UAvatar import
Resolves #3203
2025-01-29 17:38:23 +01:00
Benjamin Canac
c1c9da4d38 fix(NavigationMenu): wrong level compute on vertical orientation 2025-01-29 16:11:32 +01:00
Benjamin Canac
0e46c3e8cf fix(NavigationMenu): remove negative mb causing overflow issues 2025-01-29 15:29:49 +01:00
Chandara H. Wei
995e07d6ff fix(locale): export km (#3201) 2025-01-29 12:51:03 +01:00
renovate[bot]
d93ab0616e chore(deps): update all non-major dependencies (v3) (#3192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-29 11:08:57 +01:00
Benjamin Canac
a3cfdb7c12 docs(input): remove pre-filled password example
Resolves #3195
2025-01-29 11:05:31 +01:00
VisualYuki
7299b0c603 chore(npmrc): set shell-emulator to make scripts work on windows (#3198) 2025-01-29 10:45:03 +01:00
renovate[bot]
b9000a7bf1 chore(deps): update nuxt framework to ^3.15.4 (v3) (#3199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-29 10:42:27 +01:00
Benjamin Canac
97f26c6777 docs(deps): update @nuxt/ui-pro 2025-01-28 17:31:06 +01:00
Benjamin Canac
4cbfcaf867 cli: update reka-ui url 2025-01-28 17:30:59 +01:00
Benjamin Canac
e2b78a78a4 feat(CommandPalette): support link props in items
Resolves #3190
2025-01-28 14:51:57 +01:00
Typed SIGTERM
527631d2d1 chore(deps): fix tailwindcss version specifier (#3188) 2025-01-28 10:03:22 +01:00
Benjamin Canac
2703498fe5 docs(deps): update @nuxt/ui-pro 2025-01-27 19:03:13 +01:00
Benjamin Canac
e2d570bcf3 docs(components): update badges 2025-01-27 18:56:50 +01:00
Benjamin Canac
bc10a1cabe chore(release): v3.0.0-alpha.12 2025-01-27 18:49:23 +01:00
renovate[bot]
dcd86144a2 chore(deps): lock file maintenance (v3) (#3183)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 17:37:33 +01:00
renovate[bot]
761680b5cb chore(deps): update all non-major dependencies (v3) (#3185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 17:27:48 +01:00
renovate[bot]
3183e4afe3 chore(deps): update nuxt framework to ^3.15.3 (v3) (#3176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 17:18:45 +01:00
Benjamin Canac
cd16b95c98 fix(components): prevent multiple appConfig identifier import (#3186) 2025-01-27 13:26:21 +01:00
Benjamin Canac
d27be06164 chore(Avatar): cast ImageComponent to string 2025-01-27 13:02:56 +01:00
Sagiv
f3958773d6 feat(locale): add Hebrew language (#3181) 2025-01-27 10:50:48 +01:00
renovate[bot]
2006ec0646 chore(deps): update all non-major dependencies (v3) (#3154)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 10:45:31 +01:00
Benjamin Canac
3320e0473c chore(renovate): run pnpm dedupe post update 2025-01-25 12:22:30 +01:00
Romain Hamel
c0b485d563 feat(Form): form validation properties (#3137) 2025-01-24 19:10:44 +01:00
Nándor Dudás
891ba1fec6 feat(locale): add Hungarian language (#3129)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-24 19:07:55 +01:00
Howard Guo
1a95104631 fix(locale): remove emoji fallback for Chinese (#3134) 2025-01-24 18:37:33 +01:00
Benjamin Canac
ac86ee01b9 feat(NavigationMenu): add contentOrientation prop 2025-01-24 18:35:04 +01:00
Gerben Mulder
8f7f579da0 fix(Form): standard schema validation no longer wrapped in value object (#3104) 2025-01-24 18:21:52 +01:00
Nexos Creator
8e96daa5cc feat(locale): add Hindi language (#3170) 2025-01-24 17:31:14 +01:00
Benjamin Canac
36d7402be1 fix(Avatar): hide fallback when image is loaded
Resolves nuxt/ui-pro#727
2025-01-24 17:29:53 +01:00
Benjamin Canac
63b7de4159 docs(navigation-menu): add missing github icon 2025-01-24 14:46:06 +01:00
Benjamin Canac
f8b4de587e docs(installation): add devtools.enabled option 2025-01-24 14:45:56 +01:00
Benjamin Canac
890c3d0840 docs(getting-started): wrong heading for devtools 2025-01-24 14:41:53 +01:00
Benjamin Canac
7441b6451d playground(nuxt.config): enable @nuxt/fonts outside devtools prepare 2025-01-24 14:36:45 +01:00
Benjamin Canac
2b7ff3edf6 fix(NavigationMenu): handle children recursively in vertical orientation
Resolves #3128
2025-01-24 14:07:29 +01:00
Benjamin Canac
9b5a957cdd fix(ContextMenu/DropdownMenu): remove unnecessary bindings in html 2025-01-24 13:03:44 +01:00
Benjamin Canac
00c5f26111 fix(Avatar): handle loading manually to support @nuxt/image
Resolves nuxt/ui-pro#727
2025-01-24 12:14:48 +01:00
Benjamin Canac
aafddd8eed fix(useToast): add in queue and improve unique ids
Resolves #2686
2025-01-24 11:16:02 +01:00
Benjamin Canac
8d941e1360 docs(deps): update @nuxt/ui-pro 2025-01-23 11:18:13 +01:00
Konstantin
ba3d5e2c7d docs(table): describe meta field on columns (#3160) 2025-01-23 10:49:07 +01:00
Benjamin Canac
1b989c419d docs(ComponentExample): pass width to iframe only without iframeMobile 2025-01-22 18:06:17 +01:00
Benjamin Canac
b8b7a8366d docs(app): increase content search result limit 2025-01-22 17:47:37 +01:00
Benjamin Canac
fb94ee379c docs(app): replace heroicons icons by lucide 2025-01-22 17:40:17 +01:00
Benjamin Canac
a5ed62f83a docs(deps): update @nuxt/ui-pro 2025-01-22 15:37:14 +01:00
Benjamin Canac
12b6c78a17 docs(app): prevent ui-pro / vue switch when disabled 2025-01-22 15:37:14 +01:00
renovate[bot]
9cafd1295e chore(deps): update tailwindcss to v4.0.0 (v3) (#3155)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 15:15:24 +01:00
Benjamin Canac
545c3917a1 docs(ComponentTheme): prevent async data override on generate 2025-01-22 10:35:11 +01:00
renovate[bot]
3e2e5a075d chore(deps): update all non-major dependencies (v3) (#3150)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 15:54:27 +01:00
Aaron Dewes
629dcfab16 docs(input): fix aria-label on examples (#3149) 2025-01-21 12:12:14 +01:00
renovate[bot]
53d636aa9b chore(deps): update devdependency vitest to v3 (v3) (#3117)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 18:29:25 +01:00
renovate[bot]
eb068b2f90 chore(deps): lock file maintenance (v3) (#3145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 18:10:25 +01:00
Benjamin Canac
75a470d588 chore(deps): dedupe 2025-01-20 14:49:13 +01:00
Benjamin Canac
90dc03cd03 chore(Select): clean props 2025-01-20 14:48:28 +01:00
Romain Hamel
088dc9bf38 docs(form): fix nested form example schema (#3135) 2025-01-20 11:53:05 +01:00
Romain Hamel
b95b91391a feat(FormField): set aria-describedby and aria-invalid attributes (#3123) 2025-01-20 11:46:09 +01:00
renovate[bot]
b8d99726ef chore(deps): update all non-major dependencies (v3) (#3091)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 11:17:39 +01:00
Hugo Richard
b88f67ccfe docs(app): add h-64 to safelist (#3115) 2025-01-20 11:13:44 +01:00
renovate[bot]
55b233dc3d chore(deps): update nuxt framework to ^3.15.2 (v3) (#3074)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 10:56:59 +01:00
Hugo Richard
f0297e02d0 docs(modal/slideover): improve programmatic examples (#3131) 2025-01-17 17:43:40 +01:00
Chandara H. Wei
64421a190f feat(locale): add Khmer language (#3119)
Co-authored-by: Hugo Richard <hugo.richard@epitech.eu>
2025-01-17 16:46:01 +01:00
Benjamin Canac
3af77ccca1 cli: fix component template import 2025-01-17 13:08:59 +01:00
Benjamin Canac
a3a562b699 docs(app): improve module and framework reactivity 2025-01-17 00:01:06 +01:00
Benjamin Canac
3159a89436 docs(deps): update @nuxt/content 2025-01-16 23:52:33 +01:00
Benjamin Canac
ba1dd13173 fix(Button): wrong avatar size with block prop 2025-01-16 16:49:43 +01:00
Benjamin Canac
3fc2210e03 feat(NavigationMenu): add collapsed prop 2025-01-16 16:34:36 +01:00
Benjamin Canac
931211a634 fix(NavigationMenu): highlight open items on horizontal orientation only 2025-01-16 16:09:08 +01:00
Benjamin Canac
27fdc8e260 feat(NavigationMenu): handle label type in items
Resolves #2993
2025-01-16 15:56:14 +01:00
Benjamin Canac
1e88512bef chore(ContextMenu/DropdownMenu): remove useless pointer-events-auto
Revert parts of #2881
2025-01-16 12:38:34 +01:00
Benjamin Canac
533ccec110 fix(colors): move css variables to base layer
Resolves #3075
2025-01-16 12:22:25 +01:00
Benjamin Canac
86e1888474 docs(deps): update 2025-01-15 18:26:59 +01:00
Farnabaz
12a1ab00df docs(deps): update @nuxt/content (#3108) 2025-01-15 17:55:18 +01:00
Benjamin Canac
b64b24f65a docs(deps): update @nuxt/ui-pro 2025-01-15 16:09:03 +01:00
Benjamin Canac
b8276020b3 docs(deps): update @nuxt/ui-pro 2025-01-15 14:12:19 +01:00
Benjamin Canac
75f7064b40 feat(css): add light variant to reverse colors 2025-01-15 14:00:37 +01:00
Alex
51e5e65be7 refactor(ColorPicker)!: migrate from color to colortranslator (#3097) 2025-01-14 15:01:47 +01:00
Hugo Richard
6df9a1a44b docs(contribution): add guide (#3076)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-14 14:21:38 +01:00
Alex
ec5d5c98a2 docs(SupportedLanguages): easti flag (#3099) 2025-01-14 11:31:38 +01:00
Romain Hamel
de9ecb1d76 fix(Form)!: include nested state in submit data (#3028) 2025-01-14 10:49:39 +01:00
Hugo Richard
865a47f125 docs(ComponentSlots): support custom slug (#3096) 2025-01-14 10:31:41 +01:00
Sigve Hansen
9ccfe8fbb3 feat(locale): add Norwegian Bokmål language (#3095) 2025-01-14 10:28:49 +01:00
Israel Ortuño
1bf370e6fd fix(locale): year translation missing ñ in es (#3090) 2025-01-13 22:49:58 +01:00
Sébastien Chopin
3309ef60b2 docs(getting-started): add nuxt devtools video & learnvue video 2025-01-13 18:56:48 +01:00
Daniele Nicosia
a6cc7bf53b docs(calendar/command-palette): fix external links (#3087) 2025-01-13 17:45:26 +01:00
Benjamin Canac
e2cee110b4 docs(deps): update @nuxt/ui-pro 2025-01-13 17:44:28 +01:00
Benjamin Canac
01b7547ccc docs(app): move watch before surround 2025-01-13 16:15:05 +01:00
Alex
e7c10bcb0d fix(Alert): allow actions wrap (#3083) 2025-01-13 14:46:45 +01:00
Benjamin Canac
1d54fd3e2d chore(release): v3.0.0-alpha.11 2025-01-13 11:54:49 +01:00
Alex
f85b0985bd fix(components): enable pointer events on menus (#2881)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-13 11:44:23 +01:00
kyyy
c902a40f7c fix(SelectMenu): handle resetSearchTermOnBlur manually (#3082)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-13 11:26:16 +01:00
Romain Hamel
1a54ab231b refactor(Form): rename validation functions and vars for clarity (#3029)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-13 11:19:29 +01:00
Benjamin Canac
9d0f8617b2 docs(deps): update @nuxt/content 2025-01-13 11:05:18 +01:00
renovate[bot]
23493af406 chore(deps): lock file maintenance (v3) (#3081)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 10:46:56 +01:00
Benjamin Canac
582fe87d70 docs(Header): remove meta_g shortcut 2025-01-13 10:46:15 +01:00
Benjamin Canac
c957bbf9a1 chore(renovate): ignore vue-tsc for v2 2025-01-13 10:37:43 +01:00
renovate[bot]
965e1aacaf chore(deps): update all non-major dependencies (v3) (#3061)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 10:35:54 +01:00
renovate[bot]
1ba2e185b2 chore(deps): update devdependency unplugin-vue-components to v28 (v3) (#3049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-12 23:46:01 +01:00
renovate[bot]
53afc40481 chore(deps): update devdependency unplugin-auto-import to v19 (v3) (#3048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-12 23:33:56 +01:00
Chiahong
5c2c55ff08 fix(locale): improve Traditional Chinese translation (#3051)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-10 18:49:09 +01:00
Benjamin Canac
39a3d2592c chore(deps): update @nuxt/ui-pro 2025-01-10 18:25:08 +01:00
Benjamin Canac
ee4c33cb1a docs(app): wrong links for ui-pro in community section 2025-01-10 18:25:08 +01:00
Malik-Jouda
d5dba0ebc9 fix(CommandPalette/SelectMenu): missing translations (#3057) 2025-01-10 18:20:47 +01:00
Benjamin Canac
a3dbf7c27d docs(installation): improve starter sections 2025-01-10 15:33:54 +01:00
Benjamin Canac
a3cf25f5cd docs(installation): add playground links 2025-01-10 14:12:39 +01:00
Benjamin Canac
02c8988a7a chore(github): add vue template link to bug-report-v3 2025-01-10 13:31:24 +01:00
Benjamin Canac
046785359e docs(vue): add vue-router in installation sections
Related to #2764
2025-01-10 13:07:14 +01:00
renovate[bot]
85b8553893 chore(deps): update tailwindcss to v4.0.0-beta.9 (v3) (#3059)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-10 11:15:49 +01:00
Maxime Pauvert
5288f87e0b chore(readme): change github v2 link (#3060)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-09 23:02:52 +01:00
Maxime Pauvert
25a71aa3ae docs(header): update GitHub link for @nuxt/ui-pro (#3058) 2025-01-09 19:03:34 +01:00
Benjamin Canac
a3bae03a20 chore(github): disable playground on pull requests 2025-01-09 17:30:30 +01:00
Benjamin Canac
01ce7e2d14 docs(deps): update @nuxt/ui-pro 2025-01-09 15:32:10 +01:00
renovate[bot]
11a3f03a7f chore(deps): update all non-major dependencies (v3) (#3033)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-09 15:15:44 +01:00
Estéban
0531211ee5 test(ContextMenu): fix snapshots (#3055)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-09 15:14:24 +01:00
Benjamin Canac
039788a044 docs(deps): update @nuxt/ui-pro 2025-01-09 12:51:06 +01:00
Benjamin Canac
9aa6812423 chore(package): move style before import 2025-01-09 12:34:00 +01:00
Benjamin Canac
3107039b56 Revert "chore(deps): update typescript"
This reverts commit 1c4bae8c86.
2025-01-09 12:30:21 +01:00
Benjamin Canac
c79acc15b0 Revert "chore(deps): update @nuxt/module-builder"
This reverts commit 71e98a4024.
2025-01-09 12:29:53 +01:00
Benjamin Canac
15b411de4a Revert "build: remove cjs support"
This reverts commit 0128c1c9e0.
2025-01-09 12:28:23 +01:00
Benjamin Canac
410b7db201 docs(deps): revert @nuxt/ui-pro 2025-01-09 12:13:00 +01:00
kyyy
5a443944ae fix(InputMenu): removing tag does not change modelValue (#3054)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-09 11:53:03 +01:00
Benjamin Canac
82ade16fd0 docs(deps): update @nuxt/ui-pro 2025-01-09 11:10:18 +01:00
Benjamin Canac
af736b0c6a docs(ComponentCode): handle metas for prose components 2025-01-09 11:02:29 +01:00
Benjamin Canac
30ba53e20b feat(module): allow tv customization through app.config (#2938) 2025-01-08 17:26:20 +01:00
Benjamin Canac
4e482750cb docs(content): remove some badges 2025-01-08 16:22:45 +01:00
Bitcreep
01bf99eec8 feat(locale): add Estonian language (#3036)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-08 16:19:27 +01:00
renovate[bot]
446a9f7d31 chore(deps): update devdependency @release-it/conventional-changelog to v10 (v3) (#3046)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-08 16:18:45 +01:00
Hugo Richard
638808c32c docs(app): handle prose components (#3030)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-08 16:17:50 +01:00
Benjamin Canac
6a81db2b9c docs(nuxt.config): use oss license 2025-01-08 11:19:22 +01:00
Benjamin Canac
1f71d74899 docs(app): display pro tag on all links 2025-01-08 10:55:07 +01:00
Benjamin Canac
cc50ef6ccd docs(ComponentCode): improve defaults for booleans 2025-01-07 15:08:31 +01:00
Benjamin Canac
4344e36664 fix(Accordion/Collapsible/NavigationMenu/Tabs): define unmountOnHide default 2025-01-07 15:08:06 +01:00
Benjamin Canac
cc523a3d23 chore(github): update workflows 2025-01-07 12:15:51 +01:00
Benjamin Canac
d7981ab2d5 chore(github): update workflows 2025-01-07 12:07:16 +01:00
Benjamin Canac
697994e15d playground: add @nuxthub/core module 2025-01-07 12:07:07 +01:00
Benjamin Canac
18b2c51282 docs(nuxt.config): disable hub.cache 2025-01-07 12:06:51 +01:00
Benjamin Canac
a68f57c5d2 chore(github): update workflows 2025-01-07 11:55:15 +01:00
Benjamin Canac
2050bed050 chore(github): update workflows 2025-01-07 11:32:20 +01:00
nuxthub-admin[bot]
9bf93575a7 ci: add nuxthub workflow 2025-01-07 10:27:07 +00:00
Benjamin Canac
5c19c79350 chore(github): update workflows 2025-01-07 11:25:31 +01:00
Benjamin Canac
fd5a529565 chore(github): update workflows 2025-01-07 11:17:12 +01:00
nuxthub-admin[bot]
61389b8b5a ci: add nuxthub workflow 2025-01-07 10:11:16 +00:00
Benjamin Canac
ef7ecd242f fix(NavigationMenu): remove w-full on root slot
Resolves #3000
2025-01-06 18:53:11 +01:00
Romain Hamel
41dc11ceef fix(FormField): restore eager-validation prop behavior (#3031)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-06 18:52:23 +01:00
renovate[bot]
00b3c86584 chore(deps): update devdependency release-it to v18 (v3) (#3027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-06 17:37:12 +01:00
renovate[bot]
8c88912a8f chore(deps): update all non-major dependencies (v3) (#2985)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-01-06 17:17:03 +01:00
Benjamin Canac
0128c1c9e0 build: remove cjs support 2025-01-06 16:58:40 +01:00
Benjamin Canac
254bf3a65f chore(deps): refresh lock 2025-01-06 16:31:27 +01:00
Benjamin Canac
5ac25b5a84 chore(deps): dedupe 2025-01-06 16:26:14 +01:00
Benjamin Canac
71e98a4024 chore(deps): update @nuxt/module-builder 2025-01-06 16:25:29 +01:00
renovate[bot]
561fcd0b19 chore(deps): update dependency pathe to v2 (v3) (#3017)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-06 12:47:12 +01:00
Benjamin Canac
1c4bae8c86 chore(deps): update typescript 2025-01-06 12:41:09 +01:00
Benjamin Canac
0903e80b03 chore(deps): update unplugin & vite 2025-01-06 12:35:55 +01:00
Benjamin Canac
fae9895836 chore(deps): dedupe 2025-01-06 12:23:35 +01:00
Benjamin Canac
f19308d401 cli(templates): remove leading space in docs 2025-01-06 12:22:23 +01:00
Benjamin Canac
2f19136fd8 docs(ComponentExample): round width in iframe params 2025-01-06 12:22:23 +01:00
Pontus Aurdal
0201a3de75 feat(locale): add Swedish language (#3012) 2025-01-06 10:42:49 +01:00
Pontus Aurdal
c770ae124e feat(locale): add Finnish language (#3013) 2025-01-06 10:41:55 +01:00
Dinar, Permadi
a18ad84edf feat(locale): add Indonesian language (#3024) 2025-01-06 10:41:32 +01:00
renovate[bot]
64f85a029f chore(deps): update nuxt framework to ^3.15.1 (v3) (#2970)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-06 10:24:23 +01:00
Benjamin Canac
d4653e3c02 docs(deps): update @nuxt/ui-pro 2024-12-27 15:54:53 +01:00
Benjamin Canac
546a82c4c9 docs(examples): remove justify-center 2024-12-27 15:28:35 +01:00
Benjamin Canac
e878115a73 docs(ComponentExample): add iframeMobile prop 2024-12-27 15:28:22 +01:00
Benjamin Canac
91da9aa83a docs(deps): update @nuxt/ui-pro 2024-12-27 12:52:37 +01:00
Benjamin Canac
9759320438 fix(NavigationMenu): arrow styles after reka-ui migration 2024-12-27 12:45:13 +01:00
Benjamin Canac
4f05b1aac9 fix(Stepper): correct item value type 2024-12-27 11:21:34 +01:00
Horu
ffba108291 feat(locale): add Viet language (#2986) 2024-12-26 15:43:42 +01:00
Benjamin Canac
5550d184bb docs(SupportedLanguages): improve 2024-12-26 10:59:21 +01:00
Nateetorn Preansri
c8cd06e92d feat(locale): add Thai language (#2980) 2024-12-26 10:44:03 +01:00
zannias
b326a14fb0 feat(locale): add Greek language (#2975) 2024-12-25 14:11:04 +01:00
Benjamin Canac
5183582a90 fix(templates): allow any string in colors autocomplete
Related to #2143

Co-Authored-By: Inesh Bose <56732164+ineshbose@users.noreply.github.com>
2024-12-24 16:56:22 +01:00
Benjamin Canac
ac54c7523c docs(deps): update @nuxt/ui-pro 2024-12-24 16:39:53 +01:00
renovate[bot]
4c0bdf38fc chore(deps): update devdependency vue-tsc to ^2.2.0 (v3) (#2966)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-24 16:16:21 +01:00
Benjamin Canac
c223281763 chore(Progress): remove $slots usage 2024-12-24 12:41:32 +01:00
renovate[bot]
7f09299de5 chore(deps): update all non-major dependencies (v3) (#2961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 18:38:52 +01:00
renovate[bot]
6510e1e47d chore(deps): update dependency nuxt-og-image to v4 (v3) (#2749)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 18:36:23 +01:00
Sébastien Chopin
2202d05119 docs: improve seo for vue components & composables (#2959) 2024-12-23 18:32:24 +01:00
Benjamin Canac
7eea62899c cli: update templates 2024-12-23 12:24:21 +01:00
Benjamin Canac
f66e272b63 docs(deps): update @nuxt/ui-pro 2024-12-23 12:24:20 +01:00
Benjamin Canac
23550c2263 chore(Carousel/Stepper): move orientation from defaultVariants to withDefaults 2024-12-23 12:23:28 +01:00
Mick Lawitzke
d6179912de chore: make zod imports tree-shakeable (#2846) 2024-12-23 12:13:37 +01:00
renovate[bot]
78be40a286 chore(deps): lock file maintenance (v3) (#2958)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 10:57:45 +01:00
renovate[bot]
c2d777625f chore(deps): update all non-major dependencies (v3) (#2917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-23 10:46:33 +01:00
rigtigeEmil
e1d385a175 feat(locale): add Danish language (#2952) 2024-12-22 16:33:44 +01:00
Bruno Belloni
1b3c919222 feat(CommandPalette): add autofocus prop (#2942) 2024-12-20 12:21:05 +01:00
Benjamin Canac
0f37aca317 chore(github): add codesandbox template to v3 bug report 2024-12-19 23:15:37 +01:00
Hugo Richard
7f64198a70 fix(Avatar): bind $attrs on AvatarFallback (#2933) 2024-12-19 13:00:31 +01:00
Benjamin Canac
6f8087f44b chore(github): update issue templates 2024-12-18 18:25:51 +01:00
Benjamin Canac
6974f23645 docs(content): lint fix 2024-12-18 18:07:33 +01:00
Benjamin Canac
f3f4edae28 docs(ComponentExample): handle iframe container on mobile 2024-12-18 15:52:09 +01:00
Iván Máximiliano, Lo Giudice
7302a846a9 fix(vue): head injection (#2929) 2024-12-18 14:58:13 +01:00
Benjamin Canac
2c99bb80c7 fix(templates): infer variants types in generated theme 2024-12-18 13:03:23 +01:00
Benjamin Canac
607792ea25 docs(theme): improve callouts code-blocks spacing 2024-12-17 18:14:03 +01:00
Benjamin Canac
1b6dda1ea9 docs(SupportedLanguages): map ukraine flag 2024-12-17 18:14:03 +01:00
renovate[bot]
6520790ff7 chore(deps): update tailwindcss to v4.0.0-beta.8 (v3) (#2898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 16:25:48 +01:00
Benjamin Canac
ad8db69990 docs(deps): update @nuxt/ui-pro 2024-12-17 15:40:59 +01:00
Benjamin Canac
242ff3b0ed docs(app): remove header toggle negative margin 2024-12-17 15:34:37 +01:00
Benjamin Canac
e931880671 fix(NavigationMenu): highlight border on children only with vertical orientation 2024-12-17 15:33:59 +01:00
Benjamin Canac
82d63446a1 fix(NavigationMenu): unbind link on collapsible trigger with vertical orientation 2024-12-17 14:05:03 +01:00
Iván Máximiliano, Lo Giudice
9b4694f8d9 fix(unplugin): invalid url schema on windows (#2899) 2024-12-16 17:28:22 +01:00
Everton
4c5a4fb526 fix(DropdownMenu/ContextMenu): correct bindings of checkbox items (#2921)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-16 15:13:36 +01:00
Benjamin Canac
6fb426fc17 fix(Modal/Popover/Slideover)!: rename prevent-close to dismissible + uniformize docs 2024-12-16 13:11:10 +01:00
Benjamin Canac
fdaff6630f chore(Modal/Slideover): remove unnecessary code to handle toasts 2024-12-16 12:57:22 +01:00
Benjamin Canac
0285bf33fa chore(deps): update @nuxt/content 2024-12-16 12:51:36 +01:00
Ilya Buligin
5efae599b6 feat(locale): add Ukrainian language (#2908)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-16 11:38:54 +01:00
Benjamin Canac
908f2b569a chore(deps): update @nuxt/ui-pro 2024-12-16 11:34:25 +01:00
Benjamin Canac
52b561dbed chore(deps): update @nuxt/content 2024-12-16 11:32:03 +01:00
renovate[bot]
34ec90c974 chore(deps): lock file maintenance (v3) (#2914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 10:49:46 +01:00
renovate[bot]
194f3b6f03 chore(deps): update all non-major dependencies (v3) (#2865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 10:21:19 +01:00
Dominique BILLET
2e17fb68de fix(defineShortcuts): handle extract when using onSelect or onClick (#2896) 2024-12-14 19:12:32 +01:00
Benjamin Canac
babfcdcb02 chore(deps): set debug resolution and refresh lock 2024-12-13 15:12:28 +01:00
Benjamin Canac
2fc43d66d5 test: update vue snapshots 2024-12-13 14:37:47 +01:00
Benjamin Canac
d9967f5e28 feat(Badge): rework sizes 2024-12-13 12:57:32 +01:00
Benjamin Canac
cef16cd49d docs(ComponentCode): fix number inputs 2024-12-13 12:47:47 +01:00
Benjamin Canac
0b86f4315e docs(app): improve navigation badge display 2024-12-13 12:43:15 +01:00
Benjamin Canac
bfb9b5200c docs(deps): update @nuxt/ui-pro 2024-12-13 12:42:59 +01:00
Benjamin Canac
aa3b38fc39 docs(deps): update @nuxt/content 2024-12-13 12:35:26 +01:00
Benjamin Canac
ae33adb900 chore(NavigationMenu): improve badge tsdoc 2024-12-13 11:43:39 +01:00
Benjamin Canac
f97d2e3b88 fix(Badge): reduce radius on sm size 2024-12-13 11:43:30 +01:00
Benjamin Canac
473194fbaf fix(Stepper): wrong item in title & description slots
Resolves #2888
2024-12-13 00:04:27 +01:00
Benjamin Canac
33fb2cad0b chore(cli): add title in docs template 2024-12-12 17:30:00 +01:00
Benjamin Canac
8d3f0fdc39 chore(deps): dedupe & set unimport resolution 2024-12-12 15:04:00 +01:00
Benjamin Canac
3167fda517 docs(ComponentCode): ignore boolean theme variants 2024-12-12 12:08:20 +01:00
Benjamin Canac
7ebd8d813d docs(getting-started): improve accessibility 2024-12-11 18:26:06 +01:00
Benjamin Canac
b40b73129c docs(deps): update @nuxt/ui-pro 2024-12-11 17:27:26 +01:00
Benjamin Canac
93ea5b958e docs(ComponentProps): consistent quotes in default 2024-12-11 17:26:38 +01:00
Benjamin Canac
76db00db7a docs(ComponentExample): improve iframe display 2024-12-11 16:23:02 +01:00
Benjamin Canac
3445078cab chore(Alert/CommandPalette): improve close tsdoc 2024-12-11 16:22:32 +01:00
Sébastien Chopin
f179f8588a docs(ComponentCode): add overflow hidden 2024-12-11 12:52:13 +01:00
Sébastien Chopin
5a6a165a8d docs(ComponentExample): add overflow hidden and props as search params 2024-12-11 12:43:48 +01:00
Benjamin Canac
7ee733e82b docs(ComponentExample): add code slot 2024-12-11 12:25:54 +01:00
Benjamin Canac
a0b8b93a5a docs(ComponentExample): add iframe prop 2024-12-11 12:13:37 +01:00
Benjamin Canac
52e2a4d68f chore(cli): improve 2024-12-11 11:44:51 +01:00
Sébastien Chopin
efd104a10f docs(app): improve aside navigation (#2875)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-11 11:15:05 +01:00
Sébastien Chopin
d8d56d909b docs(ComponentCode): force string for label when items used as boolean 2024-12-11 10:59:15 +01:00
Benjamin Canac
d5f9cc27a4 docs(deps): update @nuxt/ui-pro 2024-12-10 17:01:16 +01:00
Benjamin Canac
db9ac5778f docs(avatar): improve usage 2024-12-10 15:17:39 +01:00
Benjamin Canac
e73f38d1d1 docs(app): add target _blank only on external links 2024-12-10 15:17:39 +01:00
Benjamin Canac
206366a70e docs(ComponentProps): ignore viewTransition by default 2024-12-10 15:17:39 +01:00
Sébastien Chopin
88a5a7055d docs: update nuxt ui pro icon 2024-12-10 14:27:35 +01:00
Benjamin Canac
b2f68dcf81 docs(components): consistent writing 2024-12-10 12:59:01 +01:00
Benjamin Canac
edad9b7f5c chore(Chip): improve inset prop tsdoc 2024-12-10 12:13:32 +01:00
Benjamin Canac
c5a8914483 docs(ComponentCode): handle pro theme 2024-12-10 12:11:55 +01:00
Benjamin Canac
57f4d613e6 docs(ComponentCode): better slots handling 2024-12-10 11:06:51 +01:00
Cory Deppen
c186169562 docs(getting-started): update path to settings.json (#2870) 2024-12-10 00:39:23 +01:00
Benjamin Canac
31b8c56ff7 docs(ComponentCode): handle pro prop 2024-12-09 18:19:18 +01:00
Benjamin Canac
cc1e32edf5 docs(deps): update @nuxt/content 2024-12-09 17:42:33 +01:00
Sébastien Chopin
9fc42bab2e docs(ComponentProps): add support for name as prop 2024-12-09 16:06:17 +01:00
Benjamin Canac
1acf99390d docs(deps): update @nuxt/ui-pro 2024-12-09 15:21:42 +01:00
Benjamin Canac
bf45094f89 docs(app): display icon in navigation for ui-pro components 2024-12-09 15:13:18 +01:00
Benjamin Canac
eaddb8cb33 docs(nuxt.config): ignore pro components in component meta 2024-12-09 15:05:40 +01:00
Benjamin Canac
51de839aca docs(deps): update @nuxt/ui-pro 2024-12-09 12:07:34 +01:00
Benjamin Canac
83c2b70d98 chore(release): v3.0.0-alpha.10 2024-12-09 11:11:40 +01:00
Benjamin Canac
3b9ca2263d fix(CommandPalette): keep ignoreFilter groups at their place (#2833) 2024-12-09 10:17:54 +01:00
renovate[bot]
6636543256 chore(deps): update all non-major dependencies (v3) (#2848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 10:17:25 +01:00
Malik-Jouda
f98b91c22a fix(ColorPicker): handle RTL mode (#2858) 2024-12-09 10:17:05 +01:00
Benjamin Canac
857238ff14 chore(deps): update reka-ui 2024-12-08 11:02:40 +01:00
Christophe Carvalho Vilas-Boas
8b5d412fd7 feat(locale): add Portuguese language (#2855) 2024-12-07 01:09:00 +01:00
renovate[bot]
ed44d9d101 chore(deps): update devdependency @nuxt/test-utils to ^3.15.1 (v3) (#2839)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-07 01:08:21 +01:00
renovate[bot]
5a900e460b chore(deps): update tailwindcss to v4.0.0-beta.6 (v3) (#2853)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-07 00:55:35 +01:00
Christophe Carvalho Vilas-Boas
4b241ba3c3 fix(types): handle array of strings in AppConfig (#2854) 2024-12-07 00:55:11 +01:00
Benjamin Canac
80befc107c fix(defineShortcuts): return useEventListener to unregister the listener
Resolves #2031
2024-12-06 23:37:22 +01:00
Benjamin Canac
6c946dc0e7 docs(deps): update @nuxt/ui-pro 2024-12-06 17:39:13 +01:00
Benjamin Canac
2d81c02356 docs(Header): use Drawer as menu 2024-12-06 17:20:21 +01:00
Benjamin Canac
d3b3b9bef3 docs(installation): add app section 2024-12-06 17:20:21 +01:00
Benjamin Canac
b7ba2c7759 fix(Modal): prevent from going out of screen
Resolves #2711
2024-12-06 17:20:21 +01:00
Malik-Jouda
198d04de51 fix(Stepper): handle RTL mode (#2844) 2024-12-06 15:08:39 +01:00
renovate[bot]
16e0339e7a chore(deps): update all non-major dependencies (v3) (#2820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 11:18:34 +01:00
Benjamin Canac
6f1f9f4d81 docs(app): update module & framework select 2024-12-05 23:36:02 +01:00
Benjamin Canac
46f4e5a24d docs(app): redirect when module changes
Resolves #2840
2024-12-05 23:26:44 +01:00
Benjamin Canac
b983ea2aec docs(app): hide github link on mobile 2024-12-05 19:13:26 +01:00
Benjamin Canac
bd4abfa880 docs(app): improve module select padding 2024-12-05 19:12:01 +01:00
Benjamin Canac
c1ff978370 fix(Tabs): truncate not working 2024-12-05 19:11:51 +01:00
Benjamin Canac
984bb0899c docs(app): use tabs to switch framework & module (#2837) 2024-12-05 19:01:40 +01:00
Benjamin Canac
a938d24f90 fix(Tabs): prevent hover on disabled 2024-12-05 18:15:03 +01:00
Benjamin Canac
0f8c398673 docs: handle @nuxt/ui-pro components display 2024-12-05 16:43:12 +01:00
Benjamin Canac
695224f91f chore(ContextMenu/DropdownMenu/NavigationMenu): consistent trailing slot 2024-12-05 16:29:28 +01:00
Benjamin Canac
4b653ef773 feat(NavigationMenu): handle item.trailingIcon display 2024-12-05 16:29:28 +01:00
Benjamin Canac
816bb69deb fix(Stepper): missing import 2024-12-05 15:22:25 +01:00
Benjamin Canac
5a7c3b13d3 docs(SupportedLanguages): improve emojis 2024-12-05 15:16:41 +01:00
Benjamin Canac
b741ef3313 feat(Avatar): add default slot for fallback 2024-12-05 15:16:28 +01:00
Benjamin Canac
bc80a0121f chore(ColorPicker): use reka-ui 2024-12-05 14:47:48 +01:00
Alex
e475b6438d feat(ColorPicker): implement component (#2670)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-05 14:11:43 +01:00
Benjamin Canac
3e283117d2 docs(app): missing target _blank on links 2024-12-05 12:21:50 +01:00
Romain Hamel
6484d010a1 feat(Stepper): new component (#2733)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-05 12:20:45 +01:00
renovate[bot]
d539109357 chore(deps): update tailwindcss to v4.0.0-beta.5 (v3) (#2791)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 21:32:35 +01:00
Benjamin Canac
01c3934403 docs: add @nuxt/ui-pro source (#2775) 2024-12-04 21:15:07 +01:00
Benjamin Canac
e79103131f chore(deps): dedupe 2024-12-04 14:46:24 +01:00
Benjamin Canac
37f05e2ba8 docs(deps): update @nuxt/ui-pro 2024-12-03 16:43:39 +01:00
Benjamin Canac
81ac076219 feat(module)!: migrate to reka-ui (#2448) 2024-12-03 16:11:32 +01:00
phbe
c440c91a29 fix(locale): improve German translation (#2826) 2024-12-03 16:06:18 +01:00
sam
b7ff7d8aa6 feat(locale): add Brazilian Portuguese language (#2825) 2024-12-03 13:53:25 +01:00
Jakub Jelínek
68a10f09d5 feat(locale): add Slovak language (#2821) 2024-12-02 17:38:11 +01:00
Christian López C
004a577467 feat(Table): handle meta.class on th and td (#2790)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-02 13:43:08 +01:00
renovate[bot]
f712135576 chore(deps): lock file maintenance (v3) (#2818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 11:24:16 +01:00
Benjamin Canac
e2aaf5ba21 chore(renovate): ignore typescript 2024-12-02 11:05:26 +01:00
renovate[bot]
d65c7376d9 chore(deps): update all non-major dependencies (v3) (#2754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-12-02 11:03:49 +01:00
Benjamin Canac
f04c2082ad docs(Header): move dropdown out of link 2024-11-30 11:48:13 +01:00
Benjamin Canac
bda6098db3 docs(app): improve navigation 2024-11-29 17:28:19 +01:00
Benjamin Canac
8344d852a5 docs(deps): update @nuxt/content & @nuxt/ui-pro 2024-11-29 17:28:10 +01:00
Benjamin Canac
6bd8a06871 docs(Header): replace badge by dropdown 2024-11-29 16:46:20 +01:00
Benjamin Canac
148b02464d fix(components): specify collisionPadding to all menus 2024-11-29 16:39:35 +01:00
Benjamin Canac
1240a3b604 docs(deps): update @nuxt/content 2024-11-29 16:15:49 +01:00
Benjamin Canac
e3b8d0e60e docs(deps): update @nuxt/content 2024-11-29 16:01:33 +01:00
Benjamin Canac
0d41210c91 docs: improve callout links 2024-11-29 12:41:31 +01:00
Guillaume Chau
bc2bcb30d9 fix(icons): make loading icon clockwise (#2797)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-28 15:18:14 +01:00
Aaron Dewes
ed2722257a fix(ContextMenu): remove close animation (#2798) 2024-11-28 14:56:18 +01:00
Romain Hamel
f06fbafc1e fix(devtools): error with renderer when colorMode is disabled (#2792) 2024-11-28 10:51:55 +01:00
Kotering
ecc4755a17 feat(locale): add Japanese language (#2794) 2024-11-28 10:25:37 +01:00
Benjamin Canac
9b58ce05f0 chore(icons): sort 2024-11-27 20:22:45 +01:00
Sébastien Chopin
a481410c5f docs(installation):add UI template instructions 2024-11-27 16:36:57 +01:00
Benjamin Canac
cd7ab3b2b9 docs(theme): fix framework-only usage 2024-11-27 15:55:30 +01:00
Benjamin Canac
9a17f90985 docs(app): hide links slot 2024-11-27 15:17:27 +01:00
Alex
3496b2d541 docs(content): consistent callouts links style (#2786) 2024-11-27 14:28:19 +01:00
Sandro Circi
a6c22052e1 fix(Link): partial query match for Vue (#2787) 2024-11-27 14:27:47 +01:00
Benjamin Canac
6eb0bbbe1b docs(app): update error 2024-11-27 12:39:51 +01:00
Benjamin Canac
a2512f680d feat(css): use color-scheme utilities on body 2024-11-27 12:37:29 +01:00
Benjamin Canac
4eb79021ed chore(renovate): update
Co-Authored-By: Sébastien Chopin <seb@nuxt.com>
2024-11-27 12:37:01 +01:00
renovate[bot]
8a45c25df3 chore(deps): update vueuse monorepo to v12 (v3) (major) (#2784)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-27 12:11:58 +01:00
Dafitra
004fa1ebcb refactor(App): remove default locale handling (#2760) 2024-11-27 10:35:12 +01:00
Malik-Jouda
0f648024e0 feat(Calendar): add icon props (#2778) 2024-11-26 18:31:25 +01:00
Benjamin Canac
e7995e7a0b docs(app): improve framework hydration (#2780)
Co-authored-by: Sébastien Chopin <seb@nuxt.com>
2024-11-26 18:23:26 +01:00
Alex
15ca2f5701 docs(ComponentCode): add cast prop (#2773) 2024-11-26 16:13:47 +01:00
Benjamin Canac
08b9e4bff0 chore(README): update 2024-11-26 15:18:21 +01:00
Benjamin Canac
f49b49fd2c docs(app): update header github link 2024-11-26 15:10:17 +01:00
Benjamin Canac
a74e8c4444 docs(robots): update 2024-11-26 15:10:08 +01:00
Benjamin Canac
781081132d chore(README): update github links 2024-11-26 15:10:00 +01:00
Malik-Jouda
b1550d58ad fix(Table): handle loading animation in RTL mode (#2771) 2024-11-26 14:45:03 +01:00
Malik-Jouda
e7b69b7d6f fix(Calendar): handle icons in RTL mode (#2770) 2024-11-26 13:17:06 +01:00
Benjamin Canac
9478fc0768 fix(Calendar): omit as / asChild props 2024-11-26 13:12:11 +01:00
Alex
2e9aeb5f05 feat(Calendar): implement component (#2618)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-26 12:24:20 +01:00
Benjamin Canac
86f2b4856c fix(NavigationMenu): wrong badge class
Resolves #2766
2024-11-26 12:23:01 +01:00
Benjamin Canac
ba874c9191 docs(app): framework select global (#2719)
Co-authored-by: harlan <harlan@harlanzw.com>
2024-11-25 15:47:52 +01:00
Benjamin Canac
ffc81cc950 chore(CommandPalette): pass active to children 2024-11-25 14:39:15 +01:00
Benjamin Canac
d783387ed3 test(CommandPalette): improve 2024-11-25 14:26:58 +01:00
Benjamin Canac
37655377e9 feat(CommandPalette): add active field on items for consistency 2024-11-25 14:22:39 +01:00
renovate[bot]
7ab88d30b2 chore(deps): lock file maintenance (v3) (#2752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-25 12:48:44 +01:00
renovate[bot]
ccb79b7ee4 chore(deps): update all non-major dependencies (v3) (#2705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-25 12:37:53 +01:00
kyyy
c9806da6d8 fix(Form)!: resolve async validation in yup & issue directly mutate state (#2702)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-23 19:30:20 +01:00
Dafitra
3bccb6782a fix(useLocale): update locale import to enable tree shaking (#2735) 2024-11-22 23:03:44 +01:00
renovate[bot]
5a01a81577 chore(deps): update tailwindcss to v4.0.0-beta.2 (v3) (#2736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-22 23:03:00 +01:00
Arcitezz
3baddfd121 feat(i18n): add Dutch locale (#2728) 2024-11-22 12:44:27 +01:00
Benjamin Canac
a7a1227c93 fix(Breadcrumb): missing aria-hidden on presentation items
Resolves #2725
2024-11-22 09:53:26 +01:00
Benjamin Canac
b259ddf271 docs(app): update @source usage 2024-11-21 23:41:29 +01:00
Benjamin Canac
c47ffc1cd5 docs: update links to tailwind v4 beta docs 2024-11-21 23:23:45 +01:00
Malik-Jouda
0baa3a06d4 fix(Progress): handle horizontal animation in RTL mode (#2723) 2024-11-21 23:07:59 +01:00
renovate[bot]
b140dbfe63 chore(deps): update tailwindcss to v4.0.0-beta.1 (v3) (#2721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-21 22:32:52 +01:00
Benjamin Canac
6d917baac0 chore(css): update reset styles
https://github.com/tailwindlabs/tailwindcss/pull/15064
2024-11-21 22:31:37 +01:00
renovate[bot]
c511c95537 chore(deps): update tailwindcss to v4.0.0-alpha.36 (v3) (#2718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Sandro Circi <sandro.circi@digitoolmedia.com>
2024-11-21 22:18:50 +01:00
Hasan Mumin
de8228e504 feat(i18n): add Turkish locale (#2716) 2024-11-21 17:27:41 +01:00
Benjamin Canac
29d2acf564 docs(getting-started): update faq 2024-11-21 16:51:28 +01:00
Benjamin Canac
f5452ba0c5 docs(icon): add missing props 2024-11-21 15:54:36 +01:00
Alex
b6a841e975 docs(i18n): display supported languages in a cards (#2709) 2024-11-21 11:21:35 +01:00
renovate[bot]
7bf85e9a09 chore(deps): update tailwindcss to v4.0.0-alpha.35 (v3) (#2707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-21 10:56:00 +01:00
Benjamin Canac
9e8d50b2b8 chore(deps): dedupe 2024-11-20 18:54:15 +01:00
Benjamin Canac
b13b9e3ec0 docs(deps): update @nuxt/content to 3.0.0-alpha.7 2024-11-20 18:53:53 +01:00
Benjamin Canac
126c893635 docs(deps): update @nuxt/ui-pro 2024-11-20 17:56:34 +01:00
Farnabaz
7d8b721bdd docs(deps): update @nuxt/content (#2706) 2024-11-20 13:44:37 +01:00
renovate[bot]
b120e8d998 chore(deps): update all non-major dependencies (v3) (#2694)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 10:21:21 +01:00
renovate[bot]
2c4634a58f chore(deps): update nuxt framework to ^3.14.1592 (v3) (#2700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-20 10:20:55 +01:00
Dewdew
2cbf83eb84 feat(locale): translate Korean (#2703)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-20 09:58:52 +01:00
Benjamin Canac
da1b0bac04 docs(dropdown-menu/context-menu): move class to ui.content
After a6ecef0f fix
2024-11-20 09:51:19 +01:00
Benjamin Canac
7cc51d2efa test: update snapshots 2024-11-20 09:35:04 +01:00
Benjamin Canac
c163ed8187 docs: improve titles 2024-11-19 22:52:23 +01:00
Benjamin Canac
a6ecef0f0d fix(components): apply class on trigger instead of content when present
Resolves #2132
2024-11-19 22:10:27 +01:00
Benjamin Canac
faec8260a4 test(Popover/Tooltip): add class / ui props 2024-11-19 22:09:33 +01:00
Malik-Jouda
7a02bfeba6 playground: improve responsive (#2675) 2024-11-19 19:26:09 +01:00
Benjamin Canac
9dd525ca26 docs(deps): update @nuxt/content to alpha.6 (#2692) 2024-11-19 18:41:04 +01:00
Benjamin Canac
21d8c352a9 chore(release): v3.0.0-alpha.9 2024-11-19 16:03:52 +01:00
Benjamin Canac
5deadc7096 Revert "docs(ComponentCode/ComponentExample): use relative imports"
This reverts commit d75f47419d.
2024-11-19 15:54:51 +01:00
Benjamin Canac
fa9f0a7e2a chore(Toaster): use ToastPortal from radix-vue 2024-11-19 15:41:26 +01:00
Alex
143c015bbd docs(i18n): display supported languages in a table (#2684)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-19 15:33:01 +01:00
Benjamin Canac
d75f47419d docs(ComponentCode/ComponentExample): use relative imports 2024-11-19 15:18:06 +01:00
Alex
7b148daf1f cli: fix line break doc template (#2687) 2024-11-19 14:06:48 +01:00
Benjamin Canac
30e0c7fddd docs(deps): update @nuxt/ui-pro 2024-11-19 12:24:40 +01:00
Mohet
14fb21be00 feat(locale): add Persian language (#2682)
Co-authored-by: Ali Zemani <ali.ze@arianatech.ir>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-19 12:10:09 +01:00
renovate[bot]
25091bad48 chore(deps): lock file maintenance (v3) (#2672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-19 11:59:54 +01:00
renovate[bot]
b75ed29068 chore(deps): update all non-major dependencies (v3) (#2679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-19 11:40:06 +01:00
Thomas
b2fa65734b fix(css): --font-family-sans renamed to --font-sans (#2680)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-19 10:07:01 +01:00
Dewdew
d3a079a644 fix(Textarea): autoresize does not work when initializing modelValue (#2681) 2024-11-19 10:02:19 +01:00
renovate[bot]
8c6a8c283f chore(deps): update all non-major dependencies (v3) (#2642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-18 23:18:35 +01:00
kicaj
2fc36c878c feat(locale): add Polish language (#2678) 2024-11-18 22:49:05 +01:00
Aaron Dewes
992be91823 fix(locale): Improve German translation (#2676) 2024-11-18 21:59:27 +01:00
Alex
bd2f077fe8 feat(InputNumber): implement component (#2577)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-18 10:08:57 +01:00
Sandro Circi
7329900ae5 feat(Link): allow partial query match for its active state (#2664)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-17 12:16:19 +01:00
Benjamin Canac
8d85498ee1 fix(Button): improve neutral solid variant hover 2024-11-16 21:59:27 +01:00
Benjamin Canac
5c292cf620 chore(Alert/Toast): improve tsdoc 2024-11-16 14:27:16 +01:00
Benjamin Canac
c0837059a9 playground: add color mode button 2024-11-15 12:58:06 +01:00
Benjamin Canac
f5ea2411dc chore(package): add dev:vue script 2024-11-15 12:57:55 +01:00
Malik-Jouda
1fbbfe8df0 fix(Carousel): use dir from locale (#2647) 2024-11-15 12:00:51 +01:00
Sandro Circi
0daac5bafb fix(Toast): unreachable behind overlays (#2650)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-15 11:59:08 +01:00
Benjamin Canac
756f791a1a fix(Breadcrumb): render as nav
Resolves #2649
2024-11-15 09:52:44 +01:00
Eduard Aymerich
8ed434c105 feat(locale): translate Spanish (#2644) 2024-11-15 09:48:11 +01:00
renovate[bot]
190a2c9799 chore(deps): update tailwindcss to v4.0.0-alpha.34 (v3) (#2645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-15 09:47:16 +01:00
Alex
e55c0e2594 feat(locale): typing dir (#2643) 2024-11-14 19:53:35 +01:00
Benjamin Canac
4312ca4702 docs(deps): update @nuxt/ui-pro 2024-11-14 18:26:50 +01:00
renovate[bot]
2289742656 chore(deps): update dependency @nuxt/icon to ^1.7.5 (v3) (#2639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 16:45:20 +01:00
Benjamin Canac
601f4b2cd2 fix(PinInput): missing useFormField import 2024-11-14 15:57:21 +01:00
Benjamin Canac
cd080541a0 docs(deps): add @iconify-json/logos 2024-11-14 15:45:22 +01:00
Benjamin Canac
5722e0802d playground(deps): add @iconify-json/simple-icons 2024-11-14 15:44:35 +01:00
Benjamin Canac
8d0026558a fix(css): remove useless spacing override 2024-11-14 11:47:58 +01:00
Malik-Jouda
e5119a9ca4 fix(Breadcrumb/Carousel/Pagination): handle icons in RTL mode (#2633) 2024-11-14 10:17:55 +01:00
renovate[bot]
976dd2a386 chore(deps): update all non-major dependencies (v3) (#2629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 10:16:27 +01:00
Benjamin Canac
1d95eb7246 docs(input): add more examples 2024-11-13 16:58:21 +01:00
Benjamin Canac
7cc26d098d fix(App): remove dir prop (#2630) 2024-11-13 16:23:08 +01:00
Guillaume Chau
9241ba1230 fix(FormField): missing conditions to apply container classes (#2631)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-13 15:57:35 +01:00
Daniel Roe
3396d5cebe ci: run vite build to test playground (#2624) 2024-11-13 12:22:46 +01:00
Alex
937585cb3f feat(locale): provide dir on defineLocale (#2620)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-13 12:19:21 +01:00
renovate[bot]
9c00f7c7b7 chore(deps): update all non-major dependencies (v3) (#2626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:58:02 +01:00
Sandro Circi
73e25ed235 fix(locale): it translation (#2623) 2024-11-12 21:25:25 +01:00
kyyy
75c5e87724 feat(Form): apply transformations (#2550)
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2024-11-12 16:43:40 +01:00
max
95aa6f68b3 feat(PinInput): implement component (#2570)
Co-authored-by: Max Steinwand <msteinwand@kues.de>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2024-11-12 16:11:06 +01:00
Inesh Bose
f516d7b36d feat(InputMenu/SelectMenu): add create-item prop (#2472)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-12 15:28:18 +01:00
renovate[bot]
300ccc4885 chore(deps): update all non-major dependencies (v3) (#2605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 14:29:28 +01:00
Alex
e48b416e3b cli: add doc template (#2616)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-12 14:19:32 +01:00
Romain Hamel
17170bb998 playground(form): update examples (#2613) 2024-11-12 13:57:04 +01:00
renovate[bot]
fa5a3752c9 chore(deps): update tailwindcss to v4.0.0-alpha.33 (v3) (#2493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-12 13:56:31 +01:00
Benjamin Canac
fc9711223b chore(github): update issue templates 2024-11-12 13:11:42 +01:00
Alex
8a8b1ee2e1 feat(locale): provide code (#2611) 2024-11-12 12:57:40 +01:00
Benjamin Canac
30218f1b5b feat(NavigationMenu): control items open & defaultOpen on vertical
Resolves #2608
2024-11-12 11:12:19 +01:00
Romain Hamel
3584a3328b fix(Form): match error-pattern on input validation (#2606) 2024-11-11 22:50:22 +01:00
renovate[bot]
6d3dbdbee5 chore(deps): update all non-major dependencies (v3) (#2598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 21:07:54 +01:00
renovate[bot]
c614a0aafc chore(deps): lock file maintenance (v3) (#2596)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 19:26:57 +01:00
Sandro Circi
df7a61a97a fix(useLocale): missing import in various components (#2603) 2024-11-11 19:24:33 +01:00
Romain Hamel
143612ec73 feat(FormField): add error-pattern prop (#2601) 2024-11-11 18:35:27 +01:00
Benjamin Canac
18931acdb3 fix(InputMenu/SelectMenu): init filter with labelKey 2024-11-11 00:28:43 +01:00
Benjamin Canac
bbc6bf2455 docs(input-menu/select-menu): add countries picker examples 2024-11-11 00:08:16 +01:00
Benjamin Canac
ff1e0798d3 feat(SelectMenu): use UInput in search to handle props like icon
Resolves #2021
2024-11-10 23:22:44 +01:00
Benjamin Canac
b0be26d67f fix(Toaster): teleport to body
Resolves #2404
2024-11-10 19:21:50 +01:00
Benjamin Canac
36ea3e4045 chore(scripts): remove 2024-11-10 18:36:52 +01:00
Adam Kasper
4889d30b44 feat(locale): add support for Czech translation (#2593) 2024-11-10 18:17:32 +01:00
Benjamin Canac
944a7e0f07 Revert "fix(module): resolve #build/app.config import for vue and nuxt"
This reverts commit d6943e39c0.
2024-11-10 17:25:33 +01:00
Benjamin Canac
d6943e39c0 fix(module): resolve #build/app.config import for vue and nuxt
Resolves #2560
2024-11-10 16:45:46 +01:00
Benjamin Canac
ddb46905e7 fix(App): missing vue imports 2024-11-10 16:44:09 +01:00
renovate[bot]
0e74dbebce chore(deps): update all non-major dependencies (v3) (#2579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-10 14:45:10 +01:00
Benjamin Canac
9e2cc5b125 fix(Modal/Slideover): prevent esc with prevent-close prop
Resolves #2501
2024-11-10 10:19:47 +01:00
Benjamin Canac
ea97759c2c feat(Popover): add prevent-close prop
Resolves #2245
2024-11-10 10:18:08 +01:00
Dewdew
95a0bbc581 fix(Link): missing relative import (#2588)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-10 10:05:17 +01:00
Benjamin Canac
ecd63ad8d6 test: update vue snapshots 2024-11-10 09:42:11 +01:00
Benjamin Canac
47f58f52ef fix(ContextMenu/DropdownMenu): relative imports with prefix 2024-11-10 09:39:37 +01:00
Benjamin Canac
446f9c1085 feat(Table): add caption prop 2024-11-09 23:55:26 +01:00
Benjamin Canac
7e8a1dd496 chore(readme): update 2024-11-09 22:06:55 +01:00
Benjamin Canac
89ee31b7ae chore(readme): update 2024-11-09 22:03:56 +01:00
Benjamin Canac
95be76940c docs(getting-started): use ::steps and mention css files 2024-11-09 22:03:49 +01:00
Benjamin Canac
761afaf40d docs(deps): update @nuxt/ui-pro 2024-11-09 21:50:20 +01:00
Sandro Circi
d167c9b807 fix(locale): Italian translation (#2584) 2024-11-09 16:15:43 +01:00
Alex
824ba56291 feat(cli): add locale command (#2586) 2024-11-09 16:14:29 +01:00
Sandro Circi
4fbbb25f68 feat(locale): add support for Italian (#2583) 2024-11-09 13:50:03 +01:00
Muhammad Mahmoud
602a667343 feat(locale): add support for Arabic (#2582) 2024-11-09 13:49:50 +01:00
BlackWhite
febda5c2b6 feat(locale): translate chinese (#2580) 2024-11-09 10:40:42 +01:00
Malik-Jouda
20379f51cc docs(nuxt.config): cannot use import.meta outside a module (#2578) 2024-11-09 10:06:56 +01:00
renovate[bot]
1ec56f3326 chore(deps): update all non-major dependencies (v3) (#2572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-08 18:03:14 +01:00
Alex
1f44d58b64 docs(i18n): auto generated lang support (#2574)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-08 17:48:42 +01:00
Benjamin Canac
5392f988b8 docs(app): fetch files lazy on client 2024-11-08 17:35:42 +01:00
Alex
26362408b1 feat(module): support i18n in components (#2553)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-08 17:22:57 +01:00
renovate[bot]
1e7638bd03 chore(deps): update all non-major dependencies (v3) (#2563)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-08 16:55:39 +01:00
Romain Hamel
afe40033b0 fix(module): skip devtools renderer page injection if router integration is disabled (#2571) 2024-11-08 16:27:25 +01:00
Benjamin Canac
503f701c7e fix(InputMenu/SelectMenu): multiple not working with generic boolean casting
Resolves #2541
2024-11-08 10:59:13 +01:00
Benjamin Canac
d9822db6e8 chore(InputMenu/Select/SelectMenu): consistent types 2024-11-08 10:27:05 +01:00
Benjamin Canac
0ceafe1d54 fix(InputMenu/SelectMenu): look in items only with value-attribute
Resolves #2464
2024-11-08 10:26:44 +01:00
Benjamin Canac
f943f88fcc fix(InputMenu/SelectMenu): use isEqual from ohash 2024-11-08 10:19:02 +01:00
Benjamin Canac
e831813aa3 chore(git): ignore vue playground files 2024-11-07 22:35:50 +01:00
Benjamin Canac
37a359701f fix(module): remove fast-deep-equal in favor of custom isEqual 2024-11-07 21:56:56 +01:00
Benjamin Canac
557e0c92a4 docs(deps): revert @nuxt/content to 3.0.0-alpha.5 2024-11-07 21:54:42 +01:00
Benjamin Canac
7f6db45f1e feat(css): add --ui-bg-muted / --ui-border-muted variables
Those are used in Nuxt UI Pro
2024-11-07 21:43:49 +01:00
Benjamin Canac
a64a7104c5 docs(app): update links 2024-11-07 17:46:44 +01:00
Benjamin Canac
40fc8f3718 docs(app): remove icons from breadcrumb 2024-11-07 16:33:19 +01:00
Benjamin Canac
8059d540e3 docs(app): improve links 2024-11-07 16:25:01 +01:00
Benjamin Canac
42fce998e4 docs: remove markdown from descriptions 2024-11-07 15:21:38 +01:00
Benjamin Canac
70fcc68ee2 chore(release): v3.0.0-alpha.8 2024-11-07 14:58:47 +01:00
Benjamin Canac
230cda129b docs(getting-started): update 2024-11-07 14:56:31 +01:00
Benjamin Canac
1c01db4d20 docs(avatar): update 2024-11-07 14:56:00 +01:00
Benjamin Canac
c9adf333be feat(Avatar): infer width / height on <img> based on size prop 2024-11-07 14:49:39 +01:00
Benjamin Canac
ffb551ab54 test: add silent: true in vue config 2024-11-07 13:08:12 +01:00
Benjamin Canac
f1a14dd87c feat(Avatar): use NuxtImg component when available
Resolves nuxt/ui#2078
2024-11-07 13:01:52 +01:00
renovate[bot]
0454124b3c chore(deps): update dependency @iconify-json/lucide to ^1.2.12 (v3) (#2556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-07 12:43:35 +01:00
Benjamin Canac
0bfe2b60b3 fix(module): add fast-deep-equal in optimizeDeps 2024-11-07 12:19:41 +01:00
Benjamin Canac
5ec756d263 playground(deps): add @iconify-json/lucide 2024-11-07 11:52:59 +01:00
renovate[bot]
d6a434469d chore(deps): update all non-major dependencies (v3) (#2529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-07 11:23:49 +01:00
renovate[bot]
ebbd605ff3 chore(deps): update nuxt framework to ^3.14.159 (v3) (#2547)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-06 19:15:22 +01:00
Benjamin Canac
860e6ed801 chore(module): pass resolver to templates 2024-11-06 16:13:42 +01:00
Benjamin Canac
12ae20df20 fix(module): define #build/app.config
Resolves nuxt/ui#2532
2024-11-06 15:46:05 +01:00
Benjamin Canac
64ad4b6892 fix(NavigationMenu): enforce data-orientation 2024-11-06 15:45:18 +01:00
Benjamin Canac
3c443c631c playground(tooltip): use buttons 2024-11-06 14:57:12 +01:00
Benjamin Canac
104b926c2e docs(deps): update @nuxt/ui-pro 2024-11-06 14:57:03 +01:00
Benjamin Canac
60c574cd01 docs(app): update banner icon 2024-11-06 14:41:41 +01:00
Alex
f821e6681b fix(Table): types in undeclared slots (#2544)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-06 14:27:22 +01:00
Alex
a6c1a6c587 feat(theme)!: migrate from heroicons to lucide (#2540)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-06 12:59:19 +01:00
renovate[bot]
e3092b6b40 chore(deps): update dependency sirv to v3 (v3) (#2538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-05 22:25:36 +01:00
renovate[bot]
5f99f284ec chore(deps): update dependency nuxt to ^3.14.0 (v3) (#2537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-05 22:25:04 +01:00
Romain Hamel
701c75a2a8 feat(module): devtools integration (#2196)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-05 22:17:56 +01:00
Benjamin Canac
7fc6b387b3 docs(getting-started): add Vue section 2024-11-05 21:47:12 +01:00
Alex
f66c96e277 feat(DropdownMenu/ContextMenu): handle color field in items (#2510)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-05 21:21:01 +01:00
Malik-Jouda
2d52834529 feat(Badge): handle icon and avatar props (#2497)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-11-05 19:34:40 +01:00
Benjamin Canac
a97c511279 fix(utils): improve escapeRegExp function 2024-11-05 18:03:10 +01:00
Benjamin Canac
50cc034796 chore(deps): dedupe 2024-11-05 15:11:27 +01:00
Benjamin Canac
9f87ea5729 docs(installation): improve callouts 2024-11-05 15:10:13 +01:00
renovate[bot]
eedf287654 chore(deps): update nuxt framework to ^3.14.0 (v3) (#2528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 20:58:02 +01:00
renovate[bot]
28e35da59e chore(deps): update dependency @nuxthub/core to ^0.8.5 (v3) (#2527)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 19:39:34 +01:00
renovate[bot]
41eac7ff82 chore(deps): lock file maintenance (v3) (#2520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 14:20:08 +01:00
renovate[bot]
7dd2fd05fc chore(deps): update all non-major dependencies (v3) (#2509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 10:29:03 +01:00
Benjamin Canac
845f85a072 fix(useKbd): hydration issue
Related to #2494
2024-11-02 14:29:33 +01:00
Benjamin Canac
120eb920a8 chore(unplugin): improve ui types 2024-11-02 12:50:49 +01:00
Benjamin Canac
1a93d13a16 fix(components): missing relative imports
Resolves nuxt/ui#2515
2024-11-02 12:50:25 +01:00
Benjamin Canac
5a9511fa04 docs(nuxt.config): add typescript lang 2024-10-31 15:44:10 +01:00
Alexander
332c6c08d7 feat(Kbd): special keys for macOS and other systems (#2494)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-31 15:14:15 +01:00
Alexander
f26f6c8168 feat(InputMenu/Select/SelectMenu): arrow prop implementation (#2503)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-31 15:09:24 +01:00
renovate[bot]
c85ba43040 chore(deps): update all non-major dependencies (v3) (#2495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-31 14:30:53 +01:00
Benjamin Canac
50918a8128 docs: update to @nuxt/content@next (#2379)
Co-authored-by: Farnabaz <farnabaz@gmail.com>
2024-10-31 14:16:26 +01:00
Benjamin Canac
8669553ea4 fix(Chip): proxy attrs to slot
Resolves nuxt/ui#2484
2024-10-31 12:17:51 +01:00
Benjamin Canac
b416a194df test(NavigationMenu): update vue snapshots 2024-10-31 11:58:25 +01:00
Benjamin Canac
d73c4ddd41 test(ButtonGroup): update vue snapshots 2024-10-31 11:52:33 +01:00
Benjamin Canac
7289eb21e2 chore(deps): remove vue-tsc resolutions 2024-10-31 11:32:12 +01:00
Benjamin Canac
b5ca0d96f1 feat(NavigationMenu): add item-content slot 2024-10-31 11:27:52 +01:00
Benjamin Canac
d980115408 fix(ButtonGroup): merge class with theme
Resolves nuxt/ui#2498
2024-10-31 11:27:19 +01:00
Alexander
ef561e7cba feat(Table): customize header and cell through slots (#2457)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-30 15:21:48 +01:00
renovate[bot]
45171e206e chore(deps): lock file maintenance (v3) (#2474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 12:08:17 +01:00
renovate[bot]
ce427f7543 chore(deps): update all non-major dependencies (v3) (#2454)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-30 12:01:08 +01:00
Benjamin Canac
309e52faa7 fix(InputMenu/SelectMenu): fast-deep-equal import
Resolves nuxt/ui#2488
2024-10-29 22:15:24 +01:00
Yasser Lahbibi
fc2015bb0e fix(NavigationMenu): improve generic types (#2482)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-29 19:21:35 +01:00
Fabian B.
03dd1eba7e fix(Carousel): add missing aria-label on dots (#2489) 2024-10-29 18:31:13 +01:00
Benjamin Canac
77d18d8ab7 fix(templates): type error in app config
Resolves nuxt/ui#2481
2024-10-28 22:43:11 +01:00
Malik-Jouda
94c49186e1 feat(components): improve RTL support (#2433)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-28 21:37:01 +01:00
Rihan
e82a82d812 docs(use-toast): add App component warning (#2480) 2024-10-28 21:31:53 +01:00
Yasser Lahbibi
db8111d783 fix(InputMenu/Select/SelectMenu): improve types (#2471) 2024-10-28 18:08:24 +01:00
Sandro Circi
1402436c2b fix(NavigationMenu): add missing min-w-0 to make truncate work (#2476) 2024-10-28 17:13:30 +01:00
Sandro Circi
75410fba97 docs(table): fix examples width (#2478) 2024-10-28 16:55:11 +01:00
Benjamin Canac
0a17663d13 chore(cli): update templates 2024-10-28 16:43:43 +01:00
Benjamin Canac
e592da2fcb fix(Tabs): same behaviour between pill and link variants
Resolves #2338
2024-10-28 10:48:53 +01:00
Benjamin Canac
2514abeb5b chore(github): put back docs typecheck 2024-10-25 17:28:19 +02:00
Daniel Roe
d4a943e631 feat(module): add support for vue using unplugin (#2416)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-25 17:15:26 +02:00
Sébastien Chopin
50c6bf0092 chore(deps): update @nuxthub/core (#2459) 2024-10-25 00:00:19 +02:00
renovate[bot]
9cdde9edb2 chore(deps): update tailwindcss to v4.0.0-alpha.30 (v3) (#2458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-24 23:47:21 +02:00
Benjamin Canac
3f48fdae8d test(Table): import from #components to resolve components 2024-10-24 16:27:39 +02:00
Malik-Jouda
058c49add2 playground(popover): update text (#2452)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-24 15:06:55 +02:00
Benjamin Canac
5d4a8ff713 docs(nuxt.config): lint 2024-10-24 14:50:45 +02:00
Benjamin Canac
2af0346654 docs(getting-started): improve faq 2024-10-24 14:35:46 +02:00
Benjamin Canac
f55194e6f0 docs(nuxt.config): clean 2024-10-23 23:49:51 +02:00
Benjamin Canac
eb47a7099d chore(deps): update eslint / @nuxt/eslint-config 2024-10-23 21:35:11 +02:00
Benjamin Canac
68f0269046 chore(release): v3.0.0-alpha.7 2024-10-23 21:27:57 +02:00
Benjamin Canac
47d9955ed9 chore(renovate): ignore resolutions 2024-10-23 21:22:21 +02:00
renovate[bot]
6386a4d99a chore(deps): update all non-major dependencies (v3) (#2418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 21:17:55 +02:00
Benjamin Canac
7687ac16fd docs(table): update 2024-10-23 17:51:28 +02:00
Benjamin Canac
90a775bab9 docs(table): update 2024-10-23 17:49:17 +02:00
renovate[bot]
efeb3f9cfa chore(deps): update tailwindcss to v4.0.0-alpha.29 (v3) (#2440)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 17:44:59 +02:00
Benjamin Canac
b54950e3ed feat(Table): implement component (#2364) 2024-10-23 17:32:30 +02:00
Sandro Circi
34bddd45be feat(NavigationMenu): handle children on vertical orientation (#2384)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-22 22:52:38 +02:00
Benjamin Canac
69d7b57825 docs(error): update loading indicator color 2024-10-22 12:57:36 +02:00
Benjamin Canac
92873e05ba docs(app): update error 2024-10-22 12:51:42 +02:00
Benjamin Canac
7870288367 docs(app): improve meta 2024-10-22 12:51:32 +02:00
Benjamin Canac
9d3d5db376 docs(deps): update @nuxt/ui-pro 2024-10-22 12:51:18 +02:00
renovate[bot]
090fe16cff chore(deps): update devdependency @nuxt/test-utils to ^3.14.4 (v3) (#2423)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-21 18:21:44 +02:00
renovate[bot]
44ebb35953 chore(deps): lock file maintenance (v3) (#2428)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-21 18:15:17 +02:00
Benjamin Canac
5000a4e0d5 playground(select-menu): add missing placeholder 2024-10-19 18:27:07 +02:00
rizkyyy
5385944359 feat(Form): add superstruct validation (#2363)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2024-10-19 14:07:22 +02:00
Tomy Kho
7802aacf3f fix(InputMenu): emit focus event (#2386)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-18 16:09:04 +02:00
Benjamin Canac
f59844bb61 fix(Input/InputMenu/Select/SelectMenu): uniformize placeholder color 2024-10-18 15:48:08 +02:00
Benjamin Canac
9359603a0a docs(input): add examples 2024-10-18 15:42:27 +02:00
Benjamin Canac
d407c42be7 docs(deps): update @nuxt/ui-pro 2024-10-18 15:17:53 +02:00
renovate[bot]
8a06981df2 chore(deps): update tailwindcss to v4.0.0-alpha.28 (v3) (#2412)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-18 15:17:33 +02:00
Benjamin Canac
a68016ec5d fix(Slideover): set max height on top / bottom positions
Resolves nuxt/ui#2388
2024-10-17 22:44:56 +02:00
Benjamin Canac
973023a04e chore(css): move keyframes into separate file 2024-10-17 22:32:26 +02:00
renovate[bot]
f6789a156c chore(deps): update all non-major dependencies (v3) (#2395)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-17 22:15:17 +02:00
Benjamin Canac
61b232377b fix(AvatarGroup): wrong ring on big sizes 2024-10-17 22:14:29 +02:00
Benjamin Canac
eb1b30db40 playground(app): improve responsive navigation 2024-10-17 22:06:34 +02:00
Benjamin Canac
b975235c8b feat(ContextMenu/DropdownMenu): handle loading field in items 2024-10-17 22:03:32 +02:00
Benjamin Canac
81a59969f6 chore(ContextMenu/DropdownMenu): prevent useless extends 2024-10-17 21:47:23 +02:00
Benjamin Canac
dc8cd1e664 docs(components): ignore props in ComponentProps 2024-10-17 21:46:53 +02:00
Benjamin Canac
c63920d05b docs(context-menu/dropdown-menu): improve items properties 2024-10-17 21:25:50 +02:00
Benjamin Canac
37171b9327 chore(components): prevent useless extends on items 2024-10-17 21:25:17 +02:00
Benjamin Canac
49abad243c feat(CommandPalette): handle loading field in items 2024-10-17 21:13:11 +02:00
Benjamin Canac
c1294f6505 chore(components): prioritize icon over avatar in items 2024-10-17 21:06:10 +02:00
Benjamin Canac
53a3796d1b feat(Input/InputMenu/Select/SelectMenu): handle avatar prop 2024-10-17 18:21:12 +02:00
Benjamin Canac
df2013ca92 fix(Button): invalid hover on link variant 2024-10-17 17:41:30 +02:00
Benjamin Canac
0666884b6f docs: use nuxt.png in avatars 2024-10-17 17:10:39 +02:00
Benjamin Canac
a54c3e49fe feat(Button): handle avatar prop 2024-10-17 17:09:59 +02:00
Benjamin Canac
716ed10068 test: consistent avatar urls 2024-10-17 16:33:50 +02:00
Benjamin Canac
e137577a72 docs: consistent avatar urls 2024-10-17 16:31:51 +02:00
Benjamin Canac
0f9349f920 playground: consistent avatar urls 2024-10-17 16:31:41 +02:00
Benjamin Canac
e6143e8600 docs(deps): add wrangler as devDependencies 2024-10-15 18:34:03 +02:00
renovate[bot]
b9380c15ab chore(deps): update tailwindcss to v4.0.0-alpha.27 (v3) (#2263)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-15 18:03:07 +02:00
renovate[bot]
0b7f171268 chore(deps): update all non-major dependencies (v3) (#2382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-15 17:29:53 +02:00
Benjamin Canac
490fb1377b docs(deps): use @nuxt/ui-pro preview release 2024-10-15 17:14:56 +02:00
Benjamin Canac
8ef6e712ac feat(ContextMenu/DropdownMenu): handle checkbox items type
Resolves #2144
2024-10-15 17:14:56 +02:00
Benjamin Canac
0759e29c22 docs(installation): add Continuous Releases section 2024-10-15 17:03:44 +02:00
Benjamin Canac
5385f84e0a chore(github): split docs typecheck 2024-10-15 16:33:17 +02:00
Benjamin Canac
46bd1cb002 docs(carousel): use useTemplateRef 2024-10-15 15:21:53 +02:00
Benjamin Canac
8258cd3829 docs(form): use useTemplateRef 2024-10-15 15:21:42 +02:00
Benjamin Canac
16b48efa96 docs(ThemePicker): remove select event 2024-10-15 15:13:43 +02:00
Benjamin Canac
b39c4d127e fix(components)!: rename select to onSelect on items 2024-10-15 15:13:43 +02:00
renovate[bot]
6af276ef38 chore(deps): update devdependency @release-it/conventional-changelog to v9 (v3) (#2368)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 18:31:37 +02:00
renovate[bot]
67fe33f820 chore(deps): update all non-major dependencies (v3) (#2352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 17:55:59 +02:00
renovate[bot]
9e8b9dcc62 chore(deps): lock file maintenance (v3) (#2376)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 17:23:43 +02:00
Benjamin Canac
e9affb6f5b docs(command-palette): update 2024-10-14 14:48:14 +02:00
Benjamin Canac
6e9f6a8ef4 docs(accordion): add alert about multiple and v-model
Resolves #2372
2024-10-14 14:47:40 +02:00
Sandro Circi
dcce571cda fix(module): stop using tailwind's shorthand arbitrary variable syntax (#2366)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-14 10:42:26 +02:00
Benjamin Canac
ea07dffdd5 chore(github): update issue templates 2024-10-12 19:13:51 +02:00
Benjamin Canac
acfc6cef2d feat(Accordion/Breadcrumb/CommandPalette/ContextMenu/DropdownMenu/NavigationMenu/Tabs): add labelKey prop 2024-10-11 18:30:21 +02:00
Benjamin Canac
f6f9823b15 feat(InputMenu/RadioGroup/Select/SelectMenu): handle labelKey and use get to support dot notation 2024-10-11 15:31:47 +02:00
Benjamin Canac
296ae456c9 chore(components): move utils imports before components 2024-10-11 14:15:44 +02:00
Benjamin Canac
f6631ff7bc fix(Checkbox): indeterminate prop not working 2024-10-11 14:13:46 +02:00
Benjamin Canac
bcfa4b74a9 fix(Drawer/Modal/Slideover): no need for z-index since its isolated
Resolves nuxt/ui#2347
2024-10-11 00:08:17 +02:00
Benjamin Canac
1a7af6d182 test(SelectMenu): update snapshots 2024-10-11 00:07:39 +02:00
Benjamin Canac
558871a46a docs(Header): fix logo focus 2024-10-10 21:11:23 +02:00
Benjamin Canac
c8c17490ab docs(roadmap): fix height 2024-10-10 21:07:50 +02:00
Benjamin Canac
9e03da41b3 fix(css): font-sans already applied on <html> 2024-10-10 17:13:46 +02:00
Benjamin Canac
a2bad2eee2 fix(css): make @theme default 2024-10-10 17:13:05 +02:00
Benjamin Canac
7c21ddefa8 fix(InputMenu/SelectMenu): escape regexp before search 2024-10-10 16:12:22 +02:00
Benjamin Canac
0f9ac8733e fix(InputMenu/SelectMenu): improve displayed value
Resolves nuxt/ui#2353
2024-10-10 16:01:44 +02:00
Benjamin Canac
365bc0fc9a docs(select/select-menu): apply width class on examples
Resolves #2297
2024-10-10 15:34:33 +02:00
Benjamin Canac
c34a805e5f docs: improve hard-coded rounded 2024-10-09 18:24:50 +02:00
Benjamin Canac
b4ffcedd2e docs(deps): update @nuxt/ui-pro 2024-10-09 17:05:35 +02:00
Benjamin Canac
55179ce71c chore(release): v3.0.0-alpha.6 2024-10-09 16:29:01 +02:00
Benjamin Canac
e6d91c94d1 docs(deps): use @nuxt/ui-pro compact url 2024-10-09 16:17:41 +02:00
Benjamin Canac
9026cf2594 chore(release-it): update 2024-10-09 16:00:30 +02:00
renovate[bot]
818ec3893c chore(deps): update all non-major dependencies (v3) (#2344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09 15:51:09 +02:00
Benjamin Canac
31b701d9df chore(github): pkg.pr.new compact publish 2024-10-09 15:19:01 +02:00
Benjamin Canac
bee04adf4c fix(Carousel): move embla plugins to dependencies 2024-10-09 15:10:22 +02:00
Sandro Circi
057e86cfda feat(module): implement --ui-radius CSS variable (#2341)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-09 14:28:29 +02:00
Benjamin Canac
68ee3f11ca feat(Carousel): implement component (#2288) 2024-10-08 17:12:43 +02:00
renovate[bot]
69a6e11c52 chore(deps): update all non-major dependencies (v3) (#2335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 12:16:57 +02:00
Benjamin Canac
53a4696ed3 docs(installation): improve theme.colors section 2024-10-08 12:05:17 +02:00
Benjamin Canac
7c4ffa56ec chore(module): improve tsdoc 2024-10-08 11:58:23 +02:00
Benjamin Canac
1fc21af918 docs(installation): add warning about shamefully-hoist
TypeScript warning is no longer needed since 6e7a400d4e
2024-10-08 00:51:28 +02:00
renovate[bot]
ede20f89c4 chore(deps): update all non-major dependencies (v3) (#2331)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 23:47:22 +02:00
Fabian Hiller
0955c07edd feat(Form): add Standard Schema support (#2303)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-10-07 23:25:52 +02:00
renovate[bot]
aa8fa5be3a chore(deps): update all non-major dependencies (v3) (#2329)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 23:20:48 +02:00
renovate[bot]
cf490c3b77 chore(deps): update pnpm to v9.12.1 (v3) (#2328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 15:50:04 +02:00
renovate[bot]
220f659c4c chore(deps): update devdependency @nuxt/test-utils to ^3.14.3 (v3) (#2326)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 15:43:17 +02:00
Benjamin Canac
f2e8762b48 docs(deps): use @nuxt/ui-pro@v2 2024-10-07 15:25:07 +02:00
renovate[bot]
c2e879feac chore(deps): update all non-major dependencies (v3) (#2311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-07 15:18:57 +02:00
Benjamin Canac
3a7c5c2601 fix(Alert): default variant to solid for consistency 2024-10-07 14:57:46 +02:00
Benjamin Canac
9368c6a639 refactor(module)!: implement design system with CSS variables (#2298) 2024-10-07 14:48:02 +02:00
Benjamin Canac
3cf5535b2f fix(Button): center text with block prop
Resolves nuxt/ui#2317
2024-10-07 14:23:24 +02:00
renovate[bot]
cb0081e0a7 chore(deps): update all non-major dependencies (v3) (#2290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-05 23:14:35 +02:00
Benjamin Canac
6e7a400d4e chore(deps): add typescript in peerDependencies 2024-10-05 14:38:52 +02:00
Benjamin Canac
fde75087d0 chore(github): add publish step with pkg-pr-new 2024-10-05 14:05:15 +02:00
Benjamin Canac
7c3ed81309 docs(pages): use title instead of navigation.title in og image 2024-10-02 19:09:07 +02:00
Benjamin Canac
cb44980440 docs(pages): add z-index on toc to go over code examples 2024-10-02 18:51:46 +02:00
Benjamin Canac
6c7c2f02f3 fix(Accordion): use text-left break-words instead of truncate on label 2024-10-02 18:51:32 +02:00
Benjamin Canac
a1ebf8da9a docs(Header): fix badge truncate 2024-10-02 18:47:21 +02:00
Benjamin Canac
ed77b69f5d chore(module): lint 2024-10-02 16:46:11 +02:00
Benjamin Canac
dd42e652d1 docs(deps): update @nuxt/ui-pro 2024-10-02 16:18:29 +02:00
Benjamin Canac
b82af02839 feat(module): set disableTransition option on @nuxtjs/color-mode 2024-10-02 16:18:10 +02:00
Benjamin Canac
e487f2e877 chore(release): v3.0.0-alpha.5 2024-10-02 15:58:14 +02:00
Benjamin Canac
7addc2f70d docs(getting-started): improve faq 2024-10-02 15:57:02 +02:00
Benjamin Canac
0986f5e4b7 docs(Header): display color mode button 2024-10-02 15:57:02 +02:00
Benjamin Canac
077a9210db docs(getting-started): display color-mode page 2024-10-02 15:57:02 +02:00
Benjamin Canac
9dcf903926 feat(module): enable @nuxtjs/color-mode 2024-10-02 15:57:01 +02:00
Benjamin Canac
0f86b87385 feat(module): override dark variant with class strategy 2024-10-02 15:57:01 +02:00
Sébastien Chopin
c9a2631bc3 docs: update link to downloads count badge 2024-10-02 15:53:47 +02:00
Benjamin Canac
1518d0024f chore(README): invalid documentation url 2024-10-02 14:21:54 +02:00
Benjamin Canac
421a193d20 docs(nuxt.config): invalid site.url 2024-10-02 14:21:45 +02:00
Sébastien Chopin
dd54abf243 docs: update GitHub link to v3 branch 2024-10-02 12:45:47 +02:00
Benjamin Canac
c837ca5cc0 docs(getting-started): describe Tailwind CSS @source and @plugin 2024-10-02 12:25:01 +02:00
Benjamin Canac
66a04add91 fix(Button): props specified more than once 2024-10-01 15:31:18 +02:00
Benjamin Canac
a5153d6c8d docs(deps): update @nuxt/ui-pro 2024-10-01 15:24:37 +02:00
Benjamin Canac
cc6db6f14b chore(release): v3.0.0-alpha.4 2024-10-01 15:05:23 +02:00
Benjamin Canac
1f9abdae61 fix(Toast): improve focus styles 2024-10-01 14:50:27 +02:00
Benjamin Canac
f54f607413 fix(build.config): disable mkdist addRelativeDeclarationExtensions option 2024-10-01 14:41:19 +02:00
Benjamin Canac
08db1c68b3 docs(command-palette): update 2024-10-01 11:43:47 +02:00
Benjamin Canac
725833c4a9 cli: fix paths 2024-10-01 11:43:34 +02:00
Benjamin Canac
6a6c43378b chore(CHANGELOG): update from dev 2024-09-30 14:36:51 +02:00
Benjamin Canac
10ab4ce06d docs(composables): clean 2024-09-30 14:33:07 +02:00
Benjamin Canac
afd9b8f2b9 docs(command-palette): use index in example to prevent ts error for now 2024-09-30 14:30:42 +02:00
Benjamin Canac
6aac821e80 docs(roadmap): invalid appConfig access 2024-09-30 14:30:21 +02:00
Benjamin Canac
f4e135d07a test(Drawer): types 2024-09-30 12:48:16 +02:00
Benjamin Canac
ef4a3a09c9 docs(app): put back community links 2024-09-30 12:06:37 +02:00
Benjamin Canac
c738bd9d53 docs(composables): update 2024-09-30 12:01:35 +02:00
Benjamin Canac
aeccf30a92 docs(getting-started): update 2024-09-30 11:44:39 +02:00
Benjamin Canac
673fef1595 docs(nuxt.config): set icon.provider to iconify 2024-09-30 11:12:08 +02:00
renovate[bot]
0ed13f33b5 chore(deps): update all non-major dependencies (v3) (#2265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 10:22:11 +02:00
Maxime Pauvert
30c33c7113 fix(README): npm badge link (#2271) 2024-09-30 09:34:26 +02:00
renovate[bot]
fd0ecc6d96 chore(deps): lock file maintenance (v3) (#2279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 09:33:49 +02:00
Benjamin Canac
6863254d89 docs(toast): update 2024-09-27 15:37:26 +02:00
Benjamin Canac
d2e075bb4a docs(ComponentExample): improve options handling 2024-09-27 15:37:15 +02:00
Benjamin Canac
6f0b7309c9 docs(drawer): update description 2024-09-27 13:08:15 +02:00
Benjamin Canac
30d9a2653b chore(Link): allow title field 2024-09-27 12:49:32 +02:00
Benjamin Canac
fac52fa933 fix(Drawer): improve max-width on mobile 2024-09-27 12:21:29 +02:00
Benjamin Canac
5f77aac368 feat(Drawer): handle direction + handle props 2024-09-27 11:44:52 +02:00
Benjamin Canac
5b62a8c8ca docs(pagination): update 2024-09-26 17:00:54 +02:00
Benjamin Canac
04a2f2b7a0 chore(Pagination): update defaults 2024-09-26 17:00:43 +02:00
Benjamin Canac
ad3dc26e41 docs(ComponentCode): fix display of false value in select 2024-09-26 16:35:54 +02:00
Benjamin Canac
fd6c1b02ea docs(ComponentCode): handle model prop for cases like v-model:page 2024-09-26 16:21:07 +02:00
Benjamin Canac
19362a9302 chore(deps): update 2024-09-26 16:18:59 +02:00
renovate[bot]
4e2b957882 chore(deps): update dependency @nuxt/fonts to ^0.9.2 (v3) (#2250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-26 15:30:03 +02:00
Benjamin Canac
83ee05dd0e chore(renovate): update 2024-09-26 15:12:25 +02:00
Benjamin Canac
5591854ed4 docs(getting-started): update description 2024-09-26 12:04:24 +02:00
Benjamin Canac
db754740ef docs(input-menu): update 2024-09-26 12:04:12 +02:00
Benjamin Canac
2c7c41bd04 fix(InputMenu): missing group on trailing 2024-09-26 12:00:06 +02:00
Benjamin Canac
9edb23080d docs(define-shortcuts): update 2024-09-25 19:22:44 +02:00
Benjamin Canac
fb8e6a6a66 docs(select-menu): update 2024-09-25 19:07:21 +02:00
Benjamin Canac
183207c2b8 chore(SelectMenu): merge search / searchPlaceholder into searchInput prop 2024-09-25 19:07:11 +02:00
Benjamin Canac
237e7a4e0e docs(nuxt.config): move routeRules cache in $production 2024-09-25 16:56:22 +02:00
Benjamin Canac
cac41137ae docs(getting-started): update 2024-09-25 16:42:40 +02:00
Benjamin Canac
eb0756674a docs(nuxt.config): put back /api/* in cloudflare exclude 2024-09-25 12:34:01 +02:00
Benjamin Canac
9cb863bc21 docs(nuxt.config): remove /api/* in cloudflare exclude 2024-09-25 12:25:27 +02:00
Benjamin Canac
9125a2d467 docs(nuxt.config): try icon serverBundle to remote 2024-09-25 12:19:28 +02:00
Benjamin Canac
0297361319 docs(nuxt.config): update icon options 2024-09-25 12:06:29 +02:00
Sébastien Chopin
749bf90dd1 docs: add auto sub folder 2024-09-25 11:36:05 +02:00
Benjamin Canac
d283887407 docs(nuxt.config): remove experimental.buildCache 2024-09-25 11:07:01 +02:00
Benjamin Canac
d7e46e3637 docs(nuxt.config): remove og-image from cloudflare option 2024-09-25 10:54:41 +02:00
Pooya Parsa
713021f12d docs: enable crawlLinks with exclude patterns (#2246) 2024-09-25 10:44:24 +02:00
Benjamin Canac
1aff74e985 docs(app): update title template 2024-09-25 10:44:05 +02:00
Benjamin Canac
5b3cda741c docs(Header): responsive 2024-09-24 23:10:24 +02:00
Benjamin Canac
a61e7656c2 fix(CommandPalette): missing min-w-0 on root 2024-09-24 23:06:02 +02:00
Benjamin Canac
85b21381e8 docs(app): update loading indicator color 2024-09-24 22:58:34 +02:00
Benjamin Canac
44b98bc7c9 docs(app): use navigation?.title in metas 2024-09-24 22:58:23 +02:00
Benjamin Canac
6c285977bd fix(Accordion): missing min-w-0 on trigger 2024-09-24 22:14:04 +02:00
Benjamin Canac
4c39fa8b0f docs(nuxt.config): add cache 2024-09-24 18:47:13 +02:00
Benjamin Canac
e584941df9 docs: add @nuxthub/core module 2024-09-24 18:28:01 +02:00
Benjamin Canac
991e725b1a docs(nuxt.config): try without crawLinks 2024-09-24 18:16:03 +02:00
Benjamin Canac
b638521ffa docs(public): remove illustrations 2024-09-24 18:08:02 +02:00
Benjamin Canac
2ec978ed0d docs(getting-started): use Public sans to prevent bundle of Inter 2024-09-24 18:02:23 +02:00
Benjamin Canac
b7f9422091 docs: make generate work 2024-09-24 17:53:21 +02:00
Benjamin Canac
d921b764de docs(ComponentCode/ComponentExample): wrong border on light mode 2024-09-24 14:58:40 +02:00
Benjamin Canac
b83ecc9a6f Revert "chore(deps): refresh lock"
This reverts commit cfe4e0bd65.
2024-09-24 14:47:31 +02:00
Benjamin Canac
40f1161b04 docs(app): update font 2024-09-24 14:43:45 +02:00
Benjamin Canac
d419f0a9cb playground(app): update font 2024-09-24 14:43:35 +02:00
Benjamin Canac
7bd06ecfd9 docs(prettier): format in worker like on ssr 2024-09-24 14:43:19 +02:00
Benjamin Canac
cac33c87b2 chore(InputMenu/SelectMenu): handle item select 2024-09-24 14:42:40 +02:00
Benjamin Canac
5e55e15ddf chore(InputMenu/Progress/SelectMenu): clean interfaces for syntax highlight 2024-09-24 14:42:40 +02:00
Benjamin Canac
09d453b5cf docs(ComponentCode/ComponentExample): use justify-center everywhere 2024-09-23 17:16:34 +02:00
Benjamin Canac
4f5a8ee4f6 docs(installation): fix theme.colors option example 2024-09-23 17:14:14 +02:00
Benjamin Canac
cfe4e0bd65 chore(deps): refresh lock 2024-09-23 11:59:32 +02:00
renovate[bot]
1932aa2671 chore(deps): update all non-major dependencies (v3) (#2230)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-23 11:45:16 +02:00
Anthony Fu
cc8fa471e9 chore: replace dev time flag for build (#2231)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-09-23 11:00:51 +02:00
Benjamin Canac
19bfc36976 test(Input): add missing file type 2024-09-23 10:52:02 +02:00
Benjamin Canac
7d754c0015 chore(components): add newline before script to correct syntax highlight 2024-09-20 23:20:39 +02:00
Benjamin Canac
8709717a32 docs(command-palette): update 2024-09-20 18:45:52 +02:00
Benjamin Canac
32ac575d56 chore(README): update 2024-09-20 17:54:30 +02:00
Benjamin Canac
c39996c0fe docs(app): increase container size 2024-09-20 15:39:47 +02:00
renovate[bot]
235f1cc330 chore(deps): update all non-major dependencies (v3) (#2219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-09-20 14:16:59 +02:00
Benjamin Canac
f45b39937b docs(command-palette): update 2024-09-18 17:32:01 +02:00
Benjamin Canac
a70ba04fc3 chore(Alert): rename close event to update:open for consistency 2024-09-18 17:31:42 +02:00
Benjamin Canac
500b4727e8 docs(ComponentExample): update 2024-09-18 15:00:23 +02:00
Benjamin Canac
d36576b1fe chore(module): gray now defaults to slate 2024-09-18 12:21:50 +02:00
Benjamin Canac
6498f8a0c1 test: move colors into theme.colors 2024-09-18 12:20:12 +02:00
Benjamin Canac
96c9246d83 fix(templates): app config colors type 2024-09-18 12:19:46 +02:00
Benjamin Canac
e45398f6ce docs(playground): update theme 2024-09-18 12:14:33 +02:00
Benjamin Canac
a32d2c034a docs(app): update theme 2024-09-18 12:14:23 +02:00
Benjamin Canac
f52310d4a1 docs(deps): use @nuxt/ui-pro 2024-09-18 11:33:56 +02:00
Benjamin Canac
a6ae1dcb1d chore(release): v3.0.0-alpha.3 2024-09-18 11:31:39 +02:00
Benjamin Canac
2e954467c4 feat(module): move colors options into theme.colors 2024-09-18 11:28:31 +02:00
Benjamin Canac
d3317d828e docs: use shiki-transformer-color-highlight (#2215) 2024-09-18 10:54:59 +02:00
1103 changed files with 102262 additions and 22448 deletions

View File

@@ -0,0 +1,69 @@
name: "🐛 Bug report (v3)"
description: Report a bug to help us improve the module (v3 only).
labels: ["triage", "bug", "v3"]
body:
- type: markdown
attributes:
value: |
Before reporting a bug, please make sure that you have read through our [documentation](https://ui.nuxt.com/) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue%20is%3Aopen%20sort%3Aupdated-desc%20label%3Av3).
- type: textarea
id: env
attributes:
label: Environment
description: You can use `npx nuxi info` to fill this section
placeholder: |
- Operating System: `Darwin`
- Node Version: `v18.16.0`
- Nuxt Version: `3.7.3`
- CLI Version: `3.8.4`
- Nitro Version: `2.6.3`
- Package Manager: `pnpm@8.7.4`
- Builder: `-`
- User Config: `-`
- Runtime Modules: `-`
- Build Modules: `-`
validations:
required: true
- type: dropdown
id: package
attributes:
label: Is this bug related to Nuxt or Vue?
options:
- Nuxt
- Vue
validations:
required: true
- type: input
id: version
attributes:
label: Version
placeholder: v3.0.0
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Please provide a reproduction link using the Nuxt template https://codesandbox.io/p/devbox/nuxt-ui3-n3sxks or the Vue template https://codesandbox.io/p/devbox/nuxt-ui3-vue-4h5gqn. A minimal [reproduction is required](https://antfu.me/posts/why-reproductions-are-required) unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided, it will be closed automatically after a while.
placeholder: https://github.com/my/reproduction
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description.
validations:
required: true
- type: textarea
id: additonal
attributes:
label: Additional context
description: If applicable, add any other context or screenshots here.
- type: textarea
id: logs
attributes:
label: Logs
description: |
Optional if provided reproduction. Please try not to insert an image but copy paste the log text.
render: shell-script

View File

@@ -5,7 +5,7 @@ body:
- type: markdown
attributes:
value: |
Before reporting a bug, please make sure that you have read through our [documentation](https://ui.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
Before reporting a bug, please make sure that you have read through our [documentation](https://ui2.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
- type: textarea
id: env
attributes:
@@ -28,7 +28,7 @@ body:
id: version
attributes:
label: Version
placeholder: v2.8.0
placeholder: v2.20.0
validations:
required: true
- type: textarea

View File

@@ -0,0 +1,20 @@
name: "🚀 Feature request (v3)"
description: Suggest an idea or enhancement for the module (v3 only).
labels: ["triage", "enhancement", "v3"]
body:
- type: markdown
attributes:
value: |
Before requesting a feature, please make sure that you have read through our [documentation](https://ui.nuxt.com/) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue%20is%3Aopen%20sort%3Aupdated-desc%20label%3Av3).
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what you think would be an helpful addition to the module, including the possible use cases and alternatives you have considered. If you have a working prototype or module that implements it, please include a link.
validations:
required: true
- type: textarea
id: additonal
attributes:
label: Additional context
description: If applicable, add any other context or screenshots here.

View File

@@ -5,7 +5,7 @@ body:
- type: markdown
attributes:
value: |
Before requesting a feature, please make sure that you have read through our [documentation](https://ui.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
Before requesting a feature, please make sure that you have read through our [documentation](https://ui2.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
- type: textarea
id: description
attributes:

14
.github/ISSUE_TEMPLATE/question-v3.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
name: "💬 Question (v3)"
description: Ask a question about the module (v3 only).
labels: ["question", "v3"]
body:
- type: markdown
attributes:
value: |
Before asking a question, please make sure that you have read through our [documentation](https://ui.nuxt.com/) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue%20is%3Aopen%20sort%3Aupdated-desc%20label%3Av3).
- type: textarea
id: description
attributes:
label: Description
validations:
required: true

View File

@@ -5,7 +5,7 @@ body:
- type: markdown
attributes:
value: |
Before asking a question, please make sure that you have read through our [documentation](https://ui.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
Before asking a question, please make sure that you have read through our [documentation](https://ui2.nuxt.com) and existing [issues](https://github.com/nuxt/ui/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
- type: textarea
id: description
attributes:

View File

@@ -0,0 +1,30 @@
Would you be able to provide a [reproduction](https://nuxt.com/docs/community/reporting-bugs/#create-a-minimal-reproduction)? 🙏
<details>
<summary>More info</summary>
### Why do I need to provide a reproduction?
Reproductions make it possible for us to triage and fix issues quickly with a relatively small team. It helps us discover the source of the problem, and also can reveal assumptions you or we might be making.
### What will happen?
If you've provided a reproduction, we'll remove the label and try to reproduce the issue. If we can, we'll mark it as a bug and prioritise it based on its severity and how many people we think it might affect.
If `needs reproduction` labeled issues don't receive any substantial activity (e.g., new comments featuring a reproduction link), they will be closed automatically after a while. That's not because we don't care! At any point, feel free to comment with a reproduction and we'll reopen it.
### How can I create a reproduction?
We have templates to create a minimal reproduction:
* **Nuxt**: https://codesandbox.io/p/devbox/nuxt-ui3-n3sxks
* **Vue**: https://codesandbox.io/p/devbox/nuxt-ui3-vue-4h5gqn
Please ensure that the reproduction is as **minimal** as possible. See more details [in our guide](https://nuxt.com/docs/community/reporting-bugs/#create-a-minimal-reproduction).
You might also find these other articles interesting and/or helpful:
- [The Importance of Reproductions](https://antfu.me/posts/why-reproductions-are-required)
- [How to Generate a Minimal, Complete, and Verifiable Example](https://stackoverflow.com/help/mcve)
</details>

53
.github/workflows/docs.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: docs
on: push
jobs:
deploy:
runs-on: ${{ matrix.os }}
environment:
name: ${{ github.ref == 'refs/heads/v3' && 'production' || 'preview' }}
url: ${{ steps.deploy.outputs.deployment-url }}
permissions:
contents: read
id-token: write
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Prepare build
run: pnpm run dev:prepare
- name: Build application
run: pnpm run docs:build
env:
NODE_OPTIONS: '--max-old-space-size=8192'
- name: Deploy to NuxtHub
uses: nuxt-hub/action@v1
id: deploy
with:
project-key: ui-7eg3
directory: docs/dist

262
.github/workflows/module.yml vendored Normal file
View File

@@ -0,0 +1,262 @@
name: module
on:
push:
branches:
- v3
pull_request:
branches:
- v3
jobs:
build:
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: ${{ github.event_name == 'pull_request' && fromJSON('["ubuntu-latest"]') || fromJSON('["ubuntu-latest", "windows-latest"]') }} # macos-latest
node: [22]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Prepare
run: pnpm run dev:prepare
- name: Lint
run: pnpm run lint
- name: Typecheck
run: pnpm run typecheck
- name: Test
run: pnpm run test run
- name: Test (vue)
run: pnpm run test:vue run
- name: Build
run: pnpm run build
- name: Build playground
run: pnpm run dev:build
- name: Build playground (vue)
run: pnpm run dev:vue:build
- name: Publish
# Only publish preview package on ubuntu during PRs
if: matrix.os == 'ubuntu-latest'
run: pnpx pkg-pr-new publish --compact --no-template --pnpm
playground:
needs: build
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./playground
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Store commit SHA
run: |
echo "COMMIT_SHA=$(echo ${{ github.workflow_sha }} | cut -c1-7)" >> $GITHUB_ENV
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- name: Install latest nuxt/ui
run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only
- name: Install dependencies
run: pnpm install --ignore-workspace
- name: Prepare
run: pnpm nuxi prepare
- name: Typecheck
run: pnpm run typecheck
starter-nuxt:
needs: build
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: nuxtlabs/nuxt-ui-starter
- name: Store commit SHA
run: |
echo "COMMIT_SHA=$(echo ${{ github.workflow_sha }} | cut -c1-7)" >> $GITHUB_ENV
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- name: Install latest nuxt/ui
run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only
- name: Install dependencies
run: pnpm install
- name: Typecheck
run: pnpm run typecheck
- name: Build
run: pnpm run build
starter-vue:
needs: build
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: nuxtlabs/nuxt-ui-vue-starter
- name: Store commit SHA
run: |
echo "COMMIT_SHA=$(echo ${{ github.workflow_sha }} | cut -c1-7)" >> $GITHUB_ENV
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- name: Install latest nuxt/ui
run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only
- name: Install dependencies
run: pnpm install
- name: Typecheck
run: pnpm run typecheck
- name: Build
run: pnpm run build
nuxt-ui-pro:
needs: build
# Only run this job if not a fork PR (when push event or PR from same repo)
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
env:
NUXT_UI_PRO_LICENSE: ${{ secrets.NUXT_UI_PRO_LICENSE }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: nuxt/ui-pro
token: ${{ secrets.NUXT_GITHUB_TOKEN }}
- name: Store commit SHA
run: |
echo "COMMIT_SHA=$(echo ${{ github.workflow_sha }} | cut -c1-7)" >> $GITHUB_ENV
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- name: Install latest nuxt/ui
run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only
- name: Install dependencies
run: pnpm install
- name: Prepare
run: pnpm run dev:prepare
- name: Typecheck
run: pnpm run typecheck
- name: Build
run: pnpm run build

53
.github/workflows/playground.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: playground
on:
push:
branches:
- v3
jobs:
deploy:
runs-on: ${{ matrix.os }}
environment:
name: ${{ github.ref == 'refs/heads/v3' && 'production' || 'preview' }}
url: ${{ steps.deploy.outputs.deployment-url }}
permissions:
contents: read
id-token: write
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [22]
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Prepare build
run: pnpm run dev:prepare
- name: Build application
run: pnpm run dev:build
env:
NITRO_PRESET: cloudflare-pages
- name: Deploy to NuxtHub
uses: nuxt-hub/action@v1
id: deploy
with:
project-key: ui3-playground-pb9b
directory: playground/dist

View File

@@ -1,25 +1,18 @@
name: ci-v3
name: release
on:
push:
branches:
- v3
pull_request:
branches:
- v3
tags:
- 'v3*'
jobs:
ci:
publish:
runs-on: ${{ matrix.os }}
permissions:
contents: read
pull-requests: read
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [20]
node: [22]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
@@ -50,7 +43,12 @@ jobs:
run: pnpm run typecheck
- name: Test
run: pnpm run test
run: pnpm run test run
- name: Build
run: pnpm run build
- name: Test (vue)
run: pnpm run test:vue run
- name: Publish
run: ./scripts/release.sh
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}

17
.github/workflows/reproduire.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: reproduire
on:
issues:
types: [labeled]
permissions:
issues: write
jobs:
reproduire:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: Hebilicious/reproduire@4b686ae9cbb72dad60f001d278b6e3b2ce40a9ac # v0.0.9-mp
with:
label: needs reproduction

View File

@@ -10,14 +10,16 @@ jobs:
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
exempt-issue-labels: triage,v3
stale-issue-message: 'This issue is stale because it has been open for 30 days with no activity.'
stale-issue-label: stale
stale-pr-label: stale
days-before-stale: 30
days-before-close: -1
days-before-stale: -1 # Issues and PR will never be flagged stale automatically.
stale-issue-label: 'needs reproduction' # Label that flags an issue as stale.
only-labels: 'needs reproduction' # Only process these issues
days-before-issue-close: 7
ignore-updates: true
remove-stale-when-updated: false
close-issue-message: This issue was closed because it was open for 7 days without a reproduction.
close-issue-label: closed-by-bot
operations-per-run: 300 #default 30

8
.gitignore vendored
View File

@@ -1,3 +1,6 @@
.component-meta/
component-meta.*
# Nuxt dev/build outputs
.output
.data
@@ -22,3 +25,8 @@ logs
.env
.env.*
!.env.example
playground-vue/auto-imports.d.ts
playground-vue/components.d.ts
playground-vue/tsconfig.app.tsbuildinfo
playground-vue/tsconfig.node.tsbuildinfo

View File

@@ -3,6 +3,17 @@
"commitMessage": "chore(release): v${version}",
"tagName": "v${version}"
},
"npm": {
"publish": false
},
"github": {
"release": true,
"releaseName": "v${version}",
"web": true
},
"hooks": {
"before:init": ["pnpm lint", "pnpm typecheck"]
},
"plugins": {
"@release-it/conventional-changelog": {
"preset": {

View File

@@ -1,5 +1,669 @@
# Changelog
## [3.1.2](https://github.com/nuxt/ui/compare/v3.1.1...v3.1.2) (2025-05-15)
### Features
* **Badge:** add `square` prop ([#4008](https://github.com/nuxt/ui/issues/4008)) ([894e8a6](https://github.com/nuxt/ui/commit/894e8a61b6fea3618fc863bd77678385e9d021c2))
* **CheckboxGroup:** add `table` variant ([#3997](https://github.com/nuxt/ui/issues/3997)) ([1b6ab27](https://github.com/nuxt/ui/commit/1b6ab271ea3875a7c77ffe9367c7c341083dd53c))
* **components:** add `ui` field in items ([#4060](https://github.com/nuxt/ui/issues/4060)) ([b9adc83](https://github.com/nuxt/ui/commit/b9adc83e787db02507e6e7bb1aabc684eccc197b))
* **InputNumber:** add `increment-disabled` / `decrement-disabled` props ([#4141](https://github.com/nuxt/ui/issues/4141)) ([c7fba2e](https://github.com/nuxt/ui/commit/c7fba2e0ebfb7153f3bfb727165d653bbd3dbe54))
* **locale:** add Slovenian language ([#4140](https://github.com/nuxt/ui/issues/4140)) ([e86dc79](https://github.com/nuxt/ui/commit/e86dc79e51b2773a77ada5f12d4f0964fbc83354))
* **NavigationMenu:** add `collapsible` field in items ([2be60cd](https://github.com/nuxt/ui/commit/2be60cddfe10fd1e2466900fd53e21ee0c877227)), closes [#3353](https://github.com/nuxt/ui/issues/3353) [#3911](https://github.com/nuxt/ui/issues/3911)
* **NavigationMenu:** handle `tooltip` in items ([46c2987](https://github.com/nuxt/ui/commit/46c2987ebfd30b2b071a96a745b7270e852e96de)), closes [#4050](https://github.com/nuxt/ui/issues/4050)
* **Slider:** handle `tooltip` around thumbs ([d140acc](https://github.com/nuxt/ui/commit/d140acc608c6ae11c0a0531fe443588776ea7807)), closes [#1469](https://github.com/nuxt/ui/issues/1469)
* **Toast:** add `progress` prop to hide progress bar ([#4125](https://github.com/nuxt/ui/issues/4125)) ([92632e9](https://github.com/nuxt/ui/commit/92632e969eaa11521a166e50e346753929b7f523))
### Bug Fixes
* **Badge/Button:** handle zero value in label correctly ([#4108](https://github.com/nuxt/ui/issues/4108)) ([f244d15](https://github.com/nuxt/ui/commit/f244d15b96d97cd8ba34ba9c18f23965e17e3cef))
* **ButtonGroup:** add `z-index` on focused element ([204953b](https://github.com/nuxt/ui/commit/204953b780bde08dbfde230fc8887674449227b7))
* **Calendar:** wrong color for today date with `neutral` color ([7d51a9e](https://github.com/nuxt/ui/commit/7d51a9e479cb6105ea37759c5cd67ff9f7702c49)), closes [#4084](https://github.com/nuxt/ui/issues/4084) [#3629](https://github.com/nuxt/ui/issues/3629)
* **Checkbox/RadioGroup:** render correct element without `variant` ([f2fd778](https://github.com/nuxt/ui/commit/f2fd778c0a604f2d65aec9f3fe2d54b6d4e8c3a2)), closes [#3998](https://github.com/nuxt/ui/issues/3998)
* **CheckboxGroup:** relative `UCheckbox` import ([7551a85](https://github.com/nuxt/ui/commit/7551a85ad2d92b59e2909396affb862403d5b27a)), closes [#4090](https://github.com/nuxt/ui/issues/4090)
* **ColorPicker:** make thumb touch draggable ([#4101](https://github.com/nuxt/ui/issues/4101)) ([cc20a26](https://github.com/nuxt/ui/commit/cc20a26f07268d19119ab4c7c254033143bb63f4))
* **components:** `class` should have priority over `ui` prop ([e6e510b](https://github.com/nuxt/ui/commit/e6e510b848d995a286a51d50a120d67483e11232))
* **FormField:** block form field injection after use ([#4150](https://github.com/nuxt/ui/issues/4150)) ([d79da9d](https://github.com/nuxt/ui/commit/d79da9d7b60c9972af64acd8e6eef4ae7d6bc3eb))
* **FormField:** use `div` for `error` and `help` slots ([459a041](https://github.com/nuxt/ui/commit/459a0410ab729fde60865e84632b36903465f57e))
* **inertia:** link always render as anchor tag ([#3989](https://github.com/nuxt/ui/issues/3989)) ([e81464a](https://github.com/nuxt/ui/commit/e81464a43ede4e63ce3dc92429bbfef48614f731))
* **inertia:** make `useAppConfig` reactive ([12303a8](https://github.com/nuxt/ui/commit/12303a87be62dae84ef774e3a9795deb0ac90cc7))
* **Input/Textarea:** handle generic types ([3c8d6cd](https://github.com/nuxt/ui/commit/3c8d6cd01dfafed5844c376f52adbdda0c814420)), closes [nuxt/ui-pro#887](https://github.com/nuxt/ui-pro/issues/887)
* **InputNumber:** handle inside button group ([2e4c308](https://github.com/nuxt/ui/commit/2e4c3082a1e66fa597086dc3431fec37fa29ef62)), closes [#4155](https://github.com/nuxt/ui/issues/4155)
* **Link:** consistent behavior between nuxt, vue and inertia ([#4134](https://github.com/nuxt/ui/issues/4134)) ([67da90a](https://github.com/nuxt/ui/commit/67da90a2f638124f640c4271d3376c5ff3fab6a1))
* **module:** configure `@nuxt/fonts` with default weights ([276268d](https://github.com/nuxt/ui/commit/276268d311f57715cec47bc600a0ccc3d3885682))
* **NavigationMenu:** arrow position conflict ([#4137](https://github.com/nuxt/ui/issues/4137)) ([0dc4678](https://github.com/nuxt/ui/commit/0dc4678c68e4b500be49c38336dc75b73843e38d))
* **Select:** support more primitive types in `value` field ([#4105](https://github.com/nuxt/ui/issues/4105)) ([09b4699](https://github.com/nuxt/ui/commit/09b4699aeadaa195ea081509f8e237bb2c346238))
* **Slider:** handle generic types ([d7a4d02](https://github.com/nuxt/ui/commit/d7a4d029b77d2dfa0b8efcd2755d482fa5e31fd3))
* **Stepper:** use `div` tag for `title` & `description` ([a57844e](https://github.com/nuxt/ui/commit/a57844e41676c13ed1af861424961b88cee7b4da)), closes [#4096](https://github.com/nuxt/ui/issues/4096)
* **Tabs:** prevent trigger truncate without parent width ([06e5689](https://github.com/nuxt/ui/commit/06e5689da80b36205d0548d5d6b58510938e4a6e)), closes [#4056](https://github.com/nuxt/ui/issues/4056)
* **Tabs:** set `focus:outline-none` with `link` variant ([999a0f8](https://github.com/nuxt/ui/commit/999a0f84671fad20fa3dc50c6774af2e0200b32e))
* **templates:** dont write unused variants in theme files ([d3df3bb](https://github.com/nuxt/ui/commit/d3df3bb929fe6732f27b182d1664213884a662ec))
* **Toaster:** allow `base` slot override ([c63d2f3](https://github.com/nuxt/ui/commit/c63d2f380aac16f1d1e812516df3dca7fa7c8034))
* **vue:** make `useAppConfig` reactive ([869c070](https://github.com/nuxt/ui/commit/869c0708bd351c7be44e5e430c348b19dd316db9)), closes [#3952](https://github.com/nuxt/ui/issues/3952)
## [3.1.1](https://github.com/nuxt/ui/compare/v3.1.0...v3.1.1) (2025-05-02)
### Features
* **useOverlay:** add `closeAll` method ([#3984](https://github.com/nuxt/ui/issues/3984)) ([ac4c194](https://github.com/nuxt/ui/commit/ac4c1946ec399aec59b4bce9d538e3ff67868abf))
* **useOverlay:** add `isOpen` method to check overlay state ([#4041](https://github.com/nuxt/ui/issues/4041)) ([a4f3f6d](https://github.com/nuxt/ui/commit/a4f3f6d531f9c0281f99085a6688d296f8f13f2f))
### Bug Fixes
* **Calendar:** add `place-items-center` to grid row ([#4034](https://github.com/nuxt/ui/issues/4034)) ([8dfdd63](https://github.com/nuxt/ui/commit/8dfdd63ce3b3a0e904f7c013c774cf9aaf46b240))
* **defineShortcuts:** bring back `meta` to `ctrl` convert on non macos platforms ([f3b8b17](https://github.com/nuxt/ui/commit/f3b8b17dc5f43936ef7ffb11c1ed7f9a5f94d0bb)), closes [#3869](https://github.com/nuxt/ui/issues/3869) [#3318](https://github.com/nuxt/ui/issues/3318)
* **module:** support `nuxt-nightly` ([#3996](https://github.com/nuxt/ui/issues/3996)) ([bc0a296](https://github.com/nuxt/ui/commit/bc0a296f9d68ca72cd991b11cd3489b63c7b13db))
* **NavigationMenu:** remove `sm:w-auto` from content slot ([aebf0b3](https://github.com/nuxt/ui/commit/aebf0b3dca50c51c093cb6abf16c4fd995fc1b39)), closes [#3987](https://github.com/nuxt/ui/issues/3987)
* **RadioGroup:** improve items `value` field type ([#3995](https://github.com/nuxt/ui/issues/3995)) ([195773e](https://github.com/nuxt/ui/commit/195773ec7dac12ccc3a0a67867751e8ca634cc04))
* **templates:** put back args to watch in dev ([#4033](https://github.com/nuxt/ui/issues/4033)) ([c5bdec0](https://github.com/nuxt/ui/commit/c5bdec0f64963ef602975270a09a1ee795cdacf9))
* **theme:** add missing `border-bg` / `divide-bg` utilities ([82b5f32](https://github.com/nuxt/ui/commit/82b5f322ebd8a08e63588122bd4ef567dcb8ba8c))
* **theme:** add missing `ring-offset-*` utilities ([#3992](https://github.com/nuxt/ui/issues/3992)) ([e5df026](https://github.com/nuxt/ui/commit/e5df0269935be59df759fe0e1378acb2b0d9014a))
* **theme:** define default shades for named tailwindcss colors ([8acf3c5](https://github.com/nuxt/ui/commit/8acf3c51db6c2f9443d04be6ba7d9f062c5cf8ab)), closes [#3977](https://github.com/nuxt/ui/issues/3977)
* **theme:** improve app config types for `ui` object ([591d59f](https://github.com/nuxt/ui/commit/591d59fe89f1d9bf016c121bf9160f73fe0a290d)), closes [#3579](https://github.com/nuxt/ui/issues/3579)
* **theme:** use `[@theme](https://github.com/theme) inline` to properly reference css variables ([6131871](https://github.com/nuxt/ui/commit/6131871a0d124c5942d60dc5dff20981e8542e51)), closes [#4018](https://github.com/nuxt/ui/issues/4018)
* **useOverlay:** improve types and docs ([#4012](https://github.com/nuxt/ui/issues/4012)) ([39e29fc](https://github.com/nuxt/ui/commit/39e29fccf1840c723a13237d65002501b2829b70))
## [3.1.0](https://github.com/nuxt/ui/compare/v3.0.2...v3.1.0) (2025-04-24)
### ⚠ BREAKING CHANGES
* **OverlayProvider:** return an overlay instance from `.open()` (#3829)
### Features
* **App:** add global `portal` prop ([#3688](https://github.com/nuxt/ui/issues/3688)) ([29fa462](https://github.com/nuxt/ui/commit/29fa46276d6bf69b5b87880c476c6f778c2820bf))
* **Carousel:** add `select` event ([#3678](https://github.com/nuxt/ui/issues/3678)) ([22edfd7](https://github.com/nuxt/ui/commit/22edfd708ae3eeadbd4ff6c830cdfd5632948286))
* **CheckboxGroup:** new component ([#3862](https://github.com/nuxt/ui/issues/3862)) ([9c3d53a](https://github.com/nuxt/ui/commit/9c3d53a02d6254f6b5c90e5fed826b8aefcdb042))
* **components:** add new `content-top` and `content-bottom` slots ([#3886](https://github.com/nuxt/ui/issues/3886)) ([1a46394](https://github.com/nuxt/ui/commit/1a463946681e152aa18372118d0fef4a7d8055a5))
* **Form:** add `attach` prop to opt-out of nested form attachement ([#3939](https://github.com/nuxt/ui/issues/3939)) ([1a0d7a3](https://github.com/nuxt/ui/commit/1a0d7a3103cf7591b019ef3ad685e2f3786ef6f2))
* **Form:** export loading state ([#3861](https://github.com/nuxt/ui/issues/3861)) ([fdee252](https://github.com/nuxt/ui/commit/fdee2522bb9d8361ff3e9fdd4aa2350be8e49b05))
* **InputMenu/SelectMenu:** handle `resetSearchTermOnSelect` ([cea881a](https://github.com/nuxt/ui/commit/cea881abdc139b39df89b503cf2ab872f4246c8f)), closes [#3782](https://github.com/nuxt/ui/issues/3782)
* **InputNumber:** add support for `stepSnapping` & `disableWheelChange` props ([#3731](https://github.com/nuxt/ui/issues/3731)) ([f5e6284](https://github.com/nuxt/ui/commit/f5e62849c9313063396ab0e3a9b7d22d98ef69bc))
* **locale:** add Bulgarian language ([#3783](https://github.com/nuxt/ui/issues/3783)) ([a0c9731](https://github.com/nuxt/ui/commit/a0c9731f634020e76aa98a9a68d673591d35e8c9))
* **locale:** add Kazakh language ([#3875](https://github.com/nuxt/ui/issues/3875)) ([43153c4](https://github.com/nuxt/ui/commit/43153c4e91034b728059e7a9bed05888e48f8890))
* **locale:** add Tajik language ([#3850](https://github.com/nuxt/ui/issues/3850)) ([f42a79b](https://github.com/nuxt/ui/commit/f42a79b5efe8dc65430a83799ebb0ee737773820))
* **locale:** add Uyghur language ([#3878](https://github.com/nuxt/ui/issues/3878)) ([b7fc69b](https://github.com/nuxt/ui/commit/b7fc69baa718ff65b3988d0fa9f143306fa8fac4))
* **Modal/Popover/Slideover:** add `close:prevent` event ([#3958](https://github.com/nuxt/ui/issues/3958)) ([f486423](https://github.com/nuxt/ui/commit/f4864233812eac0ed37e0a2d076a95c285a22c01))
* **module:** define default color shades ([#3916](https://github.com/nuxt/ui/issues/3916)) ([7ac7aa9](https://github.com/nuxt/ui/commit/7ac7aa9ba73b6aca1bc29b0de2e95c60b2700135))
* **module:** define neutral utilities ([#3629](https://github.com/nuxt/ui/issues/3629)) ([d49e0da](https://github.com/nuxt/ui/commit/d49e0dadeea2a58e05e60b2c461b29ce1d334d2b))
* **module:** dynamic `rounded-*` utilities ([#3906](https://github.com/nuxt/ui/issues/3906)) ([f9737c8](https://github.com/nuxt/ui/commit/f9737c8f401bf8bc5307674fad6defe2aeeeb907))
* **OverlayProvider:** return an overlay instance from `.open()` ([#3829](https://github.com/nuxt/ui/issues/3829)) ([f3098df](https://github.com/nuxt/ui/commit/f3098df84a3b7f58f7ccc1233bc8b45eab99ee10))
* **PinInput:** add `autofocus` / `autofocus-delay` props ([0456670](https://github.com/nuxt/ui/commit/0456670dac1153340220603c8c116e3b71f72ae7)), closes [#3717](https://github.com/nuxt/ui/issues/3717)
* **RadioGroup:** add `card` and `table` variants ([#3178](https://github.com/nuxt/ui/issues/3178)) ([4d138ad](https://github.com/nuxt/ui/commit/4d138ad6719a074f5f994006d12745ca05bec9c4))
* **Select:** handle `onSelect` field in items ([8640831](https://github.com/nuxt/ui/commit/864083156a79dfb5d0be868658b7f9fc77570178))
* **Table:** conditionally apply classes to `tr` and `td` ([#3866](https://github.com/nuxt/ui/issues/3866)) ([80dfa88](https://github.com/nuxt/ui/commit/80dfa88ea442571ee1dc673317cc7baa8cacd8a3))
* **Tabs:** add `list-leading` and `list-trailing` slots ([#3837](https://github.com/nuxt/ui/issues/3837)) ([3447a06](https://github.com/nuxt/ui/commit/3447a062b636a469089d6e9bdcfcb3dce9063ee5))
* **Textarea:** add `autoresize-delay` prop ([06414d3](https://github.com/nuxt/ui/commit/06414d344b151ad6e1a3225a9f5f1f76d58d319c)), closes [#3730](https://github.com/nuxt/ui/issues/3730)
* **Textarea:** add `icon`, `loading`, etc. props to match Input ([cb193f1](https://github.com/nuxt/ui/commit/cb193f1d25b5c73ca03dcf10864800350dd1c290))
* **Textarea:** add `resize-none` class with `autoresize` prop ([ffafd81](https://github.com/nuxt/ui/commit/ffafd81e1ed25074430668c792e5e1c6afc22bd0))
* **unplugin:** routing support for inertia ([#3845](https://github.com/nuxt/ui/issues/3845)) ([d059efc](https://github.com/nuxt/ui/commit/d059efca258da7ae5116e829189a492824ac1d87))
### Bug Fixes
* **Accordion:** use `div` instead of `h3` for header tag ([75e4792](https://github.com/nuxt/ui/commit/75e4792f7f00c55229253289c4f806f2b6fc9854)), closes [#3963](https://github.com/nuxt/ui/issues/3963)
* **Alert/Toast:** display actions when using slots ([5086363](https://github.com/nuxt/ui/commit/50863635d653c8083772046ddc5b828fba7047d0)), closes [#3950](https://github.com/nuxt/ui/issues/3950)
* **Carousel:** move arrows inside container on mobile ([d339dcb](https://github.com/nuxt/ui/commit/d339dcbfb8fe244bd198d247d8448e3ef856dfef)), closes [#3813](https://github.com/nuxt/ui/issues/3813)
* **CheckboxGroup:** proxy slots & `ui` prop ([bc06185](https://github.com/nuxt/ui/commit/bc061852822edd2dfb832a46dd6388123ec5771e))
* **CommandPalette:** consistent alignement with other components ([d25265c](https://github.com/nuxt/ui/commit/d25265c8b7d34e01af8827d9af5eccb98bf30e9e))
* **CommandPalette:** increase input font size to avoid zoom ([d227a10](https://github.com/nuxt/ui/commit/d227a105d8d409ea0753153afaecf639ddb80fed))
* **CommandPalette:** prevent hover background on disabled items ([ba534f1](https://github.com/nuxt/ui/commit/ba534f18b94383c97b2654d892ee4b8b024b3fab))
* **components:** refactor types after `@nuxt/module-builder` upgrade ([#3855](https://github.com/nuxt/ui/issues/3855)) ([39c861a](https://github.com/nuxt/ui/commit/39c861a64bbd452256ebd1a14a257b94c35855d4))
* **components:** respect `transform-origin` in popper content ([#3919](https://github.com/nuxt/ui/issues/3919)) ([01d8dc7](https://github.com/nuxt/ui/commit/01d8dc72adb0b32ad68bb4a98bf24b17f435a89c))
* **ContextMenu/DropdownMenu:** handle RTL mode ([#3744](https://github.com/nuxt/ui/issues/3744)) ([1ae5cc0](https://github.com/nuxt/ui/commit/1ae5cc09cb2eca6b6f53eb04db9dcc731b696cae))
* **ContextMenuContent/DropdownMenuContent:** remove unwanted `any` ([#3741](https://github.com/nuxt/ui/issues/3741)) ([97274f1](https://github.com/nuxt/ui/commit/97274f15b8bfe457e7e206f81b32e3febf0f875d))
* **Form:** input and output type inference ([#3938](https://github.com/nuxt/ui/issues/3938)) ([f429498](https://github.com/nuxt/ui/commit/f42949820be9be9fca41abc653dc12c033e1eeec))
* **Form:** loses focus on submit ([#3796](https://github.com/nuxt/ui/issues/3796)) ([8e78eb1](https://github.com/nuxt/ui/commit/8e78eb15c85beef1c814206c4a192d4eb00a7e86))
* **InputMenu/Select/SelectMenu:** add `min-w-fit` to `content` slot ([#3922](https://github.com/nuxt/ui/issues/3922)) ([f6b3761](https://github.com/nuxt/ui/commit/f6b376110c8bee2c41ae3137bb972aad402ebff1))
* **InputMenu/SelectMenu:** correctly call `onSelect` events ([#3735](https://github.com/nuxt/ui/issues/3735)) ([f25fed5](https://github.com/nuxt/ui/commit/f25fed58e988b304e79cdb536d544d257395cf89))
* **InputMenu/SelectMenu:** prevent `disabled` items to be selected ([8435a0f](https://github.com/nuxt/ui/commit/8435a0fe1622eb5b6863b6e4751c9d2d1be36db9)), closes [#3474](https://github.com/nuxt/ui/issues/3474)
* **InputMenu/SelectMenu:** remove `valueKey` string case ([9ca213b](https://github.com/nuxt/ui/commit/9ca213bd3340492d7503a34bd142e1f79a697050)), closes [#3949](https://github.com/nuxt/ui/issues/3949) [#3331](https://github.com/nuxt/ui/issues/3331)
* **InputMenu/SelectMenu:** support arbitrary `value` ([#3779](https://github.com/nuxt/ui/issues/3779)) ([52a97e2](https://github.com/nuxt/ui/commit/52a97e2df7903f91e3134931eb0d6bd4c528f71f))
* **InputMenu:** emit `change` on multiple item removal ([9d2fed1](https://github.com/nuxt/ui/commit/9d2fed125013e3bbfbf9435678729cd05254a5e8)), closes [#3756](https://github.com/nuxt/ui/issues/3756)
* **Link:** proxy `download` property ([#3879](https://github.com/nuxt/ui/issues/3879)) ([47cdc2e](https://github.com/nuxt/ui/commit/47cdc2e1d8cd9803ebc954ccae110d62b9a08779))
* **NavigationMenu:** add `sm:w-auto` content slot ([abe0859](https://github.com/nuxt/ui/commit/abe0859691e06564f68335bd82dcd121e976408e)), closes [#3788](https://github.com/nuxt/ui/issues/3788)
* **Skeleton:** improve accessibility ([#3613](https://github.com/nuxt/ui/issues/3613)) ([3484832](https://github.com/nuxt/ui/commit/3484832822015a224ce6fbeae5132018875557e6))
* **Stepper:** ui prop override on `icon` and `content` slots ([1d45980](https://github.com/nuxt/ui/commit/1d459803dc052a16b8966ee89c71646bf6ef1c16)), closes [#3785](https://github.com/nuxt/ui/issues/3785)
* **Table:** improve `data` reactivity ([#3967](https://github.com/nuxt/ui/issues/3967)) ([6e27304](https://github.com/nuxt/ui/commit/6e27304d8ca459a04667bac404084264a8cf58fd))
* **Table:** pass header `colspan` to `th` ([#3926](https://github.com/nuxt/ui/issues/3926)) ([122e8ac](https://github.com/nuxt/ui/commit/122e8ac8f41ba093cd350c3ce642263263f77296))
* **Tree:** simplify reusable template types ([#3836](https://github.com/nuxt/ui/issues/3836)) ([3deed4c](https://github.com/nuxt/ui/commit/3deed4c271cad4adc2a4c47d5dd02e95a14ce11a))
* **types:** allow color identifiers with dashes ([#3896](https://github.com/nuxt/ui/issues/3896)) ([e5a1e26](https://github.com/nuxt/ui/commit/e5a1e26f9db763b54caed4ca313f44d1b5fe269d))
* **types:** handle `ClassValue` in `ui` prop ([eea1415](https://github.com/nuxt/ui/commit/eea14155aa612649bc969d806ec5df4295945c70)), closes [#3860](https://github.com/nuxt/ui/issues/3860)
* **types:** improve dynamic slots ([#3857](https://github.com/nuxt/ui/issues/3857)) ([8dd9d08](https://github.com/nuxt/ui/commit/8dd9d08209e47a7d9a5654db4fb936b4cbcfc021))
* **usePortal:** adjust portal target resolution logic ([#3954](https://github.com/nuxt/ui/issues/3954)) ([db11db6](https://github.com/nuxt/ui/commit/db11db6ff1ce4b27a66aaa03f07870ba36426181))
* **vite:** vitest skipping nuxt imports transformations ([#3925](https://github.com/nuxt/ui/issues/3925)) ([c31bffa](https://github.com/nuxt/ui/commit/c31bffad1b8afeda584bca8c73bb7f790eb12a9f))
## [3.0.2](https://github.com/nuxt/ui/compare/v3.0.1...v3.0.2) (2025-03-28)
### Features
* **Calendar:** allow year and month buttons styling ([#3672](https://github.com/nuxt/ui/issues/3672)) ([4a2b77d](https://github.com/nuxt/ui/commit/4a2b77d86c28806234002340eda39de4dc78cce0))
* **locale:** add Armenian language ([#3664](https://github.com/nuxt/ui/issues/3664)) ([c76f590](https://github.com/nuxt/ui/commit/c76f5900970e3f5c451192b1207ccea04771e8b3))
* **Table:** add `empty` prop ([afff54f](https://github.com/nuxt/ui/commit/afff54fecd31497238461e0a44abd8668ed734c3))
### Bug Fixes
* **Avatar:** proxy `$attrs` to default slot ([#3712](https://github.com/nuxt/ui/issues/3712)) ([88f349d](https://github.com/nuxt/ui/commit/88f349d0d74eb1c2ce5066818731759c25a9e83e))
* **Button:** use `focus:outline-none` instead of `focus:outline-hidden` ([c231fe5](https://github.com/nuxt/ui/commit/c231fe5f26ca7614df46a7ec8a5ce7f4ec8884e7)), closes [#3658](https://github.com/nuxt/ui/issues/3658)
* **CommandPalette:** use `group.id` as key ([bc61d29](https://github.com/nuxt/ui/commit/bc61d29cce531715a6279444845f02a002a22af7))
* **components:** improve generic types ([#3331](https://github.com/nuxt/ui/issues/3331)) ([b998354](https://github.com/nuxt/ui/commit/b9983549a4b743724ea3ef99cc4a243f5ca41e53))
* **Container:** add `w-full` class ([df00149](https://github.com/nuxt/ui/commit/df001495980647cab1e67fd16154f1bc778de5e2))
* **defineLocale/defineShortcuts:** remove `@__NO_SIDE_EFFECTS__` ([82e2665](https://github.com/nuxt/ui/commit/82e26655a40782555299516f32a76046fa0dbd3a))
* **Drawer:** remove `fadeFromIndex` prop proxy ([f7604e5](https://github.com/nuxt/ui/commit/f7604e565f717001a4d4c2974cf23559a3f01c21))
* **Form:** clear dirty state after submit ([#3692](https://github.com/nuxt/ui/issues/3692)) ([3dd88ba](https://github.com/nuxt/ui/commit/3dd88bacecb2945efba8cc3cb4fe59fcbc056e9a))
* **FormField:** add `help` to `aria-describedby` attribute ([#3691](https://github.com/nuxt/ui/issues/3691)) ([20c3392](https://github.com/nuxt/ui/commit/20c33920d005332db3c83f33a8c54c7c227ce0a0))
* **InputMenu/SelectMenu:** empty search results ([94b6e52](https://github.com/nuxt/ui/commit/94b6e520f5ccf011204e953421fcc5b44b637e51))
* **InputMenu:** reset `searchTerm` on `update:open` ([3074632](https://github.com/nuxt/ui/commit/3074632523e67fa6a0ad3d9a71e5692c285bdc3a)), closes [#3620](https://github.com/nuxt/ui/issues/3620)
* **Link:** handle `aria-current` like `NuxtLink` / `RouterLink` ([c531d02](https://github.com/nuxt/ui/commit/c531d0248be7863980a1f676643c2dea8301c009))
* **Link:** prevent `active="true"` binding on html ([d73768b](https://github.com/nuxt/ui/commit/d73768b70453d60dd4186a996c1cf808b0294bf6))
* **Link:** properly pick all `aria-*` & `data-*` attrs ([ade16b7](https://github.com/nuxt/ui/commit/ade16b76cf535924a8d0f402b4d5d65cb67a55eb))
* **Link:** proxy `onClick` ([370054b](https://github.com/nuxt/ui/commit/370054b20c0201c9dba84ddfcd1e916594619b93)), closes [#3631](https://github.com/nuxt/ui/issues/3631)
* **NavigationMenu:** add `z-index` on viewport ([0095d89](https://github.com/nuxt/ui/commit/0095d8916bf361c0c89972e2f86b79850510c6a9)), closes [#3654](https://github.com/nuxt/ui/issues/3654)
* **Switch:** prevent transition on focus outline ([68787b2](https://github.com/nuxt/ui/commit/68787b26fdf2bd5f9d9e812e5bfddb19abe45d1d))
* **Table:** wrong condition on `caption` slot ([4ebb94c](https://github.com/nuxt/ui/commit/4ebb94cd7ef909b3547bce0922f75fe3ff74de4c))
* **Tabs:** remove `focus:outline-hidden` class ([1769d5e](https://github.com/nuxt/ui/commit/1769d5ed6ea46b1f7eafdc48cb6456512229f98b))
* **types:** add missing export for ButtonGroup ([#3709](https://github.com/nuxt/ui/issues/3709)) ([e7e6745](https://github.com/nuxt/ui/commit/e7e674559981177ad08be42418746060d7737df9))
* **useOverlay:** refine `open` method type to infer close emit return type ([#3716](https://github.com/nuxt/ui/issues/3716)) ([bd99c2d](https://github.com/nuxt/ui/commit/bd99c2d850d57baccc51e049c0b578a6fc6ab431))
* **vue:** mock `nuxtApp.hooks` & `useRuntimeHook` ([23bfeb9](https://github.com/nuxt/ui/commit/23bfeb937004d619187a67fb43e4c76b13d00069))
## [3.0.1](https://github.com/nuxt/ui/compare/v3.0.0...v3.0.1) (2025-03-21)
### ⚠ BREAKING CHANGES
* **Form:** drop explicit support for `zod` and `valibot` (#3617)
### Features
* **components:** handle events in `content` prop ([5dec0e1](https://github.com/nuxt/ui/commit/5dec0e16e28549b8833aaab17a87fada63d6598c))
* **locale:** add Catalan language ([#3550](https://github.com/nuxt/ui/issues/3550)) ([53cf1b4](https://github.com/nuxt/ui/commit/53cf1b4c14a2a0e076e1e77688852e6bd0a28a74))
* **locale:** add Central Kurdish language ([#3566](https://github.com/nuxt/ui/issues/3566)) ([b2034cc](https://github.com/nuxt/ui/commit/b2034ccc91eec6a2842c6f83d159e5aa6fd5f2fd))
* **locale:** add Romanian language ([#3587](https://github.com/nuxt/ui/issues/3587)) ([0229b0f](https://github.com/nuxt/ui/commit/0229b0fd4644a97db7eb3154c3c87a26634dcfbb))
* **locale:** add Urdu language ([#3611](https://github.com/nuxt/ui/issues/3611)) ([126ba23](https://github.com/nuxt/ui/commit/126ba2326f8153e155e1013db92c6ee417117610))
* **locale:** add Uzbek language ([#3548](https://github.com/nuxt/ui/issues/3548)) ([302e04b](https://github.com/nuxt/ui/commit/302e04bd77ae8b165046b264c8d23626e92f8fb5))
### Bug Fixes
* **Calendar:** grey out days outside of displayed month ([#3639](https://github.com/nuxt/ui/issues/3639)) ([a516866](https://github.com/nuxt/ui/commit/a5168666b7dff08e714d57f497737e7a670f457c))
* **ContextMenu/DropdownMenu:** remove `any` from `proxySlots` ([#3623](https://github.com/nuxt/ui/issues/3623)) ([764c41a](https://github.com/nuxt/ui/commit/764c41a0c60dd1c12d39a86af9f5f11b9e6cdc8c))
* **Modal/Slideover/Toast:** prevent unnecessary close instantiation ([f4c417d](https://github.com/nuxt/ui/commit/f4c417d9ef5409b52084bdf9d8cbccee3139709f))
* **module:** handle tailwindcss import without `theme(static)` ([#3630](https://github.com/nuxt/ui/issues/3630)) ([ecff9ab](https://github.com/nuxt/ui/commit/ecff9abc720bdda3a279d5bcfb7b477ff885f2e4))
* **module:** mark functions used in exports as pure ([#3604](https://github.com/nuxt/ui/issues/3604)) ([57efc78](https://github.com/nuxt/ui/commit/57efc78a3b3fa4a54bcd13df47d570a18fba2bc4))
* **RadioGroup:** handle `disabled` on items ([fe0bd83](https://github.com/nuxt/ui/commit/fe0bd83d11b0dfa53b58d423bc917f8e21d73444)), closes [nuxt/ui-pro#911](https://github.com/nuxt/ui-pro/issues/911)
* **Table:** allow links to be opened when [@select](https://github.com/select) is used ([#3580](https://github.com/nuxt/ui/issues/3580)) ([e80cc15](https://github.com/nuxt/ui/commit/e80cc1592fb244dd7692486a4c1ca5b1c2008112))
* **types:** add missing export for Icon ([#3568](https://github.com/nuxt/ui/issues/3568)) ([5e62493](https://github.com/nuxt/ui/commit/5e624933216db95cbfd1b8034b2eb0f13846ae55))
* **unplugin:** include `@compodium/examples` in auto-imports paths ([#3585](https://github.com/nuxt/ui/issues/3585)) ([cc504b8](https://github.com/nuxt/ui/commit/cc504b8a4b69dd76b49659d5c206ef23dcb9e475))
* **useLocale:** unique symbol to use in `@nuxt/ui-pro` ([#3603](https://github.com/nuxt/ui/issues/3603)) ([dec2730](https://github.com/nuxt/ui/commit/dec2730aaea1327434837cfa022ea04056757cbf))
* **vue:** missing unhead context ([#3589](https://github.com/nuxt/ui/issues/3589)) ([0897e9e](https://github.com/nuxt/ui/commit/0897e9ef05fbee4f021f317bb7c2d0b7007f1b75))
### Code Refactoring
* **Form:** drop explicit support for `zod` and `valibot` ([#3617](https://github.com/nuxt/ui/issues/3617)) ([9a4bb34](https://github.com/nuxt/ui/commit/9a4bb34d7d14add0a3199103f4b583e8307d1d6d))
## [3.0.0](https://github.com/nuxt/ui/compare/v3.0.0-beta.4...v3.0.0) (2025-03-12)
## [3.0.0-beta.4](https://github.com/nuxt/ui/compare/v3.0.0-beta.3...v3.0.0-beta.4) (2025-03-12)
### Features
* **Form:** global errors ([#3482](https://github.com/nuxt/ui/issues/3482)) ([6e03d9c](https://github.com/nuxt/ui/commit/6e03d9c6efc8f4cfc306813e733d7d3e03706323))
* **Input/Textarea:** allow `null` value in model ([#3415](https://github.com/nuxt/ui/issues/3415)) ([cfe9b2e](https://github.com/nuxt/ui/commit/cfe9b2ecf34827bc11a5281a069988ab96030047))
* **useLocale:** handle generic messages ([#3100](https://github.com/nuxt/ui/issues/3100)) ([a9c8eb3](https://github.com/nuxt/ui/commit/a9c8eb3f60a10d1a71632991c9db594716b0fba1))
### Bug Fixes
* **Button:** missing import ([21dbf01](https://github.com/nuxt/ui/commit/21dbf01888a161a9d8ac6eb0d957c1342f6cc30d)), closes [nuxt/ui#3417](https://github.com/nuxt/ui/issues/3417)
* **Form:** input blur validation on submit ([#3504](https://github.com/nuxt/ui/issues/3504)) ([97c8098](https://github.com/nuxt/ui/commit/97c8098d4a35c392719ae179d36aa008d6f8f78a))
* **vue:** prevent calling `useHead` in colors ([5ecd227](https://github.com/nuxt/ui/commit/5ecd2271ca86087cb805548397d75c38763ad412))
## [3.0.0-beta.3](https://github.com/nuxt/ui/compare/v3.0.0-beta.2...v3.0.0-beta.3) (2025-03-07)
### Features
* **Button:** handle `active` state ([bd2d484](https://github.com/nuxt/ui/commit/bd2d4848d246a3d5930f8059913f5a1a0abe29fd)), closes [#3417](https://github.com/nuxt/ui/issues/3417)
* **Table:** add `loading` slot ([99e531d](https://github.com/nuxt/ui/commit/99e531d8dfb7954322b7ab7feda3d8814c6d8d02)), closes [#3444](https://github.com/nuxt/ui/issues/3444)
### Bug Fixes
* **InputMenu/SelectMenu:** proxy `required` in root props ([60b7e2d](https://github.com/nuxt/ui/commit/60b7e2d69e80afa7e221855dcec46479d0ca5c6c))
* **InputMenu:** wrong `required` in multiple mode ([01fa230](https://github.com/nuxt/ui/commit/01fa230eae4b6623c5fd71cc218d114d9f6f0f25)), closes [#2741](https://github.com/nuxt/ui/issues/2741)
* **Pagination:** add missing slots ([a47c5ff](https://github.com/nuxt/ui/commit/a47c5ff46616eafee3158cb9801183965f5f9874)), closes [#3441](https://github.com/nuxt/ui/issues/3441)
* **Pagination:** wrong next link ([e823022](https://github.com/nuxt/ui/commit/e823022b19bb172d2e5fabb9144b4a4286a25a5f)), closes [#3008](https://github.com/nuxt/ui/issues/3008)
* **templates:** prevent overriding existing colors ([ccbd89c](https://github.com/nuxt/ui/commit/ccbd89c908fe8af54c7d723dd12da5b7f3906c8f)), closes [#3426](https://github.com/nuxt/ui/issues/3426)
## [3.0.0-beta.2](https://github.com/nuxt/ui/compare/v3.0.0-beta.1...v3.0.0-beta.2) (2025-02-28)
### Bug Fixes
* **OverlayProvider:** missing import ([c555c16](https://github.com/nuxt/ui/commit/c555c1640eb9e9aca643d71aa02e2a659485672e))
* **useOverlay:** missing imports ([0e3c63e](https://github.com/nuxt/ui/commit/0e3c63eb543981835c56a3bfebe71c4534d3f973))
## [3.0.0-beta.1](https://github.com/nuxt/ui/compare/v3.0.0-alpha.13...v3.0.0-beta.1) (2025-02-28)
### ⚠ BREAKING CHANGES
* **module:** remove devtools in favor of compodium (#3380)
* **useOverlay:** handle programmatic modals and slideovers (#3279)
### Features
* **Form:** add prop to disable state transformation ([#3356](https://github.com/nuxt/ui/issues/3356)) ([015ceac](https://github.com/nuxt/ui/commit/015ceacb11f94c6ae0829e59b8dfdef6c325b67d))
* **module:** remove devtools in favor of compodium ([#3380](https://github.com/nuxt/ui/issues/3380)) ([7a8c00c](https://github.com/nuxt/ui/commit/7a8c00c37451f7b9b33630f7a790a12c0fb2caa1))
* **Table:** add `select` event ([#2822](https://github.com/nuxt/ui/issues/2822)) ([0668a39](https://github.com/nuxt/ui/commit/0668a399dced48d1976de3820118bf2a29fe116e))
* **Tree:** new component ([#3180](https://github.com/nuxt/ui/issues/3180)) ([71728d3](https://github.com/nuxt/ui/commit/71728d3c3fa95255db03448c8b87fb75bc2d805c))
* **useOverlay:** handle programmatic modals and slideovers ([#3279](https://github.com/nuxt/ui/issues/3279)) ([108d36f](https://github.com/nuxt/ui/commit/108d36fd8a4c7b325fcf85882f054bb5e784de57))
### Bug Fixes
* **Avatar:** render on SSR ([67e5465](https://github.com/nuxt/ui/commit/67e546504d2eb807c9b707aacc58761b10eb7d37))
* **CommandPalette:** wrong ellipsis color ([ada04f6](https://github.com/nuxt/ui/commit/ada04f64a529feab43f5b54162daffe9d3313435))
* **components:** missing `$attrs` bind ([#3152](https://github.com/nuxt/ui/issues/3152)) ([fb36df5](https://github.com/nuxt/ui/commit/fb36df5302e379f58ceb9c3a91348256806c8df5))
* **Drawer/Modal/Slideover:** disable close autofocus ([ae30f94](https://github.com/nuxt/ui/commit/ae30f9423dfae1f6e27f00176bb3175beeb888e4)), closes [#3227](https://github.com/nuxt/ui/issues/3227)
* **Form:** ensure loading state resets to false after an error ([#3359](https://github.com/nuxt/ui/issues/3359)) ([19d76c8](https://github.com/nuxt/ui/commit/19d76c8b75b053f1c44b691ca46c9d3b234dbce1))
* **Link:** improve external links handling in vue ([b53f77b](https://github.com/nuxt/ui/commit/b53f77b304a520e925af9d4a752e0f2933cfb71d))
* **Modal/Slideover:** add wrapper around title & description ([bc01136](https://github.com/nuxt/ui/commit/bc01136da7e838004088fffbf2acfd6788f3c5fb))
* **Modal/Slideover:** fixed header height ([d33a83e](https://github.com/nuxt/ui/commit/d33a83e147b009ebe1e52b7d677d364d18f24333)), closes [#3333](https://github.com/nuxt/ui/issues/3333)
* **Modal:** use `dvh` unit ([aefa09c](https://github.com/nuxt/ui/commit/aefa09c69b8f0dbd38d29883dc79d77fc7025f43))
* **module:** use key when merging modules options ([9821894](https://github.com/nuxt/ui/commit/98218945328b947e6c2a75f03b89c27e401dc6d5))
* **Tooltip:** bind `$attrs` on trigger ([637f5d3](https://github.com/nuxt/ui/commit/637f5d342ee1f1b1bf7de99020df9ca9f07e197e)), closes [#3339](https://github.com/nuxt/ui/issues/3339) [#2897](https://github.com/nuxt/ui/issues/2897)
* **vite:** exclude `@nuxt/ui` from vite pre-optimization ([#3352](https://github.com/nuxt/ui/issues/3352)) ([09492f7](https://github.com/nuxt/ui/commit/09492f79f29c0b5dd7a642f76f55aa3d305c0a69))
## [3.0.0-alpha.13](https://github.com/nuxt/ui/compare/v3.0.0-alpha.12...v3.0.0-alpha.13) (2025-02-17)
### ⚠ BREAKING CHANGES
* **useToast:** don't return a promise on `add`
* **Toast:** rename `click` to `onClick` for consistency
* **Alert/Toast:** add `orientation` prop
### Features
* **Alert/Toast:** add `orientation` prop ([2c192ac](https://github.com/nuxt/ui/commit/2c192ac145e3550153821627a389f03e26f247b5))
* **Badge:** add support within button groups ([#3224](https://github.com/nuxt/ui/issues/3224)) ([10fb843](https://github.com/nuxt/ui/commit/10fb843f8ffc2cda9cf9a29cdf37c6b5dae9ca17))
* **Card:** add `variant` prop ([847d4aa](https://github.com/nuxt/ui/commit/847d4aa752decc8c21a8eb57bff32a371c800b6d))
* **CommandPalette:** support link props in items ([e2b78a7](https://github.com/nuxt/ui/commit/e2b78a78a45c1b2339ba57e3ec1fcf2a1500b3af)), closes [#3190](https://github.com/nuxt/ui/issues/3190)
* **ContextMenu/DropdownMenu/NavigationMenu:** add `external-icon` prop ([5846c1e](https://github.com/nuxt/ui/commit/5846c1e2ee9f0851e902550f7e873cc703fe7cb4)), closes [#2996](https://github.com/nuxt/ui/issues/2996)
* **Drawer:** add `inset` prop ([6d9b9ed](https://github.com/nuxt/ui/commit/6d9b9edc5524ad32abdec925c276519e1a1a59e4)), closes [#2994](https://github.com/nuxt/ui/issues/2994)
* **locale:** add Azerbaijani language ([#3209](https://github.com/nuxt/ui/issues/3209)) ([0fb6753](https://github.com/nuxt/ui/commit/0fb6753c9de9144b7958052ae287b34911afcbd7))
* **locale:** add Bengali (বাংলা) language ([#3321](https://github.com/nuxt/ui/issues/3321)) ([1d09a2a](https://github.com/nuxt/ui/commit/1d09a2aa35944bc798cf53809ae227d05592a5bd))
* **module:** generate `tailwindcss` theme colors ([#2967](https://github.com/nuxt/ui/issues/2967)) ([443a0be](https://github.com/nuxt/ui/commit/443a0be0174f84526145db8c0349136e5fc4bbf3))
* **Table:** extends core options and support other options like `pagination` ([#3177](https://github.com/nuxt/ui/issues/3177)) ([4aa3179](https://github.com/nuxt/ui/commit/4aa317944e17956b08e5ded3fb564ae0bbd4e888))
* **Toast:** handle vnodes in `title` and `description` ([abd2be1](https://github.com/nuxt/ui/commit/abd2be1aa667f91c47673450445e09211c821365)), closes [#3226](https://github.com/nuxt/ui/issues/3226)
* **unplugin:** expose options for embedded plugins, throw warnings for duplication ([#3207](https://github.com/nuxt/ui/issues/3207)) ([6c20f8a](https://github.com/nuxt/ui/commit/6c20f8a9ea03273a795c5f88c071830decd54c1e))
* **useToast:** proxy emits ([089185f](https://github.com/nuxt/ui/commit/089185fbe4a13fa3253bf49780c4d0a673eef59a))
### Bug Fixes
* **App:** wrap `ModalProvider` / `SlideoverProvider` inside `TooltipProvider` ([cd0a9d3](https://github.com/nuxt/ui/commit/cd0a9d39d879a80342462b1c553602177f1ae8ee)), closes [#3236](https://github.com/nuxt/ui/issues/3236)
* **Badge:** missing `UAvatar` import ([49dd088](https://github.com/nuxt/ui/commit/49dd0885a043e736cfa335d7657bb68ae6142ccf)), closes [#3203](https://github.com/nuxt/ui/issues/3203)
* **Calendar/InputMenu/Textarea:** add missing `PartialString` type on `ui` prop ([9d29e0b](https://github.com/nuxt/ui/commit/9d29e0b4078c4638365caca4784ecad569cd0464)), closes [#3299](https://github.com/nuxt/ui/issues/3299)
* **Card:** remove `shadow-sm` for consistency ([8097fff](https://github.com/nuxt/ui/commit/8097fff79d3d9f63481c6cd8e3e724a67f7761df))
* **Link:** allow usage without `vue-router` in vue ([f55e869](https://github.com/nuxt/ui/commit/f55e86963737238749a8d7e85bca1e724ae4c4c2)), closes [#3001](https://github.com/nuxt/ui/issues/3001)
* **locale:** export `km` ([#3201](https://github.com/nuxt/ui/issues/3201)) ([995e07d](https://github.com/nuxt/ui/commit/995e07d6ffa47ee593b28aa587699676e2ad3b90))
* **Modal/Slideover:** improve `title` & `description` accessibility ([e419dcb](https://github.com/nuxt/ui/commit/e419dcbe61e6949abc76b8a1fc2f088fd7a402a0)), closes [#3267](https://github.com/nuxt/ui/issues/3267) [#3215](https://github.com/nuxt/ui/issues/3215)
* **Modal:** always fullscreen on mobile ([#2637](https://github.com/nuxt/ui/issues/2637)) ([7641d89](https://github.com/nuxt/ui/commit/7641d89552df1ed42e70bbac90f5486b58bd9349))
* **NavigationMenu:** disable collapsible with `collapsed` prop ([07e1b4f](https://github.com/nuxt/ui/commit/07e1b4f1f44efe90ac16138de5dbd78faf66e974))
* **NavigationMenu:** remove negative mb causing overflow issues ([0e46c3e](https://github.com/nuxt/ui/commit/0e46c3e8cf94fb52c47b9d46eaba2d18329a6f45))
* **NavigationMenu:** wrong `level` compute on `vertical` orientation ([c1c9da4](https://github.com/nuxt/ui/commit/c1c9da4d38b7675ce6323d938030e1b9a577f7c4))
* **SelectMenu:** wrap content with `FocusScope` ([e7e7585](https://github.com/nuxt/ui/commit/e7e75858d7c5f0d966d2b9b7a16bc95573a31025)), closes [#2657](https://github.com/nuxt/ui/issues/2657)
* **Table:** proxy props without `useForwardProps` ([f0553eb](https://github.com/nuxt/ui/commit/f0553ebb496f2f4bad5fd5ab0b3006c9ee8edba3))
* **Toast:** rename `click` to `onClick` for consistency ([533e889](https://github.com/nuxt/ui/commit/533e88958916b356c00511a90e16c8b11af0b521))
* **useToast:** don't return a promise on `add` ([153f341](https://github.com/nuxt/ui/commit/153f341a8c1a09a6fd3069886a26d9a3f5de41de))
## [3.0.0-alpha.12](https://github.com/nuxt/ui/compare/v3.0.0-alpha.11...v3.0.0-alpha.12) (2025-01-27)
### ⚠ BREAKING CHANGES
* **ColorPicker:** migrate from `color` to `colortranslator` (#3097)
* **Form:** include nested state in submit data (#3028)
### Features
* **css:** add `light` variant to reverse colors ([75f7064](https://github.com/nuxt/ui/commit/75f7064b409a47d068007d0b4f3af007fb24c679))
* **FormField:** set `aria-describedby` and `aria-invalid` attributes ([#3123](https://github.com/nuxt/ui/issues/3123)) ([b95b913](https://github.com/nuxt/ui/commit/b95b91391af21ee0fd96c69fb6ccf99b3126bc79))
* **Form:** form validation properties ([#3137](https://github.com/nuxt/ui/issues/3137)) ([c0b485d](https://github.com/nuxt/ui/commit/c0b485d56376d6655d15d6241daeef19f25db25f))
* **locale:** add Hebrew language ([#3181](https://github.com/nuxt/ui/issues/3181)) ([f395877](https://github.com/nuxt/ui/commit/f3958773d610d64fe15cf57525044eec22dc1f96))
* **locale:** add Hindi language ([#3170](https://github.com/nuxt/ui/issues/3170)) ([8e96daa](https://github.com/nuxt/ui/commit/8e96daa5cc57e1a2c7605d54f8640f8e012a645d))
* **locale:** add Hungarian language ([#3129](https://github.com/nuxt/ui/issues/3129)) ([891ba1f](https://github.com/nuxt/ui/commit/891ba1fec64255ba4db0f4447e044cc9140ced94))
* **locale:** add Khmer language ([#3119](https://github.com/nuxt/ui/issues/3119)) ([64421a1](https://github.com/nuxt/ui/commit/64421a190ff43563cc73f64b6a9141d69e3f5ca5))
* **locale:** add Norwegian Bokmål language ([#3095](https://github.com/nuxt/ui/issues/3095)) ([9ccfe8f](https://github.com/nuxt/ui/commit/9ccfe8fbb3284a5bdd0766ba5831135d298b563f))
* **NavigationMenu:** add `collapsed` prop ([3fc2210](https://github.com/nuxt/ui/commit/3fc2210e0392b63b065e4f4899ff864f1a3717b1))
* **NavigationMenu:** add `contentOrientation` prop ([ac86ee0](https://github.com/nuxt/ui/commit/ac86ee01b9fc9b5dc882b210d88b8fef73148e42))
* **NavigationMenu:** handle `label` type in items ([27fdc8e](https://github.com/nuxt/ui/commit/27fdc8e260bb8d2ca815c84cfdc30b6ca3baa038)), closes [#2993](https://github.com/nuxt/ui/issues/2993)
### Bug Fixes
* **Alert:** allow actions wrap ([#3083](https://github.com/nuxt/ui/issues/3083)) ([e7c10bc](https://github.com/nuxt/ui/commit/e7c10bcb0dbbfbbe48bbdea7cbd99d4535be1adb))
* **Avatar:** handle loading manually to support `@nuxt/image` ([00c5f26](https://github.com/nuxt/ui/commit/00c5f261117fd986c8be70ecdc21762023e7ebc0)), closes [nuxt/ui-pro#727](https://github.com/nuxt/ui-pro/issues/727)
* **Avatar:** hide fallback when image is loaded ([36d7402](https://github.com/nuxt/ui/commit/36d7402be1f823c753c7cd44cca82bbb5fd4cddd)), closes [nuxt/ui-pro#727](https://github.com/nuxt/ui-pro/issues/727)
* **Button:** wrong avatar size with `block` prop ([ba1dd13](https://github.com/nuxt/ui/commit/ba1dd13173835c9b72b862eb9f875a8cd79c5604))
* **colors:** move css variables to `base` layer ([533ccec](https://github.com/nuxt/ui/commit/533ccec11007ec9078fd8daefd88f6b146991939)), closes [#3075](https://github.com/nuxt/ui/issues/3075)
* **components:** prevent multiple `appConfig` identifier import ([#3186](https://github.com/nuxt/ui/issues/3186)) ([cd16b95](https://github.com/nuxt/ui/commit/cd16b95c98c0ec29bc0586ba890555f79be00290))
* **ContextMenu/DropdownMenu:** remove unnecessary bindings in html ([9b5a957](https://github.com/nuxt/ui/commit/9b5a957cdd01baafaa981864ad7d03902ad6918d))
* **Form:** include nested state in submit data ([#3028](https://github.com/nuxt/ui/issues/3028)) ([de9ecb1](https://github.com/nuxt/ui/commit/de9ecb1d767060f88c1dbdf69b9c04d5731b049d))
* **Form:** standard schema validation no longer wrapped in `value` object ([#3104](https://github.com/nuxt/ui/issues/3104)) ([8f7f579](https://github.com/nuxt/ui/commit/8f7f579da0fc58575184dc445ff0dda0c0ca1298))
* **locale:** remove emoji fallback for Chinese ([#3134](https://github.com/nuxt/ui/issues/3134)) ([1a95104](https://github.com/nuxt/ui/commit/1a951046319eaf85c2adb44928a0255dedef093d))
* **locale:** year translation missing `ñ` in `es` ([#3090](https://github.com/nuxt/ui/issues/3090)) ([1bf370e](https://github.com/nuxt/ui/commit/1bf370e6fd27fab644689335b7356bbf4c359663))
* **NavigationMenu:** handle children recursively in vertical orientation ([2b7ff3e](https://github.com/nuxt/ui/commit/2b7ff3edf6620d7ed4a491d89f0e616b5916984b)), closes [#3128](https://github.com/nuxt/ui/issues/3128)
* **NavigationMenu:** highlight open items on `horizontal` orientation only ([931211a](https://github.com/nuxt/ui/commit/931211a634183a8122ce0be874cc1f9048768d88))
* **useToast:** add in queue and improve unique ids ([aafddd8](https://github.com/nuxt/ui/commit/aafddd8eed0f3fc7c7228c2db4718ba54f3fc522)), closes [#2686](https://github.com/nuxt/ui/issues/2686)
### Code Refactoring
* **ColorPicker:** migrate from `color` to `colortranslator` ([#3097](https://github.com/nuxt/ui/issues/3097)) ([51e5e65](https://github.com/nuxt/ui/commit/51e5e65be7f834ec226be28d95a1b547b85b329c))
## [3.0.0-alpha.11](https://github.com/nuxt/ui/compare/v3.0.0-alpha.10...v3.0.0-alpha.11) (2025-01-13)
### ⚠ BREAKING CHANGES
* **Modal/Popover/Slideover:** rename `prevent-close` to `dismissible` + uniformize docs
### Features
* **Badge:** rework sizes ([d9967f5](https://github.com/nuxt/ui/commit/d9967f5e282d41f4000d5451efed7254b4c1608c))
* **CommandPalette:** add `autofocus` prop ([#2942](https://github.com/nuxt/ui/issues/2942)) ([1b3c919](https://github.com/nuxt/ui/commit/1b3c919222a4002d84dd968f93bcf9d615e412bc))
* **locale:** add Danish language ([#2952](https://github.com/nuxt/ui/issues/2952)) ([e1d385a](https://github.com/nuxt/ui/commit/e1d385a17545f8091c8d2459842fe4c39b8c9399))
* **locale:** add Estonian language ([#3036](https://github.com/nuxt/ui/issues/3036)) ([01bf99e](https://github.com/nuxt/ui/commit/01bf99eec8c2fd0e3dbe1271be152844e401287a))
* **locale:** add Finnish language ([#3013](https://github.com/nuxt/ui/issues/3013)) ([c770ae1](https://github.com/nuxt/ui/commit/c770ae124e626682935475dc6a164aacd1408c01))
* **locale:** add Greek language ([#2975](https://github.com/nuxt/ui/issues/2975)) ([b326a14](https://github.com/nuxt/ui/commit/b326a14fb0e62edc8e55599c16f934f54f95aa42))
* **locale:** add Indonesian language ([#3024](https://github.com/nuxt/ui/issues/3024)) ([a18ad84](https://github.com/nuxt/ui/commit/a18ad84edfe6b3f444d379f24defeecb63e5cdb9))
* **locale:** add Swedish language ([#3012](https://github.com/nuxt/ui/issues/3012)) ([0201a3d](https://github.com/nuxt/ui/commit/0201a3de757db426c877ef2761de8e9d7493983e))
* **locale:** add Thai language ([#2980](https://github.com/nuxt/ui/issues/2980)) ([c8cd06e](https://github.com/nuxt/ui/commit/c8cd06e92dab208271ab7b7f6806793eea1e8969))
* **locale:** add Ukrainian language ([#2908](https://github.com/nuxt/ui/issues/2908)) ([5efae59](https://github.com/nuxt/ui/commit/5efae599b642e65ec8ccaf2361b69abe993a0173))
* **locale:** add Viet language ([#2986](https://github.com/nuxt/ui/issues/2986)) ([ffba108](https://github.com/nuxt/ui/commit/ffba108291f321471650ca9060ea264f41482648))
* **module:** allow `tv` customization through `app.config` ([#2938](https://github.com/nuxt/ui/issues/2938)) ([30ba53e](https://github.com/nuxt/ui/commit/30ba53e20b3b91909c2c8162f35b13b6ad305d13))
### Bug Fixes
* **Accordion/Collapsible/NavigationMenu/Tabs:** define `unmountOnHide` default ([4344e36](https://github.com/nuxt/ui/commit/4344e366647e9618c21fe800b43d2b4ae2611226))
* **Avatar:** bind `$attrs` on `AvatarFallback` ([#2933](https://github.com/nuxt/ui/issues/2933)) ([7f64198](https://github.com/nuxt/ui/commit/7f64198a70104436f39f2f9d8527df0508fd84f6))
* **Badge:** reduce radius on `sm` size ([f97d2e3](https://github.com/nuxt/ui/commit/f97d2e3b88d1ba9be5f7e2916c6502e38ac4d4c1))
* **CommandPalette/SelectMenu:** missing translations ([#3057](https://github.com/nuxt/ui/issues/3057)) ([d5dba0e](https://github.com/nuxt/ui/commit/d5dba0ebc98594906ef1d9428da11d44317b70fc))
* **components:** enable pointer events on menus ([#2881](https://github.com/nuxt/ui/issues/2881)) ([f85b098](https://github.com/nuxt/ui/commit/f85b0985bdd6f51aff41acc6f86dd02db9832b24))
* **defineShortcuts:** handle extract when using `onSelect` or `onClick` ([#2896](https://github.com/nuxt/ui/issues/2896)) ([2e17fb6](https://github.com/nuxt/ui/commit/2e17fb68dee7e7bb27750c816d27b62249a1247b))
* **DropdownMenu/ContextMenu:** correct bindings of `checkbox` items ([#2921](https://github.com/nuxt/ui/issues/2921)) ([4c5a4fb](https://github.com/nuxt/ui/commit/4c5a4fb5265c36a39e551b8ee43b86e9ebd3d064))
* **FormField:** restore `eager-validation` prop behavior ([#3031](https://github.com/nuxt/ui/issues/3031)) ([41dc11c](https://github.com/nuxt/ui/commit/41dc11ceefd8f505fbc5214fe61f12483b0da4a2))
* **InputMenu:** removing `tag` does not change `modelValue` ([#3054](https://github.com/nuxt/ui/issues/3054)) ([5a44394](https://github.com/nuxt/ui/commit/5a443944ae622c8f4a893e0a18a80026ea9c1fe0))
* **locale:** improve Traditional Chinese translation ([#3051](https://github.com/nuxt/ui/issues/3051)) ([5c2c55f](https://github.com/nuxt/ui/commit/5c2c55ff08fbc16c869ad382e5fe5ac9fcc791de))
* **Modal/Popover/Slideover:** rename `prevent-close` to `dismissible` + uniformize docs ([6fb426f](https://github.com/nuxt/ui/commit/6fb426fc17d6d524e7d0503c2c8f3610f60b954d))
* **NavigationMenu:** `arrow` styles after `reka-ui` migration ([9759320](https://github.com/nuxt/ui/commit/97593204384669c479b85932024317a300ce29d8))
* **NavigationMenu:** highlight border on children only with `vertical` orientation ([e931880](https://github.com/nuxt/ui/commit/e93188067172d357a7724f937aeec70a0dabe611))
* **NavigationMenu:** remove `w-full` on root slot ([ef7ecd2](https://github.com/nuxt/ui/commit/ef7ecd242f4550838dbe3a45e33855afff89f506)), closes [#3000](https://github.com/nuxt/ui/issues/3000)
* **NavigationMenu:** unbind link on collapsible trigger with `vertical` orientation ([82d6344](https://github.com/nuxt/ui/commit/82d63446a12445accbca9131a83806994631761b))
* **SelectMenu:** handle `resetSearchTermOnBlur` manually ([#3082](https://github.com/nuxt/ui/issues/3082)) ([c902a40](https://github.com/nuxt/ui/commit/c902a40f7c0ce5ceb4624bbe2bbdfa09c87f7c75))
* **Stepper:** correct item `value` type ([4f05b1a](https://github.com/nuxt/ui/commit/4f05b1aac9af096cdc9404395d25d2261522a1db))
* **Stepper:** wrong `item` in `title` & `description` slots ([473194f](https://github.com/nuxt/ui/commit/473194fbaf2a9d21e2acb67d16715c412528d7d2)), closes [#2888](https://github.com/nuxt/ui/issues/2888)
* **templates:** allow any string in colors autocomplete ([5183582](https://github.com/nuxt/ui/commit/5183582a90c0d86bd986ef0f280bc58e740c6458)), closes [#2143](https://github.com/nuxt/ui/issues/2143)
* **templates:** infer variants types in generated theme ([2c99bb8](https://github.com/nuxt/ui/commit/2c99bb80c72fdbde9cd2ff3ad7caae0be632b864))
* **unplugin:** invalid url schema on windows ([#2899](https://github.com/nuxt/ui/issues/2899)) ([9b4694f](https://github.com/nuxt/ui/commit/9b4694f8d9b0fc244e805a7bfb2795d5131f7d18))
* **vue:** head injection ([#2929](https://github.com/nuxt/ui/issues/2929)) ([7302a84](https://github.com/nuxt/ui/commit/7302a846a9c394373c47def12dca00274e58f269))
### Reverts
* Revert "chore(deps): update `typescript`" ([3107039](https://github.com/nuxt/ui/commit/3107039b560cef973c117a251e4407ca5e615a72))
* Revert "chore(deps): update `@nuxt/module-builder`" ([c79acc1](https://github.com/nuxt/ui/commit/c79acc15b00f23b189821ebe2f4430e900cac34f))
* Revert "build: remove `cjs` support" ([15b411d](https://github.com/nuxt/ui/commit/15b411de4a6a7d322a3dea5703a5a5464c4e709a))
## [3.0.0-alpha.10](https://github.com/nuxt/ui/compare/v3.0.0-alpha.9...v3.0.0-alpha.10) (2024-12-09)
### ⚠ BREAKING CHANGES
* **module:** migrate to `reka-ui` (#2448)
* **Form:** resolve async validation in yup & issue directly mutate state (#2702)
### Features
* **Avatar:** add `default` slot for fallback ([b741ef3](https://github.com/nuxt/ui/commit/b741ef3313bb894beaed0eaa7323ee3d951bf935))
* **Calendar:** add `icon` props ([#2778](https://github.com/nuxt/ui/issues/2778)) ([0f64802](https://github.com/nuxt/ui/commit/0f648024e0468d34c1499bb5b5d2ed32e0e7de4f))
* **Calendar:** implement component ([#2618](https://github.com/nuxt/ui/issues/2618)) ([2e9aeb5](https://github.com/nuxt/ui/commit/2e9aeb5f05e94d63ea453c4f07a3e84ee2a02773))
* **ColorPicker:** implement component ([#2670](https://github.com/nuxt/ui/issues/2670)) ([e475b64](https://github.com/nuxt/ui/commit/e475b6438d405e4695ffb19155d456534d16b897))
* **CommandPalette:** add `active` field on items for consistency ([3765537](https://github.com/nuxt/ui/commit/37655377e9675982e2fce422bdd79ea651424548))
* **css:** use `color-scheme` utilities on body ([a2512f6](https://github.com/nuxt/ui/commit/a2512f680dc0df7add48bc17ef3be30d579be782))
* **i18n:** add Dutch locale ([#2728](https://github.com/nuxt/ui/issues/2728)) ([3baddfd](https://github.com/nuxt/ui/commit/3baddfd12186a68cc302f31cf0934cb9cf48060d))
* **i18n:** add Turkish locale ([#2716](https://github.com/nuxt/ui/issues/2716)) ([de8228e](https://github.com/nuxt/ui/commit/de8228e504affd1a57106101f5168a33702d4d53))
* **locale:** add Brazilian Portuguese language ([#2825](https://github.com/nuxt/ui/issues/2825)) ([b7ff7d8](https://github.com/nuxt/ui/commit/b7ff7d8aa63c41cf7afbecaa31824e098ea291af))
* **locale:** add Japanese language ([#2794](https://github.com/nuxt/ui/issues/2794)) ([ecc4755](https://github.com/nuxt/ui/commit/ecc4755a17874e59e06e70307a40dfd3fb3f20a0))
* **locale:** add Portuguese language ([#2855](https://github.com/nuxt/ui/issues/2855)) ([8b5d412](https://github.com/nuxt/ui/commit/8b5d412fd70b14a53cffa9129f5edd8a40e0f2e8))
* **locale:** add Slovak language ([#2821](https://github.com/nuxt/ui/issues/2821)) ([68a10f0](https://github.com/nuxt/ui/commit/68a10f09d5f164f2f5f07e65297e29fa2d939425))
* **locale:** translate Korean ([#2703](https://github.com/nuxt/ui/issues/2703)) ([2cbf83e](https://github.com/nuxt/ui/commit/2cbf83eb8484ad9abebd6ca01ad344918570af5b))
* **module:** migrate to `reka-ui` ([#2448](https://github.com/nuxt/ui/issues/2448)) ([81ac076](https://github.com/nuxt/ui/commit/81ac076219c3d7ef151f641414a0fbeca2da0bdd))
* **NavigationMenu:** handle `item.trailingIcon` display ([4b653ef](https://github.com/nuxt/ui/commit/4b653ef7735d9d2dfea65260433ade05eb3d3bd7))
* **Stepper:** new component ([#2733](https://github.com/nuxt/ui/issues/2733)) ([6484d01](https://github.com/nuxt/ui/commit/6484d010a1eee6f5d86968e4701b945953089b17))
* **Table:** handle `meta.class` on `th` and `td` ([#2790](https://github.com/nuxt/ui/issues/2790)) ([004a577](https://github.com/nuxt/ui/commit/004a5774678da24ccc267e96697c6088c51d5eea))
### Bug Fixes
* **Breadcrumb:** missing `aria-hidden` on presentation items ([a7a1227](https://github.com/nuxt/ui/commit/a7a1227c93110727e24f822fa50b547eb66bb16e)), closes [#2725](https://github.com/nuxt/ui/issues/2725)
* **Calendar:** handle icons in RTL mode ([#2770](https://github.com/nuxt/ui/issues/2770)) ([e7b69b7](https://github.com/nuxt/ui/commit/e7b69b7d6f0ebb3c578b9f58bcddf8ad36e6c6ce))
* **Calendar:** omit `as` / `asChild` props ([9478fc0](https://github.com/nuxt/ui/commit/9478fc076846d4a7fef13e63bdc274cd8d161063))
* **ColorPicker:** handle RTL mode ([#2858](https://github.com/nuxt/ui/issues/2858)) ([f98b91c](https://github.com/nuxt/ui/commit/f98b91c22ae21071a25f69cc8682eb6197a54c5a))
* **CommandPalette:** keep `ignoreFilter` groups at their place ([#2833](https://github.com/nuxt/ui/issues/2833)) ([3b9ca22](https://github.com/nuxt/ui/commit/3b9ca2263de1b936639b1b20ad0baf1cb059fda5))
* **components:** apply class on `trigger` instead of `content` when present ([a6ecef0](https://github.com/nuxt/ui/commit/a6ecef0f0d87a8dff4e4cb9ec507058ec94ed82b)), closes [#2132](https://github.com/nuxt/ui/issues/2132)
* **components:** specify collisionPadding to all menus ([148b024](https://github.com/nuxt/ui/commit/148b02464d47ada421313327585924b17f4e3f2d))
* **ContextMenu:** remove close animation ([#2798](https://github.com/nuxt/ui/issues/2798)) ([ed27222](https://github.com/nuxt/ui/commit/ed2722257a22c770eda811fbad58980bcef9dad5))
* **defineShortcuts:** return `useEventListener` to unregister the listener ([80befc1](https://github.com/nuxt/ui/commit/80befc107c6c6e7ab99dbe12376976babf315158)), closes [#2031](https://github.com/nuxt/ui/issues/2031)
* **devtools:** error with renderer when `colorMode` is disabled ([#2792](https://github.com/nuxt/ui/issues/2792)) ([f06fbaf](https://github.com/nuxt/ui/commit/f06fbafc1e709c7b4e54e2ba40d44c5770685a5d))
* **Form:** resolve async validation in yup & issue directly mutate state ([#2702](https://github.com/nuxt/ui/issues/2702)) ([c9806da](https://github.com/nuxt/ui/commit/c9806da6d850ea50ff8d2f11a1fbc5a43459b71f))
* **icons:** make `loading` icon clockwise ([#2797](https://github.com/nuxt/ui/issues/2797)) ([bc2bcb3](https://github.com/nuxt/ui/commit/bc2bcb30d97e2e873c4c7d535f82a4980cd35b02))
* **Link:** partial query match for Vue ([#2787](https://github.com/nuxt/ui/issues/2787)) ([a6c2205](https://github.com/nuxt/ui/commit/a6c22052e1c70e4ce6b2c7f783667a7f8c6cafa4))
* **locale:** improve German translation ([#2826](https://github.com/nuxt/ui/issues/2826)) ([c440c91](https://github.com/nuxt/ui/commit/c440c91a29fc1acd281a7f9d9b0cf74f5341553d))
* **Modal:** prevent from going out of screen ([b7ba2c7](https://github.com/nuxt/ui/commit/b7ba2c7759485ddb0a8bae589e4b6536ac9b1c96)), closes [#2711](https://github.com/nuxt/ui/issues/2711)
* **NavigationMenu:** wrong badge class ([86f2b48](https://github.com/nuxt/ui/commit/86f2b4856cc6beaf0440795500a5c74f9af04f36)), closes [#2766](https://github.com/nuxt/ui/issues/2766)
* **Progress:** handle `horizontal` animation in RTL mode ([#2723](https://github.com/nuxt/ui/issues/2723)) ([0baa3a0](https://github.com/nuxt/ui/commit/0baa3a06d449ab97093c451bd16215cf83c39447))
* **Stepper:** handle RTL mode ([#2844](https://github.com/nuxt/ui/issues/2844)) ([198d04d](https://github.com/nuxt/ui/commit/198d04de51d16ec7fcaa546370e4f67aa73bfee0))
* **Stepper:** missing import ([816bb69](https://github.com/nuxt/ui/commit/816bb69debdbf83f36c3ed3627985142e62b7dd1))
* **Table:** handle `loading` animation in RTL mode ([#2771](https://github.com/nuxt/ui/issues/2771)) ([b1550d5](https://github.com/nuxt/ui/commit/b1550d58adfeb09977619ad3ff7e776782a89603))
* **Tabs:** prevent hover on disabled ([a938d24](https://github.com/nuxt/ui/commit/a938d24f90431494c2da89411c301a228ab8d3f7))
* **Tabs:** truncate not working ([c1ff978](https://github.com/nuxt/ui/commit/c1ff978370fb343950837b380ccf02a33db53ccb))
* **types:** handle array of strings in AppConfig ([#2854](https://github.com/nuxt/ui/issues/2854)) ([4b241ba](https://github.com/nuxt/ui/commit/4b241ba3c32f4456252768b664488799a8278f0e))
* **useLocale:** update locale import to enable tree shaking ([#2735](https://github.com/nuxt/ui/issues/2735)) ([3bccb67](https://github.com/nuxt/ui/commit/3bccb6782a601e686df5d0ee405d738572f182e1))
## [3.0.0-alpha.9](https://github.com/nuxt/ui/compare/v3.0.0-alpha.8...v3.0.0-alpha.9) (2024-11-19)
### Features
* **cli:** add locale command ([#2586](https://github.com/nuxt/ui/issues/2586)) ([824ba56](https://github.com/nuxt/ui/commit/824ba5629183bc4cd59321213558770db211f6e5))
* **css:** add `--ui-bg-muted` / `--ui-border-muted` variables ([7f6db45](https://github.com/nuxt/ui/commit/7f6db45f1e15ef39cda9b732cb601c552f29570a))
* **Form:** apply transformations ([#2550](https://github.com/nuxt/ui/issues/2550)) ([75c5e87](https://github.com/nuxt/ui/commit/75c5e87724e7abdf0a6751d7a1dbbafb947f373f))
* **FormField:** add `error-pattern` prop ([#2601](https://github.com/nuxt/ui/issues/2601)) ([143612e](https://github.com/nuxt/ui/commit/143612ec737d1c7571398601c3222f2eed37996e))
* **InputMenu/SelectMenu:** add `create-item` prop ([#2472](https://github.com/nuxt/ui/issues/2472)) ([f516d7b](https://github.com/nuxt/ui/commit/f516d7b36da51565f4ab05a4c9cfe5e5b4015124))
* **InputNumber:** implement component ([#2577](https://github.com/nuxt/ui/issues/2577)) ([bd2f077](https://github.com/nuxt/ui/commit/bd2f077fe8e645d5fce8b1eb5a6eb1068b3e8f7c))
* **Link:** allow partial query match for its active state ([#2664](https://github.com/nuxt/ui/issues/2664)) ([7329900](https://github.com/nuxt/ui/commit/7329900ae549430b88567a09cbb585d3cf0a6d32))
* **locale:** add Persian language ([#2682](https://github.com/nuxt/ui/issues/2682)) ([14fb21b](https://github.com/nuxt/ui/commit/14fb21be0034ffc0ba5d213734c00f12e0d6bea8))
* **locale:** add Polish language ([#2678](https://github.com/nuxt/ui/issues/2678)) ([2fc36c8](https://github.com/nuxt/ui/commit/2fc36c878c67967ec91e4f6999575bad45521d44))
* **locale:** add support for Arabic ([#2582](https://github.com/nuxt/ui/issues/2582)) ([602a667](https://github.com/nuxt/ui/commit/602a667343be22b72383ab3cf42f36ec9e135082))
* **locale:** add support for Czech translation ([#2593](https://github.com/nuxt/ui/issues/2593)) ([4889d30](https://github.com/nuxt/ui/commit/4889d30b448296de42e146dc5771738837c31f8c))
* **locale:** add support for Italian ([#2583](https://github.com/nuxt/ui/issues/2583)) ([4fbbb25](https://github.com/nuxt/ui/commit/4fbbb25f68b0b5ee76e50f2da776a74d54acc041))
* **locale:** provide `code` ([#2611](https://github.com/nuxt/ui/issues/2611)) ([8a8b1ee](https://github.com/nuxt/ui/commit/8a8b1ee2e1628bc5439ef109d3c68b69bf631f81))
* **locale:** provide `dir` on `defineLocale` ([#2620](https://github.com/nuxt/ui/issues/2620)) ([937585c](https://github.com/nuxt/ui/commit/937585cb3f8bc902d60a4b5904711598204aee2d))
* **locale:** translate chinese ([#2580](https://github.com/nuxt/ui/issues/2580)) ([febda5c](https://github.com/nuxt/ui/commit/febda5c2b67374d1358a66694543b77037d239c6))
* **locale:** translate Spanish ([#2644](https://github.com/nuxt/ui/issues/2644)) ([8ed434c](https://github.com/nuxt/ui/commit/8ed434c105b75ae02aa7493a235cebb64d518d09))
* **locale:** typing `dir` ([#2643](https://github.com/nuxt/ui/issues/2643)) ([e55c0e2](https://github.com/nuxt/ui/commit/e55c0e25947e7bcef931b26dafaad120f488a627))
* **module:** support i18n in components ([#2553](https://github.com/nuxt/ui/issues/2553)) ([2636240](https://github.com/nuxt/ui/commit/26362408b161108487b889ff001bec9166059c79))
* **NavigationMenu:** control items `open` & `defaultOpen` on vertical ([30218f1](https://github.com/nuxt/ui/commit/30218f1b5b0a56207fd4db224ffa0401ac194a04)), closes [#2608](https://github.com/nuxt/ui/issues/2608)
* **PinInput:** implement component ([#2570](https://github.com/nuxt/ui/issues/2570)) ([95aa6f6](https://github.com/nuxt/ui/commit/95aa6f68b316d02c28d1124d9a826bca55cde81f))
* **Popover:** add `prevent-close` prop ([ea97759](https://github.com/nuxt/ui/commit/ea97759c2c219bdf5c48b652b47d293ddf513a00)), closes [#2245](https://github.com/nuxt/ui/issues/2245)
* **SelectMenu:** use `UInput` in search to handle props like icon ([ff1e079](https://github.com/nuxt/ui/commit/ff1e0798d384d40ad82a95fe5faa16acb080efe3)), closes [#2021](https://github.com/nuxt/ui/issues/2021)
* **Table:** add `caption` prop ([446f9c1](https://github.com/nuxt/ui/commit/446f9c1085e96187afdc5c1d7ce3450f8df1a2e1))
### Bug Fixes
* **App:** missing `vue` imports ([ddb4690](https://github.com/nuxt/ui/commit/ddb46905e7e3480ab578bcd8a478f25dff60081a))
* **App:** remove `dir` prop ([#2630](https://github.com/nuxt/ui/issues/2630)) ([7cc26d0](https://github.com/nuxt/ui/commit/7cc26d098dff70923bcd9d414d675018951b1967))
* **Breadcrumb/Carousel/Pagination:** handle icons in RTL mode ([#2633](https://github.com/nuxt/ui/issues/2633)) ([e5119a9](https://github.com/nuxt/ui/commit/e5119a9ca4e217ef769904323c16bd8c0cbc02d9))
* **Breadcrumb:** render as `nav` ([756f791](https://github.com/nuxt/ui/commit/756f791a1a8dd3a4a88c212b4e4f775584decb55)), closes [#2649](https://github.com/nuxt/ui/issues/2649)
* **Button:** improve neutral solid variant hover ([8d85498](https://github.com/nuxt/ui/commit/8d85498ee197ec0b26cdd7c4b08f84fec45ddd8f))
* **Carousel:** use `dir` from locale ([#2647](https://github.com/nuxt/ui/issues/2647)) ([1fbbfe8](https://github.com/nuxt/ui/commit/1fbbfe8df06b3b8b294615ac328d582c5230aa8b))
* **ContextMenu/DropdownMenu:** relative imports with prefix ([47f58f5](https://github.com/nuxt/ui/commit/47f58f52ef2d03176a184a3ca2154f5cea655edb))
* **css:** `--font-family-sans` renamed to `--font-sans` ([#2680](https://github.com/nuxt/ui/issues/2680)) ([b2fa657](https://github.com/nuxt/ui/commit/b2fa65734bb59186520c985f7c73fc34a0cb8b37))
* **css:** remove useless spacing override ([8d00265](https://github.com/nuxt/ui/commit/8d0026558a21efbbca08e9939844f7479a0d6cce))
* **FormField:** missing conditions to apply container classes ([#2631](https://github.com/nuxt/ui/issues/2631)) ([9241ba1](https://github.com/nuxt/ui/commit/9241ba1230b0fde41595634362d83c92c66b7699))
* **Form:** match `error-pattern` on input validation ([#2606](https://github.com/nuxt/ui/issues/2606)) ([3584a33](https://github.com/nuxt/ui/commit/3584a3328b8588f024557c9908242bc374853419))
* **InputMenu/SelectMenu:** init `filter` with `labelKey` ([18931ac](https://github.com/nuxt/ui/commit/18931acdb316bc72a3e5ed6d20985688ad5c8d99))
* **InputMenu/SelectMenu:** look in `items` only with `value-attribute` ([0ceafe1](https://github.com/nuxt/ui/commit/0ceafe1d54000f3eb49562b00c188d82fa23c4ee)), closes [#2464](https://github.com/nuxt/ui/issues/2464)
* **InputMenu/SelectMenu:** multiple not working with generic boolean casting ([503f701](https://github.com/nuxt/ui/commit/503f701c7ecdfe27e9057e5ddebfc7e03889d61b)), closes [#2541](https://github.com/nuxt/ui/issues/2541)
* **InputMenu/SelectMenu:** use `isEqual` from `ohash` ([f943f88](https://github.com/nuxt/ui/commit/f943f88fcc9f4678d8f7bd224799e289a0c57dd8))
* **Link:** missing relative import ([#2588](https://github.com/nuxt/ui/issues/2588)) ([95a0bbc](https://github.com/nuxt/ui/commit/95a0bbc581a40677f620eed3170f9a423976214b))
* **locale:** Improve German translation ([#2676](https://github.com/nuxt/ui/issues/2676)) ([992be91](https://github.com/nuxt/ui/commit/992be91823fe1877254ccd092c71c77dd3ff42f7))
* **locale:** it translation ([#2623](https://github.com/nuxt/ui/issues/2623)) ([73e25ed](https://github.com/nuxt/ui/commit/73e25ed23562f755ea4c66e6c5fb06dd18caac1e))
* **locale:** Italian translation ([#2584](https://github.com/nuxt/ui/issues/2584)) ([d167c9b](https://github.com/nuxt/ui/commit/d167c9b807a82fdf0fd280ce8417a66f86d7ed72))
* **Modal/Slideover:** prevent `esc` with `prevent-close` prop ([9e2cc5b](https://github.com/nuxt/ui/commit/9e2cc5b12567472044726924a3896b4b0e7993a1)), closes [#2501](https://github.com/nuxt/ui/issues/2501)
* **module:** remove `fast-deep-equal` in favor of custom `isEqual` ([37a3597](https://github.com/nuxt/ui/commit/37a359701f4b2ce4a9b0727b64c0e3eea6be00b4))
* **module:** skip devtools renderer page injection if router integration is disabled ([#2571](https://github.com/nuxt/ui/issues/2571)) ([afe4003](https://github.com/nuxt/ui/commit/afe40033b088d8aedb73fa8387a0284ef78444e4))
* **PinInput:** missing `useFormField` import ([601f4b2](https://github.com/nuxt/ui/commit/601f4b2cd2027817b935e02a0b4584dc3dce655f))
* **Textarea:** `autoresize` does not work when initializing `modelValue` ([#2681](https://github.com/nuxt/ui/issues/2681)) ([d3a079a](https://github.com/nuxt/ui/commit/d3a079a644db3dfe2f4e9567973550d74b3ba905))
* **Toaster:** teleport to `body` ([b0be26d](https://github.com/nuxt/ui/commit/b0be26d67feab467ac5862edd82e52df03a5091c)), closes [#2404](https://github.com/nuxt/ui/issues/2404)
* **Toast:** unreachable behind overlays ([#2650](https://github.com/nuxt/ui/issues/2650)) ([0daac5b](https://github.com/nuxt/ui/commit/0daac5bafb756c3a2dfaf2bf166c30c0eb476e08))
* **useLocale:** missing import in various components ([#2603](https://github.com/nuxt/ui/issues/2603)) ([df7a61a](https://github.com/nuxt/ui/commit/df7a61a97a14b3d7943baee6a74686134dfdb10b))
### Reverts
* Revert "docs(ComponentCode/ComponentExample): use relative imports" ([5deadc7](https://github.com/nuxt/ui/commit/5deadc709640bbfd3ec14c1c9363deb55e765d6a))
## [3.0.0-alpha.8](https://github.com/nuxt/ui/compare/v3.0.0-alpha.7...v3.0.0-alpha.8) (2024-11-07)
### ⚠ BREAKING CHANGES
* **theme:** migrate from `heroicons` to `lucide` (#2540)
### Features
* **Avatar:** infer `width` / `height` on `<img>` based on `size` prop ([c9adf33](https://github.com/nuxt/ui/commit/c9adf333be3e489b91fd044189809c28c62e7951))
* **Avatar:** use `NuxtImg` component when available ([f1a14dd](https://github.com/nuxt/ui/commit/f1a14dd87c3e250a7eaa6729f68201201a476f9f)), closes [nuxt/ui#2078](https://github.com/nuxt/ui/issues/2078)
* **Badge:** handle `icon` and `avatar` props ([#2497](https://github.com/nuxt/ui/issues/2497)) ([2d52834](https://github.com/nuxt/ui/commit/2d52834529e00a43b1a9b3015d073500b4208981))
* **components:** improve RTL support ([#2433](https://github.com/nuxt/ui/issues/2433)) ([94c4918](https://github.com/nuxt/ui/commit/94c49186e16d84d77a637bbdfe00e7cb880204fe))
* **DropdownMenu/ContextMenu:** handle `color` field in items ([#2510](https://github.com/nuxt/ui/issues/2510)) ([f66c96e](https://github.com/nuxt/ui/commit/f66c96e277970f80c905a8936c73b1d37479a940))
* **InputMenu/Select/SelectMenu:** `arrow` prop implementation ([#2503](https://github.com/nuxt/ui/issues/2503)) ([f26f6c8](https://github.com/nuxt/ui/commit/f26f6c8168ad5e44e47ab770cee10035257841a2))
* **Kbd:** special keys for macOS and other systems ([#2494](https://github.com/nuxt/ui/issues/2494)) ([332c6c0](https://github.com/nuxt/ui/commit/332c6c08d73ebdbffc18e1f196962eaa76e7a8dc))
* **module:** add support for `vue` using `unplugin` ([#2416](https://github.com/nuxt/ui/issues/2416)) ([d4a943e](https://github.com/nuxt/ui/commit/d4a943e631b5e16dc7863395f1dd906087228e1c))
* **module:** devtools integration ([#2196](https://github.com/nuxt/ui/issues/2196)) ([701c75a](https://github.com/nuxt/ui/commit/701c75a2a88a29be2fce193f75e1484799a5539c))
* **NavigationMenu:** add `item-content` slot ([b5ca0d9](https://github.com/nuxt/ui/commit/b5ca0d96f1de049dde698e57a340fc8ee54dd2e7))
* **Table:** customize `header` and `cell` through slots ([#2457](https://github.com/nuxt/ui/issues/2457)) ([ef561e7](https://github.com/nuxt/ui/commit/ef561e7cba172b61f296d4ff11815ec31902fb4a))
* **theme:** migrate from `heroicons` to `lucide` ([#2540](https://github.com/nuxt/ui/issues/2540)) ([a6c1a6c](https://github.com/nuxt/ui/commit/a6c1a6c587ca35439852ce93cd4edc5041c6a9bf))
### Bug Fixes
* **ButtonGroup:** merge class with theme ([d980115](https://github.com/nuxt/ui/commit/d9801154088ec7a20901b805f5d21e485e481d98)), closes [nuxt/ui#2498](https://github.com/nuxt/ui/issues/2498)
* **Carousel:** add missing `aria-label` on dots ([#2489](https://github.com/nuxt/ui/issues/2489)) ([03dd1eb](https://github.com/nuxt/ui/commit/03dd1eba7ece4c48393960dc6c725be3a1eec776))
* **Chip:** proxy attrs to slot ([8669553](https://github.com/nuxt/ui/commit/8669553ea415cc969b2066a78830d03e8dfc811b)), closes [nuxt/ui#2484](https://github.com/nuxt/ui/issues/2484)
* **components:** missing relative imports ([1a93d13](https://github.com/nuxt/ui/commit/1a93d13a1609d8b90783f20b330738cd7456503e)), closes [nuxt/ui#2515](https://github.com/nuxt/ui/issues/2515)
* **InputMenu/Select/SelectMenu:** improve types ([#2471](https://github.com/nuxt/ui/issues/2471)) ([db8111d](https://github.com/nuxt/ui/commit/db8111d7835d030ced79899e826ff1eb74cf1cf4))
* **InputMenu/SelectMenu:** `fast-deep-equal` import ([309e52f](https://github.com/nuxt/ui/commit/309e52faa76fc0a135dbc0d9543380ffd9066bda)), closes [nuxt/ui#2488](https://github.com/nuxt/ui/issues/2488)
* **module:** add `fast-deep-equal` in `optimizeDeps` ([0bfe2b6](https://github.com/nuxt/ui/commit/0bfe2b60b3eb06ec30c80505f10380bab4f7ad4c))
* **module:** define `[#build](https://github.com/nuxt/ui/issues/build)/app.config` ([12ae20d](https://github.com/nuxt/ui/commit/12ae20df20db18d233a185c59ede7dcaeca93071)), closes [nuxt/ui#2532](https://github.com/nuxt/ui/issues/2532)
* **NavigationMenu:** add missing `min-w-0` to make truncate work ([#2476](https://github.com/nuxt/ui/issues/2476)) ([1402436](https://github.com/nuxt/ui/commit/1402436c2b0262edada04273b60c3b2914df2895))
* **NavigationMenu:** enforce `data-orientation` ([64ad4b6](https://github.com/nuxt/ui/commit/64ad4b6892d827df921550bf7ae31048d8d6cc50))
* **NavigationMenu:** improve generic types ([#2482](https://github.com/nuxt/ui/issues/2482)) ([fc2015b](https://github.com/nuxt/ui/commit/fc2015bb0e9ccb017a91ba1ee839cd84cf740cf3))
* **Table:** types in undeclared slots ([#2544](https://github.com/nuxt/ui/issues/2544)) ([f821e66](https://github.com/nuxt/ui/commit/f821e6681bfc5d1515fe7158fe3fda639a897ac8))
* **Tabs:** same behaviour between `pill` and `link` variants ([e592da2](https://github.com/nuxt/ui/commit/e592da2fcb9deb5ad5f2ffb442ff07d86923bab6)), closes [#2338](https://github.com/nuxt/ui/issues/2338)
* **templates:** type error in app config ([77d18d8](https://github.com/nuxt/ui/commit/77d18d8ab7bf28aee316a443d52b852dfc5fd1ca)), closes [nuxt/ui#2481](https://github.com/nuxt/ui/issues/2481)
* **useKbd:** hydration issue ([845f85a](https://github.com/nuxt/ui/commit/845f85a072598f47c7afe10c4e5ebcc480450113)), closes [#2494](https://github.com/nuxt/ui/issues/2494)
* **utils:** improve `escapeRegExp` function ([a97c511](https://github.com/nuxt/ui/commit/a97c511279d32747b487ab5de32677e36a884e53))
## [3.0.0-alpha.7](https://github.com/nuxt/ui/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2024-10-23)
### ⚠ BREAKING CHANGES
* **components:** rename `select` to `onSelect` on items
### Features
* **Accordion/Breadcrumb/CommandPalette/ContextMenu/DropdownMenu/NavigationMenu/Tabs:** add `labelKey` prop ([acfc6ce](https://github.com/nuxt/ui/commit/acfc6cef2db88774749d38a98416fdd85922d513))
* **Button:** handle `avatar` prop ([a54c3e4](https://github.com/nuxt/ui/commit/a54c3e49fe782e329f9245e496c336143e3e4b23))
* **CommandPalette:** handle `loading` field in items ([49abad2](https://github.com/nuxt/ui/commit/49abad243cee97b99753e2500c4bdaa0efe5eb75))
* **ContextMenu/DropdownMenu:** handle `checkbox` items type ([8ef6e71](https://github.com/nuxt/ui/commit/8ef6e712acbb2fc026eb35cefa8e29fc0b59d70f)), closes [#2144](https://github.com/nuxt/ui/issues/2144)
* **ContextMenu/DropdownMenu:** handle `loading` field in items ([b975235](https://github.com/nuxt/ui/commit/b975235c8b8e693a32efd3fd5381eed88fa3db4d))
* **Form:** add `superstruct` validation ([#2363](https://github.com/nuxt/ui/issues/2363)) ([5385944](https://github.com/nuxt/ui/commit/53859443593b584f7cd44106021e80f441e9ca06))
* **Input/InputMenu/Select/SelectMenu:** handle `avatar` prop ([53a3796](https://github.com/nuxt/ui/commit/53a3796d1b08717a589028f99fc01084df661708))
* **InputMenu/RadioGroup/Select/SelectMenu:** handle `labelKey` and use `get` to support dot notation ([f6f9823](https://github.com/nuxt/ui/commit/f6f9823b15d84362d093703cb15ecba64c73c2c2))
* **NavigationMenu:** handle children on `vertical` orientation ([#2384](https://github.com/nuxt/ui/issues/2384)) ([34bddd4](https://github.com/nuxt/ui/commit/34bddd45be2ba1d51ddb9b6b40860f2414f63180))
* **Table:** implement component ([#2364](https://github.com/nuxt/ui/issues/2364)) ([b54950e](https://github.com/nuxt/ui/commit/b54950e3ed77a466eb048788757a76018638eafa))
### Bug Fixes
* **AvatarGroup:** wrong ring on big sizes ([61b2323](https://github.com/nuxt/ui/commit/61b232377b4b1fb41de30fd33e690a36b36ba575))
* **Button:** invalid hover on `link` variant ([df2013c](https://github.com/nuxt/ui/commit/df2013ca92a49b5947e2fbc2641fd92860c32042))
* **Checkbox:** `indeterminate` prop not working ([f6631ff](https://github.com/nuxt/ui/commit/f6631ff7bc607e140e9db2c7335c409a811820e4))
* **components:** rename `select` to `onSelect` on items ([b39c4d1](https://github.com/nuxt/ui/commit/b39c4d127e0ddf7607e868ecc83930ca49436bad))
* **css:** `font-sans` already applied on <html> ([9e03da4](https://github.com/nuxt/ui/commit/9e03da41b3537236864ae2a533c47e99a6270b77))
* **css:** make `[@theme](https://github.com/theme)` default ([a2bad2e](https://github.com/nuxt/ui/commit/a2bad2eee2d2a9255152692898078d26e9ecad98))
* **Drawer/Modal/Slideover:** no need for `z-index` since its isolated ([bcfa4b7](https://github.com/nuxt/ui/commit/bcfa4b74a9713be764ecb6db93d60d1360e52f07)), closes [nuxt/ui#2347](https://github.com/nuxt/ui/issues/2347)
* **Input/InputMenu/Select/SelectMenu:** uniformize placeholder color ([f59844b](https://github.com/nuxt/ui/commit/f59844bb617f50ef78ae5abe250b0744d7341a2f))
* **InputMenu/SelectMenu:** escape regexp before search ([7c21dde](https://github.com/nuxt/ui/commit/7c21ddefa87bf3d9999c0e790b48c004c078304d))
* **InputMenu/SelectMenu:** improve displayed value ([0f9ac87](https://github.com/nuxt/ui/commit/0f9ac8733e402d1f22a3eb6c1e24a8d5607b3572)), closes [nuxt/ui#2353](https://github.com/nuxt/ui/issues/2353)
* **InputMenu:** emit `focus` event ([#2386](https://github.com/nuxt/ui/issues/2386)) ([7802aac](https://github.com/nuxt/ui/commit/7802aacf3f5be572dd64c3288196432a41f06b0e))
* **module:** stop using tailwind's shorthand arbitrary variable syntax ([#2366](https://github.com/nuxt/ui/issues/2366)) ([dcce571](https://github.com/nuxt/ui/commit/dcce571cdab08de8408c8ba6b236b051eec3a603))
* **Slideover:** set max height on `top` / `bottom` positions ([a68016e](https://github.com/nuxt/ui/commit/a68016ec5d6859e892c90333d35fd7db09fdcf10)), closes [nuxt/ui#2388](https://github.com/nuxt/ui/issues/2388)
## [3.0.0-alpha.6](https://github.com/nuxt/ui/compare/v3.0.0-alpha.5...v3.0.0-alpha.6) (2024-10-09)
### ⚠ BREAKING CHANGES
* **module:** implement design system with CSS variables (#2298)
### Features
* **Carousel:** implement component ([#2288](https://github.com/nuxt/ui/issues/2288)) ([68ee3f1](https://github.com/nuxt/ui/commit/68ee3f11ca01b19cf890ef8105ffb87ef9bb3188))
* **Form:** add Standard Schema support ([#2303](https://github.com/nuxt/ui/issues/2303)) ([0955c07](https://github.com/nuxt/ui/commit/0955c07edd8ea5b5c39b770804b8e4c6f86d94b0))
* **module:** implement `--ui-radius` CSS variable ([#2341](https://github.com/nuxt/ui/issues/2341)) ([057e86c](https://github.com/nuxt/ui/commit/057e86cfda1ef5c7a370c99ef409d22e48772ca7))
* **module:** set `disableTransition` option on `@nuxtjs/color-mode` ([b82af02](https://github.com/nuxt/ui/commit/b82af02839b7d75344d9431fabdc42f0ac0681e1))
### Bug Fixes
* **Accordion:** use `text-left break-words` instead of `truncate` on label ([6c7c2f0](https://github.com/nuxt/ui/commit/6c7c2f02f395747a0c68a499630f502e3f02ded3))
* **Alert:** default variant to `solid` for consistency ([3a7c5c2](https://github.com/nuxt/ui/commit/3a7c5c26011bfcffcdf6ac3451adb2af1453b9db))
* **Button:** center text with `block` prop ([3cf5535](https://github.com/nuxt/ui/commit/3cf5535b2faa28b557ca55d694abdfa7d7ad0efc)), closes [nuxt/ui#2317](https://github.com/nuxt/ui/issues/2317)
* **Carousel:** move embla plugins to `dependencies` ([bee04ad](https://github.com/nuxt/ui/commit/bee04adf4cc4fd6d69e93ad94500f5ef604405e7))
### Code Refactoring
* **module:** implement design system with CSS variables ([#2298](https://github.com/nuxt/ui/issues/2298)) ([9368c6a](https://github.com/nuxt/ui/commit/9368c6a63955a2e6c2f4f900a9b91c61bb2e5a72))
## [3.0.0-alpha.5](https://github.com/nuxt/ui/compare/v3.0.0-alpha.4...v3.0.0-alpha.5) (2024-10-02)
### Features
* **module:** enable `@nuxtjs/color-mode` ([9dcf903](https://github.com/nuxt/ui/commit/9dcf903926046b6e92b4784043e374d2174e4201))
* **module:** override `dark` variant with class strategy ([0f86b87](https://github.com/nuxt/ui/commit/0f86b87385375e5bd859e84d21f8b4f06b0a99e0))
### Bug Fixes
* **Button:** props specified more than once ([66a04ad](https://github.com/nuxt/ui/commit/66a04add91389910e1336bf0be1cfeada3540f76))
## [3.0.0-alpha.4](https://github.com/nuxt/ui/compare/v3.0.0-alpha.3...v3.0.0-alpha.4) (2024-10-01)
### Features
* **Drawer:** handle `direction` + `handle` props ([5f77aac](https://github.com/nuxt/ui/commit/5f77aac368448c7c45a0f9238d2dc3a5b0de825e))
### Bug Fixes
* **Accordion:** missing `min-w-0` on trigger ([6c28597](https://github.com/nuxt/ui/commit/6c285977bd175d4866ca601bca47132ebb2d3440))
* **build.config:** disable mkdist `addRelativeDeclarationExtensions` option ([f54f607](https://github.com/nuxt/ui/commit/f54f6074131db0f68eab1edcde3a4b2a7ecaba92))
* **CommandPalette:** missing `min-w-0` on root ([a61e765](https://github.com/nuxt/ui/commit/a61e7656c25b26409cab77178e67d1cb9ec22dbd))
* **Drawer:** improve max-width on mobile ([fac52fa](https://github.com/nuxt/ui/commit/fac52fa933aeb02f0855d20be37c4214efba0ab7))
* **InputMenu:** missing `group` on trailing ([2c7c41b](https://github.com/nuxt/ui/commit/2c7c41bd046a961d398bbe8ee4a5945cd1fbaeab))
* **README:** npm badge link ([#2271](https://github.com/nuxt/ui/issues/2271)) ([30c33c7](https://github.com/nuxt/ui/commit/30c33c71134ccbea4258949a851eaf8b26213b60))
* **templates:** app config colors type ([96c9246](https://github.com/nuxt/ui/commit/96c9246d83b54637ceb2e2dd77542e435690c387))
* **Toast:** improve focus styles ([1f9abda](https://github.com/nuxt/ui/commit/1f9abdae614acbfa0be868a599071a601406f0f5))
### Reverts
* Revert "chore(deps): refresh lock" ([b83ecc9](https://github.com/nuxt/ui/commit/b83ecc9a6f309d37d3f096667143a4ed7700db6d))
## [3.0.0-alpha.3](https://github.com/nuxt/ui/compare/v3.0.0-alpha.2...v3.0.0-alpha.3) (2024-09-18)
### Features
* **module:** move `colors` options into `theme.colors` ([2e95446](https://github.com/nuxt/ui/commit/2e954467c4679d70b68d3155ae34eca300508e38))
## [3.0.0-alpha.2](https://github.com/nuxt/ui/compare/v3.0.0-alpha.1...v3.0.0-alpha.2) (2024-09-18)
@@ -283,6 +947,195 @@
* **types:** useless import ([5f7872f](https://github.com/nuxt/ui/commit/5f7872f06e81e03443e2d1c27a654cfe32c55fb3))
* **useComponentIcons:** reactivity when using `defu` ([45454fa](https://github.com/nuxt/ui/commit/45454fae45b8571a9691284bd6a13a838e8ea1c9))
## [2.18.6](https://github.com/nuxt/ui/compare/v2.18.5...v2.18.6) (2024-09-23)
### Bug Fixes
* **components:** accept partial config in `ui` prop ([#2235](https://github.com/nuxt/ui/issues/2235)) ([eecf4f7](https://github.com/nuxt/ui/commit/eecf4f7ed8a32a874f00afd7bff2964a1366e0b5))
* **Modal/Slideover:** bind transition class to `TransitionChild` for Vue 3.5 ([#2227](https://github.com/nuxt/ui/issues/2227)) ([803c20a](https://github.com/nuxt/ui/commit/803c20ad92e8a31fefd6d300856735b0e9adbdf9))
* **SelectMenu:** wrong placeholder color with multiple ([#2218](https://github.com/nuxt/ui/issues/2218)) ([28ad5cf](https://github.com/nuxt/ui/commit/28ad5cf98251c6a8acec8d0bf4f0fd07ff6b7066))
* **Table:** colspan with expand ([#2217](https://github.com/nuxt/ui/issues/2217)) ([56118c4](https://github.com/nuxt/ui/commit/56118c4a794f3d763dad7b65e044814cf7ef11cf))
* **Tabs:** handle icon `margin` in RTL mode ([#2233](https://github.com/nuxt/ui/issues/2233)) ([ea05414](https://github.com/nuxt/ui/commit/ea05414930fe3f5e6805c8aa25bbe8f746bcc86e))
* **useFormField:** optional property access ([#2226](https://github.com/nuxt/ui/issues/2226)) ([0a054a5](https://github.com/nuxt/ui/commit/0a054a52b64b4f774041c40223e18e7e056cfd80))
## [2.18.5](https://github.com/nuxt/ui/compare/v2.18.4...v2.18.5) (2024-09-18)
### Features
* **Form:** add errors slot prop ([#2188](https://github.com/nuxt/ui/issues/2188)) ([67c6a74](https://github.com/nuxt/ui/commit/67c6a74ed15db1ee8a40e9c74ecfef0d3c3e374a))
### Bug Fixes
* **Button:** button link not showing disabled classes ([#2185](https://github.com/nuxt/ui/issues/2185)) ([e8ea84a](https://github.com/nuxt/ui/commit/e8ea84a5736759d953664f8f397a2339c212b294))
* **Carousel:** remove trailing space in next button icon ([#2088](https://github.com/nuxt/ui/issues/2088)) ([1282a5f](https://github.com/nuxt/ui/commit/1282a5f6c001aa05597d458800bafcf6b6419634))
* **FormGroup:** remove id when used with `RadioGroup` ([#2152](https://github.com/nuxt/ui/issues/2152)) ([7aec42c](https://github.com/nuxt/ui/commit/7aec42ca15aaa0ccc63c520b484cba203fd3232b))
* **Input:** avoid binding value when type is `file` ([#2047](https://github.com/nuxt/ui/issues/2047)) ([82313e8](https://github.com/nuxt/ui/commit/82313e862cbf21ae631156af4cd057f1383db634))
* **module:** allow CSS variables in tailwind colors ([#2014](https://github.com/nuxt/ui/issues/2014)) ([7f50c70](https://github.com/nuxt/ui/commit/7f50c7031fecb5ab26a6d0f58b576b2fd0860487))
* **module:** augment `@nuxt/schema` rather than `nuxt/schema` ([#2171](https://github.com/nuxt/ui/issues/2171)) ([ead904f](https://github.com/nuxt/ui/commit/ead904fd2f2bbb29fd60ccde063bf02daa2cbdbb))
* **module:** consider user tailwind `configPath` for module as string ([#2074](https://github.com/nuxt/ui/issues/2074)) ([e4ba4f7](https://github.com/nuxt/ui/commit/e4ba4f7c729f99dde51891636605793864812d30))
* **Pagination:** use links on prev and next button ([#2179](https://github.com/nuxt/ui/issues/2179)) ([c850f85](https://github.com/nuxt/ui/commit/c850f85aaa40c7abbe8cc4dc1bd4705bf7677390))
* **README:** update license link ([#2154](https://github.com/nuxt/ui/issues/2154)) ([8d79eea](https://github.com/nuxt/ui/commit/8d79eea19b3276b1f1e069d33b98b311e9b91cfd))
* **Slideover:** bind `rounded` class to panel ([#2187](https://github.com/nuxt/ui/issues/2187)) ([bf32baa](https://github.com/nuxt/ui/commit/bf32baaab01dc4150622f67b3b4a8d02d21b922c))
* **Slideover:** bind `shadow` class to panel ([#2201](https://github.com/nuxt/ui/issues/2201)) ([d22526c](https://github.com/nuxt/ui/commit/d22526c0c10735a92e63b7d086e7b8534a08d768))
* **Table:** checkbox can emit the `[@select](https://github.com/select)` event ([#2072](https://github.com/nuxt/ui/issues/2072)) ([b1f691f](https://github.com/nuxt/ui/commit/b1f691f28ca8c94f6b658dcb61eeff06951bd1d0))
* **Table:** select all rows reactivity issue ([#2200](https://github.com/nuxt/ui/issues/2200)) ([68124de](https://github.com/nuxt/ui/commit/68124de5106e55cb2987a6ba4ec1120d79b51788))
* **Tabs:** recalculate marker if items change ([#2101](https://github.com/nuxt/ui/issues/2101)) ([82c4926](https://github.com/nuxt/ui/commit/82c4926c090ce7fac48022a93b1b05b877bb48dd))
* **Textarea:** resolve row count calculation errors caused by scrollbar ([#2040](https://github.com/nuxt/ui/issues/2040)) ([8210936](https://github.com/nuxt/ui/commit/8210936f22fcf6b7eb5b9711e2c29be38956b8d6))
## [2.18.4](https://github.com/nuxt/ui/compare/v2.18.3...v2.18.4) (2024-08-05)
### Bug Fixes
* **Form:** submit event data ([#2012](https://github.com/nuxt/ui/issues/2012)) ([4d61936](https://github.com/nuxt/ui/commit/4d61936e7e90b664846a8f265825612c509511d7))
* **module:** handle nested colors from ui config ([#2008](https://github.com/nuxt/ui/issues/2008)) ([1cc7e2a](https://github.com/nuxt/ui/commit/1cc7e2a306e0f3f666b9a588f6ed02e7eabc0272))
* **module:** reduce css bundle size by fixing safelist regex ([#2005](https://github.com/nuxt/ui/issues/2005)) ([8ac9ca4](https://github.com/nuxt/ui/commit/8ac9ca49789a9a7281f7a40926e7e9a8068cc395))
* **module:** suffix types imports with `/index` ([7e37668](https://github.com/nuxt/ui/commit/7e37668940d06c5aa20b60d9bfd600d50a171014)), closes [#2018](https://github.com/nuxt/ui/issues/2018)
* **Tabs:** use `nextTick` before marker calc ([#2020](https://github.com/nuxt/ui/issues/2020)) ([9c04969](https://github.com/nuxt/ui/commit/9c049690227af8aba61a1f7c002b00c5dfeb63ff))
* **useFormGroup:** app config default input size ([#2011](https://github.com/nuxt/ui/issues/2011)) ([3485092](https://github.com/nuxt/ui/commit/3485092edb55f9ef2ca038a8c137431866d6c28a))
## [2.18.3](https://github.com/nuxt/ui/compare/v2.18.2...v2.18.3) (2024-07-30)
### Bug Fixes
* **Link:** define `rel` as any ([69f605f](https://github.com/nuxt/ui/commit/69f605fa724454e4be9e4cee9666a5d57f43a129))
* **types:** only use `.ts` for index ([93ddf1d](https://github.com/nuxt/ui/commit/93ddf1d60b0ea5f99f564f3d3969c397ad91cc72))
## [2.18.2](https://github.com/nuxt/ui/compare/v2.18.1...v2.18.2) (2024-07-25)
### Bug Fixes
* **Tabs:** add missing `UIcon` import ([4fd1be2](https://github.com/nuxt/ui/commit/4fd1be28922bf39584005c14982e5cd9a7d0c624))
## [2.18.1](https://github.com/nuxt/ui/compare/v2.18.0...v2.18.1) (2024-07-25)
### Bug Fixes
* **components:** use relative imports ([ea721a3](https://github.com/nuxt/ui/commit/ea721a3705cfbcef3075f8c9c1f4acf359974597))
## [2.18.0](https://github.com/nuxt/ui/compare/v2.17.0...v2.18.0) (2024-07-25)
### ⚠ BREAKING CHANGES
* **Icon:** migrate from `@egoist/tailwindcss-icons` to new `@nuxt/icon` (#1789)
### Features
* **Checkbox/Radio/RadioGroup:** add `help` slot ([c3122f7](https://github.com/nuxt/ui/commit/c3122f776daa6d68f201f22c37e0084aac37ed06)), closes [#1957](https://github.com/nuxt/ui/issues/1957)
* **CommandPalette:** handle `static` groups ([#1458](https://github.com/nuxt/ui/issues/1458)) ([b264ad2](https://github.com/nuxt/ui/commit/b264ad2ebdc8d4ee4aab5c994df968025207021f))
* **Icon:** migrate from `@egoist/tailwindcss-icons` to new `@nuxt/icon` ([#1789](https://github.com/nuxt/ui/issues/1789)) ([c904604](https://github.com/nuxt/ui/commit/c904604c23987c2535e0e91e9c4fec50477f6b34))
* **module:** improve app config types autocomplete ([#1870](https://github.com/nuxt/ui/issues/1870)) ([3f8ea5d](https://github.com/nuxt/ui/commit/3f8ea5dbded7b6836495103739688905ff26fe22))
* **RadioGroup:** add `selected` to label slot props ([#1587](https://github.com/nuxt/ui/issues/1587)) ([d18477d](https://github.com/nuxt/ui/commit/d18477def58171d51bdb7d00e31e2807b2e7015b))
* **SelectMenu:** add selected to `label` / `leading` / `trailing` slots props ([#1349](https://github.com/nuxt/ui/issues/1349)) ([6b216ca](https://github.com/nuxt/ui/commit/6b216cab1ba3bb69cb317254dfd562ab020c5e92))
* **SelectMenu:** handle function in `showCreateOptionWhen` prop ([#1853](https://github.com/nuxt/ui/issues/1853)) ([7e974b5](https://github.com/nuxt/ui/commit/7e974b55d72b8ac0ab42ef722a2d1904c3e4e091))
* **Skeleton:** add `as` prop ([#1955](https://github.com/nuxt/ui/issues/1955)) ([bce94db](https://github.com/nuxt/ui/commit/bce94db9fdb2c29a4f2e5981e5dce49a44a4ac8a))
* **Table:** expand row ([#1036](https://github.com/nuxt/ui/issues/1036)) ([7155318](https://github.com/nuxt/ui/commit/71553180294c53024c28de9bbebf4ea69f616da7))
* **Table:** handle `rowClass` property in `columns` ([#1632](https://github.com/nuxt/ui/issues/1632)) ([748e491](https://github.com/nuxt/ui/commit/748e49175da37b85bd18d62a8455875990866d5b))
* **Tabs:** handle `icon` in items ([#1798](https://github.com/nuxt/ui/issues/1798)) ([e8eb394](https://github.com/nuxt/ui/commit/e8eb3941ad4c1c306ccbe9e11d979d5f6c808330))
### Bug Fixes
* **Accordion:** truncate buttons ([5db18c0](https://github.com/nuxt/ui/commit/5db18c00565f9d2bb9f2768c2de2ab291a55bcae)), closes [#1909](https://github.com/nuxt/ui/issues/1909)
* **Alert/Notification:** missing margin on description ([2c55fb6](https://github.com/nuxt/ui/commit/2c55fb63365ee7cc1e993ebd5aa5f83ddadcd26a)), closes [#1959](https://github.com/nuxt/ui/issues/1959)
* **Breadcrumb:** use `rotate` on rtl icon ([53003fc](https://github.com/nuxt/ui/commit/53003fcd07d67d13ada0759ff6c5cd3635fba0e3))
* **ButtonGroup/FormGroup:** pass default sizes to children ([#1875](https://github.com/nuxt/ui/issues/1875)) ([6b6b03d](https://github.com/nuxt/ui/commit/6b6b03d59f5ab3096b731c59d18a1085d25b5e8e))
* **Carousel:** remove `mix-blend-overlay` on indicators ([#1714](https://github.com/nuxt/ui/issues/1714)) ([f74f1df](https://github.com/nuxt/ui/commit/f74f1df6ca5f93e11e542245b611c1aa7c4b8308))
* **FormGroup:** don't check for `error` slot so `help` slot can render ([#1888](https://github.com/nuxt/ui/issues/1888)) ([99c52e5](https://github.com/nuxt/ui/commit/99c52e50082d5e99440894c7a077a17510f0de50))
* **InputMenu/SelectMenu:** invalid `label` with `value-attribute` and async search ([4d5f250](https://github.com/nuxt/ui/commit/4d5f2509022e4fb74fc268d5479f7cc8f0415040)), closes [#1780](https://github.com/nuxt/ui/issues/1780)
* **InputMenu/SelectMenu:** prevent double filter with async search ([e2881d3](https://github.com/nuxt/ui/commit/e2881d3801c54c49d66d41d4f0ba312a7b3ebce7)), closes [#1966](https://github.com/nuxt/ui/issues/1966)
* **Link:** allow `ariaLabel` to be picked ([720c44d](https://github.com/nuxt/ui/commit/720c44dd5ee90bb3b30aef32f01ff6eae1397aa4)), closes [#1934](https://github.com/nuxt/ui/issues/1934)
* **Progress:** pass down attrs to `<progress>` to improve accessibility ([#1881](https://github.com/nuxt/ui/issues/1881)) ([abd13f1](https://github.com/nuxt/ui/commit/abd13f1f8fd4c8b10069174534c5fdec6c83576e))
* **RadioGroup:** allow boolean in `modelValue` prop ([#1913](https://github.com/nuxt/ui/issues/1913)) ([8eca5a0](https://github.com/nuxt/ui/commit/8eca5a0d627e22f42350a060f09c4e44b6de422f))
## [2.17.0](https://github.com/nuxt/ui/compare/v2.16.0...v2.17.0) (2024-06-13)
### Features
* **Alert:** add `actions` slot ([#1785](https://github.com/nuxt/ui/issues/1785)) ([c8dd71c](https://github.com/nuxt/ui/commit/c8dd71c4f5a5239811b07b50f1dc802101af07d5))
* **Form:** update and migrate `valibot` to v0.31.0 ([#1848](https://github.com/nuxt/ui/issues/1848)) ([1d5bd89](https://github.com/nuxt/ui/commit/1d5bd89d5881163fc6dc917e138b9d8304dff6c4))
* **Notification:** allow ring customization with `{color}` ([#1830](https://github.com/nuxt/ui/issues/1830)) ([3ebff4d](https://github.com/nuxt/ui/commit/3ebff4d133372e339e2c4c439576e9e192b29cc3))
* **Slideover:** handle `top` and `bottom` side ([#1834](https://github.com/nuxt/ui/issues/1834)) ([50ad14f](https://github.com/nuxt/ui/commit/50ad14f9dffe4f76bef888cd10d30b417c75bca5))
* **Tabs:** add `content` prop to avoid the render of the HTML markup ([#1831](https://github.com/nuxt/ui/issues/1831)) ([6e2678d](https://github.com/nuxt/ui/commit/6e2678d1d8a498322eb3eff909ccbba55e40a2b7))
### Bug Fixes
* **Alert/Notification:** use `div` for description ([e8898d1](https://github.com/nuxt/ui/commit/e8898d15a667ba66e78828315e3cc4e92845cd3f)), closes [#1551](https://github.com/nuxt/ui/issues/1551)
* **Alert:** base style not applied on icon ([#1859](https://github.com/nuxt/ui/issues/1859)) ([f65aefb](https://github.com/nuxt/ui/commit/f65aefb7067c1c64c1355b5d699129e716ef1281))
* **Breadcrumb:** allow `aria-current` to be overrideable ([ebfb835](https://github.com/nuxt/ui/commit/ebfb8350339725c0a6f88c73f16bff01d61538c2)), closes [#1856](https://github.com/nuxt/ui/issues/1856)
* **Carousel:** prevent mouse click when dragging ([#1781](https://github.com/nuxt/ui/issues/1781)) ([4f0d00f](https://github.com/nuxt/ui/commit/4f0d00f7a6eebf05adceaf1e7c2869ad91949cf3))
* **CommandPalette:** hide `empty-state` when `null` ([249bbd4](https://github.com/nuxt/ui/commit/249bbd49dc8420603e8d561543d237abeb400908)), closes [#1787](https://github.com/nuxt/ui/issues/1787)
* **Form:** maintain other errors when using `setErrors` with a path ([#1818](https://github.com/nuxt/ui/issues/1818)) ([06990be](https://github.com/nuxt/ui/commit/06990beabf67f668322b4d3fb2ec93cc4f3bdcd4))
* **Input:** hide wrapper when type is `hidden` ([#1797](https://github.com/nuxt/ui/issues/1797)) ([e7c2f78](https://github.com/nuxt/ui/commit/e7c2f7856c05ed96f48c83d64d8e1d3f41ab58fe))
* **Link:** typo in `exactHash` type ([581b470](https://github.com/nuxt/ui/commit/581b470cc79c2315bb2d56e02a7c134a7861c616)), closes [#1767](https://github.com/nuxt/ui/issues/1767)
* **SelectMenu:** wrong placeholder color when `modelValue` is an empty string ([9b9ccdb](https://github.com/nuxt/ui/commit/9b9ccdb59e98fed096dd18809af646b10de46b9f)), closes [#1862](https://github.com/nuxt/ui/issues/1862)
* **Select:** remove defaults for `value` and `text` ([6c124bb](https://github.com/nuxt/ui/commit/6c124bb1ac2fef116161da56a3a8e5f92144ce3a)), closes [#1702](https://github.com/nuxt/ui/issues/1702)
## [2.16.0](https://github.com/nuxt/ui/compare/v2.15.2...v2.16.0) (2024-05-07)
### ⚠ BREAKING CHANGES
* **Input:** redesign `file` type without absolute positioning (#1712)
### Features
* **InputMenu/SelectMenu:** allow lazy search ([#1705](https://github.com/nuxt/ui/issues/1705)) ([7e6ba78](https://github.com/nuxt/ui/commit/7e6ba786816516ab5007a2ff15fc974cfdd796ab))
* **module:** HMR support with `@nuxtjs/tailwindcss` ([#1665](https://github.com/nuxt/ui/issues/1665)) ([821e15b](https://github.com/nuxt/ui/commit/821e15b696b03d0f5e20e001d39f86a8b3cec426))
* **Table:** allow providing a `<caption>` ([#1680](https://github.com/nuxt/ui/issues/1680)) ([3fca668](https://github.com/nuxt/ui/commit/3fca66857d3616bf24a1b0579c90179a7883869d))
* **useToast:** allow clearing all notifications ([#1695](https://github.com/nuxt/ui/issues/1695)) ([82d619b](https://github.com/nuxt/ui/commit/82d619b2a75b9d08f3f5b314d37c30d77d8341e9))
### Bug Fixes
* **Breadcrumb:** pass `click` event to `ULink` ([5481dab](https://github.com/nuxt/ui/commit/5481dab53dbe0b28188b4a16811f3e8816d93edf))
* **Input:** redesign `file` type without absolute positioning ([#1712](https://github.com/nuxt/ui/issues/1712)) ([ed5c74d](https://github.com/nuxt/ui/commit/ed5c74dc17df784485eabc39c83e62ada9210a49))
* **Notification:** update timer when timeout prop changes ([#1673](https://github.com/nuxt/ui/issues/1673)) ([cba9ad7](https://github.com/nuxt/ui/commit/cba9ad78db58cb9228bb9c96f0469d43bde2bf3e))
* **Slideover:** export and clean types ([#1692](https://github.com/nuxt/ui/issues/1692)) ([bd3fa86](https://github.com/nuxt/ui/commit/bd3fa8658f84fb7bd96d322968462c5eaa987b86))
* **Table:** provide `aria-sort` for sortable table headings ([#1675](https://github.com/nuxt/ui/issues/1675)) ([6f60fa9](https://github.com/nuxt/ui/commit/6f60fa9a980020f6a5afc2916e699a7f9a47e8ce))
## [2.15.2](https://github.com/nuxt/ui/compare/v2.15.1...v2.15.2) (2024-04-12)
### Features
* **Accordion:** add `unmount` prop to allow lazy mounting for heavy components ([#1590](https://github.com/nuxt/ui/issues/1590)) ([91e5002](https://github.com/nuxt/ui/commit/91e50020507ac66992dfb52b3e0ad1a1ae5614b5))
* **Table:** add `checkbox` ui config ([#1409](https://github.com/nuxt/ui/issues/1409)) ([8b54660](https://github.com/nuxt/ui/commit/8b546600dbfbff187d9c5be1b35ea1772e94f83f))
### Bug Fixes
* **Breadcrumb:** missing `min-w-0` on wrapper to truncate ([9f01145](https://github.com/nuxt/ui/commit/9f01145bc674378371ff34d7110f3235b57d2459)), closes [#1650](https://github.com/nuxt/ui/issues/1650)
* **Carousel:** next and prev buttons disabled ([#1619](https://github.com/nuxt/ui/issues/1619)) ([e909884](https://github.com/nuxt/ui/commit/e909884d0327bfd7b4d5551382123f8998beff6a))
* **Popover/Dropdown:** prevent unintended closure on touchstart in mobile devices ([#1609](https://github.com/nuxt/ui/issues/1609)) ([2392b4a](https://github.com/nuxt/ui/commit/2392b4aa405430fc22766f130448a7cc5ced9a3a))
* **Slideover:** remove dynamic component when closing ([#1615](https://github.com/nuxt/ui/issues/1615)) ([58faa10](https://github.com/nuxt/ui/commit/58faa1053b9be3f627c3fcff1bcaa14850bb9e7f))
* **Slideover:** wait for transition to complete to reset state ([#1624](https://github.com/nuxt/ui/issues/1624)) ([07a4d13](https://github.com/nuxt/ui/commit/07a4d13c0fcb05c87fb42e02a3a2d6c5c52ccf09))
## [2.15.1](https://github.com/nuxt/ui/compare/v2.15.0...v2.15.1) (2024-04-02)
### Features
* **Avatar:** add `as` prop to use `NuxtImg` underneath ([49b73aa](https://github.com/nuxt/ui/commit/49b73aa024be14a9aa150a2804f4dcb18542fa49)), closes [#1577](https://github.com/nuxt/ui/issues/1577)
### Bug Fixes
* **Checkbox:** `[@change](https://github.com/change)` event value ([#1580](https://github.com/nuxt/ui/issues/1580)) ([c98d6e3](https://github.com/nuxt/ui/commit/c98d6e31c0e3f46b97957d5cf3de7f9da1f70c58))
* **Divider:** add `w-full` only on horizontal wrapper ([#1565](https://github.com/nuxt/ui/issues/1565)) ([bd8b737](https://github.com/nuxt/ui/commit/bd8b737642280e6a83b67f9a27dd7a823a77e963))
* **Dropdown:** missing `mouseenter` event on container ([7288953](https://github.com/nuxt/ui/commit/72889535e7e9763e7ebf59498f22c39bf09d6477))
* **Input/SelectMenu:** handle `file` type and `change` events ([#1570](https://github.com/nuxt/ui/issues/1570)) ([878f707](https://github.com/nuxt/ui/commit/878f7078a28c5e70a662682d1293db466d518c7d))
* **Popover:** missing `mouseenter` event on container ([8517897](https://github.com/nuxt/ui/commit/8517897c34adaa9e3624f867b43106deb59fcbe8)), closes [#1564](https://github.com/nuxt/ui/issues/1564)
## [2.15.0](https://github.com/nuxt/ui/compare/v2.14.2...v2.15.0) (2024-03-26)

171
README.md
View File

@@ -1,4 +1,8 @@
[![nuxt-ui.png](https://repository-images.githubusercontent.com/428329515/43fec891-9030-4601-8233-5d45ba5c6013)](https://ui.nuxt.com)
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/91ceab67-89ce-4ef4-8678-4402a92baca5">
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/51526d6d-e5ec-41b4-aa37-242dec1cdb27">
<img alt="Nuxt UI" src="https://github.com/user-attachments/assets/51526d6d-e5ec-41b4-aa37-242dec1cdb27">
</picture>
# Nuxt UI
@@ -7,94 +11,137 @@
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]
Nuxt UI is a module that provides a set of Vue components and composables built with [Tailwind CSS](https://tailwindcss.com/) and [Headless UI](https://headlessui.dev/) to help you build beautiful and accessible user interfaces.
Nuxt UI harnesses the combined strengths of [Reka UI](https://reka-ui.com/), [Tailwind CSS](https://tailwindcss.com/), and [Tailwind Variants](https://www.tailwind-variants.org/) to offer developers an unparalleled set of tools for creating sophisticated, accessible, and highly performant user interfaces.
Its goal is to provide everything related to UI when building a Nuxt app. This includes components, icons, colors, dark mode but also keyboard shortcuts.
> [!NOTE]
> You are on the `v3` development branch, check out the [v2 branch](https://github.com/nuxt/ui/tree/v2) for Nuxt UI v2.
## Features
- Built with [Headless UI](https://headlessui.dev/) and [Tailwind CSS](https://tailwindcss.com/)
- HMR support through Nuxt App Config
- Dark mode support
- Support for LTR and RTL languages
- Keyboard shortcuts
- Bundled icons
- Fully typed
- [Figma Kit](https://www.figma.com/community/file/1288455405058138934)
Read more on [ui.nuxt.com](https://ui.nuxt.com)
## Installation
```bash
# npm
npm install @nuxt/ui
# yarn
yarn add @nuxt/ui
# pnpm
pnpm add @nuxt/ui
# bun
bun add @nuxt/ui
```
Then, register the module in your `nuxt.config.ts`:
```js
export default defineNuxtConfig({
modules: [
'@nuxt/ui'
]
})
```
If you want latest updates, please use `@nuxt/ui-edge` in your `package.json`:
```json
{
"devDependencies": {
"@nuxt/ui": "npm:@nuxt/ui-edge@latest"
}
}
```
> [!TIP]
> **Looking for more components ?**
> Check out [Nuxt UI Pro](https://ui.nuxt.com/pro), a collection of premium Vue components, composables, and utilities built on top of Nuxt UI for faster and more powerful app development.
## Documentation
Visit https://ui.nuxt.com to explore the documentation.
## Credits
## Installation
- [nuxt/nuxt](https://github.com/nuxt/nuxt)
- [nuxt-modules/color-mode](https://github.com/nuxt-modules/color-mode)
- [nuxt-modules/tailwindcss](https://github.com/nuxt-modules/tailwindcss)
- [tailwindlabs/tailwindcss](https://github.com/tailwindlabs/tailwindcss)
- [tailwindlabs/headlessui](https://github.com/tailwindlabs/headlessui)
- [vueuse/vueuse](https://github.com/vueuse/vueuse)
- [egoist/tailwindcss-icons](https://github.com/egoist/tailwindcss-icons)
```bash [pnpm]
pnpm add @nuxt/ui
```
## Contributing
```bash [yarn]
yarn add @nuxt/ui
```
```bash [npm]
npm install @nuxt/ui
```
```bash [bun]
bun add @nuxt/ui
```
### Nuxt
1. Add the Nuxt UI module in your `nuxt.config.ts`:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
modules: ['@nuxt/ui']
})
```
2. Import Tailwind CSS and Nuxt UI in your CSS:
```css [assets/css/main.css]
@import "tailwindcss";
@import "@nuxt/ui";
```
Learn more in the [installation guide](https://ui.nuxt.com/getting-started/installation/nuxt).
### Vue
1. Add the Nuxt UI Vite plugin in your `vite.config.ts`:
```ts [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()
]
})
```
2. Use the Nuxt UI Vue plugin in your `main.ts`:
```ts [main.ts]
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import ui from '@nuxt/ui/vue-plugin'
import App from './App.vue'
const app = createApp(App)
const router = createRouter({
routes: [],
history: createWebHistory()
})
app.use(router)
app.use(ui)
app.mount('#app')
```
3. Import Tailwind CSS and Nuxt UI in your CSS:
```css [assets/main.css]
@import "tailwindcss";
@import "@nuxt/ui";
```
Learn more in the [installation guide](https://ui.nuxt.com/getting-started/installation/vue).
## Contribution
Thank you for considering contributing to Nuxt UI. Here are a few ways you can get involved:
- Reporting Bugs: If you come across any bugs or issues, please check out the reporting bugs guide to learn how to submit a bug report.
- Suggestions: Have any thoughts to enhance Nuxt UI? We'd love to hear them! Check out the [contribution guide](https://ui.nuxt.com/getting-started/contributing) to share your suggestions.
- Suggestions: Have any thoughts to enhance Nuxt UI? We'd love to hear them! Check out the [contribution guide](https://ui.nuxt.com/getting-started/contribution) to share your suggestions.
## Local Development
Follow the docs to [Set up your local development environment](https://ui.nuxt.com/getting-started/contributing#_2-local-development-setup) and contribute.
Follow the docs to [set up your local development environment](https://ui.nuxt.com/getting-started/contribution#local-development) and contribute.
## Credits
- [nuxt/nuxt](https://github.com/nuxt/nuxt)
- [nuxt/icon](https://github.com/nuxt/icon)
- [nuxt/fonts](https://github.com/nuxt/fonts)
- [nuxt-modules/color-mode](https://github.com/nuxt-modules/color-mode)
- [unovue/reka-ui](https://github.com/unovue/reka-ui)
- [tailwindlabs/tailwindcss](https://github.com/tailwindlabs/tailwindcss)
- [vueuse/vueuse](https://github.com/vueuse/vueuse)
## License
Licensed under the [MIT license](https://github.com/nuxt/ui/blob/dev/LICENSE.md).
Licensed under the [MIT license](https://github.com/nuxt/ui/blob/v3/LICENSE.md).
<!-- Badges -->
[npm-version-src]: https://img.shields.io/npm/v/@nuxt/ui/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-version-href]: https://npmjs.com/package/@nuxt/ui
[npm-downloads-src]: https://img.shields.io/npm/dm/@nuxt/ui.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-downloads-href]: https://npmjs.com/package/@nuxt/ui
[npm-downloads-href]: https://npm.chart.dev/@nuxt/ui
[license-src]: https://img.shields.io/github/license/nuxt/ui.svg?style=flat&colorA=18181B&colorB=28CF8D
[license-href]: https://github.com/nuxt/ui/blob/main/LICENSE.md
[license-href]: https://github.com/nuxt/ui/blob/v3/LICENSE.md
[nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js
[nuxt-href]: https://nuxt.com

24
build.config.ts Normal file
View File

@@ -0,0 +1,24 @@
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
entries: [
// Vue support
'./src/unplugin',
'./src/vite'
],
rollup: {
replace: {
delimiters: ['', ''],
values: {
// Used in development to import directly from theme
'process.argv.includes(\'--uiDev\')': 'false'
}
}
},
hooks: {
'mkdist:entry:options'(ctx, entry, options) {
options.addRelativeDeclarationExtensions = false
}
},
externals: ['#build/ui', 'vite']
})

View File

@@ -3,13 +3,13 @@ import { resolve } from 'pathe'
import { defineCommand } from 'citty'
import { consola } from 'consola'
import { splitByCase, upperFirst, camelCase, kebabCase } from 'scule'
import { appendFile, sortFile } from '../utils.mjs'
import templates from '../templates.mjs'
import { appendFile, sortFile } from '../../utils.mjs'
import templates from '../../templates.mjs'
export default defineCommand({
meta: {
name: 'init',
description: 'Init a new component.'
name: 'component',
description: 'Make a new component.'
},
args: {
name: {
@@ -32,6 +32,10 @@ export default defineCommand({
content: {
type: 'boolean',
description: 'Create a content component (with --pro).'
},
template: {
type: 'string',
description: 'Only generate template.'
}
},
async setup({ args }) {
@@ -53,6 +57,10 @@ export default defineCommand({
const path = resolve('.')
for (const template of Object.keys(templates)) {
if (args.template && template !== args.template) {
continue
}
const { filename, contents } = templates[template](args)
if (!contents) {
continue
@@ -70,12 +78,16 @@ export default defineCommand({
consola.success(`🪄 Generated ${filePath}!`)
}
if (args.template) {
return
}
const themePath = resolve(path, `src/theme/${args.prose ? 'prose/' : ''}${args.content ? 'content/' : ''}index.ts`)
await appendFile(themePath, `export { default as ${camelCase(name)} } from './${kebabCase(name)}'`)
await sortFile(themePath)
if (!args.prose) {
const typesPath = resolve(path, 'src/runtime/types/index.d.ts')
const typesPath = resolve(path, 'src/runtime/types/index.ts')
await appendFile(typesPath, `export * from '../components/${args.content ? 'content/' : ''}${splitByCase(name).map(p => upperFirst(p)).join('')}.vue'`)
await sortFile(typesPath)
}

View File

@@ -0,0 +1,14 @@
import { defineCommand } from 'citty'
import component from './component.mjs'
import locale from './locale.mjs'
export default defineCommand({
meta: {
name: 'make',
description: 'Commands to create new Nuxt UI entities.'
},
subCommands: {
component,
locale
}
})

View File

@@ -0,0 +1,64 @@
import { existsSync, promises as fsp } from 'node:fs'
import { resolve } from 'pathe'
import { consola } from 'consola'
import { appendFile, sortFile, normalizeLocale } from '../../utils.mjs'
import { defineCommand } from 'citty'
export default defineCommand({
meta: {
name: 'locale',
description: 'Make a new locale.'
},
args: {
code: {
description: 'Locale code to create. For example: en.',
required: true
},
name: {
description: 'Locale name to create. For example: English.',
required: true
},
dir: {
description: 'Locale direction. For example: rtl.',
default: 'ltr'
}
},
async setup({ args }) {
const path = resolve('.')
const localePath = resolve(path, `src/runtime/locale`)
const originLocaleFilePath = resolve(localePath, 'en.ts')
const newLocaleFilePath = resolve(localePath, `${args.code}.ts`)
// Validate locale code
if (existsSync(newLocaleFilePath)) {
consola.error(`🚨 ${args.code} already exists!`)
process.exit(1)
}
if (!['ltr', 'rtl'].includes(args.dir)) {
consola.error(`🚨 Direction ${args.dir} not supported!`)
process.exit(1)
}
if (!args.code.match(/^[a-z]{2}(?:_[a-z]{2,4})?$/)) {
consola.error(`🚨 ${args.code} is not a valid locale code!\nExample: en or en_us`)
process.exit(1)
}
// Create new locale export
const localeExportFile = resolve(localePath, `index.ts`)
await appendFile(localeExportFile, `export { default as ${args.code} } from './${args.code}'`)
await sortFile(localeExportFile)
// Create new locale file
await fsp.copyFile(originLocaleFilePath, newLocaleFilePath)
const localeFile = await fsp.readFile(newLocaleFilePath, 'utf-8')
const rewrittenLocaleFile = localeFile
.replace(/name: '(.*)',/, `name: '${args.name}',`)
.replace(/code: '(.*)',/, `code: '${normalizeLocale(args.code)}',${(args.dir && args.dir !== 'ltr') ? `\n dir: '${args.dir}',` : ''}`)
await fsp.writeFile(newLocaleFilePath, rewrittenLocaleFile)
consola.success(`🪄 Generated ${newLocaleFilePath}`)
}
})

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env node
import { defineCommand, runMain } from 'citty'
import init from './commands/init.mjs'
import make from './commands/make/index.mjs'
const main = defineCommand({
meta: {
@@ -8,7 +8,7 @@ const main = defineCommand({
description: 'Nuxt UI CLI'
},
subCommands: {
init
make
}
})

View File

@@ -6,8 +6,8 @@
},
"dependencies": {
"citty": "^0.1.6",
"consola": "^3.2.3",
"pathe": "^1.1.2",
"consola": "^3.4.2",
"pathe": "^2.0.3",
"scule": "^1.3.0"
}
}

View File

@@ -5,7 +5,7 @@ const playground = ({ name, pro }) => {
const kebabName = kebabCase(name)
return {
filename: `playground/pages/components/${kebabName}.vue`,
filename: `playground/app/pages/components/${kebabName}.vue`,
contents: pro
? undefined
: `
@@ -30,23 +30,20 @@ const component = ({ name, primitive, pro, prose, content }) => {
contents: primitive
? `
<script lang="ts">
import { tv } from 'tailwind-variants'
import type { AppConfig } from '@nuxt/schema'
import _appConfig from '#build/app.config'
import theme from '#build/${path}/${prose ? 'prose/' : ''}${content ? 'content/' : ''}${kebabName}'
import type { ComponentConfig } from '../types/utils'
const appConfig = _appConfig as AppConfig & { ${key}: { ${prose ? 'prose: { ' : ''}${camelName}: Partial<typeof theme> } }${prose ? ' }' : ''}
const ${camelName} = tv({ extend: tv(theme), ...(appConfig.${key}?.${prose ? 'prose?.' : ''}${camelName} || {}) })
type ${upperName} = ComponentConfig<typeof theme, AppConfig, ${upperName}${pro ? `, '${key}'` : ''}>
export interface ${upperName}Props {
/**
* The element or component this component should render as.
* @defaultValue \`div\`
* @defaultValue 'div'
*/
as?: any
class?: any
ui?: Partial<typeof ${camelName}.slots>
ui?: ${upperName}['slots']
}
export interface ${upperName}Slots {
@@ -55,37 +52,37 @@ export interface ${upperName}Slots {
</script>
<script setup lang="ts">
import { Primitive } from 'radix-vue'
import { computed } from 'vue'
import { Primitive } from 'reka-ui'
import { useAppConfig } from '#imports'
import { tv } from '../utils/tv'
const props = withDefaults(defineProps<${upperName}Props>(), { as: 'div' })
const props = defineProps<${upperName}Props>()
defineSlots<${upperName}Slots>()
const ui = ${camelName}()
const appConfig = useAppConfig() as ${upperName}['AppConfig']
const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.${camelName} || {}) })())
</script>
<template>
<Primitive :as="as" :class="ui.root({ class: [props.class, props.ui?.root] })">
<Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
<slot />
</Primitive>
</template>
`
: `
<script lang="ts">
import { tv, type VariantProps } from 'tailwind-variants'
import type { ${upperName}RootProps, ${upperName}RootEmits } from 'radix-vue'
import type { ${upperName}RootProps, ${upperName}RootEmits } from 'reka-ui'
import type { AppConfig } from '@nuxt/schema'
import _appConfig from '#build/app.config'
import theme from '#build/${path}/${prose ? 'prose/' : ''}${content ? 'content/' : ''}${kebabName}'
import type { ComponentConfig } from '../types/utils'
const appConfig = _appConfig as AppConfig & { ${key}: { ${prose ? 'prose: { ' : ''}${camelName}: Partial<typeof theme> } }${prose ? ' }' : ''}
const ${camelName} = tv({ extend: tv(theme), ...(appConfig.${key}?.${prose ? 'prose?.' : ''}${camelName} || {}) })
type ${upperName}Variants = VariantProps<typeof ${camelName}>
type ${upperName} = ComponentConfig<typeof theme, AppConfig, ${upperName}${pro ? `, '${key}'` : ''}>
export interface ${upperName}Props extends Pick<${upperName}RootProps> {
class?: any
ui?: Partial<typeof ${camelName}.slots>
ui?: ${upperName}['slots']
}
export interface ${upperName}Emits extends ${upperName}RootEmits {}
@@ -94,20 +91,25 @@ export interface ${upperName}Slots {}
</script>
<script setup lang="ts">
import { ${upperName}Root, useForwardPropsEmits } from 'radix-vue'
import { computed } from 'vue'
import { ${upperName}Root, useForwardPropsEmits } from 'reka-ui'
import { reactivePick } from '@vueuse/core'
import { useAppConfig } from '#imports'
import { tv } from '../utils/tv'
const props = defineProps<${upperName}Props>()
const emits = defineEmits<${upperName}Emits>()
const slots = defineSlots<${upperName}Slots>()
const appConfig = useAppConfig() as ${upperName}['AppConfig']
const rootProps = useForwardPropsEmits(reactivePick(props), emits)
const ui = ${camelName}()
const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.${camelName} || {}) })())
</script>
<template>
<${upperName}Root v-bind="rootProps" :class="ui.root({ class: [props.class, props.ui?.root] })" />
<${upperName}Root v-bind="rootProps" :class="ui.root({ class: [props.ui?.root, props.class] })" />
</template>
`
}
@@ -149,7 +151,7 @@ import ComponentRender from '../${content ? '../' : ''}component-render'
describe('${upperName}', () => {
it.each([
// Props
['with as', { props: { as: 'div' } }],
['with as', { props: { as: 'section' } }],
['with class', { props: { class: '' } }],
['with ui', { props: { ui: {} } }],
// Slots
@@ -163,9 +165,58 @@ describe('${upperName}', () => {
}
}
const docs = ({ name, pro, primitive }) => {
const kebabName = kebabCase(name)
const upperName = splitByCase(name).map(p => upperFirst(p)).join('')
return {
filename: `docs/content/3.components/${kebabName}.md`,
contents: `---
title: ${upperName}
description: ''${pro
? `
module: ui-pro`
: ''}
links:${primitive
? ''
: `
- label: ${upperName}
icon: i-custom-reka-ui
to: https://reka-ui.com/docs/components/${kebabName}`}
- label: GitHub
icon: i-simple-icons-github
to: https://github.com/nuxt/${pro ? 'ui-pro' : 'ui'}/tree/v3/src/runtime/components/${upperName}.vue
---
## Usage
## Examples
## API
### Props
:component-props${pro ? '{pro}' : ''}
### Slots
:component-slots${pro ? '{pro}' : ''}
### Emits
:component-emits${pro ? '{pro}' : ''}
## Theme
:component-theme${pro ? '{pro}' : ''}
`
}
}
export default {
playground,
component,
theme,
test
test,
docs
}

View File

@@ -15,3 +15,17 @@ export async function appendFile(path, contents) {
await fsp.writeFile(path, file.trim() + '\n' + contents + '\n')
}
}
export function normalizeLocale(locale) {
if (!locale) {
return ''
}
if (locale.includes('_')) {
return locale.split('_')
.map((part, index) => index === 0 ? part.toLowerCase() : part.toUpperCase())
.join('-')
}
return locale.toLowerCase()
}

View File

@@ -1,8 +1,17 @@
export default defineAppConfig({
toaster: {
position: 'bottom-right' as const,
expand: true,
duration: 5000
},
theme: {
radius: 0.25,
blackAsPrimary: false
},
ui: {
colors: {
primary: 'sky',
gray: 'cool'
primary: 'green',
neutral: 'slate'
}
}
})

View File

@@ -1,65 +1,34 @@
<script setup lang="ts">
import { withoutTrailingSlash } from 'ufo'
// import { debounce } from 'perfect-debounce'
// import type { ContentSearchFile } from '@nuxt/ui-pro'
import colors from 'tailwindcss/colors'
const route = useRoute()
// const colorMode = useColorMode()
const runtimeConfig = useRuntimeConfig()
const { integrity, api } = runtimeConfig.public.content
const appConfig = useAppConfig()
const colorMode = useColorMode()
const { data: navigation } = await useAsyncData('navigation', () => fetchContentNavigation(), { default: () => [] })
const { data: files } = await useLazyFetch<any[]>(`${api.baseURL}/search${integrity ? '.' + integrity : ''}`, { default: () => [] })
const searchTerm = ref('')
// watch(searchTerm, debounce((query: string) => {
// if (!query) {
// return
// }
// useTrackEvent('Search', { props: { query: `${query} - ${searchTerm.value?.commandPaletteRef.results.length} results` } })
// }, 500))
const links = computed(() => {
return [{
label: 'Docs',
icon: 'i-heroicons-book-open',
to: '/getting-started',
active: route.path.startsWith('/getting-started') || route.path.startsWith('/components')
}, ...(navigation.value.find(item => item._path === '/pro')
? [{
label: 'Pro',
icon: 'i-heroicons-square-3-stack-3d',
to: '/pro',
active: route.path.startsWith('/pro/getting-started') || route.path.startsWith('/pro/components') || route.path.startsWith('/pro/prose')
}, {
label: 'Pricing',
icon: 'i-heroicons-credit-card',
to: '/pro/pricing'
}, {
label: 'Templates',
icon: 'i-heroicons-computer-desktop',
to: '/pro/templates'
}]
: []), {
label: 'Releases',
icon: 'i-heroicons-rocket-launch',
to: '/releases'
}].filter(Boolean)
const { data: navigation } = await useAsyncData('navigation', () => queryCollectionNavigation('content', ['framework', 'module']))
const { data: files } = useLazyAsyncData('search', () => queryCollectionSearchSections('content'), {
server: false
})
// const color = computed(() => colorMode.value === 'dark' ? '#18181b' : 'white')
const links = useLinks()
const color = computed(() => colorMode.value === 'dark' ? (colors as any)[appConfig.ui.colors.neutral][900] : 'white')
const radius = computed(() => `:root { --ui-radius: ${appConfig.theme.radius}rem; }`)
const blackAsPrimary = computed(() => appConfig.theme.blackAsPrimary ? `:root { --ui-primary: black; } .dark { --ui-primary: white; }` : ':root {}')
useHead({
meta: [
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
// { key: 'theme-color', name: 'theme-color', content: color }
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ key: 'theme-color', name: 'theme-color', content: color }
],
link: [
{ rel: 'icon', type: 'image/svg+xml', href: '/icon.svg' },
// { rel: 'icon', type: 'image/svg+xml', href: '/icon.svg' },
{ rel: 'canonical', href: `https://ui.nuxt.com${withoutTrailingSlash(route.path)}` }
],
style: [
{ innerHTML: radius, id: 'nuxt-ui-radius', tagPriority: -2 },
{ innerHTML: blackAsPrimary, id: 'nuxt-ui-black-as-primary', tagPriority: -2 }
],
htmlAttrs: {
lang: 'en'
}
@@ -70,35 +39,35 @@ useServerSeoMeta({
twitterCard: 'summary_large_image'
})
provide('navigation', navigation)
provide('files', files)
useFaviconFromTheme()
const { mappedNavigation, filteredNavigation } = useContentNavigation(navigation)
provide('navigation', mappedNavigation)
</script>
<template>
<UApp>
<NuxtLoadingIndicator />
<UApp :toaster="appConfig.toaster">
<NuxtLoadingIndicator color="var(--ui-primary)" :height="2" />
<Banner v-if="!route.path.startsWith('/examples')" />
<template v-if="!route.path.startsWith('/examples')">
<!-- <Banner /> -->
<Header v-if="!route.path.startsWith('/examples')" :links="links" />
<Header :links="links" />
</template>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
<Footer v-if="!route.path.startsWith('/examples')" />
<template v-if="!route.path.startsWith('/examples')">
<Footer />
<LazyUContentSearch v-model:search-term="searchTerm" :files="files" :navigation="navigation" :fuse="{ resultLimit: 42 }" />
<Search :files="files" :navigation="filteredNavigation" />
</template>
</UApp>
</template>
<style>
@import "tailwindcss";
@import "@nuxt/ui-pro";
@source "../content/**/*.md";
@theme {
--font-family-sans: 'Inter', sans-serif;
}
/* Safelist (do not remove): [&>div]:*:my-0 [&>div]:*:w-full h-64 !px-0 !py-0 !pt-0 !pb-0 !p-0 !justify-start !justify-end !min-h-96 h-136 max-h-[341px] */
</style>

View File

@@ -0,0 +1,34 @@
@import "tailwindcss" theme(static) source("../../../..");
@import "@nuxt/ui-pro";
@source "../../../content/**/*";
@source "../../../node_modules/.c12";
@theme static {
--container-8xl: 90rem;
--font-sans: 'Public Sans', sans-serif;
--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;
}
:root {
--ui-container: var(--container-8xl);
}
html[data-framework="nuxt"] .vue-only,
html[data-framework="vue"] .nuxt-only,
html[data-module="ui-pro"] .ui-only,
html[data-module="ui"] .ui-pro-only {
display: none;
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 90">
<g transform="translate(0,90) scale(0.1,-0.1)" fill="#9b59b6" stroke="none">
<path d="M385 796 c-17 -12 -18 -19 -7 -109 20 -164 25 -158 -75 -77 -50 39 -97 70 -110 70 -26 0 -73 -72 -73 -112 0 -23 10 -30 103 -68 56 -24 106 -46 110 -50 4 -4 -32 -22 -80 -40 -146 -54 -155 -66 -108 -147 19 -31 32 -43 49 -43 13 0 61 29 109 65 99 75 94 80 75 -72 -11 -90 -10 -97 7 -109 24 -18 106 -18 130 0 17 12 18 19 7 109 -19 152 -24 147 75 72 47 -36 96 -65 109 -65 16 0 30 13 48 44 47 81 39 92 -107 147 -48 18 -84 36 -80 39 5 4 54 26 111 50 92 38 102 45 102 68 0 41 -47 112 -74 112 -13 0 -59 -29 -109 -70 -100 -81 -95 -86 -75 77 11 90 10 97 -7 109 -10 8 -40 14 -65 14 -25 0 -55 -6 -65 -14z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 756 B

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46">
<defs>
<style>
.cls-1{fill:#231815;}
@media (prefers-color-scheme: dark) { .cls-1{fill:#ffffff;} }
</style>
</defs>
<path class="cls-1" d="M144.89,89.86c-33.46,0-54.44,14.56-66.14,26.76a86,86,0,0,0-23.69,58.94c0,22.64,8.81,43.48,24.8,58.67,15.7,14.92,36.9,23.14,59.68,23.14,23.81,0,46-8.49,62.49-23.91,17-15.9,26.37-37.93,26.37-62C228.4,120.37,185.94,89.86,144.89,89.86Zm.49,153.67a61.49,61.49,0,0,1-46.45-20.4c-12.33-13.76-18.85-32.64-18.85-54.62,0-20.7,6.07-37.67,17.57-49.07,10.11-10,24.39-15.62,40.19-15.74,19,0,35.22,6.56,46.76,19,12.6,13.58,19.27,34,19.27,58.95C203.87,224.39,174.49,243.53,145.38,243.53Z"/>
<polygon class="cls-1" points="198.75 74.96 179.45 74.96 142.09 37.83 104.51 74.96 86.14 74.96 138.09 24.25 146.81 24.25 198.75 74.96"/>
</svg>

After

Width:  |  Height:  |  Size: 855 B

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,50 @@
<script setup lang="ts">
const el = ref<HTMLDivElement | null>(null)
onMounted(() => {
if (!el.value) {
return
}
const script = document.createElement('script')
script.setAttribute('type', 'text/javascript')
script.setAttribute('src', 'https://cdn.carbonads.com/carbon.js?serve=CWYIVK3E&placement=uinuxtcom')
script.setAttribute('id', '_carbonads_js')
el.value?.appendChild(script)
})
</script>
<template>
<div ref="el" class="carbon" />
</template>
<style scoped>
@reference "../assets/css/main.css";
.carbon :deep(#carbonads) {
@apply relative border border-default rounded-md hover:bg-elevated/50 w-full transition-colors min-h-[220px] p-2;
.carbon-img {
@apply flex justify-center w-full;
& > img {
@apply !max-w-full w-full rounded-sm;
}
}
.carbon-text {
@apply text-sm text-muted transition-colors text-center text-pretty flex pt-2;
}
.carbon-poweredby {
@apply block text-xs text-center text-muted pt-2;
}
&:hover {
.carbon-text {
@apply text-default;
}
}
}
</style>

View File

@@ -1,7 +1,18 @@
<template>
<UBanner icon="i-heroicons-wrench-screwdriver" :actions="[{ label: 'Go to Nuxt UI v2', to: 'https://ui.nuxt.com', trailingIcon: 'i-heroicons-arrow-right-20-solid', class: 'rounded-full' }]" :close="false">
<UBanner
id="ui3-launch"
icon="i-lucide-rocket"
:actions="[
{
label: 'Discover Nuxt UI Pro',
to: '/pro/pricing',
trailingIcon: 'i-lucide-arrow-right'
}
]"
close
>
<template #title>
You're looking at the documentation for <span class="font-semibold">Nuxt UI v3</span>!
<span class="font-semibold">Nuxt UI v3</span> is officially released.
</template>
</UBanner>
</template>

View File

@@ -0,0 +1,51 @@
<script setup lang="ts">
const endDate = new Date('2025-03-14T23:59:59Z')
const second = 1000
const minute = second * 60
const hour = minute * 60
const day = hour * 24
function getCountdown() {
const distance = Math.floor((endDate.getTime() - Date.now()))
return {
day: Math.floor(distance / day),
hour: Math.floor((distance % (day)) / (hour)),
minute: Math.floor((distance % (hour)) / (minute)),
second: Math.floor((distance % (minute)) / (second)),
distance
}
}
const countdown = ref(getCountdown())
let interval: any
if (countdown.value.distance > 0) {
onMounted(() => {
interval = setInterval(() => {
countdown.value = getCountdown()
if (countdown.value.distance <= 0) {
clearInterval(interval)
}
}, 1000)
})
}
const plural = (value: number) => (value === 1 ? '' : 's')
const double = (value: number) => (value < 10 ? `0${value}` : value)
</script>
<template>
<div>
<p class="font-semibold text-gray-900 dark:text-white text-sm mb-3">
Nuxt UI v3 launch offer ends in:
</p>
<div class="flex items-center justify-center gap-2 text-center">
<template v-for="(value, key) in countdown" :key="key">
<div v-if="key !== 'distance'" class="flex flex-col items-center gap-2">
<UBadge color="primary" class="w-14 h-14 font-bold text-2xl flex items-center justify-center tabular-nums" variant="subtle">
{{ double(value) }}
</UBadge>
<span class="text-[10px] font-semibold text-gray-900 dark:text-white tracking-wide tabular-nums uppercase">{{ key }}{{ plural(value) }}</span>
</div>
</template>
</div>
</div>
</template>

View File

@@ -1,37 +1,33 @@
<script setup lang="ts">
const route = useRoute()
// const items = [{
// label: 'Figma Kit',
// to: 'https://www.figma.com/community/file/1288455405058138934',
// target: '_blank'
// }, {
// label: 'Playground',
// to: 'https://stackblitz.com/edit/nuxt-ui',
// target: '_blank'
// }, {
// label: 'Roadmap',
// to: '/roadmap'
// }, {
// label: 'Releases',
// to: '/releases'
// }]
const links = [{
label: 'Team',
to: '/team'
}, {
label: 'Roadmap',
to: '/roadmap'
}, {
label: 'Terms',
to: '/pro/terms'
}, {
label: 'Releases',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}]
</script>
<template>
<USeparator icon="i-simple-icons-nuxtdotjs" class="h-px" />
<USeparator :icon="route.path === '/' ? undefined : 'i-simple-icons-nuxtdotjs'" class="h-px" />
<UFooter>
<template #left>
<NuxtLink v-if="route.path.startsWith('/pro')" to="https://ui.nuxt.com/pro/purchase" target="_blank" class="text-sm text-gray-500 dark:text-gray-400">
Purchase <span class="text-gray-900 dark:text-white">Nuxt UI Pro</span>
</NuxtLink>
<NuxtLink v-else to="https://github.com/nuxt/ui" target="_blank" class="text-sm text-gray-500 dark:text-gray-400">
Published under <span class="text-gray-900 dark:text-white">MIT License</span>
<NuxtLink to="https://github.com/nuxt/ui" target="_blank" class="text-sm text-muted">
Published under <span class="text-highlighted">MIT License</span>
</NuxtLink>
</template>
<!-- <UNavigationMenu :items="items" variant="link" color="gray" /> -->
<UNavigationMenu :items="links" variant="link" color="neutral" />
<template #right>
<UButton
@@ -39,32 +35,45 @@ const route = useRoute()
icon="i-simple-icons-nuxtdotjs"
to="https://nuxt.com"
target="_blank"
color="gray"
color="neutral"
variant="ghost"
size="sm"
/>
<UButton
aria-label="Nuxt UI on Discord"
icon="i-simple-icons-discord"
to="https://chat.nuxt.dev"
target="_blank"
color="gray"
color="neutral"
variant="ghost"
size="sm"
/>
<UButton
aria-label="Nuxt on X"
icon="i-simple-icons-x"
to="https://x.com/nuxt_js"
target="_blank"
color="gray"
color="neutral"
variant="ghost"
size="sm"
/>
<UButton
aria-label="Nuxt on BlueSky"
icon="i-simple-icons-bluesky"
to="https://bsky.app/profile/nuxt.com"
target="_blank"
color="neutral"
variant="ghost"
size="sm"
/>
<UButton
aria-label="Nuxt UI on GitHub"
icon="i-simple-icons-github"
to="https://github.com/nuxt/ui"
target="_blank"
color="gray"
color="neutral"
variant="ghost"
size="sm"
/>
</template>
</UFooter>

View File

@@ -0,0 +1,28 @@
<script setup lang="ts">
const { framework, frameworks } = useSharedData()
const value = ref<string | undefined>(undefined)
onMounted(() => {
value.value = framework.value
})
watch(framework, () => {
value.value = framework.value
})
</script>
<template>
<UTabs
v-model="value"
:items="frameworks"
:content="false"
color="neutral"
:ui="{
indicator: 'bg-default',
trigger: 'px-1 data-[state=active]:text-highlighted w-full'
}"
size="xs"
@update:model-value="(framework = $event as string)"
/>
</template>

View File

@@ -1,55 +1,117 @@
<script setup lang="ts">
import type { NavItem } from '@nuxt/content'
import type { ContentNavigationItem } from '@nuxt/content'
import type { NavigationMenuItem } from '@nuxt/ui'
const props = defineProps<{
links: NavigationMenuItem[]
}>()
const route = useRoute()
const config = useRuntimeConfig().public
const { module } = useSharedData()
const navigation = inject<Ref<NavItem[]>>('navigation')
const value = ref<string | undefined>(module.value)
const items = computed(() => props.links.map(({ icon, ...link }) => link))
watch(module, () => {
value.value = module.value
})
onMounted(() => {
value.value = module.value
})
const navigation = inject<Ref<ContentNavigationItem[]>>('navigation')
const githubLink = computed(() => {
return `https://github.com/nuxt/${value.value}`
})
const desktopLinks = computed(() => props.links.map(({ icon, ...link }) => link))
const mobileLinks = computed(() => [
...props.links.map(link => ({ ...link, defaultOpen: link.children && route.path.startsWith(link.to as string) })),
{
label: 'Open on GitHub',
to: githubLink.value,
icon: 'i-simple-icons-github',
target: '_blank'
}
])
</script>
<template>
<UHeader>
<UHeader :ui="{ left: 'min-w-0' }" :menu="{ shouldScaleBackground: true }">
<template #left>
<NuxtLink to="/" class="flex items-end gap-2 font-bold text-xl text-gray-900 dark:text-white" aria-label="Nuxt UI">
<Logo class="w-auto h-6" />
<UBadge :label="`v${config.version}`" variant="subtle" size="sm" class="-mb-[2px] rounded font-semibold" />
<NuxtLink to="/" class="flex items-end gap-2 font-bold text-xl text-highlighted min-w-0 focus-visible:outline-primary shrink-0" aria-label="Nuxt UI">
<Logo v-if="route.path === '/'" class="w-auto h-6 shrink-0" />
<LogoPro v-else-if="route.path.startsWith('/pro')" class="w-auto h-6 shrink-0" />
<template v-else>
<LogoPro class="w-auto h-6 shrink-0 ui-pro-only" />
<Logo class="w-auto h-6 shrink-0 ui-only" />
</template>
</NuxtLink>
<UDropdownMenu
v-slot="{ open }"
:modal="false"
:items="[{ label: `v${config.version}`, active: true, color: 'primary', checked: true, type: 'checkbox' }, { label: module === 'ui-pro' ? 'v1.7.1' : 'v2.21.1', to: module === 'ui-pro' ? 'https://ui2.nuxt.com/pro' : 'https://ui2.nuxt.com' }]"
:ui="{ content: 'w-(--reka-dropdown-menu-trigger-width) min-w-0' }"
size="xs"
>
<UButton
:label="`v${config.version}`"
variant="subtle"
trailing-icon="i-lucide-chevron-down"
size="xs"
class="-mb-[6px] font-semibold rounded-full truncate"
:class="[open && 'bg-primary/15 ']"
:ui="{
trailingIcon: ['transition-transform duration-200', open ? 'rotate-180' : undefined].filter(Boolean).join(' ')
}"
/>
</UDropdownMenu>
</template>
<!-- <UNavigationMenu :items="items" variant="link" /> -->
<UNavigationMenu :items="desktopLinks" variant="link" />
<template #right>
<ColorPicker />
<ThemePicker />
<UTooltip text="Search" :kbds="['meta', 'K']">
<UContentSearchButton />
</UTooltip>
<!-- <UColorModeButton /> -->
<UButton
color="gray"
variant="ghost"
to="https://github.com/nuxt/ui"
target="_blank"
icon="i-simple-icons-github"
aria-label="GitHub"
/>
<UTooltip text="Open on GitHub" class="hidden lg:flex">
<UButton
:key="value"
color="neutral"
variant="ghost"
:to="githubLink"
target="_blank"
icon="i-simple-icons-github"
aria-label="GitHub"
/>
</UTooltip>
</template>
<template #content>
<UNavigationMenu orientation="vertical" :items="items" class="-ml-2.5" />
<template #body>
<UNavigationMenu orientation="vertical" :items="mobileLinks" class="-mx-2.5" />
<USeparator type="dashed" class="my-4" />
<USeparator type="dashed" class="mt-4 mb-6" />
<UContentNavigation :navigation="navigation" />
<div class="flex flex-col gap-2 w-[calc(100%+1.25rem)] mb-5.5 -mx-2.5">
<FrameworkSelect />
<ModuleSelect />
</div>
<UContentNavigation :navigation="navigation" highlight :ui="{ linkTrailingBadge: 'font-semibold uppercase' }">
<template #link-title="{ link }">
<span class="inline-flex items-center gap-0.5">
{{ link.title }}
<sup v-if="link.module === 'ui-pro'" class="text-[8px] font-medium text-primary">PRO</sup>
</span>
</template>
</UContentNavigation>
</template>
</UHeader>
</template>

View File

@@ -4,8 +4,8 @@
<path d="M726 92H739C742.314 92 745 89.3137 745 86V60H773V92H800V116H773V159C773 169.5 778.057 174 787 174H800V200H783C759.948 200 745 185.071 745 160V116H726V92Z" fill="currentColor" />
<path d="M591 92V154C591 168.004 585.742 179.809 578 188C570.258 196.191 559.566 200 545 200C530.434 200 518.742 196.191 511 188C503.389 179.809 498 168.004 498 154V92H514C517.412 92 520.769 92.622 523 95C525.231 97.2459 526 98.5652 526 102V154C526 162.059 526.457 167.037 530 171C533.543 174.831 537.914 176 545 176C552.217 176 555.457 174.831 559 171C562.543 167.037 563 162.059 563 154V102C563 98.5652 563.769 96.378 566 94C567.96 91.9107 570.028 91.9599 573 92C573.411 92.0055 574.586 92 575 92H591Z" fill="currentColor" />
<path d="M676 144L710 92H684C680.723 92 677.812 93.1758 676 96L660 120L645 97C643.188 94.1758 639.277 92 636 92H611L645 143L608 200H634C637.25 200 640.182 196.787 642 194L660 167L679 195C680.818 197.787 683.75 200 687 200H713L676 144Z" fill="currentColor" />
<path d="M168 200H279C282.542 200 285.932 198.756 289 197C292.068 195.244 295.23 193.041 297 190C298.77 186.959 300.002 183.51 300 179.999C299.998 176.488 298.773 173.04 297 170.001L222 41C220.23 37.96 218.067 35.7552 215 34C211.933 32.2448 207.542 31 204 31C200.458 31 197.067 32.2448 194 34C190.933 35.7552 188.77 37.96 187 41L168 74L130 9.99764C128.228 6.95784 126.068 3.75491 123 2C119.932 0.245087 116.542 0 113 0C109.458 0 106.068 0.245087 103 2C99.9323 3.75491 96.7717 6.95784 95 9.99764L2 170.001C0.226979 173.04 0.00154312 176.488 1.90993e-06 179.999C-0.0015393 183.51 0.229648 186.959 2 190C3.77035 193.04 6.93245 195.244 10 197C13.0675 198.756 16.4578 200 20 200H90C117.737 200 137.925 187.558 152 164L186 105L204 74L259 168H186L168 200ZM89 168H40L113 42L150 105L125.491 147.725C116.144 163.01 105.488 168 89 168Z" fill="var(--color-primary-DEFAULT)" />
<path d="M958 60.0001H938C933.524 60.0001 929.926 59.9395 927 63C924.074 65.8905 925 67.5792 925 72V141C925 151.372 923.648 156.899 919 162C914.352 166.931 908.468 169 899 169C889.705 169 882.648 166.931 878 162C873.352 156.899 873 151.372 873 141V72.0001C873 67.5793 872.926 65.8906 870 63.0001C867.074 59.9396 863.476 60.0001 859 60.0001H840V141C840 159.023 845.016 173.458 855 184C865.156 194.542 879.893 200 899 200C918.107 200 932.844 194.542 943 184C953.156 173.458 958 159.023 958 141V60.0001Z" fill="var(--color-primary-DEFAULT)" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M1000 60.0233L1020 60V77L1020 128V156.007L1020 181L1020 189.004C1020 192.938 1019.98 194.429 1017 197.001C1014.02 199.725 1009.56 200 1005 200H986.001V181.006L986 130.012V70.0215C986 66.1576 986.016 64.5494 989 62.023C991.819 59.6358 995.437 60.0233 1000 60.0233Z" fill="var(--color-primary-DEFAULT)" />
<path d="M168 200H279C282.542 200 285.932 198.756 289 197C292.068 195.244 295.23 193.041 297 190C298.77 186.959 300.002 183.51 300 179.999C299.998 176.488 298.773 173.04 297 170.001L222 41C220.23 37.96 218.067 35.7552 215 34C211.933 32.2448 207.542 31 204 31C200.458 31 197.067 32.2448 194 34C190.933 35.7552 188.77 37.96 187 41L168 74L130 9.99764C128.228 6.95784 126.068 3.75491 123 2C119.932 0.245087 116.542 0 113 0C109.458 0 106.068 0.245087 103 2C99.9323 3.75491 96.7717 6.95784 95 9.99764L2 170.001C0.226979 173.04 0.00154312 176.488 1.90993e-06 179.999C-0.0015393 183.51 0.229648 186.959 2 190C3.77035 193.04 6.93245 195.244 10 197C13.0675 198.756 16.4578 200 20 200H90C117.737 200 137.925 187.558 152 164L186 105L204 74L259 168H186L168 200ZM89 168H40L113 42L150 105L125.491 147.725C116.144 163.01 105.488 168 89 168Z" fill="var(--ui-primary)" />
<path d="M958 60.0001H938C933.524 60.0001 929.926 59.9395 927 63C924.074 65.8905 925 67.5792 925 72V141C925 151.372 923.648 156.899 919 162C914.352 166.931 908.468 169 899 169C889.705 169 882.648 166.931 878 162C873.352 156.899 873 151.372 873 141V72.0001C873 67.5793 872.926 65.8906 870 63.0001C867.074 59.9396 863.476 60.0001 859 60.0001H840V141C840 159.023 845.016 173.458 855 184C865.156 194.542 879.893 200 899 200C918.107 200 932.844 194.542 943 184C953.156 173.458 958 159.023 958 141V60.0001Z" fill="var(--ui-primary)" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M1000 60.0233L1020 60V77L1020 128V156.007L1020 181L1020 189.004C1020 192.938 1019.98 194.429 1017 197.001C1014.02 199.725 1009.56 200 1005 200H986.001V181.006L986 130.012V70.0215C986 66.1576 986.016 64.5494 989 62.023C991.819 59.6358 995.437 60.0233 1000 60.0233Z" fill="var(--ui-primary)" />
</svg>
</template>

View File

@@ -0,0 +1,22 @@
<script setup lang="ts">
defineProps<{
collapsed?: boolean
}>()
</script>
<template>
<svg :viewBox="collapsed? '0 0 320 200' : '0 0 1352 200'" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M168 200H279C282.542 200 285.932 198.756 289 197C292.068 195.244 295.23 193.041 297 190C298.77 186.959 300.002 183.51 300 179.999C299.998 176.488 298.773 173.04 297 170.001L222 41C220.23 37.96 218.067 35.7552 215 34C211.933 32.2448 207.542 31 204 31C200.458 31 197.067 32.2448 194 34C190.933 35.7552 188.77 37.96 187 41L168 74L130 9.99764C128.228 6.95784 126.068 3.75491 123 2C119.932 0.245087 116.542 0 113 0C109.458 0 106.068 0.245087 103 2C99.9323 3.75491 96.7717 6.95784 95 9.99764L2 170.001C0.226979 173.04 0.00154312 176.488 1.90993e-06 179.999C-0.0015393 183.51 0.229648 186.959 2 190C3.77035 193.04 6.93245 195.244 10 197C13.0675 198.756 16.4578 200 20 200H90C117.737 200 137.925 187.558 152 164L186 105L204 74L259 168H186L168 200ZM89 168H40L113 42L150 105L125.491 147.725C116.144 163.01 105.488 168 89 168Z" fill="var(--ui-primary)" />
<g v-if="!collapsed">
<path d="M377 200C379.16 200 381 198.209 381 196V103C381 103 386 112 395 127L434 194C435.785 197.74 439.744 200 443 200H470V50H443C441.202 50 439 51.4941 439 54V148L421 116L385 55C383.248 51.8912 379.479 50 376 50H350V200H377Z" fill="currentColor" />
<path d="M726 92H739C742.314 92 745 89.3137 745 86V60H773V92H800V116H773V159C773 169.5 778.057 174 787 174H800V200H783C759.948 200 745 185.071 745 160V116H726V92Z" fill="currentColor" />
<path d="M591 92V154C591 168.004 585.742 179.809 578 188C570.258 196.191 559.566 200 545 200C530.434 200 518.742 196.191 511 188C503.389 179.809 498 168.004 498 154V92H514C517.412 92 520.769 92.622 523 95C525.231 97.2459 526 98.5652 526 102V154C526 162.059 526.457 167.037 530 171C533.543 174.831 537.914 176 545 176C552.217 176 555.457 174.831 559 171C562.543 167.037 563 162.059 563 154V102C563 98.5652 563.769 96.378 566 94C567.96 91.9107 570.028 91.9599 573 92C573.411 92.0055 574.586 92 575 92H591Z" fill="currentColor" />
<path d="M676 144L710 92H684C680.723 92 677.812 93.1758 676 96L660 120L645 97C643.188 94.1758 639.277 92 636 92H611L645 143L608 200H634C637.25 200 640.182 196.787 642 194L660 167L679 195C680.818 197.787 683.75 200 687 200H713L676 144Z" fill="currentColor" />
<path d="M958 60.0001H938C933.524 60.0001 929.926 59.9395 927 63C924.074 65.8905 925 67.5792 925 72V141C925 151.372 923.648 156.899 919 162C914.352 166.931 908.468 169 899 169C889.705 169 882.648 166.931 878 162C873.352 156.899 873 151.372 873 141V72.0001C873 67.5793 872.926 65.8906 870 63.0001C867.074 59.9396 863.476 60.0001 859 60.0001H840V141C840 159.023 845.016 173.458 855 184C865.156 194.542 879.893 200 899 200C918.107 200 932.844 194.542 943 184C953.156 173.458 958 159.023 958 141V60.0001Z" fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M1000 60.0233L1020 60V77L1020 128V156.007L1020 181L1020 189.004C1020 192.938 1019.98 194.429 1017 197.001C1014.02 199.725 1009.56 200 1005 200H986.001V181.006L986 130.012V70.0215C986 66.1576 986.016 64.5494 989 62.023C991.819 59.6358 995.437 60.0233 1000 60.0233Z" fill="currentColor" />
<path d="M1060 200V60H1117C1126.67 60 1134.98 61.2896 1142 65C1149.16 68.7104 1155.29 74.3744 1159 81C1162.71 87.6256 1164 95.3867 1164 104C1164 112.481 1162.71 120.374 1159 127C1155.29 133.626 1149.16 138.157 1142 142C1134.98 145.71 1126.67 148 1117 148H1090V200H1060ZM1115 123C1121.63 123 1126.69 121.578 1130 118C1133.31 114.29 1135 109.433 1135 104C1135 98.567 1133.31 93.5778 1130 90C1126.69 86.2896 1121.63 85 1115 85H1090V123H1115Z" fill="var(--ui-primary)" />
<path d="M1226 123C1219.37 123 1214.31 124.965 1211 130C1207.69 135.035 1206 142.122 1206 151V200H1178V100H1200C1203.31 100 1206 102.686 1206 106V116C1208.65 109.904 1211.16 106.518 1215 104C1218.98 101.482 1224.77 100 1231 100H1242V123H1226Z" fill="var(--ui-primary)" />
<path d="M1299 200C1288.93 200 1280.08 197.373 1272 193C1263.92 188.495 1257.51 182.818 1253 175C1248.49 167.049 1246 157.806 1246 148C1246 138.194 1248.49 129.818 1253 122C1257.51 114.049 1263.92 107.373 1272 103C1280.08 98.4946 1288.93 97 1299 97C1309.07 97 1318.92 98.4946 1327 103C1335.08 107.373 1340.49 114.049 1345 122C1349.51 129.818 1352 138.194 1352 148C1352 157.806 1349.51 167.049 1345 175C1340.49 182.818 1335.08 188.495 1327 193C1318.92 197.373 1309.07 200 1299 200ZM1299 176C1306.42 176 1312.36 173.168 1317 168C1321.64 162.832 1324 156.216 1324 148C1324 139.652 1321.64 133.168 1317 128C1312.36 122.832 1306.42 120 1299 120C1291.58 120 1285.64 122.832 1281 128C1276.36 133.168 1274 139.652 1274 148C1274 156.216 1276.36 162.832 1281 168C1285.64 173.168 1291.58 176 1299 176Z" fill="var(--ui-primary)" />
</g>
</svg>
</template>

View File

@@ -0,0 +1,28 @@
<script setup lang="ts">
const { module, modules } = useSharedData()
const value = ref<string | undefined>(undefined)
onMounted(() => {
value.value = module.value
})
watch(module, () => {
value.value = module.value
})
</script>
<template>
<UTabs
v-model="value"
:items="modules"
:content="false"
color="neutral"
:ui="{
indicator: 'bg-default',
trigger: 'px-1 data-[state=active]:text-highlighted w-full'
}"
size="xs"
@update:model-value="(module = $event as string)"
/>
</template>

View File

@@ -0,0 +1,199 @@
<script setup lang="ts">
import type { DefineComponent } from 'vue'
import type { ContentNavigationItem } from '@nuxt/content'
import { useChat } from '@ai-sdk/vue'
import ProseStreamPre from './prose/PreStream.vue'
const components = {
pre: ProseStreamPre as unknown as DefineComponent
}
interface ContentSearchFile {
id: string
title: string
titles: string[]
level: number
content: string
}
defineProps<{
files?: ContentSearchFile[]
navigation?: ContentNavigationItem[]
}>()
const { frameworks, modules } = useSharedData()
const { messages, input, handleSubmit, status, error, reload, setMessages } = useChat({
maxSteps: 2
})
const ai = ref(false)
const searchTerm = ref('')
const links = computed(() => [{
label: 'Ask AI',
icon: 'i-lucide-bot',
onSelect: (e: any) => {
e.preventDefault()
ai.value = true
}
}, {
label: 'Docs',
icon: 'i-lucide-square-play',
to: '/getting-started'
}, {
label: 'Components',
icon: 'i-lucide-square-code',
to: '/components'
}, {
icon: 'i-lucide-sparkles',
label: 'Pro > Features',
description: 'A collection of premium Vue components.',
to: '/pro'
}, {
icon: 'i-lucide-credit-card',
label: 'Pro > Pricing',
description: 'Free in development, buy when ready to launch.',
to: '/pro/pricing'
}, {
icon: 'i-lucide-panels-top-left',
label: 'Pro > Templates',
description: 'Official templates made with Nuxt UI Pro.',
to: '/pro/templates'
}, {
icon: 'i-lucide-circle-check',
label: 'Pro > Activate',
description: 'Enable Nuxt UI Pro in your production projects.',
to: '/pro/activate'
}, {
label: 'Figma',
icon: 'i-simple-icons-figma',
to: '/figma'
}, {
icon: 'i-lucide-presentation',
label: 'Community > Showcase',
description: 'Check out some of the amazing projects built with Nuxt UI.',
to: '/showcase'
}, {
label: 'Community > Contribution',
description: 'A comprehensive guide on contributing to Nuxt UI, including project structure, development workflow, and best practices.',
icon: 'i-lucide-git-pull-request-arrow',
to: '/getting-started/contribution'
}, {
label: 'Community > Roadmap',
description: 'Track our development progress in real-time.',
icon: 'i-lucide-map',
to: '/roadmap'
}, {
label: 'Community > Devtools',
description: 'Integrate Nuxt UI with Nuxt Devtools with Compodium.',
icon: 'i-lucide-code',
to: 'https://github.com/romhml/compodium',
target: '_blank'
}, {
label: 'Community > Team',
description: 'Meet the team behind Nuxt UI.',
icon: 'i-lucide-users',
to: '/team'
}, {
label: 'Releases',
icon: 'i-lucide-rocket',
to: 'https://github.com/nuxt/ui/releases',
target: '_blank'
}])
const groups = computed(() => [{
id: 'ai',
label: 'AI',
ignoreFilter: true,
items: [{
label: searchTerm.value ? `Ask Nuxt AI for “${searchTerm.value}` : 'Ask Nuxt AI',
icon: 'i-lucide-bot',
onSelect: (e: any) => {
e.preventDefault()
ai.value = true
if (searchTerm.value) {
setMessages([{
id: '1',
role: 'user',
content: searchTerm.value
}])
reload()
}
}
}]
}, {
id: 'framework',
label: 'Framework',
items: frameworks.value
}, {
id: 'module',
label: 'Module',
items: modules.value
}])
function onClose(e: Event) {
console.log('onClose')
e.preventDefault()
ai.value = false
}
</script>
<template>
<LazyUContentSearch
v-model:search-term="searchTerm"
:links="links"
:files="files"
:groups="groups"
:navigation="navigation"
:fuse="{ resultLimit: 100 }"
>
<template v-if="ai" #content>
<UChatPalette>
<UChatMessages
:messages="messages"
:status="status"
:user="{ side: 'left', variant: 'naked', icon: 'i-lucide-user' }"
:assistant="{ icon: 'i-lucide-bot' }"
>
<template #content="{ message }">
<MDCCached
v-if="message.toolInvocations?.[0]?.state === 'result'"
:value="message.toolInvocations?.[0]?.result"
:cache-key="message.id"
unwrap="p"
:components="components"
:parser-options="{ highlight: false }"
/>
<MDCCached
v-else-if="message.content.length > 0"
:value="message.content"
:cache-key="message.id"
unwrap="p"
:components="components"
:parser-options="{ highlight: false }"
/>
<span v-else class="italic font-light">
Searching documentation...
</span>
</template>
</UChatMessages>
<template #prompt>
<UChatPrompt
v-model="input"
icon="i-lucide-search"
variant="naked"
:error="error"
@submit="handleSubmit"
@close="onClose"
/>
</template>
</UChatPalette>
</template>
</LazyUContentSearch>
</template>

View File

@@ -0,0 +1,95 @@
<script setup lang="ts">
import { kebabCase } from 'scule'
interface Star {
x: number
y: number
size: number
twinkleDelay: number
id: string
}
const props = withDefaults(defineProps<{
starCount?: number
color?: string
size?: { min: number, max: number }
speed?: 'slow' | 'normal' | 'fast'
isIndex?: boolean
}>(), {
starCount: 50,
color: 'var(--ui-primary)',
size: () => ({
min: 1,
max: 3
}),
speed: 'normal',
isIndex: false
})
const route = useRoute()
// Generate random stars
const generateStars = (count: number): Star[] => {
return Array.from({ length: count }, () => {
const x = Math.floor(Math.random() * 100)
const y = Math.floor(Math.random() * 100)
const size = Math.random() * (props.size.max - props.size.min) + props.size.min
const twinkleDelay = Math.random() * 5
return { x, y, size, twinkleDelay, id: Math.random().toString(36).substring(2, 9) }
})
}
// Generate all stars
const stars = useState<Star[]>(`${kebabCase(route.path)}-sky`, () => generateStars(props.starCount))
// Compute twinkle animation duration based on speed
const twinkleDuration = computed(() => {
const speedMap: Record<string, string> = {
slow: '4s',
normal: '2s',
fast: '1s'
}
return speedMap[props.speed]
})
</script>
<template>
<div class="absolute pointer-events-none z-[-1] overflow-hidden" :class="isIndex ? 'inset-y-0 left-4 right-4 lg:right-[50%]' : 'inset-0'">
<div
v-for="star in stars"
:key="star.id"
class="star absolute"
:style="{
'left': `${star.x}%`,
'top': `${star.y}%`,
'transform': 'translate(-50%, -50%)',
'--star-size': `${star.size}px`,
'--star-color': color,
'--twinkle-delay': `${star.twinkleDelay}s`,
'--twinkle-duration': twinkleDuration
}"
/>
</div>
</template>
<style scoped>
.star {
width: var(--star-size);
height: var(--star-size);
background-color: var(--star-color);
border-radius: 50%;
animation: twinkle var(--twinkle-duration) ease-in-out infinite;
animation-delay: var(--twinkle-delay);
will-change: opacity;
}
@keyframes twinkle {
0%, 100% {
opacity: 0.2;
}
50% {
opacity: 1;
}
}
</style>

View File

@@ -0,0 +1,131 @@
<script setup lang="ts">
import { kebabCase } from 'scule'
interface Star {
x: number
y: number
size: number
}
const props = withDefaults(defineProps<{
starCount?: number
color?: string
speed?: 'slow' | 'normal' | 'fast'
size?: { min: number, max: number }
}>(), {
starCount: 300,
color: 'var(--ui-primary)',
speed: 'normal',
size: () => ({
min: 1,
max: 2
})
})
const route = useRoute()
// Generate random star positions and sizes
const generateStars = (count: number): Star[] => {
return Array.from({ length: count }, () => ({
x: Math.floor(Math.random() * 2000),
y: Math.floor(Math.random() * 2000),
size: typeof props.size === 'number'
? props.size
: Math.random() * (props.size.max - props.size.min) + props.size.min
}))
}
// Define speed configurations once
const speedMap = {
slow: { duration: 200, opacity: 0.5, ratio: 0.3 },
normal: { duration: 150, opacity: 0.75, ratio: 0.3 },
fast: { duration: 100, opacity: 1, ratio: 0.4 }
}
// Use a more efficient approach to generate and store stars
const stars = useState<{ slow: Star[], normal: Star[], fast: Star[] }>(`${kebabCase(route.path)}-stars`, () => {
return {
slow: generateStars(Math.floor(props.starCount * speedMap.slow.ratio)),
normal: generateStars(Math.floor(props.starCount * speedMap.normal.ratio)),
fast: generateStars(Math.floor(props.starCount * speedMap.fast.ratio))
}
})
// Compute star layers with different speeds and opacities
const starLayers = computed(() => [
{ stars: stars.value.fast, ...speedMap.fast },
{ stars: stars.value.normal, ...speedMap.normal },
{ stars: stars.value.slow, ...speedMap.slow }
])
</script>
<template>
<div class="absolute pointer-events-none z-[-1] inset-y-0 inset-x-5 sm:inset-x-7 lg:inset-x-9 overflow-hidden">
<div class="stars size-full absolute inset-x-0 top-0">
<div
v-for="(layer, index) in starLayers"
:key="index"
class="star-layer"
:style="{
'--star-duration': `${layer.duration}s`,
'--star-opacity': layer.opacity,
'--star-color': color
}"
>
<div
v-for="(star, starIndex) in layer.stars"
:key="starIndex"
class="star absolute rounded-full"
:style="{
left: `${star.x}px`,
top: `${star.y}px`,
width: `${star.size}px`,
height: `${star.size}px`,
backgroundColor: 'var(--star-color)',
opacity: 'var(--star-opacity)'
}"
/>
</div>
</div>
</div>
</template>
<style scoped>
.stars {
left: 50%;
transform: translate(-50%);
-webkit-mask-image: linear-gradient(
180deg,
rgba(217, 217, 217, 0) 0%,
rgba(217, 217, 217, 0.8) 25%,
#d9d9d9 50%,
rgba(217, 217, 217, 0.8) 75%,
rgba(217, 217, 217, 0) 100%
);
mask-image: linear-gradient(
180deg,
rgba(217, 217, 217, 0) 0%,
rgba(217, 217, 217, 0.8) 25%,
#d9d9d9 50%,
rgba(217, 217, 217, 0.8) 75%,
rgba(217, 217, 217, 0) 100%
);
-webkit-mask-size: cover;
mask-size: cover;
}
.star-layer {
animation: risingStarsAnimation linear infinite;
animation-duration: var(--star-duration);
will-change: transform;
}
@keyframes risingStarsAnimation {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-2000px);
}
}
</style>

View File

@@ -1,62 +0,0 @@
<template>
<UPopover mode="hover" :ui="{ content: 'p-2' }">
<template #default="{ open }">
<UButton
icon="i-heroicons-swatch-20-solid"
color="gray"
:variant="open ? 'soft' : 'ghost'"
square
aria-label="Color picker"
:ui="{ leadingIcon: 'text-primary-500 dark:text-primary-400' }"
/>
</template>
<template #content>
<fieldset class="grid grid-cols-5 gap-px">
<legend class="text-[11px] font-bold mb-1">
Primary
</legend>
<ColorPickerPill v-for="color in primaryColors" :key="color" :color="color" :selected="primary" @select="primary = color" />
</fieldset>
<USeparator class="my-2" type="dashed" />
<fieldset class="grid grid-cols-5 gap-px">
<legend class="text-[11px] font-bold mb-1">
Gray
</legend>
<ColorPickerPill v-for="color in grayColors" :key="color" :color="color" :selected="gray" @select="gray = color" />
</fieldset>
</template>
</UPopover>
</template>
<script setup lang="ts">
const appConfig = useAppConfig()
// Computed
const primaryColors = ['red', 'orange', 'amber', 'yellow', 'lime', 'green', 'emerald', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose']
const primary = computed({
get() {
return appConfig.ui.colors.primary
},
set(option) {
appConfig.ui.colors.primary = option
window.localStorage.setItem('nuxt-ui-primary', appConfig.ui.colors.primary)
}
})
const grayColors = ['slate', 'cool', 'zinc', 'neutral', 'stone']
const gray = computed({
get() {
return appConfig.ui.colors.gray
},
set(option) {
appConfig.ui.colors.gray = option
window.localStorage.setItem('nuxt-ui-gray', appConfig.ui.colors.gray)
}
})
</script>

View File

@@ -1,24 +0,0 @@
<template>
<UTooltip :text="color" class="capitalize" :portal="false">
<UButton
color="gray"
square
:variant="color === selected ? 'soft' : 'ghost'"
@click.stop.prevent="$emit('select')"
>
<span
class="inline-block w-3 h-3 rounded-full"
:class="`bg-[--color-light] dark:bg-[--color-dark]`"
:style="{
'--color-light': `var(--color-${color}-500)`,
'--color-dark': `var(--color-${color}-400)`
}"
/>
</UButton>
</UTooltip>
</template>
<script setup lang="ts">
defineProps<{ color: string, selected: string }>()
defineEmits(['select'])
</script>

View File

@@ -1,11 +1,50 @@
<!-- eslint-disable no-useless-escape -->
<script setup lang="ts">
import type { ChipProps } from '@nuxt/ui'
import json5 from 'json5'
import { upperFirst, camelCase, kebabCase } from 'scule'
import { hash } from 'ohash'
import { CalendarDate } from '@internationalized/date'
import * as theme from '#build/ui'
import * as themePro from '#build/ui-pro'
import { get, set } from '#ui/utils'
interface Cast {
get: (args: any) => any
template: (args: any) => string
}
type CastDateValue = [number, number, number]
const castMap: Record<string, Cast> = {
'DateValue': {
get: (args: CastDateValue) => new CalendarDate(...args),
template: (value: CalendarDate) => {
return value ? `new CalendarDate(${value.year}, ${value.month}, ${value.day})` : 'null'
}
},
'DateValue[]': {
get: (args: CastDateValue[]) => args.map(date => new CalendarDate(...date)),
template: (value: CalendarDate[]) => {
return value ? `[${value.map(date => `new CalendarDate(${date.year}, ${date.month}, ${date.day})`).join(', ')}]` : '[]'
}
},
'DateRange': {
get: (args: { start: CastDateValue, end: CastDateValue }) => ({ start: new CalendarDate(...args.start), end: new CalendarDate(...args.end) }),
template: (value: { start: CalendarDate, end: CalendarDate }) => {
if (!value.start || !value.end) {
return `{ start: null, end: null }`
}
return `{ start: new CalendarDate(${value.start.year}, ${value.start.month}, ${value.start.day}), end: new CalendarDate(${value.end.year}, ${value.end.month}, ${value.end.day}) }`
}
}
}
const props = defineProps<{
pro?: boolean
prose?: boolean
prefix?: string
/** Override the slug taken from the route */
slug?: string
class?: any
@@ -15,6 +54,12 @@ const props = defineProps<{
hide?: string[]
/** List of props to externalize in script setup */
external?: string[]
/** The types of the externalized props */
externalTypes?: string[]
/** List of props to use with `v-model` */
model?: string[]
/** List of props to cast from code and selection */
cast?: { [key: string]: string }
/** List of items for each prop */
items?: { [key: string]: string[] }
props?: { [key: string]: any }
@@ -29,25 +74,62 @@ const props = defineProps<{
* @defaultValue false
*/
collapse?: boolean
/**
* A list of line numbers to highlight in the code block
*/
highlights?: number[]
/**
* Whether to add overflow-hidden to wrapper
*/
overflowHidden?: boolean
}>()
const route = useRoute()
const { $prettier } = useNuxtApp()
const camelName = camelCase(props.slug ?? route.params.slug?.[route.params.slug.length - 1] ?? '')
const name = `U${upperFirst(camelName)}`
const camelName = camelCase(props.slug ?? route.path.split('/').pop() ?? '')
const name = `${props.prose ? 'Prose' : 'U'}${upperFirst(camelName)}`
const component = defineAsyncComponent(() => {
if (props.pro) {
if (props.prefix) {
return import(`#ui-pro/components/${props.prefix}/${upperFirst(camelName)}.vue`)
}
const componentProps = reactive({ ...(props.props || {}) })
if (props.prose) {
return import(`#ui-pro/components/prose/${upperFirst(camelName)}.vue`)
}
return import(`#ui-pro/components/${upperFirst(camelName)}.vue`)
}
return import(`#ui/components/${upperFirst(camelName)}.vue`)
})
const componentProps = reactive({
...Object.fromEntries(Object.entries(props.props || {}).map(([key, value]) => {
const cast = props.cast?.[key]
if (cast && !castMap[cast]) {
throw new Error(`Unknown cast: ${cast}`)
}
return [key, cast ? castMap[cast]!.get(value) : value]
}))
})
const componentEvents = reactive({
...Object.fromEntries((props.model || []).map(key => [`onUpdate:${key}`, (e: any) => setComponentProp(key, e)])),
...(componentProps.modelValue ? { [`onUpdate:modelValue`]: (e: any) => setComponentProp('modelValue', e) } : {})
})
function getComponentProp(name: string) {
return get(componentProps, name) || undefined
return get(componentProps, name) ?? undefined
}
function setComponentProp(name: string, value: any) {
set(componentProps, name, value)
}
const componentTheme = (theme as any)[camelName]
const componentTheme = ((props.pro ? props.prose ? themePro.prose : themePro : theme) as any)[camelName]
const meta = await fetchComponentMeta(name as any)
function mapKeys(obj: object, parentKey = ''): any {
@@ -70,21 +152,24 @@ const options = computed(() => {
const propItems = get(props.items, key, [])
const items = propItems.length
? propItems.map((item: any) => ({
value: item,
label: item
}))
value: item,
label: String(item),
chip: key.toLowerCase().endsWith('color') ? { color: item } : undefined
}))
: prop?.type === 'boolean' || prop?.type === 'boolean | undefined'
? [{ value: true, label: 'true' }, { value: false, label: 'false' }]
: Object.keys(componentTheme?.variants?.[key] || {}).map(variant => ({
value: variant,
label: variant,
chip: key.toLowerCase().endsWith('color') ? { color: variant } : undefined
})).filter(variant => key.toLowerCase().endsWith('color') ? !['error'].includes(variant.value) : true)
: Object.keys(componentTheme?.variants?.[key] || {}).filter((variant) => {
return variant !== 'true' && variant !== 'false'
}).map(variant => ({
value: variant,
label: variant,
chip: key.toLowerCase().endsWith('color') ? { color: variant } : undefined
}))
return {
name: key,
label: key,
type: prop?.type,
type: props?.cast?.[key] ?? prop?.type,
items
}
})
@@ -93,19 +178,56 @@ const options = computed(() => {
const code = computed(() => {
let code = ''
if (props.prose) {
code += `\`\`\`mdc
::${camelName}`
const proseProps = Object.entries(componentProps).map(([key, value]) => {
if (value === undefined || value === null || value === '' || props.hide?.includes(key)) {
return
}
return `${key}="${value}"`
}).filter(Boolean).join(' ')
if (proseProps.length) {
code += `{${proseProps}}`
}
code += `
${props.slots?.default}
::
\`\`\``
return code
}
if (props.collapse) {
code += `::code-collapse
`
}
code += `\`\`\`vue`
code += `\`\`\`vue${props.highlights?.length ? ` {${props.highlights.join('-')}}` : ''}`
if (props.external?.length) {
code += `
<script setup lang="ts">
`
for (const key of props.external) {
code += `const ${key === 'modelValue' ? 'value' : key} = ref(${json5.stringify(componentProps[key], null, 2).replace(/,([ |\t\n]+[}|\]])/g, '$1')})
if (props.externalTypes?.length) {
const removeArrayBrackets = (type: string): string => type.endsWith('[]') ? removeArrayBrackets(type.slice(0, -2)) : type
const types = props.externalTypes.map(type => removeArrayBrackets(type))
code += `import type { ${types.join(', ')} } from '@nuxt/ui${props.pro ? '-pro' : ''}'
`
}
for (const [i, key] of props.external.entries()) {
const cast = props.cast?.[key]
const value = cast ? castMap[cast]!.template(componentProps[key]) : json5.stringify(componentProps[key], null, 2)?.replace(/,([ |\t\n]+[}|\]])/g, '$1')
const type = props.externalTypes?.[i] ? `<${props.externalTypes[i]}>` : ''
code += `const ${key === 'modelValue' ? 'value' : key} = ref${type}(${value})
`
}
code += `<\/script>
@@ -121,33 +243,38 @@ const code = computed(() => {
continue
}
if (props.model?.includes(key)) {
code += ` v-model:${key}="${key}"`
continue
}
if (value === undefined || value === null || value === '' || props.hide?.includes(key)) {
continue
}
const prop = meta?.meta?.props?.find((prop: any) => prop.name === key)
const propDefault = prop && (prop.default ?? prop.tags?.find(tag => tag.name === 'defaultValue')?.text ?? componentTheme?.defaultVariants?.[prop.name])
const name = kebabCase(key)
if (typeof value === 'boolean') {
if (value && prop?.default === 'true') {
if (value && (propDefault === 'true' || propDefault === '`true`' || propDefault === true)) {
continue
}
if (!value && (!prop?.default || prop.default === 'false')) {
if (!value && (!propDefault || propDefault === 'false' || propDefault === '`false`' || propDefault === false)) {
continue
}
code += value ? ` ${name}` : ` :${key}="false"`
code += value ? ` ${name}` : ` :${name}="false"`
} else if (typeof value === 'object') {
const parsedValue = !props.external?.includes(key) ? json5.stringify(value, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1') : key
code += ` :${name}="${parsedValue}"`
} else {
const propDefault = prop && (prop.default ?? prop.tags?.find(tag => tag.name === 'defaultValue')?.text ?? componentTheme?.defaultVariants?.[prop.name])
if (propDefault === value) {
continue
}
code += ` ${prop?.type.includes('number') ? ':' : ''}${name}="${value}"`
code += ` ${typeof value === 'number' ? ':' : ''}${name}="${value}"`
}
}
@@ -160,7 +287,7 @@ const code = computed(() => {
code += `
<template #${key}>
${value}
</template>`
</template>\n`
}
}
code += (Object.keys(props.slots).length > 1 ? '\n' : '') + `</${name}>`
@@ -179,7 +306,7 @@ const code = computed(() => {
return code
})
const { data: ast } = await useAsyncData(`component-code-${name}-${JSON.stringify({ props: componentProps, slots: props.slots })}`, async () => {
const { data: ast } = await useAsyncData(`component-code-${name}-${hash({ props: componentProps, slots: props.slots })}`, async () => {
if (!props.prettier) {
return parseMarkdown(code.value)
}
@@ -189,7 +316,8 @@ const { data: ast } = await useAsyncData(`component-code-${name}-${JSON.stringif
formatted = await $prettier.format(code.value, {
trailingComma: 'none',
semi: false,
singleQuote: true
singleQuote: true,
printWidth: 100
})
} catch {
formatted = code.value
@@ -201,28 +329,27 @@ const { data: ast } = await useAsyncData(`component-code-${name}-${JSON.stringif
<template>
<div class="my-5">
<div>
<div v-if="options.length" class="flex items-center gap-2.5 border border-gray-300 dark:border-gray-700 border-b-0 relative rounded-t-md px-4 py-2.5 overflow-x-auto">
<div class="relative">
<div v-if="options.length" class="flex flex-wrap items-center gap-2.5 border border-muted border-b-0 relative rounded-t-md px-4 py-2.5 overflow-x-auto">
<template v-for="option in options" :key="option.name">
<UFormField
:label="option.label"
size="sm"
class="inline-flex ring ring-gray-300 dark:ring-gray-700 rounded"
class="inline-flex ring ring-accented rounded-sm"
:ui="{
wrapper: 'bg-gray-50 dark:bg-gray-800/50 rounded-l flex border-r border-gray-300 dark:border-gray-700',
label: 'text-gray-500 dark:text-gray-400 px-2 py-1.5',
wrapper: 'bg-elevated/50 rounded-l-sm flex border-r border-accented',
label: 'text-muted px-2 py-1.5',
container: 'mt-0'
}"
>
<USelectMenu
<USelect
v-if="option.items?.length"
:model-value="getComponentProp(option.name)"
:items="option.items"
value-key="value"
color="gray"
color="neutral"
variant="soft"
class="rounded rounded-l-none min-w-12"
:search="false"
class="rounded-sm rounded-l-none min-w-12"
:class="[option.name.toLowerCase().endsWith('color') && 'pl-6']"
:ui="{ itemLeadingChip: 'size-2' }"
@update:model-value="setComponentProp(option.name, $event)"
@@ -233,30 +360,30 @@ const { data: ast } = await useAsyncData(`component-code-${name}-${JSON.stringif
inset
standalone
:color="(modelValue as any)"
:size="ui.itemLeadingChipSize()"
:size="(ui.itemLeadingChipSize() as ChipProps['size'])"
class="size-2"
/>
</template>
</USelectMenu>
</USelect>
<UInput
v-else
:type="option.type?.includes('number') ? 'number' : 'text'"
:type="option.type?.includes('number') && typeof getComponentProp(option.name) === 'number' ? 'number' : 'text'"
:model-value="getComponentProp(option.name)"
color="gray"
color="neutral"
variant="soft"
:ui="{ base: 'rounded rounded-l-none min-w-12' }"
:ui="{ base: 'rounded-sm rounded-l-none min-w-12' }"
@update:model-value="setComponentProp(option.name, $event)"
/>
</UFormField>
</template>
</div>
<div class="flex border border-b-0 border-gray-300 dark:border-gray-700 relative p-4 z-[1]" :class="[!options.length && 'rounded-t-md', props.class]">
<component :is="name" v-bind="componentProps" @update:model-value="!!componentProps.modelValue && setComponentProp('modelValue', $event)">
<div v-if="component" class="flex justify-center border border-b-0 border-muted relative p-4 z-[1]" :class="[!options.length && 'rounded-t-md', props.class, { 'overflow-hidden': props.overflowHidden }]">
<component :is="component" v-bind="{ ...componentProps, ...componentEvents }">
<template v-for="slot in Object.keys(slots || {})" :key="slot" #[slot]>
<ContentSlot :name="slot" unwrap="p">
<slot :name="slot" mdc-unwrap="p">
{{ slots?.[slot] }}
</ContentSlot>
</slot>
</template>
</component>
</div>

View File

@@ -1,10 +1,14 @@
<script setup lang="ts">
import { upperFirst, camelCase } from 'scule'
const props = defineProps<{
prose?: boolean
}>()
const route = useRoute()
const camelName = camelCase(route.params.slug?.[route.params.slug.length - 1] ?? '')
const name = `U${upperFirst(camelName)}`
const camelName = camelCase(route.path.split('/').pop() ?? '')
const name = props.prose ? `Prose${upperFirst(camelName)}` : `U${upperFirst(camelName)}`
const meta = await fetchComponentMeta(name as any)
</script>
@@ -22,11 +26,11 @@ const meta = await fetchComponentMeta(name as any)
</ProseTr>
</ProseThead>
<ProseTbody>
<ProseTr v-for="event in meta.meta.events" :key="event.name">
<ProseTr v-for="event in (meta?.meta?.events || [])" :key="event.name">
<ProseTd>
<ProseCodeInline>
<ProseCode>
{{ event.name }}
</ProseCodeInline>
</ProseCode>
</ProseTd>
<ProseTd>
<HighlightInlineType v-if="event.type" :type="event.type" />

View File

@@ -1,9 +1,22 @@
<script setup lang="ts">
import type { ChipProps } from '@nuxt/ui'
import { camelCase } from 'scule'
import { useElementSize } from '@vueuse/core'
import { get, set } from '#ui/utils'
const props = withDefaults(defineProps<{
name: string
class?: any
/**
* Whether to render the component in an iframe
* @defaultValue false
*/
iframe?: boolean | { [key: string]: any }
/**
* Whether to display the component in a mobile-sized iframe viewport
* @defaultValue false
*/
iframeMobile?: boolean
props?: { [key: string]: any }
/**
* Whether to format the code with Prettier
@@ -21,29 +34,44 @@ const props = withDefaults(defineProps<{
* @defaultValue true
*/
preview?: boolean
/**
* Whether to show the source code
* @defaultValue true
*/
source?: boolean
/**
* A list of variable props to link to the component.
*/
options?: Array<{
alias?: string
name: string
label: string
items: any[]
items?: any[]
default: any
multiple: boolean
multiple?: boolean
}>
/**
* A list of line numbers to highlight in the code block
*/
highlights?: number[]
/**
* Whether to add overflow-hidden to wrapper
*/
overflowHidden?: boolean
}>(), {
preview: true,
source: true
})
const slots = defineSlots<{
options(props?: {}): any
code(props?: {}): any
}>()
const el = ref<HTMLElement | null>(null)
const { $prettier } = useNuxtApp()
const { width } = useElementSize(el)
const camelName = camelCase(props.name)
@@ -59,7 +87,7 @@ const code = computed(() => {
`
}
code += `\`\`\`vue${props.preview ? '' : ` [${data.pascalName}.vue]`}
code += `\`\`\`vue ${props.preview ? '' : ` [${data.pascalName}.vue]`}${props.highlights?.length ? `{${props.highlights.join('-')}}` : ''}
${data?.code ?? ''}
\`\`\``
@@ -81,7 +109,8 @@ const { data: ast } = await useAsyncData(`component-example-${camelName}`, async
formatted = await $prettier.format(code.value, {
trailingComma: 'none',
semi: false,
singleQuote: true
singleQuote: true,
printWidth: 100
})
} catch {
formatted = code.value
@@ -92,45 +121,105 @@ const { data: ast } = await useAsyncData(`component-example-${camelName}`, async
const optionsValues = ref(props.options?.reduce((acc, option) => {
if (option.name) {
acc[option.name] = option.default
acc[option.alias || option.name] = option.default
}
if (option.name.toLowerCase().endsWith('color') && option.items?.length) {
option.items = option.items.map((item: any) => ({
label: item,
value: item,
chip: { color: item }
}))
}
return acc
}, {} as Record<string, any>) || {})
const urlSearchParams = computed(() => {
const params = {
...optionsValues.value,
...componentProps
}
if (!props.iframeMobile) {
params.width = Math.round(width.value).toString()
}
return new URLSearchParams(params).toString()
})
</script>
<template>
<div class="my-5">
<div v-if="preview">
<div class="border border-gray-300 dark:border-gray-700 relative z-[1]" :class="[props.class, { 'border-b-0 rounded-t-md': props.source, 'rounded-md': !props.source }]">
<div v-if="props.options?.length" class="flex gap-4 p-4 border-b border-gray-300 dark:border-gray-700">
<div ref="el" class="my-5">
<template v-if="preview">
<div class="border border-muted relative z-[1]" :class="[{ 'border-b-0 rounded-t-md': props.source, 'rounded-md': !props.source, 'overflow-hidden': props.overflowHidden }]">
<div v-if="props.options?.length || !!slots.options" class="flex gap-4 p-4 border-b border-muted">
<slot name="options" />
<UFormField
v-for="option in props.options"
:key="option.name"
:label="option.label"
:name="option.name"
size="sm"
class="inline-flex ring ring-gray-300 dark:ring-gray-700 rounded"
class="inline-flex ring ring-accented rounded-sm"
:ui="{
wrapper: 'bg-gray-50 dark:bg-gray-800/50 rounded-l flex border-r border-gray-300 dark:border-gray-700',
label: 'text-gray-500 dark:text-gray-400 px-2 py-1.5',
wrapper: 'bg-elevated/50 rounded-l-sm flex border-r border-accented',
label: 'text-muted px-2 py-1.5',
container: 'mt-0'
}"
>
<USelectMenu
v-model="optionsValues[option.name]"
v-if="option.items?.length"
:model-value="get(optionsValues, option.name)"
:items="option.items"
class="rounded rounded-l-none w-40"
multiple
:search-input="false"
:value-key="option.name.toLowerCase().endsWith('color') ? 'value' : undefined"
color="neutral"
variant="soft"
class="rounded-sm rounded-l-none min-w-12"
:multiple="option.multiple"
:class="[option.name.toLowerCase().endsWith('color') && 'pl-6']"
:ui="{ itemLeadingChip: 'size-2' }"
@update:model-value="set(optionsValues, option.name, $event)"
>
<template v-if="option.name.toLowerCase().endsWith('color')" #leading="{ modelValue, ui }">
<UChip
inset
standalone
:color="(modelValue as any)"
:size="(ui.itemLeadingChipSize() as ChipProps['size'])"
class="size-2"
/>
</template>
</USelectMenu>
<UInput
v-else
:model-value="get(optionsValues, option.name)"
color="neutral"
variant="soft"
:ui="{ base: 'rounded-sm rounded-l-none min-w-12' }"
@update:model-value="set(optionsValues, option.name, $event)"
/>
</UFormField>
</div>
<div class="p-4">
<iframe
v-if="iframe"
v-bind="typeof iframe === 'object' ? iframe : {}"
:src="`/examples/${name}?${urlSearchParams}`"
class="relative w-full"
:class="[props.class, !iframeMobile && 'lg:left-1/2 lg:-translate-x-1/2 lg:w-[1024px]']"
/>
<div v-else class="flex justify-center p-4" :class="props.class">
<component :is="camelName" v-bind="{ ...componentProps, ...optionsValues }" />
</div>
</div>
</div>
</template>
<MDCRenderer v-if="ast && props.source" :body="ast.body" :data="ast.data" class="[&_pre]:!rounded-t-none [&_div.my-5]:!mt-0" />
<template v-if="props.source">
<div v-if="!!slots.code" class="[&_pre]:!rounded-t-none [&_div.my-5]:!mt-0">
<slot name="code" />
</div>
<MDCRenderer v-else-if="ast" :body="ast.body" :data="ast.data" class="[&_pre]:!rounded-t-none [&_div.my-5]:!mt-0" />
</template>
</div>
</template>

View File

@@ -1,19 +1,44 @@
<script setup lang="ts">
import { upperFirst, camelCase } from 'scule'
import { upperFirst, camelCase, kebabCase } from 'scule'
import type { ComponentMeta } from 'vue-component-meta'
import * as theme from '#build/ui'
import * as themePro from '#build/ui-pro'
const props = defineProps<{
const props = withDefaults(defineProps<{
name?: string
ignore?: string[]
}>()
pro?: boolean
prose?: boolean
}>(), {
ignore: () => [
'activeClass',
'inactiveClass',
'exactActiveClass',
'ariaCurrentValue',
'href',
'rel',
'noRel',
'prefetch',
'prefetchOn',
'noPrefetch',
'prefetchedClass',
'replace',
'exact',
'exactQuery',
'exactHash',
'external',
'onClick',
'viewTransition'
]
})
const route = useRoute()
const camelName = camelCase(route.params.slug?.[route.params.slug.length - 1] ?? '')
const name = `U${upperFirst(camelName)}`
const camelName = camelCase(props.name ?? route.path.split('/').pop() ?? '')
const componentName = props.prose ? `Prose${upperFirst(camelName)}` : `U${upperFirst(camelName)}`
const componentTheme = (theme as any)[camelName]
const meta = await fetchComponentMeta(name as any)
const componentTheme = ((props.pro ? props.prose ? themePro.prose : themePro : theme) as any)[camelName]
const meta = await fetchComponentMeta(componentName as any)
const metaProps: ComputedRef<ComponentMeta['props']> = computed(() => {
if (!meta?.meta?.props?.length) {
@@ -23,7 +48,17 @@ const metaProps: ComputedRef<ComponentMeta['props']> = computed(() => {
return meta.meta.props.filter((prop) => {
return !props.ignore?.includes(prop.name)
}).map((prop) => {
prop.default = prop.default ?? prop.tags?.find(tag => tag.name === 'defaultValue')?.text ?? componentTheme?.defaultVariants?.[prop.name]
if (prop.default) {
prop.default = prop.default.replace(' as never', '').replace(/^"(.*)"$/, '\'$1\'')
} else {
const tag = prop.tags?.find(tag => tag.name === 'defaultValue')?.text
if (tag) {
prop.default = tag
} else if (componentTheme?.defaultVariants?.[prop.name]) {
prop.default = typeof componentTheme?.defaultVariants?.[prop.name] === 'string' ? `'${componentTheme?.defaultVariants?.[prop.name]}'` : componentTheme?.defaultVariants?.[prop.name]
}
}
// @ts-expect-error - Type is not correct
prop.type = !prop.type.startsWith('boolean') && prop.schema?.kind === 'enum' && Object.keys(prop.schema.schema)?.length ? Object.values(prop.schema.schema).map(schema => schema?.type ? schema.type : schema).join(' | ') : prop.type
return prop
@@ -67,9 +102,9 @@ const metaProps: ComputedRef<ComponentMeta['props']> = computed(() => {
<ProseTbody>
<ProseTr v-for="prop in metaProps" :key="prop.name">
<ProseTd>
<ProseCodeInline>
<ProseCode>
{{ prop.name }}
</ProseCodeInline>
</ProseCode>
</ProseTd>
<ProseTd>
<HighlightInlineType v-if="prop.default" :type="prop.default" />
@@ -77,8 +112,9 @@ const metaProps: ComputedRef<ComponentMeta['props']> = computed(() => {
<ProseTd>
<HighlightInlineType v-if="prop.type" :type="prop.type" />
<MDC v-if="prop.description" :value="prop.description" class="text-gray-600 dark:text-gray-300 mt-1" />
<MDC v-if="prop.description" :value="prop.description" class="text-toned mt-1" :cache-key="`${kebabCase(route.path)}-${prop.name}-description`" />
<ComponentPropsLinks v-if="prop.tags?.length" :prop="prop" />
<ComponentPropsSchema v-if="prop.schema" :prop="prop" :ignore="ignore" />
</ProseTd>
</ProseTr>

View File

@@ -0,0 +1,20 @@
<script setup lang="ts">
import { kebabCase } from 'scule'
import type { PropertyMeta } from 'vue-component-meta'
const props = defineProps<{
prop: PropertyMeta
}>()
const route = useRoute()
const links = computed(() => props.prop.tags?.filter((tag: any) => tag.name === 'link'))
</script>
<template>
<ProseUl v-if="links?.length">
<ProseLi v-for="(link, index) in links" :key="index">
<MDC :value="link.text ?? ''" class="my-1" :cache-key="`${kebabCase(route.path)}-${prop.name}-link-${index}`" />
</ProseLi>
</ProseUl>
</template>

View File

@@ -1,4 +1,5 @@
<script setup lang="ts">
import { kebabCase } from 'scule'
import type { PropertyMeta } from 'vue-component-meta'
const props = defineProps<{
@@ -6,6 +7,8 @@ const props = defineProps<{
ignore?: string[]
}>()
const route = useRoute()
function getSchemaProps(schema: PropertyMeta['schema']): any {
if (!schema || typeof schema === 'string' || !schema.schema) {
return []
@@ -35,13 +38,13 @@ const schemaProps = computed(() => {
</script>
<template>
<Collapsible v-if="schemaProps?.length" class="mt-1">
<ProseCollapsible v-if="schemaProps?.length" class="mt-1 mb-0">
<ProseUl>
<ProseLi v-for="schemaProp in schemaProps" :key="schemaProp.name">
<HighlightInlineType :type="`${schemaProp.name}${schemaProp.required === false ? '?' : ''}: ${schemaProp.type}`" />
<MDC v-if="schemaProp.description" :value="schemaProp.description" class="text-gray-500 dark:text-gray-400 my-1" />
<MDC v-if="schemaProp.description" :value="schemaProp.description" class="text-muted my-1" :cache-key="`${kebabCase(route.path)}-${prop.name}-${schemaProp.name}-description`" />
</ProseLi>
</ProseUl>
</Collapsible>
</ProseCollapsible>
</template>

View File

@@ -1,10 +1,15 @@
<script setup lang="ts">
import { upperFirst, camelCase } from 'scule'
import { upperFirst, camelCase, kebabCase } from 'scule'
const props = defineProps<{
prose?: boolean
slug?: string
}>()
const route = useRoute()
const camelName = camelCase(route.params.slug?.[route.params.slug.length - 1] ?? '')
const name = `U${upperFirst(camelName)}`
const camelName = camelCase(props.slug ?? route.path.split('/').pop() ?? '')
const name = `${props.prose ? 'Prose' : 'U'}${upperFirst(camelName)}`
const meta = await fetchComponentMeta(name as any)
</script>
@@ -22,16 +27,16 @@ const meta = await fetchComponentMeta(name as any)
</ProseTr>
</ProseThead>
<ProseTbody>
<ProseTr v-for="slot in meta.meta.slots" :key="slot.name">
<ProseTr v-for="slot in (meta?.meta?.slots || [])" :key="slot.name">
<ProseTd>
<ProseCodeInline>
<ProseCode>
{{ slot.name }}
</ProseCodeInline>
</ProseCode>
</ProseTd>
<ProseTd>
<HighlightInlineType v-if="slot.type" :type="slot.type" />
<MDC v-if="slot.description" :value="slot.description" class="text-gray-600 dark:text-gray-300 mt-1" />
<MDC v-if="slot.description" :value="slot.description" class="text-toned mt-1" :cache-key="`${kebabCase(route.path)}-${slot.name}-description`" />
</ProseTd>
</ProseTr>
</ProseTbody>

View File

@@ -1,19 +1,36 @@
<script setup lang="ts">
import json5 from 'json5'
import { camelCase } from 'scule'
import { hash } from 'ohash'
import * as theme from '#build/ui'
import * as themePro from '#build/ui-pro'
const props = defineProps<{
pro?: boolean
prose?: boolean
slug?: string
extra?: string[]
}>()
const route = useRoute()
const { framework } = useSharedData()
const name = camelCase(route.params.slug?.[route.params.slug.length - 1] ?? '')
const name = props.slug ?? route.path.split('/').pop() ?? ''
const camelName = camelCase(name)
const strippedCompoundVariants = ref(false)
function stripCompoundVariants(component: any) {
if (component.compoundVariants) {
component.compoundVariants = component.compoundVariants.filter((compoundVariant: any) => {
const computedTheme = computed(() => props.pro ? props.prose ? themePro.prose : themePro : theme)
const strippedTheme = computed(() => {
const strippedTheme = {
...(computedTheme.value as any)[camelName]
}
if (strippedTheme?.compoundVariants) {
strippedTheme.compoundVariants = strippedTheme.compoundVariants.filter((compoundVariant: any) => {
if (compoundVariant.color) {
if (!['primary', 'gray'].includes(compoundVariant.color)) {
if (!['primary', 'neutral'].includes(compoundVariant.color)) {
strippedCompoundVariants.value = true
return false
@@ -21,7 +38,15 @@ function stripCompoundVariants(component: any) {
}
if (compoundVariant.highlightColor) {
if (!['primary', 'gray'].includes(compoundVariant.highlightColor)) {
if (!['primary', 'neutral'].includes(compoundVariant.highlightColor)) {
strippedCompoundVariants.value = true
return false
}
}
if (compoundVariant.loadingColor) {
if (!['primary', 'neutral'].includes(compoundVariant.loadingColor)) {
strippedCompoundVariants.value = true
return false
@@ -32,36 +57,95 @@ function stripCompoundVariants(component: any) {
})
}
return component
}
return strippedTheme
})
const component = computed(() => {
const baseKey = props.pro ? 'uiPro' : 'ui'
const content = props.prose
? { prose: { [camelName]: strippedTheme.value } }
: { [camelName]: strippedTheme.value }
if (props.extra?.length) {
props.extra.forEach((extra) => {
const target = props.prose ? content.prose! : content
target[extra as keyof typeof target] = computedTheme.value[extra as keyof typeof computedTheme.value]
})
}
return {
ui: {
[name]: stripCompoundVariants((theme as any)[name])
}
[baseKey]: content
}
})
const { data: ast } = await useAsyncData(`component-theme-${name}`, async () => {
const themeLink = computed(() => {
const repo = props.pro ? 'ui-pro' : 'ui'
const slug = name.startsWith('content') ? `content/${name}` : name
return `https://github.com/nuxt/${repo}/blob/v3/src/theme/${slug}.ts`
})
const { data: ast } = await useAsyncData(`component-theme-${camelName}-${hash({ props })}`, async () => {
const md = `
::code-collapse
::code-collapse{class="nuxt-only"}
\`\`\`ts [app.config.ts]
export default defineAppConfig(${json5.stringify(component.value, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')})
\`\`\`\
::
::code-collapse{class="vue-only ui-only"}
\`\`\`ts [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(${json5.stringify(component.value, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')
.split('\n')
.map((line, i) => i === 0 ? line : ` ${line}`)
.join('\n')})
]
})
\`\`\`
::
::code-collapse{class="vue-only ui-pro-only"}
\`\`\`ts [vite.config.ts]
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import uiPro from '@nuxt/ui-pro/vite'
export default defineConfig({
plugins: [
vue(),
uiPro(${json5.stringify(component.value, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')
.split('\n')
.map((line, i) => i === 0 ? line : ` ${line}`)
.join('\n')})
]
})
\`\`\`
::
${strippedCompoundVariants.value
? `
::callout{icon="i-simple-icons-github" to="https://github.com/nuxt/ui/blob/v3/src/theme/${name}.ts"}
? `
::callout{icon="i-simple-icons-github" to="${themeLink.value}" title="Compound variants"}
Some colors in \`compoundVariants\` are omitted for readability. Check out the source code on GitHub.
::`
: ''}
: ''}
`
return parseMarkdown(md)
})
}, { watch: [framework] })
</script>
<template>

View File

@@ -0,0 +1,12 @@
<script setup lang="ts">
import { Slot } from 'reka-ui'
</script>
<template>
<Slot class="nuxt-only">
<slot name="nuxt" />
</Slot>
<Slot class="vue-only">
<slot name="vue" />
</Slot>
</template>

View File

@@ -1,4 +1,6 @@
<script setup lang="ts">
import { hash } from 'ohash'
const props = defineProps<{
type: string
}>()
@@ -21,7 +23,7 @@ const type = computed(() => {
return type
})
const { data: ast } = await useAsyncData(`hightlight-inline-code-${type.value}`, () => parseMarkdown(`\`${type.value}\`{lang="ts-type"}`))
const { data: ast } = await useAsyncData(`hightlight-inline-code-${hash(type.value).slice(0, 10)}`, () => parseMarkdown(`\`${type.value}\`{lang="ts-type"}`))
</script>
<template>

View File

@@ -2,19 +2,86 @@
import json5 from 'json5'
import icons from '../../../../src/theme/icons'
const appConfig = useAppConfig()
const { framework, module } = useSharedData()
const { data: ast } = await useAsyncData(`icons-theme`, async () => {
const md = `
::code-collapse{class="ui-only nuxt-only"}
\`\`\`ts [app.config.ts]
export default defineAppConfig(${json5.stringify({
ui: {
icons
}
}, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')})
ui: {
icons
}
}, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')})
\`\`\`\
::
::code-collapse{class="ui-pro-only nuxt-only"}
\`\`\`ts [app.config.ts]
export default defineAppConfig(${json5.stringify({
ui: {
icons: appConfig.ui.icons
}
}, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')})
\`\`\`\
::
::code-collapse{class="vue-only ui-only"}
\`\`\`ts [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(${json5.stringify({
ui: {
icons
}
}, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')
.split('\n')
.map((line, i) => i === 0 ? line : ` ${line}`)
.join('\n')})
]
})
\`\`\`
::
::code-collapse{class="vue-only ui-pro-only"}
\`\`\`ts [vite.config.ts]
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import uiPro from '@nuxt/ui-pro/vite'
export default defineConfig({
plugins: [
vue(),
uiPro(${json5.stringify({
ui: {
icons
}
}, null, 2).replace(/,([ |\t\n]+[}|\])])/g, '$1')
.split('\n')
.map((line, i) => i === 0 ? line : ` ${line}`)
.join('\n')})
]
})
\`\`\`
::
`
return parseMarkdown(md)
})
}, { watch: [framework, module] })
</script>
<template>

View File

@@ -0,0 +1,12 @@
<script setup lang="ts">
import { Slot } from 'reka-ui'
</script>
<template>
<Slot class="ui-only">
<slot name="ui" />
</Slot>
<Slot class="ui-pro-only">
<slot name="ui-pro" />
</Slot>
</template>

View File

@@ -1,6 +1,6 @@
<template>
<div class="relative overflow-hidden rounded border border-dashed border-gray-400 dark:border-gray-500 opacity-75 px-4 flex items-center justify-center">
<svg class="absolute inset-0 h-full w-full stroke-gray-900/10 dark:stroke-white/10" fill="none">
<div class="relative overflow-hidden rounded-sm border border-dashed border-accented opacity-75 px-4 flex items-center justify-center">
<svg class="absolute inset-0 h-full w-full stroke-inverted/10" fill="none">
<defs>
<pattern
id="pattern-5c1e4f0e-62d5-498b-8ff0-cf77bb448c8e"

View File

@@ -0,0 +1,75 @@
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'
const props = withDefaults(defineProps<{
default?: string
}>(), {
default: 'en'
})
function getEmojiFlag(locale: string): string {
const languageToCountry: Record<string, string> = {
ar: 'sa', // Arabic -> Saudi Arabia
bn: 'bd', // Bengali -> Bangladesh
ca: 'es', // Catalan -> Spain
ckb: 'iq', // Central Kurdish -> Iraq
cs: 'cz', // Czech -> Czech Republic (note: modern country code is actually 'cz')
da: 'dk', // Danish -> Denmark
el: 'gr', // Greek -> Greece
en: 'gb', // English -> Great Britain
et: 'ee', // Estonian -> Estonia
he: 'il', // Hebrew -> Israel
hi: 'in', // Hindi -> India
hy: 'am', // Armenian -> Armenia
ja: 'jp', // Japanese -> Japan
kk: 'kz', // Kazakh -> Kazakhstan
km: 'kh', // Khmer -> Cambodia
ko: 'kr', // Korean -> South Korea
nb: 'no', // Norwegian Bokmål -> Norway
sl: 'si', // Slovenian -> Slovenia
sv: 'se', // Swedish -> Sweden
uk: 'ua', // Ukrainian -> Ukraine
ur: 'pk', // Urdu -> Pakistan
vi: 'vn' // Vietnamese -> Vietnam
}
const baseLanguage = locale.split('-')[0]?.toLowerCase() || locale
const countryCode = languageToCountry[baseLanguage] || locale.replace(/^.*-/, '').slice(0, 2)
return countryCode.toUpperCase()
.split('')
.map(char => String.fromCodePoint(0x1F1A5 + char.charCodeAt(0)))
.join('')
}
</script>
<!-- eslint-disable vue/singleline-html-element-content-newline -->
<template>
<div>
<ProseP>
By default, the <ProseCode>{{ props.default }}</ProseCode> locale is used.
</ProseP>
<div class="grid gap-6 grid-cols-2 md:grid-cols-3">
<div v-for="locale in locales" :key="locale.code">
<div class="flex gap-3 items-center">
<UAvatar size="xl">
{{ getEmojiFlag(locale.code) }}
</UAvatar>
<div class="text-sm">
<div class="font-semibold">{{ locale.name }}</div>
<div class="mt-1">Code: <ProseCode class="text-xs">{{ locale.code }}</ProseCode></div>
</div>
</div>
</div>
</div>
<ProseNote to="https://github.com/nuxt/ui/tree/v3/src/runtime/locale" target="_blank">
If you need additional languages, you can contribute by creating a PR to add a new locale in <ProseCode>src/runtime/locale/</ProseCode>.
</ProseNote>
<ProseTip>
You can use the <ProseCode>nuxt-ui</ProseCode> CLI to create a new locale:
<ProsePre language="bash">nuxt-ui make locale --code "en" --name "English"</ProsePre>
</ProseTip>
</div>
</template>

View File

@@ -1,16 +1,18 @@
<script setup lang="ts">
const items = [
import type { AccordionItem } from '@nuxt/ui'
const items: AccordionItem[] = [
{
label: 'Icons',
icon: 'i-heroicons-face-smile'
icon: 'i-lucide-smile'
},
{
label: 'Colors',
icon: 'i-heroicons-swatch'
icon: 'i-lucide-swatch-book'
},
{
label: 'Components',
icon: 'i-heroicons-cube-transparent'
icon: 'i-lucide-box'
}
]
</script>

View File

@@ -1,16 +1,18 @@
<script setup lang="ts">
const items = [
import type { AccordionItem } from '@nuxt/ui'
const items: AccordionItem[] = [
{
label: 'Icons',
icon: 'i-heroicons-face-smile'
icon: 'i-lucide-smile'
},
{
label: 'Colors',
icon: 'i-heroicons-swatch'
icon: 'i-lucide-swatch-book'
},
{
label: 'Components',
icon: 'i-heroicons-cube-transparent'
icon: 'i-lucide-box'
}
]
</script>
@@ -18,7 +20,7 @@ const items = [
<template>
<UAccordion :items="items">
<template #content="{ item }">
<p class="pb-3.5 text-sm text-gray-500 dark:text-gray-400">
<p class="pb-3.5 text-sm text-muted">
This is the {{ item.label }} panel.
</p>
</template>

View File

@@ -1,28 +1,30 @@
<script setup lang="ts">
import type { AccordionItem } from '@nuxt/ui'
const items = [
{
label: 'Icons',
icon: 'i-heroicons-face-smile',
icon: 'i-lucide-smile',
content: 'You have nothing to do, @nuxt/icon will handle it automatically.'
},
{
label: 'Colors',
icon: 'i-heroicons-swatch',
slot: 'colors',
content: 'Choose a primary and a gray color from your Tailwind CSS theme.'
icon: 'i-lucide-swatch-book',
slot: 'colors' as const,
content: 'Choose a primary and a neutral color from your Tailwind CSS theme.'
},
{
label: 'Components',
icon: 'i-heroicons-cube-transparent',
icon: 'i-lucide-box',
content: 'You can customize components by using the `class` / `ui` props or in your app.config.ts.'
}
]
] satisfies AccordionItem[]
</script>
<template>
<UAccordion :items="items">
<template #colors="{ item }">
<p class="text-sm pb-3.5 text-primary-500 dark:text-primary-400">
<p class="text-sm pb-3.5 text-primary">
{{ item.content }}
</p>
</template>

View File

@@ -0,0 +1,32 @@
<script setup lang="ts">
import type { AccordionItem } from '@nuxt/ui'
import { useSortable } from '@vueuse/integrations/useSortable'
const items = shallowRef<AccordionItem[]>([
{
label: 'Icons',
icon: 'i-lucide-smile',
content: 'You have nothing to do, @nuxt/icon will handle it automatically.'
},
{
label: 'Colors',
icon: 'i-lucide-swatch-book',
content: 'Choose a primary and a neutral color from your Tailwind CSS theme.'
},
{
label: 'Components',
icon: 'i-lucide-box',
content: 'You can customize components by using the `class` / `ui` props or in your app.config.ts.'
}
])
const accordion = useTemplateRef<HTMLElement>('accordion')
useSortable(accordion, items, {
animation: 150
})
</script>
<template>
<UAccordion ref="accordion" :items="items" />
</template>

View File

@@ -1,18 +1,20 @@
<script setup lang="ts">
const items = [
import type { AccordionItem } from '@nuxt/ui'
const items: AccordionItem[] = [
{
label: 'Icons',
icon: 'i-heroicons-face-smile',
icon: 'i-lucide-smile',
content: 'You have nothing to do, @nuxt/icon will handle it automatically.'
},
{
label: 'Colors',
icon: 'i-heroicons-swatch',
content: 'Choose a primary and a gray color from your Tailwind CSS theme.'
icon: 'i-lucide-swatch-book',
content: 'Choose a primary and a neutral color from your Tailwind CSS theme.'
},
{
label: 'Components',
icon: 'i-heroicons-cube-transparent',
icon: 'i-lucide-box',
content: 'You can customize components by using the `class` / `ui` props or in your app.config.ts.'
}
]

View File

@@ -1,22 +1,22 @@
<template>
<UAvatarGroup>
<UChip inset color="green">
<UChip inset color="success">
<UAvatar
src="https://avatars.githubusercontent.com/u/739984?v=4"
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
/>
</UChip>
<UChip inset color="amber">
<UChip inset color="warning">
<UAvatar
src="https://avatars.githubusercontent.com/u/25613751?v=4"
src="https://github.com/romhml.png"
alt="Romain Hamel"
/>
</UChip>
<UChip inset color="red">
<UChip inset color="error">
<UAvatar
src="https://avatars.githubusercontent.com/u/19751938?v=4"
src="https://github.com/noook.png"
alt="Neil Richter"
/>
</UChip>

View File

@@ -3,11 +3,11 @@
<ULink
to="https://github.com/benjamincanac"
target="_blank"
class="hover:ring-primary-500 dark:hover:ring-primary-400 transition"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://avatars.githubusercontent.com/u/739984?v=4"
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
/>
</ULink>
@@ -15,11 +15,11 @@
<ULink
to="https://github.com/romhml"
target="_blank"
class="hover:ring-primary-500 dark:hover:ring-primary-400 transition"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://avatars.githubusercontent.com/u/25613751?v=4"
src="https://github.com/romhml.png"
alt="Romain Hamel"
/>
</ULink>
@@ -27,11 +27,11 @@
<ULink
to="https://github.com/noook"
target="_blank"
class="hover:ring-primary-500 dark:hover:ring-primary-400 transition"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://avatars.githubusercontent.com/u/19751938?v=4"
src="https://github.com/noook.png"
alt="Neil Richter"
/>
</ULink>

View File

@@ -2,21 +2,21 @@
<UAvatarGroup>
<UTooltip text="benjamincanac">
<UAvatar
src="https://avatars.githubusercontent.com/u/739984?v=4"
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
/>
</UTooltip>
<UTooltip text="romhml">
<UAvatar
src="https://avatars.githubusercontent.com/u/25613751?v=4"
src="https://github.com/romhml.png"
alt="Romain Hamel"
/>
</UTooltip>
<UTooltip text="noook">
<UAvatar
src="https://avatars.githubusercontent.com/u/19751938?v=4"
src="https://github.com/noook.png"
alt="Neil Richter"
/>
</UTooltip>

View File

@@ -1,7 +1,7 @@
<template>
<UChip inset>
<UAvatar
src="https://avatars.githubusercontent.com/u/739984?v=4"
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
/>
</UChip>

View File

@@ -1,7 +1,7 @@
<template>
<UTooltip text="Benjamin Canac">
<UAvatar
src="https://avatars.githubusercontent.com/u/739984?v=4"
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
/>
</UTooltip>

View File

@@ -1,31 +1,42 @@
<script setup lang="ts">
const items = [{
label: 'Home',
to: '/'
}, {
slot: 'dropdown',
icon: 'i-heroicons-ellipsis-horizontal',
children: [{
label: 'Documentation'
}, {
label: 'Themes'
}, {
label: 'GitHub'
}]
}, {
label: 'Components',
to: '/components'
}, {
label: 'Breadcrumb',
to: '/components/breadcrumb'
}]
import type { BreadcrumbItem } from '@nuxt/ui'
const items = [
{
label: 'Home',
to: '/'
},
{
slot: 'dropdown' as const,
icon: 'i-lucide-ellipsis',
children: [
{
label: 'Documentation'
},
{
label: 'Themes'
},
{
label: 'GitHub'
}
]
},
{
label: 'Components',
to: '/components'
},
{
label: 'Breadcrumb',
to: '/components/breadcrumb'
}
] satisfies BreadcrumbItem[]
</script>
<template>
<UBreadcrumb :items="items">
<template #dropdown="{ item }">
<UDropdownMenu :items="item.children">
<UButton :icon="item.icon" color="gray" variant="link" class="p-0.5" />
<UButton :icon="item.icon" color="neutral" variant="link" class="p-0.5" />
</UDropdownMenu>
</template>
</UBreadcrumb>

View File

@@ -1,20 +1,26 @@
<script setup lang="ts">
const items = [{
label: 'Home',
to: '/'
}, {
label: 'Components',
to: '/components'
}, {
label: 'Breadcrumb',
to: '/components/breadcrumb'
}]
import type { BreadcrumbItem } from '@nuxt/ui'
const items: BreadcrumbItem[] = [
{
label: 'Home',
to: '/'
},
{
label: 'Components',
to: '/components'
},
{
label: 'Breadcrumb',
to: '/components/breadcrumb'
}
]
</script>
<template>
<UBreadcrumb :items="items">
<template #separator>
<span class="mx-2 text-gray-500 dark:text-gray-400">/</span>
<span class="mx-2 text-muted">/</span>
</template>
</UBreadcrumb>
</template>

View File

@@ -0,0 +1,7 @@
<template>
<UButtonGroup>
<UBadge color="neutral" variant="outline" size="lg" label="https://" />
<UInput color="neutral" variant="outline" placeholder="www.example.com" />
</UButtonGroup>
</template>

View File

@@ -1,32 +1,41 @@
<script setup lang="ts">
const items = [{
label: 'Team',
icon: 'i-heroicons-users'
}, {
label: 'Invite users',
icon: 'i-heroicons-user-plus',
children: [{
label: 'Invite by email',
icon: 'i-heroicons-paper-airplane'
}, {
label: 'Invite by link',
icon: 'i-heroicons-link'
}]
}, {
label: 'New team',
icon: 'i-heroicons-plus'
}]
import type { DropdownMenuItem } from '@nuxt/ui'
const items: DropdownMenuItem[] = [
{
label: 'Team',
icon: 'i-lucide-users'
},
{
label: 'Invite users',
icon: 'i-lucide-user-plus',
children: [
{
label: 'Invite by email',
icon: 'i-lucide-send-horizontal'
},
{
label: 'Invite by link',
icon: 'i-lucide-link'
}
]
},
{
label: 'New team',
icon: 'i-lucide-plus'
}
]
</script>
<template>
<UButtonGroup>
<UButton color="gray" variant="subtle" label="Settings" />
<UButton color="neutral" variant="subtle" label="Settings" />
<UDropdownMenu :items="items">
<UButton
color="gray"
color="neutral"
variant="outline"
icon="i-heroicons-chevron-down-20-solid"
icon="i-lucide-chevron-down"
/>
</UDropdownMenu>
</UButtonGroup>

View File

@@ -1,12 +1,12 @@
<template>
<UButtonGroup>
<UInput color="gray" variant="outline" placeholder="Enter token" />
<UInput color="neutral" variant="outline" placeholder="Enter token" />
<UTooltip text="Copy to clipboard">
<UButton
color="gray"
color="neutral"
variant="subtle"
icon="i-heroicons-clipboard-document"
icon="i-lucide-clipboard"
/>
</UTooltip>
</UButtonGroup>

View File

@@ -0,0 +1,21 @@
<script setup lang="ts">
import { CalendarDate, DateFormatter, getLocalTimeZone } from '@internationalized/date'
const df = new DateFormatter('en-US', {
dateStyle: 'medium'
})
const modelValue = shallowRef(new CalendarDate(2022, 1, 10))
</script>
<template>
<UPopover>
<UButton color="neutral" variant="subtle" icon="i-lucide-calendar">
{{ modelValue ? df.format(modelValue.toDate(getLocalTimeZone())) : 'Select a date' }}
</UButton>
<template #content>
<UCalendar v-model="modelValue" class="p-2" />
</template>
</UPopover>
</template>

View File

@@ -0,0 +1,35 @@
<script setup lang="ts">
import { CalendarDate, DateFormatter, getLocalTimeZone } from '@internationalized/date'
const df = new DateFormatter('en-US', {
dateStyle: 'medium'
})
const modelValue = shallowRef({
start: new CalendarDate(2022, 1, 20),
end: new CalendarDate(2022, 2, 10)
})
</script>
<template>
<UPopover>
<UButton color="neutral" variant="subtle" icon="i-lucide-calendar">
<template v-if="modelValue.start">
<template v-if="modelValue.end">
{{ df.format(modelValue.start.toDate(getLocalTimeZone())) }} - {{ df.format(modelValue.end.toDate(getLocalTimeZone())) }}
</template>
<template v-else>
{{ df.format(modelValue.start.toDate(getLocalTimeZone())) }}
</template>
</template>
<template v-else>
Pick a date
</template>
</UButton>
<template #content>
<UCalendar v-model="modelValue" class="p-2" :number-of-months="2" range />
</template>
</UPopover>
</template>

View File

@@ -0,0 +1,17 @@
<script setup lang="ts">
import type { DateValue } from '@internationalized/date'
import { CalendarDate } from '@internationalized/date'
const modelValue = shallowRef({
start: new CalendarDate(2022, 1, 1),
end: new CalendarDate(2022, 1, 9)
})
const isDateDisabled = (date: DateValue) => {
return date.day >= 10 && date.day <= 16
}
</script>
<template>
<UCalendar v-model="modelValue" :is-date-disabled="isDateDisabled" range />
</template>

View File

@@ -0,0 +1,30 @@
<script setup lang="ts">
import { CalendarDate } from '@internationalized/date'
const modelValue = shallowRef(new CalendarDate(2022, 1, 10))
function getColorByDate(date: Date) {
const isWeekend = date.getDay() % 6 == 0
const isDayMeeting = date.getDay() % 3 == 0
if (isWeekend) {
return undefined
}
if (isDayMeeting) {
return 'error'
}
return 'success'
}
</script>
<template>
<UCalendar v-model="modelValue">
<template #day="{ day }">
<UChip :show="!!getColorByDate(day.toDate('UTC'))" :color="getColorByDate(day.toDate('UTC'))" size="2xs">
{{ day.day }}
</UChip>
</template>
</UCalendar>
</template>

View File

@@ -0,0 +1,21 @@
<script setup lang="ts">
import { CalendarDate } from '@internationalized/date'
const date = shallowRef(new CalendarDate(2025, 4, 2))
</script>
<template>
<div class="flex flex-col gap-4">
<UCalendar v-model="date" :month-controls="false" :year-controls="false" />
<div class="flex justify-between gap-4">
<UButton color="neutral" variant="outline" @click="date = date.subtract({ months: 1 })">
Prev
</UButton>
<UButton color="neutral" variant="outline" @click="date = date.add({ months: 1 })">
Next
</UButton>
</div>
</div>
</template>

View File

@@ -0,0 +1,11 @@
<script setup lang="ts">
import { CalendarDate } from '@internationalized/date'
const modelValue = shallowRef(new CalendarDate(2023, 9, 10))
const minDate = new CalendarDate(2023, 9, 1)
const maxDate = new CalendarDate(2023, 9, 30)
</script>
<template>
<UCalendar v-model="modelValue" :min-value="minDate" :max-value="maxDate" />
</template>

View File

@@ -0,0 +1,9 @@
<script lang="ts" setup>
import { CalendarDate, HebrewCalendar } from '@internationalized/date'
const hebrewDate = shallowRef(new CalendarDate(new HebrewCalendar(), 5781, 1, 1))
</script>
<template>
<UCalendar v-model="hebrewDate" />
</template>

View File

@@ -0,0 +1,17 @@
<script setup lang="ts">
import type { DateValue } from '@internationalized/date'
import { CalendarDate } from '@internationalized/date'
const modelValue = shallowRef({
start: new CalendarDate(2022, 1, 1),
end: new CalendarDate(2022, 1, 9)
})
const isDateUnavailable = (date: DateValue) => {
return date.day >= 10 && date.day <= 16
}
</script>
<template>
<UCalendar v-model="modelValue" :is-date-unavailable="isDateUnavailable" range />
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" arrows :items="items" class="w-full max-w-xs mx-auto">
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,29 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/320?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/320?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/320?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
auto-height
arrows
dots
:items="items"
:ui="{
container: 'transition-[height]',
controls: 'absolute -top-8 inset-x-12',
dots: '-top-7',
dot: 'w-6 h-1'
}"
class="w-full max-w-xs mx-auto"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,24 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/468/468?random=1',
'https://picsum.photos/468/468?random=2',
'https://picsum.photos/468/468?random=3',
'https://picsum.photos/468/468?random=4',
'https://picsum.photos/468/468?random=5',
'https://picsum.photos/468/468?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
loop
dots
arrows
auto-scroll
:items="items"
:ui="{ item: 'basis-1/3' }"
>
<img :src="item" width="234" height="234" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,24 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/468/468?random=1',
'https://picsum.photos/468/468?random=2',
'https://picsum.photos/468/468?random=3',
'https://picsum.photos/468/468?random=4',
'https://picsum.photos/468/468?random=5',
'https://picsum.photos/468/468?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
loop
arrows
dots
:autoplay="{ delay: 2000 }"
:items="items"
:ui="{ item: 'basis-1/3' }"
>
<img :src="item" width="234" height="234" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,25 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/528/528?random=1',
'https://picsum.photos/528/528?random=2',
'https://picsum.photos/528/528?random=3',
'https://picsum.photos/528/528?random=4',
'https://picsum.photos/528/528?random=5',
'https://picsum.photos/528/528?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
class-names
arrows
:items="items"
:ui="{
item: 'basis-[70%] transition-opacity [&:not(.is-snapped)]:opacity-10'
}"
class="mx-auto max-w-sm"
>
<img :src="item" width="264" height="264" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" dots :items="items" class="w-full max-w-xs mx-auto">
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" dots :items="items" :ui="{ item: 'basis-1/3' }">
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,23 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
fade
arrows
dots
:items="items"
class="w-full max-w-xs mx-auto"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" class="w-full max-w-xs mx-auto">
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/468/468?random=1',
'https://picsum.photos/468/468?random=2',
'https://picsum.photos/468/468?random=3',
'https://picsum.photos/468/468?random=4',
'https://picsum.photos/468/468?random=5',
'https://picsum.photos/468/468?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-1/3' }">
<img :src="item" width="234" height="234" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,22 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
orientation="vertical"
:items="items"
class="w-full max-w-xs mx-auto"
:ui="{ container: 'h-[336px]' }"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,23 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
arrows
:prev="{ color: 'primary' }"
:next="{ variant: 'solid' }"
:items="items"
class="w-full max-w-xs mx-auto"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,28 @@
<script setup lang="ts">
defineProps<{
prevIcon?: string
nextIcon?: string
}>()
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
arrows
:prev-icon="prevIcon"
:next-icon="nextIcon"
:items="items"
class="w-full max-w-xs mx-auto"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -0,0 +1,58 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/640/640?random=1',
'https://picsum.photos/640/640?random=2',
'https://picsum.photos/640/640?random=3',
'https://picsum.photos/640/640?random=4',
'https://picsum.photos/640/640?random=5',
'https://picsum.photos/640/640?random=6'
]
const carousel = useTemplateRef('carousel')
const activeIndex = ref(0)
function onClickPrev() {
activeIndex.value--
}
function onClickNext() {
activeIndex.value++
}
function onSelect(index: number) {
activeIndex.value = index
}
function select(index: number) {
activeIndex.value = index
carousel.value?.emblaApi?.scrollTo(index)
}
</script>
<template>
<div class="flex-1 w-full">
<UCarousel
ref="carousel"
v-slot="{ item }"
arrows
:items="items"
:prev="{ onClick: onClickPrev }"
:next="{ onClick: onClickNext }"
class="w-full max-w-xs mx-auto"
@select="onSelect"
>
<img :src="item" width="320" height="320" class="rounded-lg">
</UCarousel>
<div class="flex gap-1 justify-between pt-4 max-w-xs mx-auto">
<div
v-for="(item, index) in items"
:key="index"
class="size-11 opacity-25 hover:opacity-100 transition-opacity"
:class="{ 'opacity-100': activeIndex === index }"
@click="select(index)"
>
<img :src="item" width="44" height="44" class="rounded-lg">
</div>
</div>
</div>
</template>

View File

@@ -0,0 +1,22 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/468/468?random=1',
'https://picsum.photos/468/468?random=2',
'https://picsum.photos/468/468?random=3',
'https://picsum.photos/468/468?random=4',
'https://picsum.photos/468/468?random=5',
'https://picsum.photos/468/468?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
loop
wheel-gestures
:items="items"
:ui="{ item: 'basis-1/3' }"
>
<img :src="item" width="234" height="234" class="rounded-lg">
</UCarousel>
</template>

View File

@@ -2,7 +2,7 @@
const statuses = ['online', 'away', 'busy', 'offline']
const status = ref(statuses[0])
const color = computed(() => status.value ? { online: 'green', away: 'amber', busy: 'red', offline: 'gray' }[status.value] as any : 'online')
const color = computed(() => status.value ? { online: 'success', away: 'warning', busy: 'error', offline: 'neutral' }[status.value] as any : 'online')
const show = computed(() => status.value !== 'offline')
@@ -18,6 +18,6 @@ onMounted(() => {
<template>
<UChip :color="color" :show="show" inset>
<UAvatar src="https://avatars.githubusercontent.com/u/739984?v=4" />
<UAvatar src="https://github.com/benjamincanac.png" />
</UChip>
</template>

View File

@@ -1,11 +1,11 @@
<template>
<UCollapsible class="w-48">
<UCollapsible class="flex flex-col gap-2 w-48">
<UButton
class="group"
label="Open"
color="gray"
color="neutral"
variant="subtle"
trailing-icon="i-heroicons-chevron-down-20-solid"
trailing-icon="i-lucide-chevron-down"
:ui="{
trailingIcon: 'group-data-[state=open]:rotate-180 transition-transform duration-200'
}"

Some files were not shown because too many files have changed in this diff Show More