Compare commits

..

405 Commits

Author SHA1 Message Date
Benjamin Canac
635b0f41e2 chore(release): v2.18.0 2024-07-25 10:44:46 +02:00
Benjamin Canac
5db18c0056 fix(Accordion): truncate buttons
Resolves #1909
2024-07-23 16:23:14 +02:00
Benjamin Canac
c3122f776d feat(Checkbox/Radio/RadioGroup): add help slot
Resolves #1957
2024-07-23 16:16:57 +02:00
Maxime Pauvert
b264ad2ebd feat(CommandPalette): handle static groups (#1458)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-23 16:05:20 +02:00
Benjamin Canac
f374b14dba docs: update badges 2024-07-23 15:46:14 +02:00
Everton
7155318029 feat(Table): expand row (#1036)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-23 15:43:39 +02:00
Benjamin Canac
c39c770a70 chore(Table): columns types 2024-07-23 14:55:06 +02:00
Cardona Simon
d18477def5 feat(RadioGroup): add selected to label slot props (#1587) 2024-07-23 14:54:18 +02:00
Alexander Trost
748e49175d feat(Table): handle rowClass property in columns (#1632)
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2024-07-23 14:44:33 +02:00
chenying
f74f1df6ca fix(Carousel): remove mix-blend-overlay on indicators (#1714)
Co-authored-by: chenying <chenying@addcn.com>
2024-07-23 14:39:16 +02:00
Benjamin Canac
d2d37e4093 playground(nuxt.config): add compatibilityDate 2024-07-23 14:36:58 +02:00
Benjamin Canac
b57676c1a5 docs(nuxt.config): add compatibilityDate 2024-07-23 14:36:31 +02:00
Abel Derderian
e8eb3941ad feat(Tabs): handle icon in items (#1798)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-23 14:36:03 +02:00
Benjamin Canac
839bf72c61 chore(deps): remove typescript 2024-07-23 14:19:30 +02:00
Benjamin Canac
fcf46d7171 chore(CommandPalette): improve fuse.js import types .ts file 2024-07-23 14:17:58 +02:00
Benjamin Canac
8c531615ef chore(types): rename .d.ts to .ts 2024-07-23 14:08:57 +02:00
Benjamin Canac
51e6cb8417 chore(deps): remove @nuxt/module-builder resolution 2024-07-23 14:08:37 +02:00
Benjamin Canac
2443fd70eb docs: typecheck 2024-07-23 13:22:25 +02:00
Benjamin Canac
4974280d82 docs(deps): update @nuxt/ui-pro 2024-07-23 12:14:07 +02:00
Benjamin Canac
b7d90f78b8 chore(deps): update vue-tsc resolution 2024-07-23 12:03:51 +02:00
Benjamin Canac
b2e0566c16 docs: typecheck 2024-07-23 11:51:02 +02:00
Thiago Petherson
64e8a87073 docs(notification): improve example (#1973) 2024-07-23 11:07:02 +02:00
Benjamin Canac
720c44dd5e fix(Link): allow ariaLabel to be picked
Resolves #1934
2024-07-22 12:24:09 +02:00
Matej Černý
6b216cab1b feat(SelectMenu): add selected to label / leading / trailing slots props (#1349)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-22 12:12:32 +02:00
Benjamin Canac
82c8717fbf chore(deps): dedupe 2024-07-22 11:15:06 +02:00
renovate[bot]
d1c80861a1 chore(deps): update all non-major dependencies (#1969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-21 15:54:10 +02:00
renovate[bot]
2ac31c0173 chore(deps): update nuxt framework to ^3.12.4 (#1971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-21 12:16:26 +02:00
renovate[bot]
77f0156b43 chore(deps): update dependency @octokit/rest to v21 (#1894)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-18 13:51:55 +02:00
Vincent Ratier
7e974b55d7 feat(SelectMenu): handle function in showCreateOptionWhen prop (#1853)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-18 13:51:01 +02:00
Benjamin Canac
6aaf12b9af chore(github): update stale workflow 2024-07-18 10:52:30 +02:00
Benjamin Canac
4b397c0f7e chore(github): add stale workflow 2024-07-17 14:58:49 +02:00
renovate[bot]
80b2a60718 chore(deps): update all non-major dependencies (#1967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-17 14:37:48 +02:00
Benjamin Canac
6691311782 chore(github): update issue templates 2024-07-17 14:36:36 +02:00
Benjamin Canac
2c55fb6336 fix(Alert/Notification): missing margin on description
Resolves #1959
2024-07-16 17:10:09 +02:00
Benjamin Canac
e2881d3801 fix(InputMenu/SelectMenu): prevent double filter with async search
Resolves #1966
2024-07-16 15:10:37 +02:00
renovate[bot]
46e9b128da chore(deps): update all non-major dependencies (#1756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-16 14:45:13 +02:00
Benjamin Canac
53003fcd07 fix(Breadcrumb): use rotate on rtl icon 2024-07-10 17:48:42 +02:00
Benjamin Canac
2bb8360223 docs(deps): add nuxt-component-meta resolution 2024-07-10 17:48:42 +02:00
Juho Rutila
bce94db9fd feat(Skeleton): add as prop (#1955) 2024-07-10 13:58:01 +02:00
Adrien Autricque
cf482581f4 docs(form): typo (#1953)
Co-authored-by: Adrien AUTRICQUE <adrien.autricque@exotec.com>
2024-07-10 11:19:29 +02:00
Benjamin Canac
19cab36d73 chore(deps): update 2024-07-09 14:25:30 +02:00
Benjamin Canac
df2b5e2419 chore(renovate): ignore @nuxt/module-builder 2024-07-09 14:20:41 +02:00
Benjamin Canac
1334ec59b1 chore(renovate): ignore vue-tsc 2024-07-09 12:35:19 +02:00
Dave Stewart
3f8ea5dbde feat(module): improve app config types autocomplete (#1870)
Co-authored-by: Dave Stewart <dev@davestewart.co.uk>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-09 12:23:57 +02:00
renovate[bot]
c0ef69d314 chore(deps): update devdependency vitest to v2 (#1951)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 11:08:40 +02:00
Rihan
567045211a chore(deps): update pnpm/action-setup action to v4 (#1942)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-07-09 11:08:11 +02:00
Benjamin Canac
9e12e9519e docs: update headlessui.com broken urls 2024-07-05 16:14:06 +02:00
Benjamin Canac
67e6a4a565 chore(renovate): ignore valibot30 / valibot31 deps 2024-07-03 19:29:31 +02:00
renovate[bot]
2dcf70cf3c chore(deps): update nuxt framework to ^3.12.3 (#1938)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-03 18:07:50 +02:00
Adrien Figueiredo
8eca5a0d62 fix(RadioGroup): allow boolean in modelValue prop (#1913)
Co-authored-by: Adrien Figueiredo <>
2024-07-01 11:02:36 +02:00
Daniel Roe
3e9c96bb7a docs: add site.url (#1924) 2024-06-28 15:24:00 +02:00
Christoph Biering
cb36094dbe chore(deps): update @nuxtjs/color-mode to v3.4.2 (#1922)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-27 12:31:34 +02:00
Fabian Hiller
839a6029e7 chore(deps): update valibot to v0.33.0 (#1914) 2024-06-27 11:57:34 +02:00
Benjamin Canac
4c0a3d8dc0 docs(icon): put back component page 2024-06-25 11:44:51 +02:00
Benjamin Canac
c904604c23 feat(Icon)!: migrate from @egoist/tailwindcss-icons to new @nuxt/icon (#1789) 2024-06-24 12:46:41 +02:00
Benjamin Canac
bfa2e707d8 chore(deps): update pnpm 2024-06-24 12:20:26 +02:00
Benjamin Canac
f16291d290 docs(deps): update @nuxt/content 2024-06-24 11:37:34 +02:00
Neil Richter
abd13f1f8f fix(Progress): pass down attrs to <progress> to improve accessibility (#1881) 2024-06-24 10:57:01 +02:00
John Tanzer
0a47a2b5f2 chore(eslint): add no-trailing-spaces rule (#1906) 2024-06-24 10:55:50 +02:00
Neil Richter
99c52e5008 fix(FormGroup): don't check for error slot so help slot can render (#1888) 2024-06-24 10:54:14 +02:00
Benjamin Canac
4d5f250902 fix(InputMenu/SelectMenu): invalid label with value-attribute and async search
Resolves #1780
2024-06-19 12:19:15 +02:00
Romain Hamel
6b6b03d59f fix(ButtonGroup/FormGroup): pass default sizes to children (#1875) 2024-06-19 12:08:13 +02:00
Benjamin Canac
4ad904f83d docs(home): improve contributors animation 2024-06-18 22:13:10 +02:00
Benjamin Canac
c28ef0abb8 docs(home): improve community section (#1891) 2024-06-18 17:29:52 +02:00
Benjamin Canac
9c3ed4b78f chore(github): remove pnpm version with packageManger 2024-06-18 17:27:58 +02:00
muri
a1c116de7b docs(form): improve validation references (#1877) 2024-06-18 14:02:51 +02:00
Benjamin Canac
755c4d32b3 docs(deps): update @nuxt/ui-pro 2024-06-18 13:11:24 +02:00
Benjamin Canac
05c7836387 docs(deps): update nuxt-og-image to v3 2024-06-18 11:55:28 +02:00
renovate[bot]
e9d801c52a chore(deps): update nuxt framework to ^3.12.2 (#1884)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-18 10:22:47 +02:00
Daniel Roe
7211e3a1eb chore: indicate compatibility with new v4 major (#1879)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-15 10:35:32 +02:00
Benjamin Canac
89d18f8f1d docs(deps): update @nuxt/ui-pro 2024-06-13 12:58:37 +02:00
Benjamin Canac
1e7470f531 docs: update badges 2024-06-13 11:29:39 +02:00
Benjamin Canac
b6736d1efd chore(release): v2.17.0 2024-06-13 11:24:50 +02:00
Benjamin Canac
f6e695ffc8 chore(deps): update 2024-06-13 11:15:33 +02:00
Benjamin Canac
e8898d15a6 fix(Alert/Notification): use div for description
Resolves #1551
2024-06-13 11:15:27 +02:00
Thibault Vlacich
f65aefb706 fix(Alert): base style not applied on icon (#1859)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-12 10:25:18 +02:00
Benjamin Canac
9b9ccdb59e fix(SelectMenu): wrong placeholder color when modelValue is an empty string
Resolves #1862
2024-06-12 10:11:16 +02:00
renovate[bot]
688232215d chore(deps): update nuxt framework to ^3.12.1 (#1861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-11 17:13:37 +02:00
Benjamin Canac
ebfb835033 fix(Breadcrumb): allow aria-current to be overrideable
Related to #1856
2024-06-11 12:27:44 +02:00
renovate[bot]
838d6c832f chore(deps): update nuxt framework to ^3.12.0 (#1860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-11 12:15:16 +02:00
eduardo-faith
e7c2f7856c fix(Input): hide wrapper when type is hidden (#1797)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-11 11:58:49 +02:00
Fabian Hiller
1d5bd89d58 feat(Form): update and migrate valibot to v0.31.0 (#1848)
Co-authored-by: Romain Hamel <romain@boilr.io>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-11 11:40:44 +02:00
Benjamin Canac
6c124bb1ac fix(Select): remove defaults for value and text
Resolves #1702
2024-06-06 10:51:34 +02:00
Benjamin Canac
49174b7628 chore(deps): update @​egoist/tailwindcss-icons
Resolves #1840
2024-06-06 10:44:50 +02:00
Vitta
50ad14f9df feat(Slideover): handle top and bottom side (#1834) 2024-06-05 10:30:45 +02:00
Vitta
6e2678d1d8 feat(Tabs): add content prop to avoid the render of the HTML markup (#1831)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-04 10:23:17 +02:00
Khaled Oghli
831c560a96 docs(slideover): add close button in some examples for mobile (#1827)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-03 15:30:45 +02:00
Romain Hamel
06990beabf fix(Form): maintain other errors when using setErrors with a path (#1818)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-03 13:59:26 +02:00
networdai
3ebff4d133 feat(Notification): allow ring customization with {color} (#1830)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-03 11:45:36 +02:00
Khaled Oghli
d66cfa9d7d docs(table): ensure scroll and pagination visibility on mobile (#1828)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-06-03 11:44:46 +02:00
Benjamin Canac
75c0d9e31f chore(deps): update 2024-06-03 11:40:39 +02:00
Benjamin Canac
6033872ef8 chore(deps): pin vue-tsc 2024-06-03 11:04:18 +02:00
Benjamin Canac
838cb7212a docs(alert): remove missing example 2024-06-03 11:00:42 +02:00
John Tanz
c8dd71c4f5 feat(Alert): add actions slot (#1785)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-05-28 12:29:10 +02:00
Mukund Shah
4f0d00f7a6 fix(Carousel): prevent mouse click when dragging (#1781) 2024-05-15 12:18:51 +02:00
Benjamin Canac
3b975634e8 chore(package): define packageManager 2024-05-14 15:13:11 +02:00
Benjamin Canac
249bbd49dc fix(CommandPalette): hide empty-state when null
Resolves #1787
2024-05-14 14:57:19 +02:00
Milos Dimitrijevic
3c1602af37 docs(form): fix link to /form-group (#1777) 2024-05-10 16:29:22 +02:00
Benjamin Canac
e1ca6e0cde chore(deps): update @headlessui/vue
Resolves #1760
2024-05-10 11:41:53 +02:00
Benjamin Canac
3b3bd16afe docs(deps): update @nuxt/ui-pro 2024-05-10 11:25:45 +02:00
Benjamin Canac
fab9cbebd8 docs(context-menu): add missing @vueuse/core imports
Resolves #1762
2024-05-10 11:10:00 +02:00
Benjamin Canac
581b470cc7 fix(Link): typo in exactHash type
Resolves #1767
2024-05-09 11:38:39 +02:00
Benjamin Canac
24d30cd1f3 chore(deps): pin @headlessui/vue to 1.7.20
Resolves #1760
2024-05-09 11:38:10 +02:00
Benjamin Canac
cc52bffccf chore(release): v2.16.0 2024-05-07 14:19:28 +02:00
renovate[bot]
eb2601d4da chore(deps): update all non-major dependencies (#1752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-05-07 14:16:58 +02:00
renovate[bot]
f726b5f094 chore(deps): update all non-major dependencies (#1719)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-05-06 17:00:48 +02:00
guylil
37ce62acb9 docs(FormGroup): incorrect icon in description slot example (#1749) 2024-05-06 12:22:48 +02:00
Romain Hamel
f97b728968 docs(Form): clarify when the @error event is triggered (#1747) 2024-05-06 10:39:05 +02:00
chenying
7e6ba78681 feat(InputMenu/SelectMenu): allow lazy search (#1705)
Co-authored-by: chenying <chenying@addcn.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-04-26 15:43:29 +02:00
Benjamin Canac
ed5c74dc17 fix(Input)!: redesign file type without absolute positioning (#1712) 2024-04-25 17:12:06 +02:00
Benjamin Canac
bb3ea40218 chore(deps): remove resolutions + update 2024-04-25 13:00:16 +02:00
Inesh Bose
821e15b696 feat(module): HMR support with @nuxtjs/tailwindcss (#1665)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-04-24 12:20:10 +02:00
Eugen Istoc
bd3fa8658f fix(Slideover): export and clean types (#1692)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-04-22 11:13:34 +02:00
Moritz
82d619b2a7 feat(useToast): allow clearing all notifications (#1695) 2024-04-22 11:01:48 +02:00
Neil Richter
8d9d9736ba feat(Pagination): allow using links for pagination buttons (#1682) 2024-04-18 12:38:48 +02:00
Neil Richter
3fca66857d feat(Table): allow providing a <caption> (#1680) 2024-04-16 16:39:52 +02:00
renovate[bot]
4853520eb3 chore(deps): update devdependency @nuxt/test-utils to ^3.12.1 (#1677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 11:11:35 +02:00
Benjamin Canac
5481dab53d fix(Breadcrumb): pass click event to ULink 2024-04-16 10:36:45 +02:00
Neil Richter
6f60fa9a98 fix(Table): provide aria-sort for sortable table headings (#1675) 2024-04-15 18:13:01 +02:00
Neil Richter
cba9ad78db fix(Notification): update timer when timeout prop changes (#1673) 2024-04-15 16:38:07 +02:00
Damian Głowala
bbc8f4e6ac chore(README): update installation section (#1659) 2024-04-15 10:28:51 +02:00
Neil Richter
ed3a3babdb feat(useToast): allow updating an existing notification (#1668) 2024-04-15 10:27:39 +02:00
renovate[bot]
4415d4111e chore(deps): update devdependency @nuxt/ui-pro to v1.1.0-28548740.d20325b (#1658)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 19:12:53 +02:00
Benjamin Canac
c75c0152ce chore(release): v2.15.2 2024-04-12 14:23:50 +02:00
renovate[bot]
993bb89e02 chore(deps): update all non-major dependencies (#1652)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 14:16:34 +02:00
Benjamin Canac
9f01145bc6 fix(Breadcrumb): missing min-w-0 on wrapper to truncate
Resolves #1650
2024-04-11 21:52:07 +02:00
renovate[bot]
c1d9e0ecd4 chore(deps): update all non-major dependencies (#1625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-10 22:46:08 +02:00
gangan
f610c96a0b docs: use nuxi init -t ui command in installation (#1648) 2024-04-10 18:56:35 +02:00
Alex Thorwaldson
8b546600db feat(Table): add checkbox ui config (#1409)
Co-authored-by: gangan <44604921+shinGangan@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-10 17:54:16 +02:00
Daniel Roe
f08471ccda docs: use new nuxi module add command in installation (#1606)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-04-10 17:52:34 +02:00
Neil Richter
d19d7077e4 docs(modal): provide an example to bind event listeners (#1611) 2024-04-10 17:15:39 +02:00
Eugen Istoc
07a4d13c0f fix(Slideover): wait for transition to complete to reset state (#1624) 2024-04-05 19:31:29 +02:00
renovate[bot]
9e90d1768b chore(deps): update devdependency @nuxt/eslint-config to ^0.3.0 (#1623)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 17:51:40 +02:00
Neil Richter
91e5002050 feat(Accordion): add unmount prop to allow lazy mounting for heavy components (#1590) 2024-04-05 14:11:31 +02:00
renovate[bot]
eb68d0d453 chore(deps): update devdependency @nuxt/ui-pro to v1.1.0-28538540.a353e68 (#1622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 14:08:08 +02:00
Neil Richter
2bdb5d2b42 fix(Modal): wait for transition to complete to reset state (#1618) 2024-04-05 14:07:51 +02:00
renovate[bot]
b62cd7905d chore(deps): update devdependency @nuxt/ui-pro to v1.1.0-28538504.d4106a4 (#1620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 12:44:03 +02:00
Eugen Istoc
58faa1053b fix(Slideover): remove dynamic component when closing (#1615)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-04-05 12:43:50 +02:00
Kshitij Subedi
e909884d03 fix(Carousel): next and prev buttons disabled (#1619) 2024-04-05 12:20:50 +02:00
renovate[bot]
5e84fd0570 chore(deps): update devdependency @nuxtjs/plausible to v1 (#1610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 12:18:39 +02:00
Benjamin Canac
98c0f567fc docs: replace i-heroicons-credit-card with i-heroicons-ticket 2024-04-05 11:57:47 +02:00
renovate[bot]
379d20fc3c chore(deps): update all non-major dependencies (#1602)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 11:28:22 +02:00
renovate[bot]
c12f94653e chore(deps): update nuxt framework to ^3.11.2 (#1613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 11:06:04 +02:00
vahid bagheri
2392b4aa40 fix(Popover/Dropdown): prevent unintended closure on touchstart in mobile devices (#1609) 2024-04-04 00:18:40 +02:00
Benjamin Canac
36055ba978 chore(release): v2.15.1 2024-04-02 13:08:11 +02:00
renovate[bot]
73541f2d4f chore(deps): update all non-major dependencies (#1562)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 12:02:39 +02:00
Benjamin Canac
03030ab1db docs(nuxt.config): remove @nuxtjs/google-fonts and @nuxtjs/fontaine config 2024-03-29 10:57:31 +01:00
Cardona Simon
c98d6e31c0 fix(Checkbox): @change event value (#1580)
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
2024-03-28 21:29:29 +01:00
Benjamin Canac
49b73aa024 feat(Avatar): add as prop to use NuxtImg underneath
Resolves #1577
2024-03-28 11:04:20 +01:00
Mahdi Shah Abbasian
bd8b737642 fix(Divider): add w-full only on horizontal wrapper (#1565) 2024-03-27 13:57:09 +01:00
Neil Richter
dd8a122933 docs(installation): update regex to match @nuxt/eslint rules (#1572) 2024-03-27 13:55:23 +01:00
Qin Guan
0b799e4300 docs(icon): add link to theming icons section (#1571)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-27 13:54:38 +01:00
Benjamin Canac
8517897c34 fix(Popover): missing mouseenter event on container
Resolves #1564
2024-03-27 12:04:49 +01:00
Benjamin Canac
72889535e7 fix(Dropdown): missing mouseenter event on container 2024-03-27 12:04:31 +01:00
Romain Hamel
878f7078a2 fix(Input/SelectMenu): handle file type and change events (#1570) 2024-03-27 11:57:31 +01:00
Benjamin Canac
bd8118c124 docs(deps): update @nuxt/ui-pro 2024-03-26 14:18:21 +01:00
Benjamin Canac
3d5ffe76ef chore(release): v2.15.0 2024-03-26 13:53:25 +01:00
chenying
c49f8999d3 fix(SelectMenu): handle Boolean type as model value (#1550)
Co-authored-by: chenying <chenying@addcn.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-26 12:15:25 +01:00
Daniel Roe
cc62e345eb fix: opt in to import.meta.* properties (#1561)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-25 17:57:58 +01:00
renovate[bot]
ae58d5c2b9 chore(deps): update all non-major dependencies (#1547)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-25 16:01:48 +01:00
Romain Hamel
92e736213b fix(forms)!: normalize input emits (#1560) 2024-03-25 15:36:36 +01:00
Benjamin Canac
7d6b5c358f docs(Slideover): missing New badge 2024-03-25 12:45:26 +01:00
Benjamin Canac
f854746bd8 docs(alert): missing New badges 2024-03-25 12:45:18 +01:00
Mohammad Amin Mokhtari
e1e05af0ba feat(Toggle): add loading prop (#1546)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-25 12:43:15 +01:00
Neil Richter
224ec3c1fb feat(Accordion): emit open event with index (#1559) 2024-03-25 12:27:06 +01:00
chenying
c3ac4badbf docs(DatePicker): add is-required prop (#1549)
Co-authored-by: chenying <chenying@addcn.com>
2024-03-25 12:09:19 +01:00
renovate[bot]
398c5d5dcd chore(deps): update all non-major dependencies (#1543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 18:16:48 +01:00
Eugen Istoc
e7697595c8 feat(Slideover): open programmatically (#1465)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-21 17:48:35 +01:00
Stanley
b0ecac563c fix(SelectMenu): filteredOptions might be undefined (#1541)
Co-authored-by: Sedana Yoga <55230513+sedanayoga@users.noreply.github.com>
2024-03-20 10:55:13 +01:00
renovate[bot]
5cb45c52c2 chore(deps): update all non-major dependencies (#1537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 18:05:32 +01:00
renovate[bot]
0453af65fa chore(deps): update devdependency ufo to ^1.5.2 (#1533)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 11:12:19 +01:00
renovate[bot]
53cfea40a4 chore(deps): update devdependency happy-dom to v14 (#1536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 10:35:59 +01:00
renovate[bot]
386e51d159 chore(deps): update nuxt framework to ^3.11.1 (#1535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 10:28:55 +01:00
renovate[bot]
eb8eec09c5 chore(deps): update nuxt framework (#1528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 11:45:57 +01:00
renovate[bot]
4a4ddbd5cb chore(deps): update all non-major dependencies (#1504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 11:24:21 +01:00
Daniel Öhling
a563d8fed4 fix(Popover/Dropdown): use @touchstart.passive instead of @touchstart.prevent (#1520) 2024-03-17 18:48:00 +01:00
Conner Blanton
7658211537 fix(ButtonGroup): nested group elements (#1530) 2024-03-17 18:47:10 +01:00
Noah Gregory
e736ecafff fix(Carousel): add tab-based ARIA roles (#1516) 2024-03-14 10:32:39 +01:00
Alex Thorwaldson
cee3e126a4 feat(Alert): add icon & avatar slots (#1401)
Co-authored-by: gangan <44604921+shinGangan@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-13 21:49:57 +01:00
Benjamin Canac
f4a48f6016 fix(InputMenu): trigger alignement on safari
Resolves #1505
2024-03-12 22:39:14 +01:00
Benjamin Canac
877b22c294 docs: consistent icons and avatars across examples 2024-03-12 22:20:44 +01:00
renovate[bot]
8cc8e45b4f chore(deps): update all non-major dependencies (#1490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-10 11:51:11 +01:00
Daniel Roe
3f67b9209c chore: check playground types separately (#1497) 2024-03-09 19:25:09 +01:00
Romain Hamel
a2b8b700df fix(Checkbox): bind data-n-ids to root element (#1495) 2024-03-09 15:58:54 +01:00
Daniel Roe
80cc59375f chore: remove auto-import override (#1492) 2024-03-09 14:36:05 +01:00
renovate[bot]
2bb911023c chore(deps): update all non-major dependencies (#1483)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-08 12:10:58 +01:00
renovate[bot]
ab355a3576 chore(deps): update all non-major dependencies (#1481)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-07 15:07:59 +01:00
Shoshana Connack
6c02d1c704 docs(getting-started): grammar correction (#1482) 2024-03-07 11:51:46 +01:00
renovate[bot]
66c3631b3d chore(deps): update all non-major dependencies (#1474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-07 00:18:08 +01:00
Benjamin Canac
435ef30f26 chore(release-it): prefix version commit message 2024-03-05 12:48:45 +01:00
Benjamin Canac
17a96416f0 chore(release): 2.14.2 2024-03-05 12:21:34 +01:00
renovate[bot]
4378268117 chore(deps): update devdependency @nuxt/ui-pro to v1.0.1-28492961.4d49b9c (#1471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 21:38:46 +01:00
Benjamin Canac
622aef5ffe docs: limit search results to 42 2024-03-04 19:27:09 +01:00
Benjamin Canac
174af36000 docs: switch to @nuxt/fonts 2024-03-04 18:21:41 +01:00
Benjamin Canac
2d64b50559 fix(RadioGroup): add missing fieldset config
Resolves #1472
2024-03-04 18:06:49 +01:00
Benjamin Canac
272c19de70 fix(Tooltip): arrow not hidden on mobile
Resolves #1470
2024-03-04 16:27:01 +01:00
Alex Thorwaldson
6a1142b403 fix(Dropdown): active/inactive dropdown links (#1407)
Co-authored-by: gangan <44604921+shinGangan@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-04 16:11:41 +01:00
renovate[bot]
9937951fb7 chore(deps): update all non-major dependencies (#1440)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 16:11:05 +01:00
kmilogp
002129c299 fix(Modal): remove overflow-hidden (#1460)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-03-04 12:58:56 +01:00
Benjamin Canac
0c2f655a27 docs(Range): revert example as it shows in the docs 2024-03-04 12:47:51 +01:00
renovate[bot]
fb16735dec chore(deps): update devdependency vue-tsc to v2 (#1454)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-04 12:33:38 +01:00
Mukund Shah
aa6e523780 docs(Notification): add Notifications props and config (#1449) 2024-03-04 11:56:18 +01:00
David Parys
bfd15c1818 docs(Link): add IntelliSense section (#1442) 2024-03-04 11:55:17 +01:00
Rodion
027d85402b docs(FormGroup): wrong icon name in #help slot (#1451) 2024-03-04 11:54:44 +01:00
roiLeo
99b9467dc2 docs(SelectMenu): invalid anchor to creatable (#1453) 2024-03-04 11:53:52 +01:00
Benjamin Canac
70bf4a7392 fix(Dropdown): improve hover mode on touch devices 2024-03-04 11:47:39 +01:00
Benjamin Canac
b50fbcf760 fix(Popover): improve hover mode on touch devices 2024-03-04 11:47:34 +01:00
Benjamin Canac
b74bf9f666 chore(Tooltip): use mouseenter instead of mouseover 2024-03-04 11:45:01 +01:00
renovate[bot]
c0feca136a chore(deps): update all non-major dependencies (#1430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-28 17:21:00 +01:00
Benjamin Canac
0a4a9e3d2c fix(HorizontalNavigation): add relative class to icon 2024-02-28 16:26:16 +01:00
Benjamin Canac
0b29dd4ca5 fix(VerticalNavigation): add relative class to icon
Resolves #1245
2024-02-28 16:25:20 +01:00
Benjamin Canac
9cce4456d0 fix(Notification): improve description alignment when no title provided 2024-02-28 12:52:53 +01:00
Benjamin Canac
ca4f06a313 fix(Alert): improve description alignment when no title provided
Resolves #1408
2024-02-28 12:52:43 +01:00
Benjamin Canac
7dd9ee528e docs(date-picker): improve examples responsive 2024-02-28 11:25:59 +01:00
Shoshana Connack
cdf6ff7152 docs(date-picker): include date-fns in installation (#1434) 2024-02-27 14:26:25 +01:00
Benjamin Canac
9c2104d947 docs: remove banner on examples 2024-02-27 09:18:53 +01:00
Benjamin Canac
d1c8026a1e docs(deps): bump @nuxt/ui-pro 2024-02-27 09:18:53 +01:00
Benjamin Canac
14efa81986 chore(deps): refresh lock 2024-02-27 09:18:53 +01:00
renovate[bot]
b3314dc16b chore(deps): update all non-major dependencies (#1406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 09:18:53 +01:00
Benjamin Canac
06135f38ae docs(home): improve lighthouse 2024-02-26 12:56:40 +01:00
Benjamin Canac
dbbab8ded0 chore(CommandPaletteGroup): remove useless role attributes 2024-02-26 12:56:40 +01:00
Romain Hamel
6e77f1d514 fix(Checkbox): label interaction without FormGroup (#1427) 2024-02-26 12:55:30 +01:00
Benjamin Canac
4b6e80e364 fix(SelectMenu): check null model value
Resolves #1421
2024-02-26 11:37:32 +01:00
Benjamin Canac
8a1b112727 docs(deps): bump @nuxt/ui-pro 2024-02-26 11:37:32 +01:00
Benjamin Canac
961f0ae27b docs: update banner 2024-02-26 11:37:32 +01:00
Benjamin Canac
e819656a34 docs: move headlessui links before github 2024-02-26 11:37:32 +01:00
Sébastien Chopin
024e03acc9 docs(breadcrumb): add link to github (#1414) 2024-02-26 11:37:32 +01:00
renovate[bot]
462d7729c9 chore(deps): update devdependency @nuxt/ui-pro to v1.0.0-28478433.ed477f1 (#1405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 11:37:31 +01:00
gangan
df857fd541 chore(renovate): update extends (#1380) 2024-02-26 11:37:31 +01:00
sdezza
9b208bf297 docs(modal): mention how to programatically close (#1423) 2024-02-26 11:24:02 +01:00
Benjamin Canac
5af9da4d3c chore(release): 2.14.1 2024-02-23 17:25:52 +01:00
Benjamin Canac
1d995136a5 chore(release-it): remove pnpm test 2024-02-23 17:22:24 +01:00
Benjamin Canac
ba15add4db fix(module): revert tailwind config from #1272 (#1404) 2024-02-23 16:35:08 +01:00
Benjamin Canac
0aca478c57 chore(deps): remove ^ from @nuxt/kit resolution 2024-02-23 10:54:53 +01:00
Benjamin Canac
0ee4f2b75b chore(release-it): update config 2024-02-22 17:57:39 +01:00
Benjamin Canac
6e53cb6281 chore(deps): refresh lock 2024-02-22 15:40:12 +01:00
renovate[bot]
de715304dc chore(deps): update all non-major dependencies (#1399)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-22 15:31:59 +01:00
Benjamin Canac
81854112e3 docs: add pricing banner (#1391) 2024-02-22 15:30:38 +01:00
Benjamin Canac
87526b9ec5 docs: rename UDocs components to UContent 2024-02-22 15:28:44 +01:00
Benjamin Canac
f79187825f docs(deps): bump @nuxt/ui-pro 2024-02-22 15:28:31 +01:00
Benjamin Canac
0443ac2c9d chore(deps): remove ^ from resolutions 2024-02-22 15:28:11 +01:00
Benjamin Canac
d2c51e3667 docs(home): improve pro divider 2024-02-22 15:09:02 +01:00
Benjamin Canac
d15d7fa01d docs(home): improve pro section 2024-02-22 13:07:23 +01:00
Benjamin Canac
df32b3131b chore(release): 2.14.0 2024-02-22 12:06:52 +01:00
Benjamin Canac
d96d17d7e6 chore(readme): update 2024-02-22 11:42:06 +01:00
Benjamin Canac
b6c69441f5 docs(index): invalid component links 2024-02-21 23:11:59 +01:00
Benjamin Canac
33f3372c6b docs(nuxt.config): highlight mdc 2024-02-21 23:11:47 +01:00
renovate[bot]
613ba2db64 chore(deps): update devdependency @nuxt/ui-pro to v0.7.5-28475621.09eb8fa (#1394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 20:02:36 +01:00
Benjamin Canac
9f352976ce fix(utils): prevent merge of popper key
Resolves #1393
2024-02-21 16:51:42 +01:00
Benjamin Canac
f83cff7095 chore(utils): prevent default prop merge for chip and badge 2024-02-21 16:34:34 +01:00
Benjamin Canac
433c09a9f3 docs(nuxt.config): highlight postcss lang 2024-02-21 16:34:34 +01:00
renovate[bot]
930337bf88 chore(deps): update all non-major dependencies (#1381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 14:21:15 +01:00
Benjamin Canac
81e48ba9fd docs(home): add video 2024-02-21 12:24:30 +01:00
Benjamin Canac
cb2fd1e940 docs: consistent app.vue and error.vue 2024-02-20 10:47:50 +01:00
Benjamin Canac
6d4eac0dec docs: update figma link 2024-02-20 10:43:56 +01:00
Benjamin Canac
f4f6a8fcc1 chore(deps): refresh lock 2024-02-19 16:41:22 +01:00
renovate[bot]
920070cce0 chore(deps): update all non-major dependencies (#1347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 16:23:10 +01:00
Benjamin Canac
d12b00c005 chore(useFormGroup): indentation 2024-02-19 12:23:25 +01:00
Benjamin Canac
3a142896c3 chore(useButtonGroup): indentation 2024-02-19 12:22:50 +01:00
Benjamin Canac
58682cec0c docs(theming): broken link for ui.config file
Resolves #1372
2024-02-18 20:01:21 +01:00
Romain Hamel
37ef7a4e4f docs(form): improve form documentation (#1373) 2024-02-18 18:30:20 +01:00
Amir Reza Dalir
5266591c88 fix(Form): improve validate path type (#1370)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-18 11:15:15 +01:00
Romain Hamel
d4b6147fcc fix(Form): return false when silent validation fails (#1371) 2024-02-18 11:11:07 +01:00
Benjamin Canac
31232d4d72 chore(Table): use px-4 in td and th for consistency 2024-02-15 15:29:52 +01:00
Benjamin Canac
3fe35217cb feat(Table): display progress bar when loading (#1362) 2024-02-15 12:37:44 +01:00
renovate[bot]
04ef47376d chore(deps): update dorny/paths-filter action to v3 (#1360)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-15 12:32:02 +01:00
Benjamin Canac
aa2b1cae88 fix(Notification): remove required title to prevent warning when using slot 2024-02-15 12:22:50 +01:00
Benjamin Canac
e545b6f0a1 fix(Alert): remove required title to prevent warning when using slot 2024-02-15 12:22:33 +01:00
Benjamin Canac
db42d9cab7 chore(Progress): define ProgressColor type 2024-02-15 12:14:00 +01:00
Benjamin Canac
b11c773f32 chore(Range): export RangeColor type 2024-02-15 12:14:00 +01:00
Benjamin Canac
c34df13e65 chore(Toggle): export ToggleColor type 2024-02-15 12:14:00 +01:00
Benjamin Canac
a55a08a91e fix(Progress): prevent NaN percent display when indeterminate 2024-02-15 12:13:37 +01:00
Benjamin Canac
c488b28c3c docs: use lang="ts" everywhere 2024-02-14 17:41:10 +01:00
Benjamin Canac
300861a49e docs(deps): remove @nuxthq/studio 2024-02-14 14:47:49 +01:00
Benjamin Canac
09a8e2d8c2 chore(deps): refresh lock 2024-02-12 12:00:48 +01:00
Benjamin Canac
7eba5b539a chore(FormGroup): wrap label & description to ease styling 2024-02-12 11:59:18 +01:00
renovate[bot]
19d15b42f0 chore(deps): update all non-major dependencies (#1334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-12 11:37:32 +01:00
Richard van Driest
e23d4aaf53 docs(table): correct spelling (#1340) 2024-02-09 11:40:02 +01:00
Benjamin Canac
e1fb8e438d chore(Modals): ensure modalState exists 2024-02-08 17:18:48 +01:00
Benjamin Canac
f682905b26 fix(Card): prevent body padding without default slot 2024-02-08 12:49:38 +01:00
Benjamin Canac
f5fa9fe163 docs: add New badges on edge 2024-02-07 21:48:21 +01:00
Benjamin Canac
627a44bb1f docs: remove New badges on edge 2024-02-07 21:42:33 +01:00
Benjamin Canac
ade99a8f05 chore(Modals): client only component 2024-02-07 21:36:51 +01:00
Benjamin Canac
3295954247 docs(table): prevent overflow on mobile 2024-02-07 21:36:32 +01:00
Benjamin Canac
4f532dbb72 docs(vertical-navigation): improve example 2024-02-07 21:36:18 +01:00
Benjamin Canac
ee0a8f01af docs(carousel): improve examples 2024-02-07 21:31:48 +01:00
Benjamin Canac
b8936070f9 Revert "docs: add missing overflow-hidden on components"
This reverts commit 34adcc1c04.
2024-02-07 21:04:56 +01:00
Neil Richter
6f29c620ab feat(Modal): open programmatically (#1319) 2024-02-07 16:53:17 +01:00
renovate[bot]
98a2d0f1af chore(deps): update all non-major dependencies (#1216)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-07 16:03:42 +01:00
Benjamin Canac
e08601900e docs(DatePicker): wrong version of v-calendar
Fixes #1333
2024-02-07 14:40:21 +01:00
Benjamin Canac
cf818fba47 docs(home): improve pro animation start time 2024-02-07 14:31:57 +01:00
Benjamin Canac
0c8a649035 docs: add postcss shiki lang highlighter 2024-02-07 14:12:54 +01:00
Benjamin Canac
843a978644 feat(Tabs): add unmount prop as false by default
Resolves #663
2024-02-07 14:12:54 +01:00
adjabaev
cbeede66bb feat(Divider): handle size prop (#1307)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-07 13:48:11 +01:00
Benjamin Canac
a506cbbcb0 chore(package.json): add missing module type 2024-02-07 12:44:35 +01:00
Benjamin Canac
bb40c31031 fix(module): prevent tailwind warn with bun
Fixes #809
2024-02-07 12:43:56 +01:00
Benjamin Canac
34adcc1c04 docs: add missing overflow-hidden on components 2024-02-06 23:09:27 +01:00
Olusola Olawale
ac42ec106f fix(Link): check disabled prop before navigating (#1321) 2024-02-06 21:45:51 +01:00
Benjamin Canac
c3ed940ac2 docs(deps): bump @nuxt/ui-pro-edge 2024-02-06 19:51:38 +01:00
Benjamin Canac
7c74c2f22a docs: improve config display 2024-02-06 19:51:21 +01:00
Benjamin Canac
d0f4530e85 fix(SelectMenu): revert component is after #1199 2024-02-06 18:15:27 +01:00
Benjamin Canac
f8b296fc60 fix(Meter): missing import of Icon component
Fixes #1328
2024-02-06 18:03:16 +01:00
Benjamin Canac
882247e5f4 fix(Accordion): style disclosure div after #1199 2024-02-06 17:52:58 +01:00
Farnabaz
a297c3b41e docs: move shiki highlighter to composable (#1325) 2024-02-06 16:12:27 +01:00
Benjamin Canac
45121916d0 docs(releases): use head.title
Fixes #1323
2024-02-06 15:38:18 +01:00
Benjamin Canac
6b82429e30 chore(deps): bump 2024-02-06 14:21:11 +01:00
Farnabaz
707753a743 docs(deps): update @nuxt/content (#1310)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-06 13:06:20 +01:00
Benjamin Canac
10db14475f fix(components): hydration attribute mismatch with vue 3.4 (#1199) 2024-02-06 12:42:19 +01:00
Inesh Bose
4a5f7b06cf chore(tailwind): put empty object in quotes (#1306) 2024-02-05 16:46:31 +01:00
pierre golfier
f643e7b316 feat(Textarea): add maxrows prop to restrict autoresize (#1302)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-05 16:18:20 +01:00
Benjamin Canac
5a5b284e96 fix(RadioGroup): pass help prop to radio children
Resolves #1313
2024-02-05 15:32:36 +01:00
Benjamin Canac
6699a0519d docs(deps): bump @nuxt/ui-pro-edge 2024-02-05 12:24:54 +01:00
Benjamin Canac
8b08edeee7 chore(module): pass resolve and runtimeDir to installTailwind 2024-02-05 12:16:58 +01:00
Benjamin Canac
41ecd2a3d5 feat(Carousel): expose methods to allow autoplay
Resolves #1300
2024-02-01 18:07:39 +01:00
Benjamin Canac
f36158133e docs: bump @nuxt/ui-pro-edge 2024-02-01 16:55:02 +01:00
Inesh Bose
f0ee1893ee refactor(module): provide tailwind config through template (#1272)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-02-01 15:06:28 +01:00
Benjamin Canac
f455dbdd22 docs(releases): lint 2024-02-01 12:57:15 +01:00
Romain Hamel
27c71fa40e feat(Form): use nuxt useId to bind input labels (#1211) 2024-01-31 18:22:02 +01:00
Benjamin Canac
be37daec56 chore: ignore ts errors after nuxt 3.10 2024-01-31 15:05:31 +01:00
Benjamin Canac
9676f51512 chore(deps): update nuxt resolutions 2024-01-31 14:38:22 +01:00
Benjamin Canac
f8ada8042a docs(vercel.json): ignore _payload.json in redirects 2024-01-31 13:52:00 +01:00
Jake
89e15b90b1 docs(carousel): add draggable="false" to image elements (#1297) 2024-01-31 13:04:19 +01:00
Benjamin Canac
5b008b789b docs: put back prerender: false 2024-01-31 13:02:12 +01:00
Benjamin Canac
25d35cf465 docs: display Edge badge in header 2024-01-31 12:08:55 +01:00
Benjamin Canac
ee662986ab docs: remove prerender: false 2024-01-31 11:52:04 +01:00
Benjamin Canac
946a39c739 feat(Input): handle type file
Resolves #563
2024-01-31 11:50:34 +01:00
Benjamin Canac
412cd75edd fix(module): put back all option in icons plugin
Fixes #1237
2024-01-31 10:53:39 +01:00
Benjamin Canac
d0471f66ea chore(deps): update @egoist/tailwindcss-icons 2024-01-31 10:52:14 +01:00
Benjamin Canac
a12f37e4d2 chore(deps): update 2024-01-30 17:32:34 +01:00
Benjamin Canac
b741b42c64 docs: active pro link on /pro/prose 2024-01-30 15:07:44 +01:00
Benjamin Canac
7f8c625b0e docs: add /getting-started/examples redirect 2024-01-30 14:44:00 +01:00
Benjamin Canac
83b6b04eea docs: configure image provider to ipx 2024-01-30 14:26:20 +01:00
Benjamin Canac
aac6fb4334 docs(releases): improve page 2024-01-30 13:14:16 +01:00
Benjamin Canac
ca9f47d7c0 docs: move vercel.json in root dir 2024-01-30 12:37:53 +01:00
Benjamin Canac
e78a0350a5 chore(release): 2.13.0 2024-01-30 11:54:34 +01:00
Benjamin Canac
f42bb95f89 docs: import @nuxt/ui-pro package to display version 2024-01-30 11:51:33 +01:00
Benjamin Canac
f9042c4673 chore(deps): update 2024-01-30 11:51:20 +01:00
Benjamin Canac
e92be71749 docs: new structure (#1282)
Co-authored-by: Sébastien Chopin <seb@nuxt.com>
2024-01-30 11:24:02 +01:00
Anthony Sendra
20ac4b3332 feat(Form): handle multiple paths in validate (#1273) 2024-01-27 11:41:56 +01:00
Benjamin Canac
2e1ef557b5 chore(HorizontalNavigation): handle truncate 2024-01-25 18:02:28 +01:00
Benjamin Canac
8c568b1a29 chore(InputMenu/SelectMenu): harmonize config with buttons 2024-01-25 17:50:43 +01:00
Benjamin Canac
d2481a0f23 chore(CommandPalette): harmonize selected icon size 2024-01-25 17:50:17 +01:00
Benjamin Canac
a3f253f99a chore(Dropdown): harmonize config with buttons 2024-01-25 17:44:55 +01:00
Benjamin Canac
edf70b19eb chore(Breadcrumb): harmonize icon with buttons 2024-01-25 17:39:07 +01:00
Benjamin Canac
5d3a962782 fix(Breadrumb): handle truncate 2024-01-25 17:38:52 +01:00
Benjamin Canac
f640a30e13 chore(Breadcrumb): increase item line-height 2024-01-25 16:42:09 +01:00
Benjamin Canac
b8007bab5e feat(HorizontalNavigation): new component (#1279) 2024-01-25 10:21:06 +01:00
Benjamin Canac
b76e761bbb fix(Link): propagate active prop to slot as isActive 2024-01-24 18:20:25 +01:00
Benjamin Canac
b5b97f3467 chore(CommandPalette): harmonize config with buttons 2024-01-24 17:04:35 +01:00
Benjamin Canac
fc91e90958 chore(VerticalNavigation): harmonize config with buttons 2024-01-24 17:04:18 +01:00
Benjamin Canac
3e81eee6e6 feat(VerticalNavigation)!: use Badge component for consistency 2024-01-24 17:03:25 +01:00
Benjamin Canac
5ff566f0a4 chore(Toggle): missing default function in size prop 2024-01-24 14:52:12 +01:00
Benjamin Canac
3400b56d82 feat(Tooltip): default delay from config 2024-01-24 14:51:49 +01:00
Benjamin Canac
7f5711bc76 feat(Popover): default delay from config 2024-01-24 14:51:41 +01:00
Benjamin Canac
c4a1c04174 feat(Dropdown): default delay from config 2024-01-24 14:51:31 +01:00
Benjamin Canac
5e49fb8736 feat(InputMenu): handle nullable prop when clearing input 2024-01-24 12:45:39 +01:00
Benjamin Canac
2cb41db111 fix(Select): consistent placeholder with input and textarea
Resolves #1276
2024-01-24 11:55:05 +01:00
Benjamin Canac
6fafd78f5f docs(ComponentExample): fix code slot with latest @nuxt/content 2024-01-23 15:29:38 +01:00
Benjamin Canac
5b134b07ef docs(command-palette): add API section 2024-01-23 11:50:23 +01:00
Benjamin Canac
a47d9cc006 docs(form): improve API section 2024-01-23 11:50:09 +01:00
Benjamin Canac
ea9807f921 docs(theming): improve extraProperties examples
Resolves #1002
2024-01-23 10:50:01 +01:00
Matej Černý
f96eb5e8b7 feat(module): add option to disable global css styles (#1266) 2024-01-23 10:47:34 +01:00
Benjamin Canac
865c492616 chore(Select): move global style to sfc
Related to #1266
2024-01-22 22:08:44 +01:00
Benjamin Canac
a2ed3cc376 docs(carousel): hydration issue in one example 2024-01-22 18:41:45 +01:00
Benjamin Canac
d416432703 chore(deps): update 2024-01-22 18:41:29 +01:00
Michał Hanusek
f37b043138 feat(Carousel): new component (#927)
Co-authored-by: Michał Hanusek <m.hanusek@myfreak.pl>
Co-authored-by: Inesh Bose <dev@inesh.xyz>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2024-01-22 17:47:14 +01:00
Mohamed Fadl
ea58c88baa fix(Slideover): handle translate in RTL mode (#1259) 2024-01-22 17:01:38 +01:00
Benjamin Canac
0083ca276a docs: remove New badges on edge version 2024-01-22 16:58:10 +01:00
Alireza Jahandideh
6faf15bc74 feat(Modal/Slideover): emit close-prevented event (#1207) 2024-01-19 15:45:16 +01:00
Benjamin Canac
ac5224cbae chore(release): 2.12.3 2024-01-18 17:40:47 +01:00
Benjamin Canac
79ec3fd031 fix(link): import type from #vue-router
Resolves #1253
2024-01-18 17:34:41 +01:00
Benjamin Canac
91b27c8581 docs: bump @nuxt/ui-pro 2024-01-18 16:13:28 +01:00
Benjamin Canac
66c78c899c chore(release): 2.12.2 2024-01-18 15:38:59 +01:00
Benjamin Canac
05e90aa1d1 fix(link): improve nuxt link rel type 2024-01-18 15:30:14 +01:00
Benjamin Canac
d28bb0efa8 chore(release): 2.12.1 2024-01-18 15:04:10 +01:00
Benjamin Canac
d67c7482ac chore(deps): pin @headlessui/vue in dependencies instead of resolutions 2024-01-18 15:00:07 +01:00
Benjamin Canac
b8db18513d chore(deps): pin @headlessui/vue as it breaks command palette 2024-01-18 12:47:16 +01:00
Benjamin Canac
a3b33ac917 chore(deps): add missing resolutions update 2024-01-17 23:54:06 +01:00
Benjamin Canac
0f25f8563e chore(deps): update 2024-01-17 23:50:07 +01:00
renovate[bot]
81126b299a chore(deps): update actions/cache action to v4 (#1248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-17 23:48:31 +01:00
Benjamin Canac
4ce8348a43 chore(Divider): clean code 2024-01-16 13:07:33 +01:00
Benjamin Canac
0776455a71 docs(accordion): add missing button colors 2024-01-16 13:07:13 +01:00
Benjamin Canac
1a937919a2 fix(InputMenu): take option-attribute into account to display label 2024-01-16 11:17:07 +01:00
Benjamin Canac
b9fe74bca5 fix(SelectMenu): take option-attribute into account to display label
Resolves #1151
2024-01-16 11:16:20 +01:00
Benjamin Canac
e116f931b2 docs(ComponentCard): wrap code in <template> 2024-01-16 11:07:08 +01:00
Benjamin Canac
393b992aeb docs(divider): remove useless color on example 2024-01-15 23:14:20 +01:00
Benjamin Canac
c187d367ff types(Link): add missing props 2024-01-15 16:05:39 +01:00
Benjamin Canac
d43fb835d8 chore(link): add missing props 2024-01-15 16:01:58 +01:00
Benjamin Canac
033fcfacd8 types(Tooltip): add interface 2024-01-15 14:47:20 +01:00
Benjamin Canac
e0977b2933 types(Chip): add missing fields 2024-01-15 14:47:20 +01:00
Benjamin Canac
4405d3239f fix(Tooltip): typo in kbd component 2024-01-15 14:47:20 +01:00
Mohamed Attia
a3a7201396 docs(installation): typo (#1235) 2024-01-14 17:51:47 +01:00
Benjamin Canac
29029ca8ae docs: bump @nuxt/ui-pro-edge 2024-01-12 11:52:25 +01:00
Benjamin Canac
2862741e5f docs(demo): add loading button 2024-01-12 11:50:49 +01:00
Benjamin Canac
e4fd20888b chore(Dropdown): use getNuxtLinkProps to bind items 2024-01-11 12:18:17 +01:00
Benjamin Canac
5c759c326d chore(Breadcrumb): chore(VerticalNavigation): use getULinkProps to bind links 2024-01-11 12:17:49 +01:00
Benjamin Canac
4c9c8d343a chore(VerticalNavigation): use getULinkProps to bind links 2024-01-11 12:17:29 +01:00
Benjamin Canac
28b736a703 chore(utils): improve link utils 2024-01-11 12:16:27 +01:00
Benjamin Canac
02d72df527 chore(Button): use utils to get link props 2024-01-11 11:25:00 +01:00
Benjamin Canac
a44bfc8511 fix(Button): pass-through nuxt link props to ULink 2024-01-11 11:15:27 +01:00
Benjamin Canac
b0df864379 fix(Link): prevent type bind on <a> 2024-01-11 11:15:08 +01:00
Benjamin Canac
969b02d936 docs(link): display props 2024-01-10 17:17:51 +01:00
Benjamin Canac
d3e19dc65a fix(Button): inherit nuxt link props without breaking nuxt-component-meta
Resolves #578
2024-01-10 16:58:47 +01:00
Benjamin Canac
cefa597664 test(Button): import from #components 2024-01-10 16:26:23 +01:00
Benjamin Canac
bad8a69a36 chore(github): improve pull request template 2024-01-10 12:52:17 +01:00
395 changed files with 18846 additions and 12854 deletions

View File

@@ -15,6 +15,7 @@ module.exports = {
'space-before-blocks': ['error', 'always'],
'space-infix-ops': ['error', { int32Hint: false }],
'no-multi-spaces': ['error', { ignoreEOLComments: true }],
'no-trailing-spaces': ['error'],
// Typescript
'@typescript-eslint/type-annotation-spacing': 'error',

View File

@@ -1,6 +1,6 @@
name: "🐛 Bug report"
description: Report a bug to help us improve the module.
labels: ["bug"]
labels: ["triage"]
body:
- type: markdown
attributes:

View File

@@ -4,5 +4,5 @@ contact_links:
url: https://ui.nuxt.com
about: Check the documentation for guides and examples.
- name: 📚 Discord
url: https://discord.com/channels/473401852243869706/1153996761426300948
about: Consider asking questions in the `#ui` channel.
url: https://go.nuxt.com/discord
about: Consider asking questions in the help channel.

View File

@@ -1,6 +1,6 @@
name: "🚀 Feature request"
description: Suggest an idea or enhancement for the module.
labels: ["enhancement"]
labels: ["triage"]
body:
- type: markdown
attributes:

View File

@@ -4,7 +4,7 @@
### 🔗 Linked issue
<!-- Please ensure there is an open issue and mention its number as: Fixes #123 -->
<!-- If it resolves an open issue, please link the issue here. For example "Resolves #123" -->
### ❓ Type of change
@@ -21,7 +21,6 @@
<!-- Describe your changes in detail -->
<!-- Why is this change required? What problem does it solve? -->
<!-- If it resolves an open issue, please link to the issue here. For example "Resolves #1337" -->
### 📝 Checklist

View File

@@ -19,41 +19,26 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [18]
node: [20]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps:
- uses: actions/setup-node@v4
- 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: checkout
uses: actions/checkout@master
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- uses: dorny/paths-filter@v2
- name: Filter changes
uses: dorny/paths-filter@v3
id: changes
with:
filters: |

View File

@@ -12,39 +12,23 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest] # macos-latest, windows-latest
node: [18]
node: [20]
env:
NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}
steps:
- uses: actions/setup-node@v4
- 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 }}
- name: checkout
uses: actions/checkout@master
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
cache: pnpm
- name: Install dependencies
run: pnpm install

23
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: stale
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
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

1
.gitignore vendored
View File

@@ -9,3 +9,4 @@ dist
.vercel
.idea
.env
.data

View File

@@ -1,2 +1 @@
imports.autoImport=false
typescript.includeWorkspace=true

View File

@@ -1,6 +1,7 @@
{
"git": {
"commitMessage": "chore(release): ${version}"
"commitMessage": "chore(release): v${version}",
"tagName": "v${version}"
},
"npm": {
"publish": false
@@ -11,7 +12,7 @@
"web": true
},
"hooks": {
"before:init": ["pnpm lint"]
"before:init": ["pnpm lint", "pnpm typecheck"]
},
"plugins": {
"@release-it/conventional-changelog": {

View File

@@ -1,5 +1,266 @@
# Changelog
## [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)
### ⚠ BREAKING CHANGES
* **forms:** normalize input emits (#1560)
### Features
* **Accordion:** emit `open` event with index ([#1559](https://github.com/nuxt/ui/issues/1559)) ([224ec3c](https://github.com/nuxt/ui/commit/224ec3c1fbfb9875398d3af60e5fe49e47ce55b1))
* **Alert:** add `icon` & `avatar` slots ([#1401](https://github.com/nuxt/ui/issues/1401)) ([cee3e12](https://github.com/nuxt/ui/commit/cee3e126a472735c0e484de315868bb28287164f))
* **Slideover:** open programmatically ([#1465](https://github.com/nuxt/ui/issues/1465)) ([e769759](https://github.com/nuxt/ui/commit/e7697595c8769ceea61690f6c2f294206de50972))
* **Toggle:** add `loading` prop ([#1546](https://github.com/nuxt/ui/issues/1546)) ([e1e05af](https://github.com/nuxt/ui/commit/e1e05af0bafd1e5d1b91f374562ed8d389fb0cae))
### Bug Fixes
* **ButtonGroup:** nested group elements ([#1530](https://github.com/nuxt/ui/issues/1530)) ([7658211](https://github.com/nuxt/ui/commit/765821153753d1a49276421511224336aebcdd2f))
* **Carousel:** add tab-based ARIA roles ([#1516](https://github.com/nuxt/ui/issues/1516)) ([e736eca](https://github.com/nuxt/ui/commit/e736ecafff59f9d4eb88b366ef1e9d26449b8ca3))
* **Checkbox:** bind `data-n-ids` to root element ([#1495](https://github.com/nuxt/ui/issues/1495)) ([a2b8b70](https://github.com/nuxt/ui/commit/a2b8b700df6ad0907a5d4d622d178d1345b55b83))
* **forms:** normalize input emits ([#1560](https://github.com/nuxt/ui/issues/1560)) ([92e7362](https://github.com/nuxt/ui/commit/92e736213b221d5ec8cfb8881fda4fc65ce7dfa0))
* **InputMenu:** trigger alignement on safari ([f4a48f6](https://github.com/nuxt/ui/commit/f4a48f6016ede664e4f46741e7811b0dbe0acfbe)), closes [#1505](https://github.com/nuxt/ui/issues/1505)
* opt in to `import.meta.*` properties ([#1561](https://github.com/nuxt/ui/issues/1561)) ([cc62e34](https://github.com/nuxt/ui/commit/cc62e345eb96a632730bed796c77afe7ecdadf2a))
* **Popover/Dropdown:** use `[@touchstart](https://github.com/touchstart).passive` instead of `[@touchstart](https://github.com/touchstart).prevent` ([#1520](https://github.com/nuxt/ui/issues/1520)) ([a563d8f](https://github.com/nuxt/ui/commit/a563d8fed44535107080fee094995d87ca5dc2b6))
* **SelectMenu:** `filteredOptions` might be undefined ([#1541](https://github.com/nuxt/ui/issues/1541)) ([b0ecac5](https://github.com/nuxt/ui/commit/b0ecac563c5702fe40cf42a8861b1d2d1366d423))
* **SelectMenu:** handle `Boolean` type as model value ([#1550](https://github.com/nuxt/ui/issues/1550)) ([c49f899](https://github.com/nuxt/ui/commit/c49f8999d319ec487672ebd68e8b3f0031843cd6))
## [2.14.2](https://github.com/nuxt/ui/compare/v2.14.1...v2.14.2) (2024-03-05)
### Bug Fixes
* **Alert:** improve `description` alignment when no title provided ([ca4f06a](https://github.com/nuxt/ui/commit/ca4f06a313314af5813007878a9b6c8f1003c6d1)), closes [#1408](https://github.com/nuxt/ui/issues/1408)
* **Checkbox:** label interaction without `FormGroup` ([#1427](https://github.com/nuxt/ui/issues/1427)) ([6e77f1d](https://github.com/nuxt/ui/commit/6e77f1d5144d7d87b0c76b43ecf3d731166c808b))
* **Dropdown:** active/inactive dropdown links ([#1407](https://github.com/nuxt/ui/issues/1407)) ([6a1142b](https://github.com/nuxt/ui/commit/6a1142b4032150def78c69080df455f7d2a25e7b))
* **Dropdown:** improve `hover` mode on touch devices ([70bf4a7](https://github.com/nuxt/ui/commit/70bf4a73921f47fcd41599874b595a6eed947f5a))
* **HorizontalNavigation:** add `relative` class to icon ([0a4a9e3](https://github.com/nuxt/ui/commit/0a4a9e3d2c4a7584570e4ab7ae6fe8265c960a33))
* **Modal:** remove `overflow-hidden` ([#1460](https://github.com/nuxt/ui/issues/1460)) ([002129c](https://github.com/nuxt/ui/commit/002129c29926df5a816288b916194ab28cf4c8a4))
* **Notification:** improve `description` alignment when no title provided ([9cce445](https://github.com/nuxt/ui/commit/9cce4456d03c52daca4d7347e60cbcd7f501317a))
* **Popover:** improve `hover` mode on touch devices ([b50fbcf](https://github.com/nuxt/ui/commit/b50fbcf760e908579e81f6e57234f2080e2bf035))
* **RadioGroup:** add missing `fieldset` config ([2d64b50](https://github.com/nuxt/ui/commit/2d64b50559946b166c02cfe921e63d746cdc09d4)), closes [#1472](https://github.com/nuxt/ui/issues/1472)
* **SelectMenu:** check `null` model value ([4b6e80e](https://github.com/nuxt/ui/commit/4b6e80e3646e263a83614830d9ec6adb0edf2ede)), closes [#1421](https://github.com/nuxt/ui/issues/1421)
* **Tooltip:** arrow not hidden on mobile ([272c19d](https://github.com/nuxt/ui/commit/272c19de708144b1b132b98a7287254974f4e144)), closes [#1470](https://github.com/nuxt/ui/issues/1470)
* **VerticalNavigation:** add `relative` class to icon ([0b29dd4](https://github.com/nuxt/ui/commit/0b29dd4ca560cac7d151132e086eab17c0498a5c)), closes [#1245](https://github.com/nuxt/ui/issues/1245)
## [2.14.1](https://github.com/nuxt/ui/compare/v2.14.0...v2.14.1) (2024-02-23)
### Bug Fixes
* **module:** revert tailwind config from [#1272](https://github.com/nuxt/ui/issues/1272) ([#1404](https://github.com/nuxt/ui/issues/1404)) ([ba15add](https://github.com/nuxt/ui/commit/ba15add4db5d2f84e987819628cbbf88edcbad57))
## [2.14.0](https://github.com/nuxt/ui/compare/v2.13.0...v2.14.0) (2024-02-22)
### Features
* **Carousel:** expose methods to allow autoplay ([41ecd2a](https://github.com/nuxt/ui/commit/41ecd2a3d553886db3e32d9f48a477268d93f3c6)), closes [#1300](https://github.com/nuxt/ui/issues/1300)
* **Divider:** handle `size` prop ([#1307](https://github.com/nuxt/ui/issues/1307)) ([cbeede6](https://github.com/nuxt/ui/commit/cbeede66bb3bd7778e03c19ebbf55bf7bd753cb8))
* **Form:** use nuxt `useId` to bind input labels ([#1211](https://github.com/nuxt/ui/issues/1211)) ([27c71fa](https://github.com/nuxt/ui/commit/27c71fa40ecb9f8524fee7f3d17a384bc8812d25))
* **Input:** handle type `file` ([946a39c](https://github.com/nuxt/ui/commit/946a39c73990dc352cf7b9a77bfaec339cdcab34)), closes [#563](https://github.com/nuxt/ui/issues/563)
* **Modal:** open programmatically ([#1319](https://github.com/nuxt/ui/issues/1319)) ([6f29c62](https://github.com/nuxt/ui/commit/6f29c620ab758e27be63f8af53674828b59fb6ed))
* **Table:** display progress bar when `loading` ([#1362](https://github.com/nuxt/ui/issues/1362)) ([3fe3521](https://github.com/nuxt/ui/commit/3fe35217cbc0cef7f41550c175e4e7ea2cc939a8))
* **Tabs:** add `unmount` prop as `false` by default ([843a978](https://github.com/nuxt/ui/commit/843a9786445f6170c1380e3b404151da52b5a154)), closes [#663](https://github.com/nuxt/ui/issues/663)
* **Textarea:** add `maxrows` prop to restrict autoresize ([#1302](https://github.com/nuxt/ui/issues/1302)) ([f643e7b](https://github.com/nuxt/ui/commit/f643e7b316639a79cf03da25250ab0fa85f466d5))
### Bug Fixes
* **Accordion:** style disclosure `div` after [#1199](https://github.com/nuxt/ui/issues/1199) ([882247e](https://github.com/nuxt/ui/commit/882247e5f40bf41fdfdffea501de5c898a7fb0b2))
* **Alert:** remove `required` title to prevent warning when using slot ([e545b6f](https://github.com/nuxt/ui/commit/e545b6f0a128475166dcea3c1028798b106805f3))
* **Card:** prevent `body` padding without default slot ([f682905](https://github.com/nuxt/ui/commit/f682905b26a22546634e9adc4b838a7741dbd7c9))
* **components:** hydration attribute mismatch with vue `3.4` ([#1199](https://github.com/nuxt/ui/issues/1199)) ([10db144](https://github.com/nuxt/ui/commit/10db14475f7a527180be3fcf33cc5d3af52452c9))
* **Form:** improve `validate` path type ([#1370](https://github.com/nuxt/ui/issues/1370)) ([5266591](https://github.com/nuxt/ui/commit/5266591c886422d5265e46e08e1276913d12bed1))
* **Form:** return false when silent validation fails ([#1371](https://github.com/nuxt/ui/issues/1371)) ([d4b6147](https://github.com/nuxt/ui/commit/d4b6147fcceb7ff9cebe1586bb3094b10f50acb5))
* **Link:** check `disabled` prop before navigating ([#1321](https://github.com/nuxt/ui/issues/1321)) ([ac42ec1](https://github.com/nuxt/ui/commit/ac42ec106ff259e1d44515e5fb3b5236559ac713))
* **Meter:** missing import of `Icon` component ([f8b296f](https://github.com/nuxt/ui/commit/f8b296fc60b93c4656fd397f8eb6b06b4a1dcd93)), closes [#1328](https://github.com/nuxt/ui/issues/1328)
* **module:** prevent tailwind warn with `bun` ([bb40c31](https://github.com/nuxt/ui/commit/bb40c3103174a039f65b31c65fcc5d40cb29ce6b)), closes [#809](https://github.com/nuxt/ui/issues/809)
* **module:** put back `all` option in icons plugin ([412cd75](https://github.com/nuxt/ui/commit/412cd75eddb6140d7d9b3358b04df1e61f22b481)), closes [#1237](https://github.com/nuxt/ui/issues/1237)
* **Notification:** remove `required` title to prevent warning when using slot ([aa2b1ca](https://github.com/nuxt/ui/commit/aa2b1cae8881dece9a629dc95a8f9df88f9bbd27))
* **Progress:** prevent `NaN` percent display when indeterminate ([a55a08a](https://github.com/nuxt/ui/commit/a55a08a91eca6f4c7ff3ad40ee566b6445d2dfd0))
* **RadioGroup:** pass `help` prop to radio children ([5a5b284](https://github.com/nuxt/ui/commit/5a5b284e967ca9cdb6c7df9809ed4f4569a65cfa)), closes [#1313](https://github.com/nuxt/ui/issues/1313)
* **SelectMenu:** revert component `is` after [#1199](https://github.com/nuxt/ui/issues/1199) ([d0f4530](https://github.com/nuxt/ui/commit/d0f4530e8572a08d544041dec1f24a51bbc3b1e8))
* **utils:** prevent merge of `popper` key ([9f35297](https://github.com/nuxt/ui/commit/9f352976ced5845a5fad00a6630d0166941a8a13)), closes [#1393](https://github.com/nuxt/ui/issues/1393)
### Reverts
* Revert "docs: add missing `overflow-hidden` on components" ([b893607](https://github.com/nuxt/ui/commit/b8936070f9e1f866a21d39f6c45140f86efebec4))
## [2.13.0](https://github.com/nuxt/ui/compare/v2.12.3...v2.13.0) (2024-01-30)
### ⚠ BREAKING CHANGES
* **VerticalNavigation:** use `Badge` component for consistency
### Features
* **Carousel:** new component ([#927](https://github.com/nuxt/ui/issues/927)) ([f37b043](https://github.com/nuxt/ui/commit/f37b0431382867c24a0eff511ae151115cdfa2a2))
* **Dropdown:** default delay from config ([c4a1c04](https://github.com/nuxt/ui/commit/c4a1c04174d612e8c4cdd430067a3bdf3d69f4bf))
* **Form:** handle multiple paths in `validate` ([#1273](https://github.com/nuxt/ui/issues/1273)) ([20ac4b3](https://github.com/nuxt/ui/commit/20ac4b3332267491067f3a5a393ca97e3ec6bab5))
* **HorizontalNavigation:** new component ([#1279](https://github.com/nuxt/ui/issues/1279)) ([b8007ba](https://github.com/nuxt/ui/commit/b8007bab5efde70a375d6e3b9be91a0b698485b1))
* **InputMenu:** handle `nullable` prop when clearing input ([5e49fb8](https://github.com/nuxt/ui/commit/5e49fb8736e01889b8f7a60cf0edc420e49fe52c))
* **Modal/Slideover:** emit `close-prevented` event ([#1207](https://github.com/nuxt/ui/issues/1207)) ([6faf15b](https://github.com/nuxt/ui/commit/6faf15bc7460d7473ec47de48e407d45cf7d2e26))
* **module:** add option to disable global css styles ([#1266](https://github.com/nuxt/ui/issues/1266)) ([f96eb5e](https://github.com/nuxt/ui/commit/f96eb5e8b794af75303a98fa38e5285bcf928614))
* **Popover:** default delay from config ([7f5711b](https://github.com/nuxt/ui/commit/7f5711bc76cc509079934fd15ebbccb82bced064))
* **Tooltip:** default delay from config ([3400b56](https://github.com/nuxt/ui/commit/3400b56d82c1713e67838ba246bba687f3056fe6))
* **VerticalNavigation:** use `Badge` component for consistency ([3e81eee](https://github.com/nuxt/ui/commit/3e81eee6e6dc066dda9e2270e183a76bc8695996))
### Bug Fixes
* **Breadrumb:** handle truncate ([5d3a962](https://github.com/nuxt/ui/commit/5d3a962782781e4204d24a2f240974612912f7ee))
* **Link:** propagate `active` prop to slot as `isActive` ([b76e761](https://github.com/nuxt/ui/commit/b76e761bbb98fe7bbd19fba16220e26fd96e9731))
* **Select:** consistent placeholder with input and textarea ([2cb41db](https://github.com/nuxt/ui/commit/2cb41db111da79f4f3f8ccd825071820050ba885)), closes [#1276](https://github.com/nuxt/ui/issues/1276)
* **Slideover:** handle translate in RTL mode ([#1259](https://github.com/nuxt/ui/issues/1259)) ([ea58c88](https://github.com/nuxt/ui/commit/ea58c88baab3a0684e5b0140895ee630087ea044))
## [2.12.3](https://github.com/nuxt/ui/compare/v2.12.2...v2.12.3) (2024-01-18)
### Bug Fixes
* **link:** import type from `[#vue](https://github.com/nuxt/ui/issues/vue)-router` ([79ec3fd](https://github.com/nuxt/ui/commit/79ec3fd031e28d15854e2f0d4fb978df337e43d5)), closes [#1253](https://github.com/nuxt/ui/issues/1253)
## [2.12.2](https://github.com/nuxt/ui/compare/v2.12.1...v2.12.2) (2024-01-18)
### Bug Fixes
* **link:** improve nuxt link `rel` type ([05e90aa](https://github.com/nuxt/ui/commit/05e90aa1d13ab1772189d33278f482405ff88975))
## [2.12.1](https://github.com/nuxt/ui/compare/v2.12.0...v2.12.1) (2024-01-18)
### Bug Fixes
* **Button:** inherit nuxt link props without breaking `nuxt-component-meta` ([d3e19dc](https://github.com/nuxt/ui/commit/d3e19dc65a530201c3adc7738e95e5a09b0a9274)), closes [#578](https://github.com/nuxt/ui/issues/578)
* **Button:** pass-through nuxt link props to `ULink` ([a44bfc8](https://github.com/nuxt/ui/commit/a44bfc85114bed15ed25bb8c79d7ed52adc8d43c))
* **InputMenu:** take `option-attribute` into account to display label ([1a93791](https://github.com/nuxt/ui/commit/1a937919a26546cfd7edb3f6a11ef790d401999d))
* **Link:** prevent `type` bind on `<a>` ([b0df864](https://github.com/nuxt/ui/commit/b0df86437902696b594e5e7042601506a8bf4436))
* **SelectMenu:** take `option-attribute` into account to display label ([b9fe74b](https://github.com/nuxt/ui/commit/b9fe74bca5f48555e76c16237c2acc868f69e243)), closes [#1151](https://github.com/nuxt/ui/issues/1151)
* **Tooltip:** typo in kbd component ([4405d32](https://github.com/nuxt/ui/commit/4405d3239f7e19d399659347f079555318b3231b))
## [2.12.0](https://github.com/nuxt/ui/compare/v2.11.1...v2.12.0) (2024-01-09)

View File

@@ -1,4 +1,4 @@
[![nuxt-ui-social-card](https://repository-images.githubusercontent.com/428329515/43fec891-9030-4601-8233-5d45ba5c6013)](https://ui.nuxt.com)
[![nuxt-ui.png](https://repository-images.githubusercontent.com/428329515/43fec891-9030-4601-8233-5d45ba5c6013)](https://ui.nuxt.com)
# Nuxt UI
@@ -7,9 +7,9 @@
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]
Nuxt UI provides everything related to UI when building Nuxt applications: components, icons, colors, dark mode and also keyboard shortcuts.
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.
Is has been developed by [NuxtLabs](https://nuxtlabs.com/) for [Volta](https://volta.net), [Nuxt Studio](https://nuxt.studio/) and the Nuxt community.
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.
## Features
@@ -27,24 +27,7 @@ Read more on [ui.nuxt.com](https://ui.nuxt.com)
## Installation
```bash
# Using npm
npm install @nuxt/ui
# Using yarn
yarn add @nuxt/ui
# Using pnpm
pnpm add @nuxt/ui
```
Then, register the module in your `nuxt.config.ts`:
```js
export default defineNuxtConfig({
modules: [
'@nuxt/ui'
]
})
npx nuxi@latest module add ui
```
If you want latest updates, please use `@nuxt/ui-edge` in your `package.json`:

View File

@@ -1 +0,0 @@
imports.autoImport=true

View File

@@ -1,6 +1,10 @@
<!-- eslint-disable vue/no-v-html -->
<template>
<div>
<NuxtLoadingIndicator />
<Banner v-if="!$route.path.startsWith('/examples')" />
<Header v-if="!$route.path.startsWith('/examples')" :links="links" />
<NuxtLayout>
@@ -10,7 +14,7 @@
<Footer v-if="!$route.path.startsWith('/examples')" />
<ClientOnly>
<LazyUDocsSearch ref="searchRef" :files="files" :navigation="navigation" :groups="groups" :links="links" />
<LazyUContentSearch ref="searchRef" :files="files" :navigation="navigation" :links="links" :fuse="{ resultLimit: 42 }" />
</ClientOnly>
<UNotifications>
@@ -18,19 +22,21 @@
<span v-html="title" />
</template>
</UNotifications>
<UModals />
<USlideovers />
</div>
</template>
<script setup lang="ts">
import { withoutTrailingSlash } from 'ufo'
import { debounce } from 'perfect-debounce'
import type { ParsedContent } from '@nuxt/content/dist/runtime/types'
import type { ParsedContent } from '@nuxt/content'
const searchRef = ref()
const route = useRoute()
const colorMode = useColorMode()
const { branch, branches } = useContentSource()
const { branch } = useContentSource()
const { data: nav } = await useAsyncData('navigation', () => fetchContentNavigation())
const { data: files } = useLazyFetch<ParsedContent[]>('/api/search.json', { default: () => [], server: false })
@@ -48,54 +54,31 @@ const navigation = computed(() => {
]
}
return nav.value.filter(item => item._path !== '/dev')
})
const groups = computed(() => {
if (route.path === '/') {
return []
}
return [{ key: 'branch', label: 'Branch', commands: branches.value }]
return nav.value?.filter(item => item._path !== '/dev') || []
})
const color = computed(() => colorMode.value === 'dark' ? '#18181b' : 'white')
const links = computed(() => {
return [{
label: 'Documentation',
label: 'Docs',
icon: 'i-heroicons-book-open',
to: `${branch.value?.name === 'dev' ? '/dev' : ''}/getting-started`
}, {
label: 'Playground',
icon: 'i-simple-icons-stackblitz',
to: '/playground'
}, {
label: 'Roadmap',
icon: 'i-heroicons-academic-cap',
to: '/roadmap'
}, !!navigation.value.find(item => item._path === '/pro') && {
to: branch.value?.name === 'dev' ? '/dev/getting-started' : '/getting-started',
active: branch.value?.name === 'dev' ? (route.path.startsWith('/dev/getting-started') || route.path.startsWith('/dev/components')) : (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',
children: [{
label: 'Features',
to: '/pro',
exact: true,
icon: 'i-heroicons-beaker',
description: 'Discover all the features of Nuxt UI Pro.'
}, {
label: 'Guide',
to: '/pro/guide',
icon: 'i-heroicons-book-open',
description: 'Learn how to use Nuxt UI Pro in your app.'
}, {
label: 'Components',
to: '/pro/components',
icon: 'i-heroicons-cube-transparent',
description: 'Discover all the components available in Nuxt UI Pro.'
}]
active: route.path.startsWith('/pro/getting-started') || route.path.startsWith('/pro/components') || route.path.startsWith('/pro/prose')
}, {
label: 'Pricing',
icon: 'i-heroicons-ticket',
to: '/pro/pricing'
}, {
label: 'Templates',
icon: 'i-heroicons-computer-desktop',
to: '/pro/templates'
}] : []), {
label: 'Releases',
icon: 'i-heroicons-rocket-launch',
to: '/releases'

View File

@@ -0,0 +1,58 @@
<script setup lang="ts">
const id = 'nuxt-ui-banner-1'
const to = '/pro/pricing'
const hideBanner = () => {
localStorage.setItem(id, 'true')
document.querySelector('html')?.classList.add('hide-banner')
}
if (process.server) {
useHead({
script: [{
key: 'prehydrate-template-banner',
innerHTML: `
if (localStorage.getItem('${id}') === 'true') {
document.querySelector('html').classList.add('hide-banner')
}`.replace(/\s+/g, ' '),
type: 'text/javascript'
}]
})
}
</script>
<template>
<div class="relative bg-primary hover:bg-primary/90 transition-[background] backdrop-blur z-50 app-banner">
<UContainer class="py-2">
<NuxtLink v-if="to" :to="to" class="focus:outline-none" aria-label="Nuxt UI Pro pricing" tabindex="-1">
<span class="absolute inset-0 " aria-hidden="true" />
</NuxtLink>
<div class="flex items-center justify-between gap-2">
<div class="lg:flex-1 hidden lg:flex items-center" />
<p class="text-sm font-medium text-white dark:text-gray-900">
<UIcon name="i-heroicons-rocket-launch" class="w-5 h-5 align-top flex-shrink-0 pointer-events-none mr-2" />
<span class="font-semibold">Nuxt UI Pro v1.0</span> is out with dashboard components!
</p>
<div class="flex items-center justify-end lg:flex-1">
<button
class="p-1.5 rounded-md inline-flex hover:bg-primary/90"
aria-label="Close banner"
@click.prevent="hideBanner"
>
<UIcon name="i-heroicons-x-mark-20-solid" class="w-5 h-5 text-white dark:text-gray-900" />
</button>
</div>
</div>
</UContainer>
</div>
</template>
<style scoped>
.hide-banner .app-banner {
display: none;
}
</style>

View File

@@ -1,36 +1,34 @@
<template>
<div class="mb-3 lg:mb-6">
<label for="branch" class="block mb-1.5 font-semibold text-sm/6">Version</label>
<USelectMenu
id="branch"
:model-value="branch"
name="branch"
:options="branches"
<UDropdown
class="w-full"
:items="[branches]"
color="gray"
:ui="{ icon: { trailing: { padding: { sm: 'pe-1.5' } } } }"
:ui-menu="{ option: { container: 'gap-1.5' } }"
@update:model-value="select"
mode="hover"
:ui="{ width: 'w-full' }"
:popper="{ strategy: 'absolute', placement: 'bottom' }"
>
<template #label>
<UButton color="gray" class="w-full">
<UIcon v-if="branch.icon" :name="branch.icon" class="w-4 h-4 flex-shrink-0 text-gray-600 dark:text-gray-300" />
<span class="font-medium">{{ branch.label }}</span>
<span class="text-gray-900 dark:text-white">{{ branch.label }}</span>
<span class="truncate text-gray-400 dark:text-gray-500">{{ branch.suffix }}</span>
<span class="text-gray-400 dark:text-gray-500">{{ branch.suffix }}</span>
<UIcon name="i-heroicons-chevron-down-20-solid" class="w-5 h-5 text-gray-400 dark:text-gray-500 ml-auto -mr-1" />
</UButton>
<template #item="{ item }">
<UIcon v-if="item.icon" :name="item.icon" class="w-4 h-4 flex-shrink-0 text-gray-600 dark:text-gray-300" />
<span>{{ item.label }}</span>
<span class="truncate text-gray-400 dark:text-gray-500">{{ item.suffix }}</span>
</template>
<template #option="{ option }">
<UIcon v-if="option.icon" :name="option.icon" class="w-4 h-4 flex-shrink-0 text-gray-600 dark:text-gray-300" />
<span class="font-medium">{{ option.label }}</span>
<span class="truncate text-gray-400 dark:text-gray-500">{{ option.suffix }}</span>
</template>
</USelectMenu>
</UDropdown>
</div>
</template>
<script setup lang="ts">
const { branches, branch, select } = useContentSource()
const { branches, branch } = useContentSource()
</script>

View File

@@ -5,21 +5,19 @@
</div>
</div>
<UFooter>
<UFooter :links="links">
<template #left>
<a v-if="$route.path.startsWith('/pro')" class="text-sm text-gray-500 dark:text-gray-400 hover:underline" href="https://ui.nuxt.com/pro/purchase" target="_blank">
Purchase Nuxt UI Pro
</a>
<span v-else class="text-sm text-gray-500 dark:text-gray-400">
Published under <NuxtLink to="https://github.com/nuxt/ui" target="_blank" class="text-gray-900 dark:text-white">
MIT License
</NuxtLink>
</span>
<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>
</template>
<template #right>
<UButton aria-label="Nuxt Website" icon="i-simple-icons-nuxtdotjs" to="https://nuxt.com" target="_blank" v-bind="($ui.button.secondary as any)" />
<UButton aria-label="Nuxt UI on Discord" icon="i-simple-icons-discord" to="https://discord.com/invite/ps2h6QT" target="_blank" v-bind="($ui.button.secondary as any)" />
<UButton aria-label="Nuxt UI on Discord" icon="i-simple-icons-discord" to="https://chat.nuxt.dev" target="_blank" v-bind="($ui.button.secondary as any)" />
<UButton aria-label="Nuxt on X" icon="i-simple-icons-x" to="https://x.com/nuxt_js" target="_blank" v-bind="($ui.button.secondary as any)" />
<UButton aria-label="Nuxt UI on GitHub" icon="i-simple-icons-github" to="https://github.com/nuxt/ui" target="_blank" v-bind="($ui.button.secondary as any)" />
</template>
@@ -27,5 +25,23 @@
</template>
<script setup lang="ts">
// force typescript
const links = [{
icon: 'i-simple-icons-figma',
label: 'Figma Kit',
to: 'https://www.figma.com/community/file/1288455405058138934',
target: '_blank'
}, {
label: 'Playground',
icon: 'i-simple-icons-stackblitz',
to: 'https://stackblitz.com/edit/nuxt-ui',
target: '_blank'
}, {
label: 'Roadmap',
icon: 'i-heroicons-map',
to: '/roadmap'
}, {
label: 'Releases',
icon: 'i-heroicons-rocket-launch',
to: '/releases'
}]
</script>

View File

@@ -0,0 +1,34 @@
<template>
<svg viewBox="0 0 1440 181" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="path-1-inside-1_1086_7239" fill="white">
<path d="M0 0H1440V181H0V0Z" />
</mask>
<path d="M0 0H1440V181H0V0Z" fill="url(#paint0_linear_1086_7239)" fill-opacity="0.22" />
<path d="M0 2H1440V-2H0V2Z" fill="url(#paint1_linear_1086_7239)" mask="url(#path-1-inside-1_1086_7239)" />
<defs>
<linearGradient
id="paint0_linear_1086_7239"
x1="720"
y1="0"
x2="720"
y2="181"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="rgb(var(--color-primary-DEFAULT))" />
<stop offset="1" stop-color="rgb(var(--color-primary-DEFAULT))" stop-opacity="0" />
</linearGradient>
<linearGradient
id="paint1_linear_1086_7239"
x1="0"
y1="90.5"
x2="1440"
y2="90.5"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="rgb(var(--color-primary-DEFAULT))" stop-opacity="0" />
<stop offset="0.395" stop-color="rgb(var(--color-primary-DEFAULT))" />
<stop offset="1" stop-color="rgb(var(--color-primary-DEFAULT))" stop-opacity="0" />
</linearGradient>
</defs>
</svg>
</template>

View File

@@ -7,16 +7,19 @@
}"
>
<template #left>
<NuxtLink to="/" class="flex items-end gap-1.5 font-bold text-xl text-gray-900 dark:text-white" aria-label="Nuxt UI">
<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 v-if="$route.path.startsWith('/pro')" label="Pro" variant="subtle" size="xs" class="-mb-[2px] rounded font-semibold" />
<UBadge v-if="$route.path.startsWith('/dev')" label="Edge" variant="subtle" size="xs" class="-mb-[2px] rounded font-semibold" />
</NuxtLink>
</template>
<template #right>
<ColorPicker />
<UTooltip text="Search" :shortcuts="[metaSymbol, 'K']">
<UDocsSearchButton :label="null" />
<UTooltip text="Search" :shortcuts="[metaSymbol, 'K']" :popper="{ strategy: 'absolute' }">
<UContentSearchButton :label="null" />
</UTooltip>
<UColorModeButton />
@@ -33,9 +36,9 @@
<template #panel>
<UAsideLinks :links="links" />
<UDivider type="dashed" class="mt-4 mb-3" />
<UDivider type="dashed" class="my-4" />
<BranchSelect v-if="!route.path.startsWith('/pro')" />
<BranchSelect />
<UNavigationTree :links="mapContentNavigation(navigation)" :multiple="false" default-open />
</template>
@@ -43,11 +46,11 @@
</template>
<script setup lang="ts">
import type { NavItem } from '@nuxt/content/dist/runtime/types'
import type { Link } from '#ui-pro/types'
import type { NavItem } from '@nuxt/content'
import type { HeaderLink } from '#ui-pro/types'
defineProps<{
links: Link[]
links: HeaderLink[]
}>()
const route = useRoute()

View File

@@ -1,8 +1,4 @@
<script lang="ts" setup>
defineOptions({
inheritAttrs: false
})
defineProps({
title: {
type: String,

View File

@@ -5,8 +5,8 @@
</NuxtLink>
<UColorModeImage
light="/pro/illustrations/docs-light.svg"
dark="/pro/illustrations/docs-dark.svg"
light="/illustrations/pro-light.svg"
dark="/illustrations/pro-dark.svg"
alt="Nuxt UI Pro"
loading="lazy"
class="w-full"
@@ -16,7 +16,7 @@
<div class="inline-flex gap-1.5">
<Logo class="h-4 w-auto" />
<UBadge variant="subtle" size="xs" label="Pro" class="font-semibold" />
<UBadge variant="subtle" size="xs" label="Pro" class="font-semibold rounded" />
</div>
<p class="text-sm text-gray-500 dark:text-gray-400 group-hover/ad:text-gray-700 dark:group-hover/ad:text-gray-200 mt-1 transition-colors">

View File

@@ -1,5 +1,5 @@
<template>
<UPopover mode="hover">
<UPopover mode="hover" :popper="{ strategy: 'absolute' }" :ui="{ width: 'w-[156px]' }">
<template #default="{ open }">
<UButton color="gray" variant="ghost" square :class="[open && 'bg-gray-50 dark:bg-gray-800']" aria-label="Color picker">
<UIcon name="i-heroicons-swatch-20-solid" class="w-5 h-5 text-primary-500 dark:text-primary-400" />

View File

@@ -51,11 +51,9 @@
</template>
<script setup lang="ts">
// @ts-expect-error
import { transformContent } from '@nuxt/content/transformers'
// @ts-ignore
import { useShikiHighlighter } from '@nuxtjs/mdc/runtime'
import { upperFirst, camelCase, kebabCase } from 'scule'
import { useShikiHighlighter } from '~/composables/useShikiHighlighter'
// eslint-disable-next-line vue/no-dupe-keys
const props = defineProps({
@@ -124,6 +122,7 @@ const componentProps = reactive({ ...props.props })
const { $prettier } = useNuxtApp()
const appConfig = useAppConfig()
const route = useRoute()
const highlighter = useShikiHighlighter()
let name = props.slug || `U${upperFirst(camelCase(route.params.slug[route.params.slug.length - 1]))}`
@@ -217,6 +216,7 @@ const propsToSelect = computed(() => Object.keys(componentProps).map((key) => {
// eslint-disable-next-line vue/no-dupe-keys
const code = computed(() => {
let code = `\`\`\`html
<template>
<${name}`
for (const [key, value] of Object.entries(fullProps.value)) {
if (value === 'undefined' || value === null) {
@@ -246,7 +246,7 @@ const code = computed(() => {
} else {
code += ' />'
}
code += `
code += `\n</template>
\`\`\`
`
return code
@@ -268,8 +268,6 @@ function renderObject (obj: any) {
return obj
}
const shikiHighlighter = useShikiHighlighter({})
const codeHighlighter = async (code: string, lang: string, theme: any, highlights: number[]) => shikiHighlighter.getHighlightedAST(code, lang, theme, { highlights })
const { data: ast } = await useAsyncData(
`${name}-ast-${JSON.stringify({ props: componentProps, slots: props.slots, code: props.code })}`,
async () => {
@@ -283,7 +281,7 @@ const { data: ast } = await useAsyncData(
return transformContent('content:_markdown.md', formatted, {
markdown: {
highlight: {
highlighter: codeHighlighter,
highlighter,
theme: {
light: 'material-theme-lighter',
default: 'material-theme',

View File

@@ -1,6 +1,7 @@
<template>
<div class="[&>div>pre]:!rounded-t-none [&>div>pre]:!mt-0">
<div
v-if="hasPreview"
class="flex border border-gray-200 dark:border-gray-700 relative rounded-t-md"
:class="[{ 'p-4': padding, 'rounded-b-md': !hasCode, 'border-b-0': hasCode, 'not-prose': !prose }, backgroundClass, extraClass]"
>
@@ -12,7 +13,7 @@
<ContentSlot v-if="$slots.default" :use="$slots.default" />
</div>
<template v-if="hasCode">
<ContentSlot v-if="$slots.code" :use="$slots.code" />
<slot v-if="$slots.code" name="code" />
<ContentRenderer v-else :value="ast" class="[&>div>pre]:!rounded-t-none [&>div>pre]:!mt-0" />
</template>
</div>
@@ -21,10 +22,8 @@
<script setup lang="ts">
import { camelCase } from 'scule'
import { fetchContentExampleCode } from '~/composables/useContentExamplesCode'
// @ts-expect-error
import { transformContent } from '@nuxt/content/transformers'
// @ts-ignore
import { useShikiHighlighter } from '@nuxtjs/mdc/runtime'
import { useShikiHighlighter } from '~/composables/useShikiHighlighter'
const props = defineProps({
component: {
@@ -39,6 +38,10 @@ const props = defineProps({
type: Object,
default: () => ({})
},
hiddenPreview: {
type: Boolean,
default: false
},
hiddenCode: {
type: Boolean,
default: false
@@ -78,15 +81,15 @@ if (['command-palette-theme-algolia', 'command-palette-theme-raycast', 'vertical
const instance = getCurrentInstance()
const camelName = camelCase(component)
const data = await fetchContentExampleCode(camelName)
const highlighter = useShikiHighlighter()
const hasCode = computed(() => !props.hiddenCode && (data?.code || instance.slots.code))
const hasPreview = computed(() => !props.hiddenPreview && (props.component || instance.slots.default))
const shikiHighlighter = useShikiHighlighter({})
const codeHighlighter = async (code: string, lang: string, theme: any, highlights: number[]) => shikiHighlighter.getHighlightedAST(code, lang, theme, { highlights })
const { data: ast } = await useAsyncData(`content-example-${camelName}-ast`, () => transformContent('content:_markdown.md', `\`\`\`vue\n${data?.code ?? ''}\n\`\`\``, {
markdown: {
highlight: {
highlighter: codeHighlighter,
highlighter,
theme: {
light: 'material-theme-lighter',
default: 'material-theme',

View File

@@ -3,9 +3,10 @@
</template>
<script setup lang="ts">
// @ts-expect-error
import { transformContent } from '@nuxt/content/transformers'
import { upperFirst, camelCase } from 'scule'
import json5 from 'json5'
import { useShikiHighlighter } from '~/composables/useShikiHighlighter'
import * as config from '#ui/ui.config'
const props = defineProps({
@@ -16,6 +17,7 @@ const props = defineProps({
})
const route = useRoute()
const highlighter = useShikiHighlighter()
// eslint-disable-next-line vue/no-dupe-keys
const slug = props.slug || route.params.slug[route.params.slug.length - 1]
const camelName = camelCase(slug)
@@ -24,15 +26,18 @@ const name = `U${upperFirst(camelName)}`
const preset = config[camelName]
const { data: ast } = await useAsyncData(`${name}-preset`, () => transformContent('content:_markdown.md', `
\`\`\`json
${JSON.stringify(preset, null, 2)}
\`\`\`yml
${json5.stringify(preset, null, 2)}
\`\`\`\
`, {
highlight: {
theme: {
light: 'material-theme-lighter',
default: 'material-theme',
dark: 'material-theme-palenight'
markdown: {
highlight: {
highlighter,
theme: {
light: 'material-theme-lighter',
default: 'material-theme',
dark: 'material-theme-palenight'
}
}
}
}))

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [{
label: 'Getting Started',
icon: 'i-heroicons-information-circle',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [{
label: 'Getting Started',
icon: 'i-heroicons-information-circle',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [{
label: 'Getting Started',
icon: 'i-heroicons-information-circle',
@@ -61,9 +61,7 @@ const items = [{
</div>
<div class="flex flex-col items-center">
<code>$ npm i @nuxt/ui</code>
<code>$ yarn add @nuxt/ui</code>
<code>$ pnpm add @nuxt/ui</code>
<code>$ npx nuxi@latest module add ui</code>
</div>
</template>
</UAccordion>

View File

@@ -0,0 +1,19 @@
<template>
<UAlert
title="Customize Alert Avatar"
description="Insert custom content into the avatar slot!"
:avatar="{
src: 'https://avatars.githubusercontent.com/u/739984?v=4',
alt: 'Avatar'
}"
>
<template #avatar="{ avatar }">
<UAvatar
v-bind="avatar"
chip-color="primary"
chip-text=""
chip-position="top-right"
/>
</template>
</UAlert>
</template>

View File

@@ -0,0 +1,9 @@
<template>
<UAlert title="Customize Alert Icon" description="Insert custom content into the icon slot!" icon="i-heroicons-command-line">
<template #icon="{ icon }">
<UBadge size="sm">
<UIcon :name="icon" />
</UBadge>
</template>
</UAlert>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const links = [{
label: 'Home',
icon: 'i-heroicons-home',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const links = [{
label: 'Home',
to: '/'
@@ -12,7 +12,7 @@ const links = [{
<template>
<UBreadcrumb :links="links">
<template #default="{ link, isActive, index }">
<UBadge :color="isActive ? 'primary' : 'gray'" class="rounded-full">
<UBadge :color="isActive ? 'primary' : 'gray'" class="rounded-full truncate">
{{ index + 1 }}. {{ link.label }}
</UBadge>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const links = [{
label: 'Home',
icon: 'i-heroicons-home',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const links = [{
label: 'Home',
to: '/'

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/800?random=1',
'https://picsum.photos/600/800?random=2',
'https://picsum.photos/600/800?random=3',
'https://picsum.photos/600/800?random=4',
'https://picsum.photos/600/800?random=5',
'https://picsum.photos/600/800?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items">
<img :src="item" width="300" height="400" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/1920/1080?random=1',
'https://picsum.photos/1920/1080?random=2',
'https://picsum.photos/1920/1080?random=3',
'https://picsum.photos/1920/1080?random=4',
'https://picsum.photos/1920/1080?random=5',
'https://picsum.photos/1920/1080?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-full' }" class="rounded-lg overflow-hidden" arrows>
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,35 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/800?random=1',
'https://picsum.photos/600/800?random=2',
'https://picsum.photos/600/800?random=3',
'https://picsum.photos/600/800?random=4',
'https://picsum.photos/600/800?random=5',
'https://picsum.photos/600/800?random=6'
]
</script>
<template>
<UCarousel
v-slot="{ item }"
:items="items"
:ui="{
item: 'basis-full',
container: 'rounded-lg'
}"
:prev-button="{
color: 'gray',
icon: 'i-heroicons-arrow-left-20-solid',
class: '-left-12'
}"
:next-button="{
color: 'gray',
icon: 'i-heroicons-arrow-right-20-solid',
class: '-right-12'
}"
arrows
class="w-64 mx-auto"
>
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,37 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/1920/1080?random=1',
'https://picsum.photos/1920/1080?random=2',
'https://picsum.photos/1920/1080?random=3',
'https://picsum.photos/1920/1080?random=4',
'https://picsum.photos/1920/1080?random=5',
'https://picsum.photos/1920/1080?random=6'
]
const carouselRef = ref()
onMounted(() => {
setInterval(() => {
if (!carouselRef.value) return
if (carouselRef.value.page === carouselRef.value.pages) {
return carouselRef.value.select(0)
}
carouselRef.value.next()
}, 3000)
})
</script>
<template>
<UCarousel
ref="carouselRef"
v-slot="{ item }"
:items="items"
:ui="{ item: 'basis-full' }"
class="rounded-lg overflow-hidden"
indicators
>
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/1920/1080?random=1',
'https://picsum.photos/1920/1080?random=2',
'https://picsum.photos/1920/1080?random=3',
'https://picsum.photos/1920/1080?random=4',
'https://picsum.photos/1920/1080?random=5',
'https://picsum.photos/1920/1080?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-full' }" class="rounded-lg overflow-hidden" indicators>
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/600?random=1',
'https://picsum.photos/600/600?random=2',
'https://picsum.photos/600/600?random=3',
'https://picsum.photos/600/600?random=4',
'https://picsum.photos/600/600?random=5',
'https://picsum.photos/600/600?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-full md:basis-1/2 lg:basis-1/3' }" indicators class="rounded-lg overflow-hidden">
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

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

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/800?random=1',
'https://picsum.photos/600/800?random=2',
'https://picsum.photos/600/800?random=3',
'https://picsum.photos/600/800?random=4',
'https://picsum.photos/600/800?random=5',
'https://picsum.photos/600/800?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-full' }" class="w-64 mx-auto rounded-lg overflow-hidden">
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/1920/1080?random=1',
'https://picsum.photos/1920/1080?random=2',
'https://picsum.photos/1920/1080?random=3',
'https://picsum.photos/1920/1080?random=4',
'https://picsum.photos/1920/1080?random=5',
'https://picsum.photos/1920/1080?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'basis-full' }" class="rounded-lg overflow-hidden">
<img :src="item" class="w-full" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,31 @@
<script setup lang="ts">
const items = [{
name: 'Sébastien Chopin',
to: 'https://github.com/Atinux',
avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/atinux' }
}, {
name: 'Pooya Parsa',
to: 'https://github.com/pi0',
avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/pi0' }
}, {
name: 'Daniel Roe',
to: 'https://github.com/danielroe',
avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/danielroe' }
}, {
name: 'Anthony Fu',
to: 'https://github.com/antfu',
avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/antfu' }
}]
</script>
<template>
<UCarousel v-slot="{ item, index }" :items="items" :ui="{ item: 'w-full' }">
<div class="text-center mx-auto">
<img :src="item.avatar.src" :alt="item.name" class="rounded-full w-48 h-48 mb-2" draggable="false">
<p class="font-semibold">
{{ index + 1 }}. {{ item.name }}
</p>
</div>
</UCarousel>
</template>

View File

@@ -0,0 +1,33 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/800?random=1',
'https://picsum.photos/600/800?random=2',
'https://picsum.photos/600/800?random=3',
'https://picsum.photos/600/800?random=4',
'https://picsum.photos/600/800?random=5',
'https://picsum.photos/600/800?random=6'
]
</script>
<template>
<UCarousel
:items="items"
:ui="{
item: 'basis-full',
container: 'rounded-lg',
indicators: {
wrapper: 'relative bottom-0 mt-4'
}
}"
indicators
class="w-64 mx-auto"
>
<template #default="{ item }">
<img :src="item" class="w-full" draggable="false">
</template>
<template #indicator="{ onClick, page, active }">
<UButton :label="String(page)" :variant="active ? 'solid' : 'outline'" size="2xs" class="rounded-full min-w-6 justify-center" @click="onClick(page)" />
</template>
</UCarousel>
</template>

View File

@@ -0,0 +1,38 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/600/800?random=1',
'https://picsum.photos/600/800?random=2',
'https://picsum.photos/600/800?random=3',
'https://picsum.photos/600/800?random=4',
'https://picsum.photos/600/800?random=5',
'https://picsum.photos/600/800?random=6'
]
</script>
<template>
<UCarousel
:items="items"
:ui="{
item: 'basis-full',
container: 'rounded-lg'
}"
arrows
class="w-64 mx-auto"
>
<template #default="{ item }">
<img :src="item" class="w-full" draggable="false">
</template>
<template #prev="{ onClick, disabled }">
<button :disabled="disabled" @click="onClick">
Prev
</button>
</template>
<template #next="{ onClick, disabled }">
<button :disabled="disabled" @click="onClick">
Next
</button>
</template>
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/400/600?random=1',
'https://picsum.photos/400/600?random=2',
'https://picsum.photos/400/600?random=3',
'https://picsum.photos/400/600?random=4',
'https://picsum.photos/400/600?random=5',
'https://picsum.photos/400/600?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'snap-end' }">
<img :src="item" width="200" height="300" draggable="false">
</UCarousel>
</template>

View File

@@ -0,0 +1,16 @@
<script setup lang="ts">
const items = [
'https://picsum.photos/400/600?random=1',
'https://picsum.photos/400/600?random=2',
'https://picsum.photos/400/600?random=3',
'https://picsum.photos/400/600?random=4',
'https://picsum.photos/400/600?random=5',
'https://picsum.photos/400/600?random=6'
]
</script>
<template>
<UCarousel v-slot="{ item }" :items="items" :ui="{ item: 'snap-start' }">
<img :src="item" width="200" height="300" draggable="false">
</UCarousel>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const selected = ref(true)
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [{
name: 'messages',
icon: 'i-heroicons-chat-bubble-oval-left',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const groups = [{
key: 'users',
label: q => q && `Users matching “${q}”...`,
@@ -7,7 +7,8 @@ const groups = [{
return []
}
const users = await $fetch('https://jsonplaceholder.typicode.com/users', { params: { q } })
// @ts-ignore
const users: any[] = await $fetch('https://jsonplaceholder.typicode.com/users', { params: { q } })
return users.map(user => ({ id: user.id, label: user.name, suffix: user.email }))
}

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = [
{ id: 1, label: 'Wade Cooper' },
{ id: 2, label: 'Arlene Mccoy' },

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = [
{ id: 1, label: 'Wade Cooper', child: true },
{ id: 2, label: 'Arlene Mccoy' },

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const router = useRouter()
const toast = useToast()

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
const people = [

View File

@@ -1,8 +1,11 @@
<script setup>
<script setup lang="ts">
import type { NavItem, ParsedContent } from '@nuxt/content'
import type { Button } from '#ui/types'
const commandPaletteRef = ref()
const navigation = inject('navigation')
const files = inject('files')
const navigation = inject<Ref<NavItem[]>>('navigation')
const files = inject<Ref<ParsedContent[]>>('files')
const groups = computed(() => navigation.value.map(item => ({
key: item._path,
@@ -63,8 +66,8 @@ const ui = {
ref="commandPaletteRef"
:groups="groups"
:ui="ui"
:close-button="closeButton"
:empty-state="emptyState"
:close-button="(closeButton as Button)"
:empty-state="(emptyState as any)"
:autoselect="false"
command-attribute="title"
:fuse="{

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const commandPaletteRef = ref()
const suggestions = [

View File

@@ -1,4 +1,6 @@
<script setup>
<script setup lang="ts">
import { useMouse, useWindowScroll } from '@vueuse/core'
const { x, y } = useMouse()
const { y: windowY } = useWindowScroll()

View File

@@ -1,4 +1,6 @@
<script setup>
<script setup lang="ts">
import { useMouse, useWindowScroll } from '@vueuse/core'
const { x, y } = useMouse()
const { y: windowY } = useWindowScroll()

View File

@@ -1,4 +1,6 @@
<script setup>
<script setup lang="ts">
import { useMouse, useWindowScroll } from '@vueuse/core'
const { x, y } = useMouse()
const { y: windowY } = useWindowScroll()

View File

@@ -1,4 +1,6 @@
<script setup>
<script setup lang="ts">
import { useMouse, useWindowScroll } from '@vueuse/core'
const { x, y } = useMouse()
const { y: windowY } = useWindowScroll()

View File

@@ -1,16 +1,15 @@
<script setup>
const date = ref(new Date())
<script setup lang="ts">
import { format } from 'date-fns'
const label = computed(() => date.value.toLocaleDateString('en-us', { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric' })
)
const date = ref(new Date())
</script>
<template>
<UPopover :popper="{ placement: 'bottom-start' }">
<UButton icon="i-heroicons-calendar-days-20-solid" :label="label" />
<UButton icon="i-heroicons-calendar-days-20-solid" :label="format(date, 'd MMM, yyy')" />
<template #panel="{ close }">
<LazyDatePicker v-model="date" @close="close" />
<DatePicker v-model="date" is-required @close="close" />
</template>
</UPopover>
</template>

View File

@@ -0,0 +1,49 @@
<script setup lang="ts">
import { sub, format, isSameDay, type Duration } from 'date-fns'
const ranges = [
{ label: 'Last 7 days', duration: { days: 7 } },
{ label: 'Last 14 days', duration: { days: 14 } },
{ label: 'Last 30 days', duration: { days: 30 } },
{ label: 'Last 3 months', duration: { months: 3 } },
{ label: 'Last 6 months', duration: { months: 6 } },
{ label: 'Last year', duration: { years: 1 } }
]
const selected = ref({ start: sub(new Date(), { days: 14 }), end: new Date() })
function isRangeSelected (duration: Duration) {
return isSameDay(selected.value.start, sub(new Date(), duration)) && isSameDay(selected.value.end, new Date())
}
function selectRange (duration: Duration) {
selected.value = { start: sub(new Date(), duration), end: new Date() }
}
</script>
<template>
<UPopover :popper="{ placement: 'bottom-start' }">
<UButton icon="i-heroicons-calendar-days-20-solid">
{{ format(selected.start, 'd MMM, yyy') }} - {{ format(selected.end, 'd MMM, yyy') }}
</UButton>
<template #panel="{ close }">
<div class="flex items-center sm:divide-x divide-gray-200 dark:divide-gray-800">
<div class="hidden sm:flex flex-col py-4">
<UButton
v-for="(range, index) in ranges"
:key="index"
:label="range.label"
color="gray"
variant="ghost"
class="rounded-none px-6"
:class="[isRangeSelected(range.duration) ? 'bg-gray-100 dark:bg-gray-800' : 'hover:bg-gray-50 dark:hover:bg-gray-800/50']"
truncate
@click="selectRange(range.duration)"
/>
</div>
<DatePicker v-model="selected" @close="close" />
</div>
</template>
</UPopover>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const form = reactive({ email: 'mail@example.com', password: 'password' })
</script>
@@ -17,7 +17,7 @@ const form = reactive({ email: 'mail@example.com', password: 'password' })
<UButton label="Login" color="gray" block />
</div>
<UDivider label="OR" color="gray" orientation="vertical" />
<UDivider label="OR" orientation="vertical" />
<div class="space-y-4 flex flex-col justify-center">
<UButton color="black" label="Login with GitHub" icon="i-simple-icons-github" block />
@@ -37,7 +37,7 @@ const form = reactive({ email: 'mail@example.com', password: 'password' })
<UButton label="Login" color="gray" block />
<UDivider label="OR" color="gray" />
<UDivider label="OR" />
<UButton color="black" label="Login with GitHub" icon="i-simple-icons-github" block />
<UButton color="black" label="Login with Google" icon="i-simple-icons-google" block />

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'Profile',

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const items = [
[{
label: 'ben@example.com',

View File

@@ -1,17 +1,17 @@
<script setup lang="ts">
import { string, objectAsync, email, minLength, type Input } from 'valibot'
import * as v from 'valibot'
import type { FormSubmitEvent } from '#ui/types'
const schema = objectAsync({
email: string([email('Invalid email')]),
password: string([minLength(8, 'Must be at least 8 characters')])
const schema = v.object({
email: v.pipe(v.string(), v.email('Invalid email')),
password: v.pipe(v.string(), v.minLength(8, 'Must be at least 8 characters'))
})
type Schema = Input<typeof schema>
type Schema = v.InferOutput<typeof schema>
const state = reactive({
email: undefined,
password: undefined
email: '',
password: ''
})
async function onSubmit (event: FormSubmitEvent<Schema>) {
@@ -21,7 +21,7 @@ async function onSubmit (event: FormSubmitEvent<Schema>) {
</script>
<template>
<UForm :schema="schema" :state="state" class="space-y-4" @submit="onSubmit">
<UForm :schema="v.safeParser(schema)" :state="state" class="space-y-4" @submit="onSubmit">
<UFormGroup label="Email" name="email">
<UInput v-model="state.email" />
</UFormGroup>

View File

@@ -6,7 +6,7 @@
</UForm>
</template>
<script setup>
<script setup lang="ts">
import { z } from 'zod'
const schema = z.object({

View File

@@ -0,0 +1,27 @@
<script setup lang="ts">
const route = useRoute()
const links = [{
label: 'Profile',
avatar: {
src: 'https://avatars.githubusercontent.com/u/739984?v=4'
},
badge: 100
}, {
label: 'Installation',
icon: 'i-heroicons-home',
to: '/getting-started/installation'
}, {
label: 'Horizontal Navigation',
icon: 'i-heroicons-chart-bar',
to: `${route.path.startsWith('/dev') ? '/dev' : ''}/components/horizontal-navigation`
}, {
label: 'Command Palette',
icon: 'i-heroicons-command-line',
to: '/components/command-palette'
}]
</script>
<template>
<UHorizontalNavigation :links="links" class="border-b border-gray-200 dark:border-gray-800" />
</template>

View File

@@ -0,0 +1,22 @@
<script setup lang="ts">
const route = useRoute()
const links = [{
label: 'Horizontal Navigation',
to: `${route.path.startsWith('/dev') ? '/dev' : ''}/components/horizontal-navigation`
}, {
label: 'Command Palette',
to: '/components/command-palette'
}, {
label: 'Table',
to: '/components/table'
}]
</script>
<template>
<UHorizontalNavigation :links="links">
<template #default="{ link }">
<span class="group-hover:text-primary relative">{{ link.label }}</span>
</template>
</UHorizontalNavigation>
</template>

View File

@@ -0,0 +1,29 @@
<script setup lang="ts">
const route = useRoute()
const links = [
[{
label: 'Installation',
icon: 'i-heroicons-home',
to: '/getting-started/installation'
}, {
label: 'Horizontal Navigation',
icon: 'i-heroicons-chart-bar',
to: `${route.path.startsWith('/dev') ? '/dev' : ''}/components/horizontal-navigation`
}, {
label: 'Command Palette',
icon: 'i-heroicons-command-line',
to: '/components/command-palette'
}], [{
label: 'Examples',
icon: 'i-heroicons-light-bulb'
}, {
label: 'Help',
icon: 'i-heroicons-question-mark-circle'
}]
]
</script>
<template>
<UHorizontalNavigation :links="links" class="border-b border-gray-200 dark:border-gray-800" />
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const value = ref('')
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref(people[0])

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = []
const selected = ref()

View File

@@ -1,4 +1,6 @@
<script setup>
<script setup lang="ts">
import type { Avatar } from '#ui/types'
const people = [{
id: 'benjamincanac',
label: 'benjamincanac',
@@ -29,8 +31,8 @@ const selected = ref(people[0])
<template>
<UInputMenu v-model="selected" :options="people">
<template #leading>
<UIcon v-if="selected.icon" :name="selected.icon" class="w-4 h-4 mx-0.5" />
<UAvatar v-else-if="selected.avatar" v-bind="selected.avatar" size="3xs" class="mx-0.5" />
<UIcon v-if="selected.icon" :name="(selected.icon as string)" class="w-5 h-5" />
<UAvatar v-else-if="selected.avatar" v-bind="(selected.avatar as Avatar)" size="2xs" />
</template>
</UInputMenu>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = [{
id: 1,
name: 'Wade Cooper'
@@ -13,14 +13,14 @@ const people = [{
name: 'Tom Cook'
}]
const selected = ref(people[0].name)
const selected = ref(people[0].id)
</script>
<template>
<UInputMenu
v-model="selected"
:options="people"
value-attribute="name"
value-attribute="id"
option-attribute="name"
/>
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref(people[0])

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = [
{ name: 'Wade Cooper', online: true },
{ name: 'Arlene Mccoy', online: false },

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref(people[0])

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref(people[0])

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref(people[0])

View File

@@ -1,11 +1,11 @@
<script setup>
<script setup lang="ts">
const loading = ref(false)
const selected = ref()
async function search (q) {
async function search (q: string) {
loading.value = true
const users = await $fetch('https://jsonplaceholder.typicode.com/users', { params: { q } })
const users: any[] = await $fetch('https://jsonplaceholder.typicode.com/users', { params: { q } })
loading.value = false

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const options = [
{ id: 1, name: 'Wade Cooper', colors: ['red', 'yellow'] },
{ id: 2, name: 'Arlene Mccoy', colors: ['blue', 'yellow'] },

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const people = ['Wade Cooper', 'Arlene Mccoy', 'Devon Webb', 'Tom Cook', 'Tanya Fox', 'Hellen Schmidt', 'Caroline Schultz', 'Mason Heaney', 'Claudie Smitham', 'Emil Schaefer']
const selected = ref()

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const { metaSymbol } = useShortcuts()
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const used = ref(84.2)
const total = 238.42

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const used = ref(84.2)
const total = 238.42

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
</script>

View File

@@ -0,0 +1,28 @@
<script lang="ts" setup>
defineProps({
count: {
type: Number,
default: 0
}
})
const emit = defineEmits(['success'])
function onSuccess () {
emit('success')
}
</script>
<template>
<UModal>
<UCard>
<div class="space-y-2">
<p>This modal was opened programmatically !</p>
<p>Count: {{ count }}</p>
<UButton @click="onSuccess">
Click to emit a success event
</UButton>
</div>
</UCard>
</UModal>
</template>

View File

@@ -0,0 +1,24 @@
<script setup lang="ts">
import { ModalExampleComponent } from '#components'
const toast = useToast()
const modal = useModal()
const count = ref(0)
function openModal () {
count.value += 1
modal.open(ModalExampleComponent, {
count: count.value,
onSuccess () {
toast.add({
title: 'Success !',
id: 'modal-success'
})
}
})
}
</script>
<template>
<UButton label="Reveal modal" @click="openModal" />
</template>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
</script>

View File

@@ -1,4 +1,4 @@
<script setup>
<script setup lang="ts">
const isOpen = ref(false)
</script>

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