Changelog Version Bearbeiten
Bearbeiten
Die ChangelogVersion-Komponente bietet eine flexible Möglichkeit, ein <article>-Element mit anpassbaren Inhalten wie Titel, Beschreibung, Bild usw. anzuzeigen.
ChangelogVersions-Komponente, um mehrere Changelog-Versionen in einer Zeitleiste mit einer Indikatorleiste auf der linken Seite anzuzeigen.title
Verwenden Sie die title-Prop, um den Titel der ChangelogVersion anzuzeigen.
Introducing Nuxt UI v3
<template>
<UChangelogVersion title="Introducing Nuxt UI v3" />
</template>Beschreibung
Verwenden Sie die description-Prop, um die Beschreibung der ChangelogVersion anzuzeigen.
Introducing Nuxt UI v3
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
/>
</template>Date (nicht)
Verwenden Sie die date-Prop, um das Datum der ChangelogVersion anzuzeigen.
Date-Objekt oder eine Zeichenfolge übergeben.Introducing Nuxt UI v3
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
/>
</template>Abzeichen
Verwenden Sie die badge-Prop, um eine Badge auf der ChangelogVersion anzuzeigen.
Introducing Nuxt UI v3
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
badge="Release"
/>
</template>Sie können jede Eigenschaft der Komponente Badge übergeben, um sie anzupassen.
Introducing Nuxt UI v3
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
:badge="{
label: 'Release',
color: 'primary',
variant: 'outline'
}"
/>
</template>Bild
Verwenden Sie die image-Prop, um ein Bild im BlogPost anzuzeigen.
@nuxt/image installiert ist, wird die <NuxtImg>-Komponente anstelle des nativen img-Tags verwendet.Introducing Nuxt UI v3

<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
image="https://nuxt.com/assets/blog/nuxt-ui-v3.png"
/>
</template>Authors Bearbeiten
Verwenden Sie die authors-prop, um eine Liste von User in der ChangelogVersion als Array von Objekten mit den folgenden Eigenschaften anzuzeigen:
name?: string(englisch)description?: string(englisch)avatar?: Omit<AvatarProps, 'size'>(nicht vorhanden)chip?: boolean | Omit<ChipProps, 'size' | 'inset'>(englisch)size?: UserProps['size'](nicht)orientation?: UserProps['orientation'](nicht)
Sie können jede Eigenschaft der Komponente Link übergeben, z. B. to, target usw.
<script setup lang="ts">
import type { UserProps } from '@nuxt/ui'
const authors = ref<UserProps[]>([
{
name: 'Benjamin Canac',
description: '@benjamincanac',
avatar: {
src: 'https://github.com/benjamincanac.png',
loading: 'lazy'
},
to: 'https://x.com/benjamincanac',
target: '_blank'
},
{
name: 'Sebastien Chopin',
description: '@atinux',
avatar: {
src: 'https://github.com/atinux.png',
loading: 'lazy'
},
to: 'https://x.com/atinux',
target: '_blank'
},
{
name: 'Hugo Richard',
description: '@hugorcd',
avatar: {
src: 'https://github.com/hugorcd.png',
loading: 'lazy'
},
to: 'https://x.com/hugorcd',
target: '_blank'
}
])
</script>
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
image="https://nuxt.com/assets/blog/nuxt-ui-v3.png"
:authors="authors"
/>
</template><script setup lang="ts">
import { ref } from 'vue'
import type { UserProps } from '@nuxt/ui'
const authors = ref<UserProps[]>([
{
name: 'Benjamin Canac',
description: '@benjamincanac',
avatar: {
src: 'https://github.com/benjamincanac.png',
loading: 'lazy'
},
to: 'https://x.com/benjamincanac',
target: '_blank'
},
{
name: 'Sebastien Chopin',
description: '@atinux',
avatar: {
src: 'https://github.com/atinux.png',
loading: 'lazy'
},
to: 'https://x.com/atinux',
target: '_blank'
},
{
name: 'Hugo Richard',
description: '@hugorcd',
avatar: {
src: 'https://github.com/hugorcd.png',
loading: 'lazy'
},
to: 'https://x.com/hugorcd',
target: '_blank'
}
])
</script>
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
image="https://nuxt.com/assets/blog/nuxt-ui-v3.png"
:authors="authors"
/>
</template>Link ist
Sie können jede Eigenschaft der Komponente <NuxtLink> übergeben, z. B. to, target, rel usw.
<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
image="https://nuxt.com/assets/blog/nuxt-ui-v3.png"
to="https://nuxt.com/blog/nuxt-ui-v3"
target="_blank"
/>
</template>Indicator (Englisch)
Verwenden Sie die indicator-Stütze, um den Indikatorpunkt auf der linken Seite auszublenden. Standardmäßig ist true.
Introducing Nuxt UI v3

