Compare commits

...

41 Commits

Author SHA1 Message Date
Benjamin Canac
65735e787f chore(release): v2.22.1 2025-07-16 16:00:28 +02:00
Benjamin Canac
6b971b8e6c docs: remove nuxt-cloudflare-analytics 2025-07-16 15:43:05 +02:00
renovate[bot]
1598d8fc72 chore(deps): lock file maintenance (v2) (#4538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-16 15:37:02 +02:00
renovate[bot]
2176e30113 chore(deps): update nuxt framework to v4 (v2) (major) (#4531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-07-16 12:09:34 +02:00
renovate[bot]
1f3e9789fe chore(deps): update dependency zod to v4 (v2) (#4520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 11:17:13 +02:00
renovate[bot]
b797690483 chore(deps): update all non-major dependencies (v2) (#4519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 10:23:11 +02:00
renovate[bot]
f7303d5c94 chore(deps): update nuxt framework to ^3.17.7 (v2) (#4517)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 09:59:00 +02:00
renovate[bot]
346031f279 chore(deps): lock file maintenance (v2) (#4471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 10:54:55 +02:00
renovate[bot]
dae6d77cf2 chore(deps): update devdependency vue-tsc to ^3.0.1 (v2) (#4467)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 10:43:07 +02:00
renovate[bot]
c1d5bcc1ac chore(deps): update all non-major dependencies (v2) (#4466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 10:29:25 +02:00
renovate[bot]
1bc44f8594 chore(deps): update devdependency vue-tsc to v3 (v2) (#4444)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 13:41:29 +02:00
renovate[bot]
9ee68d20fc chore(deps): update all non-major dependencies (v2) (#4442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-07-02 11:33:40 +02:00
renovate[bot]
d5f50be354 chore(deps): update nuxt framework to ^3.17.6 (v2) (#4436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 10:41:29 +02:00
renovate[bot]
03ab56c9bd chore(deps): update all non-major dependencies (v2) (#4421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 14:58:01 +02:00
renovate[bot]
9985fd5af4 chore(deps): lock file maintenance (v2) (#4422)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:47:47 +02:00
renovate[bot]
fb2a835a78 chore(deps): lock file maintenance (v2) (#4388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-23 12:39:24 +02:00
renovate[bot]
2d5100044b chore(deps): update all non-major dependencies (v2) (#4361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-23 11:51:53 +02:00
renovate[bot]
7903d2adc2 chore(deps): update devdependency happy-dom to v18 (v2) (#4344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 23:03:25 +02:00
renovate[bot]
cd9ee1ff99 chore(deps): lock file maintenance (v2) (#4351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 12:17:08 +02:00
renovate[bot]
29208f1877 chore(deps): update all non-major dependencies (v2) (#4343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 11:25:17 +02:00
renovate[bot]
f9f505b0c0 chore(deps): update all non-major dependencies (v2) (#4276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 17:17:05 +02:00
Benjamin Canac
7361914715 chore(github): add CODEOWNERS file 2025-06-05 14:42:34 +02:00
renovate[bot]
88923bb678 chore(deps): update nuxt framework to ^3.17.5 (v2) (#4283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 10:35:13 +02:00
renovate[bot]
212154d0d0 chore(deps): update all non-major dependencies (v2) (#4272)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-02 10:23:05 +02:00
renovate[bot]
b9037e166f chore(deps): update all non-major dependencies (v2) (#4174)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2025-05-26 12:50:56 +02:00
renovate[bot]
58fc563d63 chore(deps): update nuxt framework to ^3.17.4 (v2) (#4196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 12:03:58 +02:00
renovate[bot]
11569bc7e0 chore(deps): update nuxt framework to ^3.17.3 (v2) (#4132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 19:13:22 +02:00
renovate[bot]
1934063763 chore(deps): lock file maintenance (v2) (#4080)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:56:14 +02:00
renovate[bot]
b6de20104f chore(deps): update all non-major dependencies (v2) (#4126)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:34:10 +02:00
Malik
2971a31242 fix(Badge/Button): support numeric zero as visible label (#4116) 2025-05-10 16:41:59 +02:00
renovate[bot]
30068da217 chore(deps): update all non-major dependencies (v2) (#4077)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-09 10:40:54 +02:00
Benjamin Canac
44734f717e chore(deps): update vue-tsc 2025-05-05 18:24:49 +02:00
renovate[bot]
77cc1f3670 chore(deps): update nuxt framework to ^3.17.2 (v2) (#4070)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 14:45:05 +02:00
renovate[bot]
e55a27a503 chore(deps): lock file maintenance (v2) (#4065)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 10:39:11 +02:00
renovate[bot]
45f5e628ea chore(deps): update all non-major dependencies (v2) (#4064)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 10:14:42 +02:00
renovate[bot]
e47bba9a05 chore(deps): update nuxt framework to ^3.17.1 (v2) (#4000)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-02 10:21:39 +02:00
renovate[bot]
fcbedd1244 chore(deps): update all non-major dependencies (v2) (#3999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-28 15:02:17 +02:00
renovate[bot]
3a964d5a4b chore(deps): update all non-major dependencies (v2) (#3945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 12:03:25 +02:00
Benjamin Canac
b7c9c83dfa chore(release): publish without npm tag 2025-04-23 15:28:41 +02:00
Benjamin Canac
43ee099fbe chore(github): release trigger only on v2* tags 2025-04-23 15:28:10 +02:00
Benjamin Canac
4bc9878ef4 chore(deps): update @nuxt/ui-pro 2025-04-22 21:09:33 +02:00
20 changed files with 4363 additions and 2938 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @benjamincanac

View File

@@ -3,7 +3,7 @@ name: release
on:
push:
tags:
- '*'
- 'v2*'
jobs:
publish:

View File

@@ -1,5 +1,11 @@
# Changelog
## [2.22.1](https://github.com/nuxt/ui/compare/v2.22.0...v2.22.1) (2025-07-16)
### Bug Fixes
* **Badge/Button:** support numeric zero as visible label ([#4116](https://github.com/nuxt/ui/issues/4116)) ([2971a31](https://github.com/nuxt/ui/commit/2971a3124299e927ddb506bb0fc61b906aa0cfeb))
## [2.22.0](https://github.com/nuxt/ui/compare/v2.21.1...v2.22.0) (2025-04-22)
### ⚠ BREAKING CHANGES

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { sub, format, isSameDay, type Duration } from 'date-fns'
import { sub, format, isSameDay } from 'date-fns'
import type { Duration } from 'date-fns'
const ranges = [
{ label: 'Last 7 days', duration: { days: 7 } },

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { object, string, nonempty, type Infer } from 'superstruct'
import { object, string, nonempty } from 'superstruct'
import type { Infer } from 'superstruct'
import type { FormSubmitEvent } from '#ui/types'
const schema = object({

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { object, string, type InferType } from 'yup'
import { object, string } from 'yup'
import type { InferType } from 'yup'
import type { FormSubmitEvent } from '#ui/types'
const schema = object({

View File

@@ -26,8 +26,7 @@ export default defineNuxtConfig({
module,
'@nuxtjs/plausible',
'@vueuse/nuxt',
'nuxt-component-meta',
'nuxt-cloudflare-analytics'
'nuxt-component-meta'
],
site: {
@@ -119,11 +118,6 @@ export default defineNuxtConfig({
}
},
cloudflareAnalytics: {
token: '1e2b0c5e9a214f0390b9b94e043d8d4c',
scriptPath: false
},
componentMeta: {
exclude: [
'@nuxt/content',

View File

@@ -4,28 +4,27 @@
"type": "module",
"dependencies": {
"@iconify-json/heroicons": "^1.2.2",
"@iconify-json/lucide": "^1.2.37",
"@iconify-json/simple-icons": "^1.2.32",
"@iconify-json/vscode-icons": "^1.2.19",
"@iconify-json/lucide": "^1.2.57",
"@iconify-json/simple-icons": "^1.2.43",
"@iconify-json/vscode-icons": "^1.2.23",
"@nuxt/content": "^2.13.4",
"@nuxt/fonts": "^0.11.1",
"@nuxt/fonts": "^0.11.4",
"@nuxt/image": "^1.10.0",
"@nuxt/ui": "latest",
"@nuxt/ui-pro": "^1.7.1",
"@nuxt/ui-pro": "https://pkg.pr.new/@nuxt/ui-pro@fdb0248",
"@nuxtjs/plausible": "^1.2.0",
"@octokit/rest": "^21.1.1",
"@vueuse/nuxt": "^13.1.0",
"@vueuse/nuxt": "^13.5.0",
"date-fns": "^4.1.0",
"joi": "^17.13.3",
"nuxt": "^3.16.2",
"nuxt-cloudflare-analytics": "^1.0.8",
"nuxt-component-meta": "^0.10.1",
"nuxt-og-image": "^5.1.2",
"prettier": "^3.5.3",
"nuxt": "^4.0.0",
"nuxt-component-meta": "^0.12.1",
"nuxt-og-image": "^5.1.9",
"prettier": "^3.6.2",
"ufo": "^1.6.1",
"v-calendar": "^3.1.2",
"valibot": "^1.0.0",
"valibot": "^1.1.0",
"yup": "^1.6.1",
"zod": "^3.24.3"
"zod": "^4.0.5"
}
}

View File

@@ -1,8 +1,8 @@
{
"name": "@nuxt/ui",
"description": "A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.",
"version": "2.22.0",
"packageManager": "pnpm@10.9.0",
"version": "2.22.1",
"packageManager": "pnpm@10.13.1",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/ui.git"
@@ -44,19 +44,19 @@
"@headlessui/tailwindcss": "^0.2.2",
"@headlessui/vue": "^1.7.23",
"@iconify-json/heroicons": "^1.2.2",
"@nuxt/icon": "^1.12.0",
"@nuxt/kit": "^3.16.2",
"@nuxt/icon": "^1.15.0",
"@nuxt/kit": "^4.0.0",
"@nuxtjs/color-mode": "^3.5.2",
"@nuxtjs/tailwindcss": "^6.13.2",
"@nuxtjs/tailwindcss": "^6.14.0",
"@popperjs/core": "^2.11.8",
"@standard-schema/spec": "^1.0.0",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.16",
"@vueuse/core": "^13.1.0",
"@vueuse/integrations": "^13.1.0",
"@vueuse/math": "^13.1.0",
"@vueuse/core": "^13.5.0",
"@vueuse/integrations": "^13.5.0",
"@vueuse/math": "^13.5.0",
"defu": "^6.1.4",
"fuse.js": "^7.1.0",
"ohash": "^2.0.11",
@@ -66,19 +66,19 @@
"tailwindcss": "^3.4.17"
},
"devDependencies": {
"@nuxt/eslint-config": "^1.3.0",
"@nuxt/eslint-config": "^1.5.2",
"@nuxt/module-builder": "^1.0.1",
"@nuxt/test-utils": "^3.17.2",
"@nuxt/test-utils": "^3.19.2",
"@release-it/conventional-changelog": "^10.0.1",
"@vue/test-utils": "^2.4.6",
"eslint": "^9.25.0",
"happy-dom": "^17.4.4",
"nuxt": "^3.16.2",
"release-it": "^19.0.1",
"eslint": "^9.31.0",
"happy-dom": "^18.0.1",
"nuxt": "^4.0.0",
"release-it": "^19.0.3",
"typescript": "^5.8.3",
"vitest": "^3.1.1",
"vitest": "^3.2.4",
"vitest-environment-nuxt": "^1.0.1",
"vue-tsc": "^2.1.10"
"vue-tsc": "^3.0.1"
},
"peerDependencies": {
"joi": "^17.13.0",
@@ -108,7 +108,11 @@
"@nuxt/ui": "workspace:*",
"@nuxt/content": "2.13.2",
"@nuxtjs/mdc": "0.9.0",
"chokidar": "3.6.0",
"vue-tsc": "2.1.10"
"@vueuse/core": "^13.5.0",
"@vueuse/integrations": "^13.5.0",
"@vueuse/math": "^13.5.0",
"@vueuse/nuxt": "13.1.0",
"unimport": "4.1.1",
"chokidar": "3.6.0"
}
}

View File

@@ -9,6 +9,6 @@
},
"dependencies": {
"@nuxt/ui": "latest",
"nuxt": "^3.16.2"
"nuxt": "^4.0.0"
}
}

7162
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,4 +13,4 @@ fi
# Release package
echo "Publishing @nuxt/ui"
npm publish -q --access public
npm publish --access public --no-tag

View File

@@ -5,7 +5,7 @@
</slot>
<slot>
<span v-if="label">
<span v-if="label !== undefined && label !== null">
{{ label }}
</span>
</slot>

View File

@@ -5,7 +5,7 @@
</slot>
<slot>
<span v-if="label" :class="[truncate ? ui.truncate : '']">
<span v-if="label !== undefined && label !== null" :class="[truncate ? ui.truncate : '']">
{{ label }}
</span>
</slot>

View File

@@ -33,7 +33,8 @@
<script lang="ts">
import { isEqual, diff } from 'ohash/utils'
import { type PropType, defineComponent } from 'vue'
import { defineComponent } from 'vue'
import type { PropType } from 'vue'
import { nuxtLinkProps } from '../../utils'
export default defineComponent({

View File

@@ -5,7 +5,8 @@
</template>
<script lang="ts">
import { provide, ref, type PropType, defineComponent, onUnmounted, onMounted, readonly } from 'vue'
import { provide, ref, defineComponent, onUnmounted, onMounted, readonly } from 'vue'
import type { PropType } from 'vue'
import { useEventBus } from '@vueuse/core'
import type { ValidationError as JoiError, Schema as JoiSchema } from 'joi'
import type { ObjectSchema as YupObjectSchema, ValidationError as YupError } from 'yup'

View File

@@ -1,4 +1,5 @@
import { ref, type Ref, onMounted, onUnmounted } from 'vue'
import { ref, onMounted, onUnmounted } from 'vue'
import type { Ref } from 'vue'
export const useCarouselScroll = (el: Ref<HTMLElement>) => {
const x = ref<number>(0)

View File

@@ -1,5 +1,6 @@
import { inject, ref, computed } from 'vue'
import { type UseEventBusReturn, useDebounceFn } from '@vueuse/core'
import { useDebounceFn } from '@vueuse/core'
import type { UseEventBusReturn } from '@vueuse/core'
import type { FormEvent, FormEventType, InjectedFormGroupValue } from '../types/form'
type InputProps = {

View File

@@ -1,14 +1,14 @@
export type ComponentProps<T> =
T extends new () => { $props: infer P } ? NonNullable<P> :
T extends (props: infer P, ...args: any) => any ? P :
{}
export type ComponentProps<T>
= T extends new () => { $props: infer P } ? NonNullable<P>
: T extends (props: infer P, ...args: any) => any ? P
: {}
export type ComponentSlots<T> =
T extends new () => { $slots: infer S } ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S, attrs: any, emit: any }, ...args: any) => any ? NonNullable<S> :
{}
export type ComponentSlots<T>
= T extends new () => { $slots: infer S } ? NonNullable<S>
: T extends (props: any, ctx: { slots: infer S, attrs: any, emit: any }, ...args: any) => any ? NonNullable<S>
: {}
export type ComponentEmit<T> =
T extends new () => { $emit: infer E } ? NonNullable<E> :
T extends (props: any, ctx: { slots: any, attrs: any, emit: infer E }, ...args: any) => any ? NonNullable<E> :
{}
export type ComponentEmit<T>
= T extends new () => { $emit: infer E } ? NonNullable<E>
: T extends (props: any, ctx: { slots: any, attrs: any, emit: infer E }, ...args: any) => any ? NonNullable<E>
: {}

View File

@@ -18,8 +18,8 @@ export type NestedKeyOf<ObjectType extends Record<string, any>> = {
: Key
}[keyof ObjectType]
type DeepKey<T, Keys extends string[]> =
Keys extends [infer First, ...infer Rest]
type DeepKey<T, Keys extends string[]>
= Keys extends [infer First, ...infer Rest]
? First extends keyof T
? Rest extends string[]
? DeepKey<T[First], Rest>