<template>
<UChangelogVersion
title="Introducing Nuxt UI v3"
description="Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility."
date="2025-03-12"
image="https://nuxt.com/assets/blog/nuxt-ui-v3.png"
:indicator="false"
/>
</template>indicator-Prop false ist, wird das Datum über dem Titel angezeigt.Beispiele
Mit Body-Slot
Sie können den body-Steckplatz verwenden, um benutzerdefinierte Inhalte zwischen dem Bild und den Autoren anzuzeigen:
- the Markdown component from
@comark/vueto display some markdown. Markdown component from@comark/vueto display some markdown.@comark/vue. Markdownx component from@comark/vueto display some markdown. - die ContentRenderer-Komponente von
@nuxt/content, um den Inhalt der Seite oder Liste darzustellen. - or verwenden Sie die
:u-changelog-version-Komponente direkt in Ihren Inhalten mit Markdown innerhalb desbody-Steckplatzes, da Nuxt UI vorgefertigte Prosa-Komponenten bereitstellt.
Introducing Nuxt UI v3

We are thrilled to introduce Nuxt UI v3, a comprehensive redesign of our UI library that delivers significant improvements in accessibility, performance, and developer experience. This major update represents over 1,500 commits of dedicated work, collaboration, and innovation from our team and the community.
Read the blog post announcement: https://nuxt.com/blog/nuxt-ui-v3
🧩 Reka UI: A New Foundation
We've transitioned from Headless UI to Reka UI as our core component foundation, bringing:
- Expanded Component Library: Access to 55+ primitives, significantly expanding our component offerings
- Future-Proof Development: Benefit from Reka UI's growing popularity and continuous improvements
- First-Class Accessibility: Built-in accessibility features aligned with our commitment to inclusive design
🚀 Tailwind CSS Integration
Nuxt UI now leverages the latest Tailwind CSS, delivering:
- Exceptional Performance: Full builds up to 5× faster, with incremental builds over 100× faster
- Streamlined Toolchain: Built-in import handling, vendor prefixing, and syntax transforms with zero additional tooling
- CSS-First Configuration: Customize and extend the framework directly in CSS instead of JavaScript configuration
🎨 Tailwind Variants
We've adopted Tailwind Variants to power our design system, offering:
- Dynamic Styling: Create flexible component variants with a powerful, intuitive API
- Type Safety: Full TypeScript support with intelligent auto-completion
- Smart Conflict Resolution: Efficiently merge conflicting styles with predictable results
Migration from v2
We want to be transparent: migrating from Nuxt UI v2 to v3 requires significant effort. While we've maintained core concepts and components, Nuxt UI v3 has been rebuilt from the ground up to provide enhanced capabilities.
To upgrade your project:
- Read our detailed migration guide
- Review the new documentation and components before attempting to upgrade
- Report any issues on our GitHub repository
🙏 Acknowledgements
This release represents thousands of hours of work from our team and the community. We'd like to thank everyone who contributed to making Nuxt UI v3 a reality, especially @romhml, @sandros94, and @hywax for their tremendous work.
<script setup lang="ts">
import { Markdown } from '@comark/vue'
const content = `

We are thrilled to introduce Nuxt UI v3, a comprehensive redesign of our UI library that delivers significant improvements in accessibility, performance, and developer experience. This major update represents over 1,500 commits of dedicated work, collaboration, and innovation from our team and the community.
Read the blog post announcement: https://nuxt.com/blog/nuxt-ui-v3
**[Get started with Nuxt UI v3 →](https://ui3.nuxt.com/getting-started/installation/nuxt)**
### 🧩 Reka UI: A New Foundation
We've transitioned from [Headless UI](https://headlessui.com/) to [Reka UI](https://reka-ui.com/) as our core component foundation, bringing:
- **Expanded Component Library**: Access to 55+ primitives, significantly expanding our component offerings
- **Future-Proof Development**: Benefit from Reka UI's growing popularity and continuous improvements
- **First-Class Accessibility**: Built-in accessibility features aligned with our commitment to inclusive design
### 🚀 Tailwind CSS Integration
Nuxt UI now leverages the latest [Tailwind CSS](https://tailwindcss.com), delivering:
- **Exceptional Performance**: Full builds up to 5× faster, with incremental builds over 100× faster
- **Streamlined Toolchain**: Built-in import handling, vendor prefixing, and syntax transforms with zero additional tooling
- **CSS-First Configuration**: Customize and extend the framework directly in CSS instead of JavaScript configuration
### 🎨 Tailwind Variants
We've adopted [Tailwind Variants](https://www.tailwind-variants.org/) to power our design system, offering:
- **Dynamic Styling**: Create flexible component variants with a powerful, intuitive API
- **Type Safety**: Full TypeScript support with intelligent auto-completion
- **Smart Conflict Resolution**: Efficiently merge conflicting styles with predictable results
## Migration from v2
We want to be transparent: migrating from Nuxt UI v2 to v3 requires significant effort. While we've maintained core concepts and components, Nuxt UI v3 has been rebuilt from the ground up to provide enhanced capabilities.
To upgrade your project:
1. Read our detailed [migration guide](https://ui3.nuxt.com/getting-started/migration)
2. Review the new documentation and components before attempting to upgrade
3. Report any issues on our [GitHub repository](https://github.com/nuxt/ui/issues)
## 🙏 Acknowledgements
This release represents thousands of hours of work from our team and the community. We'd like to thank everyone who contributed to making Nuxt UI v3 a reality, especially @romhml, @sandros94, and @hywax for their tremendous work.
`
const version = {
title: 'Introducing Nuxt UI v3',
description:
'Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility.',
date: '2025-03-12T00:00:00.000Z',
badge: 'Release',
to: 'https://nuxt.com/blog/nuxt-ui-v3',
target: '_blank',
content,
authors: [
{
name: 'Benjamin Canac',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'Benjamin Canac',
loading: 'lazy' as const
},
to: 'https://github.com/benjamincanac',
target: '_blank'
}
]
}
</script>
<template>
<UChangelogVersion v-bind="version" :ui="{ container: 'max-w-lg' }" class="w-full">
<template #body>
<Markdown :value="version.content" />
</template>
</UChangelogVersion>
</template><script setup lang="ts">
import { provide } from 'vue'
import { Markdown } from '@comark/vue'
const content = `

We are thrilled to introduce Nuxt UI v3, a comprehensive redesign of our UI library that delivers significant improvements in accessibility, performance, and developer experience. This major update represents over 1,500 commits of dedicated work, collaboration, and innovation from our team and the community.
Read the blog post announcement: https://nuxt.com/blog/nuxt-ui-v3
**[Get started with Nuxt UI v3 →](https://ui3.nuxt.com/getting-started/installation/nuxt)**
### 🧩 Reka UI: A New Foundation
We've transitioned from [Headless UI](https://headlessui.com/) to [Reka UI](https://reka-ui.com/) as our core component foundation, bringing:
- **Expanded Component Library**: Access to 55+ primitives, significantly expanding our component offerings
- **Future-Proof Development**: Benefit from Reka UI's growing popularity and continuous improvements
- **First-Class Accessibility**: Built-in accessibility features aligned with our commitment to inclusive design
### 🚀 Tailwind CSS Integration
Nuxt UI now leverages the latest [Tailwind CSS](https://tailwindcss.com), delivering:
- **Exceptional Performance**: Full builds up to 5× faster, with incremental builds over 100× faster
- **Streamlined Toolchain**: Built-in import handling, vendor prefixing, and syntax transforms with zero additional tooling
- **CSS-First Configuration**: Customize and extend the framework directly in CSS instead of JavaScript configuration
### 🎨 Tailwind Variants
We've adopted [Tailwind Variants](https://www.tailwind-variants.org/) to power our design system, offering:
- **Dynamic Styling**: Create flexible component variants with a powerful, intuitive API
- **Type Safety**: Full TypeScript support with intelligent auto-completion
- **Smart Conflict Resolution**: Efficiently merge conflicting styles with predictable results
## Migration from v2
We want to be transparent: migrating from Nuxt UI v2 to v3 requires significant effort. While we've maintained core concepts and components, Nuxt UI v3 has been rebuilt from the ground up to provide enhanced capabilities.
To upgrade your project:
1. Read our detailed [migration guide](https://ui3.nuxt.com/getting-started/migration)
2. Review the new documentation and components before attempting to upgrade
3. Report any issues on our [GitHub repository](https://github.com/nuxt/ui/issues)
## 🙏 Acknowledgements
This release represents thousands of hours of work from our team and the community. We'd like to thank everyone who contributed to making Nuxt UI v3 a reality, especially @romhml, @sandros94, and @hywax for their tremendous work.
`
const version = {
title: 'Introducing Nuxt UI v3',
description:
'Nuxt UI v3 is out! After 1500+ commits, this major redesign brings improved accessibility, Tailwind CSS support, and full Vue compatibility.',
date: '2025-03-12T00:00:00.000Z',
badge: 'Release',
to: 'https://nuxt.com/blog/nuxt-ui-v3',
target: '_blank',
content,
authors: [
{
name: 'Benjamin Canac',
avatar: {
src: 'https://github.com/benjamincanac.png',
alt: 'Benjamin Canac',
loading: 'lazy' as const
},
to: 'https://github.com/benjamincanac',
target: '_blank'
}
]
}
</script>
<template>
<UChangelogVersion v-bind="version" :ui="{ container: 'max-w-lg' }" class="w-full">
<template #body>
<Markdown :value="version.content" />
</template>
</UChangelogVersion>
</template>API Bearbeiten
Props Bearbeiten
| Prop | Default | Type |
|---|---|---|
as | 'article' | anyThe element or component this component should render as. |
title | string | |
description | string | |
date | string | DateThe date of the changelog version. Can be a string or a Date object. | |
badge | string | BadgePropsDisplay a badge on the changelog version.
Can be a string or an object.
| |
authors | UserProps[]The authors of the changelog version. | |
image | string | Partial<ImgHTMLAttributes> & { [key: string]: any; }The image of the changelog version. Can be a string or an object. | |
indicator | true | boolean Display an indicator dot on the left. |
to | string | it | et | |
target | null | "_blank" | "_parent" | "_self" | "_top" | string | |
ui | { root?: SlotClass; container?: SlotClass; header?: SlotClass; meta?: SlotClass; date?: SlotClass; badge?: SlotClass; title?: SlotClass; description?: SlotClass; imageWrapper?: SlotClass; image?: SlotClass; authors?: SlotClass; footer?: SlotClass; indicator?: SlotClass; dot?: SlotClass; dotInner?: SlotClass; } |
Slots (englisch)
| Slot | Type |
|---|---|
header | {} |
badge | { ui: object; } |
date | {} |
title | {} |
description | {} |
image | { ui: object; } |
body | {} |
footer | {} |
authors | {} |
actions | {} |
indicator | { ui: object; } |
Theme Bearbeiten
export default defineAppConfig({
ui: {
changelogVersion: {
slots: {
root: 'relative',
container: 'flex flex-col mx-auto max-w-2xl',
header: '',
meta: 'flex items-center gap-3 mb-2',
date: 'text-sm/6 text-toned truncate',
badge: '',
title: 'relative text-xl text-pretty font-semibold text-highlighted',
description: 'text-base text-pretty text-muted mt-1',
imageWrapper: 'relative overflow-hidden rounded-lg aspect-[16/9] mt-5 group/changelog-version-image',
image: 'object-cover object-top w-full h-full',
authors: 'flex flex-wrap gap-x-4 gap-y-1.5',
footer: 'border-t border-default pt-5 flex items-center justify-between',
indicator: 'absolute start-0 top-0 w-32 hidden lg:flex items-center justify-end gap-3 min-w-0',
dot: 'size-4 rounded-full bg-default ring ring-default flex items-center justify-center my-1',
dotInner: 'size-2 rounded-full bg-primary'
},
variants: {
body: {
false: {
footer: 'mt-5'
}
},
badge: {
false: {
meta: 'lg:hidden'
}
},
to: {
true: {
title: [
'outline-primary/25 has-focus-visible:outline-3 rounded-xs',
'transition'
],
image: 'transform transition-transform ease-out motion-reduce:transition-none group-hover/changelog-version-image:scale-105 group-has-focus-visible/changelog-version-image:scale-105'
}
},
hidden: {
true: {
date: 'lg:hidden'
}
}
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
changelogVersion: {
slots: {
root: 'relative',
container: 'flex flex-col mx-auto max-w-2xl',
header: '',
meta: 'flex items-center gap-3 mb-2',
date: 'text-sm/6 text-toned truncate',
badge: '',
title: 'relative text-xl text-pretty font-semibold text-highlighted',
description: 'text-base text-pretty text-muted mt-1',
imageWrapper: 'relative overflow-hidden rounded-lg aspect-[16/9] mt-5 group/changelog-version-image',
image: 'object-cover object-top w-full h-full',
authors: 'flex flex-wrap gap-x-4 gap-y-1.5',
footer: 'border-t border-default pt-5 flex items-center justify-between',
indicator: 'absolute start-0 top-0 w-32 hidden lg:flex items-center justify-end gap-3 min-w-0',
dot: 'size-4 rounded-full bg-default ring ring-default flex items-center justify-center my-1',
dotInner: 'size-2 rounded-full bg-primary'
},
variants: {
body: {
false: {
footer: 'mt-5'
}
},
badge: {
false: {
meta: 'lg:hidden'
}
},
to: {
true: {
title: [
'outline-primary/25 has-focus-visible:outline-3 rounded-xs',
'transition'
],
image: 'transform transition-transform ease-out motion-reduce:transition-none group-hover/changelog-version-image:scale-105 group-has-focus-visible/changelog-version-image:scale-105'
}
},
hidden: {
true: {
date: 'lg:hidden'
}
}
}
}
}
})
]
})