PageCta
Utilisation
Le composant PageCTA offre un moyen flexible d'afficher un appel à l'action dans vos pages avec une illustration dans l'emplacement par défaut.
Trusted and supported by our amazing community
Utilisez-le dans un composant PageSection ou directement dans votre page:
<template>
<UPageHero />
<UPageCTA class="rounded-none" />
<UPageSection />
<UPageSection :ui="{ container: 'px-0' }">
<UPageCTA class="rounded-none sm:rounded-xl" />
</UPageSection>
<UPageSection />
</template>
px-0 et rounded-none pour faire en sorte que le CTA remplisse le bord de la page sur mobile.Titre
Utilisez le prop title pour définir le titre du CTA.
Trusted and supported by our amazing community
<template>
<UPageCTA title="Trusted and supported by our amazing community" />
</template>Définition
Utilisez le prop description pour définir la description du CTA.
Trusted and supported by our amazing community
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
/>
</template>Liens
Utilisez la prop links pour afficher une liste de Button sous la description.
Trusted and supported by our amazing community
<script setup lang="ts">
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
:links="links"
/>
</template><script setup lang="ts">
import { ref } from 'vue'
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
:links="links"
/>
</template>Variant
Utilisez le prop variant pour modifier le style du CTA.
Trusted and supported by our amazing community
<script setup lang="ts">
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
variant="soft"
:links="links"
/>
</template><script setup lang="ts">
import { ref } from 'vue'
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
variant="soft"
:links="links"
/>
</template>light ou dark au slot links lorsque vous utilisez la variante solid pour inverser les couleurs.Définition
Utilisez le prop orientation pour changer l'orientation avec l'emplacement par défaut.
Trusted and supported by our amazing community
<script setup lang="ts">
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
orientation="horizontal"
:links="links"
>
<img
src="https://picsum.photos/640/728"
width="320"
height="364"
alt="Illustration"
class="w-full rounded-lg"
loading="lazy"
/>
</UPageCTA>
</template><script setup lang="ts">
import { ref } from 'vue'
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
orientation="horizontal"
:links="links"
>
<img
src="https://picsum.photos/640/728"
width="320"
height="364"
alt="Illustration"
class="w-full rounded-lg"
loading="lazy"
/>
</UPageCTA>
</template>Reverse
Utilisez le prop reverse pour inverser l'orientation de la fente par défaut.
Trusted and supported by our amazing community
<script setup lang="ts">
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
orientation="horizontal"
reverse
:links="links"
>
<img
src="https://picsum.photos/640/728"
width="320"
height="364"
alt="Illustration"
class="w-full rounded-lg"
loading="lazy"
/>
</UPageCTA>
</template><script setup lang="ts">
import { ref } from 'vue'
import type { ButtonProps } from '@nuxt/ui'
const links = ref<ButtonProps[]>([
{
label: 'Get started',
color: 'neutral'
},
{
label: 'Learn more',
color: 'neutral',
variant: 'subtle',
trailingIcon: 'i-lucide-arrow-right'
}
])
</script>
<template>
<UPageCTA
title="Trusted and supported by our amazing community"
description="We've built a strong, lasting partnership. Their trust is our driving force, propelling us towards shared success."
orientation="horizontal"
reverse
:links="links"
>
<img
src="https://picsum.photos/640/728"
width="320"
height="364"
alt="Illustration"
class="w-full rounded-lg"
loading="lazy"
/>
</UPageCTA>
</template>API
Props équipements
| Prop | Default | Type |
|---|---|---|
as | 'div' | anyThe element or component this component should render as. |
title | string | |
description | string | |
orientation | 'vertical' | "vertical" | "horizontal"The orientation of the page cta. |
reverse | false | boolean Reverse the order of the default slot. |
variant | 'outline' | "outline" | "solid" | "soft" | "subtle" | "naked" |
links | ButtonProps[]Display a list of Button under the description.
| |
ui | { root?: SlotClass; container?: SlotClass; wrapper?: SlotClass; header?: SlotClass; title?: SlotClass; description?: SlotClass; body?: SlotClass; footer?: SlotClass; links?: SlotClass; } |
Slots
| Slot | Type |
|---|---|
top | {} |
header | {} |
title | {} |
description | {} |
body | {} |
footer | {} |
links | {} |
default | {} |
bottom | {} |
Thème
export default defineAppConfig({
ui: {
pageCTA: {
slots: {
root: 'relative isolate rounded-xl overflow-hidden',
container: 'flex flex-col lg:grid px-6 py-12 sm:px-12 sm:py-24 lg:px-16 lg:py-24 gap-8 sm:gap-16',
wrapper: '',
header: '',
title: 'text-3xl sm:text-4xl text-pretty tracking-tight font-bold text-highlighted',
description: 'text-base sm:text-lg text-muted',
body: 'mt-8',
footer: 'mt-8',
links: 'flex flex-wrap gap-x-6 gap-y-3'
},
variants: {
orientation: {
horizontal: {
container: 'lg:grid-cols-2 lg:items-center',
description: 'text-pretty'
},
vertical: {
container: '',
title: 'text-center',
description: 'text-center text-balance',
links: 'justify-center'
}
},
reverse: {
true: {
wrapper: 'order-last'
}
},
variant: {
solid: {
root: 'bg-inverted text-inverted',
title: 'text-inverted',
description: 'text-dimmed'
},
outline: {
root: 'bg-default ring ring-default',
description: 'text-muted'
},
soft: {
root: 'bg-elevated/50',
description: 'text-toned'
},
subtle: {
root: 'bg-elevated/50 ring ring-default',
description: 'text-toned'
},
naked: {
description: 'text-muted'
}
},
title: {
true: {
description: 'mt-6'
}
}
},
defaultVariants: {
variant: 'outline'
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
pageCTA: {
slots: {
root: 'relative isolate rounded-xl overflow-hidden',
container: 'flex flex-col lg:grid px-6 py-12 sm:px-12 sm:py-24 lg:px-16 lg:py-24 gap-8 sm:gap-16',
wrapper: '',
header: '',
title: 'text-3xl sm:text-4xl text-pretty tracking-tight font-bold text-highlighted',
description: 'text-base sm:text-lg text-muted',
body: 'mt-8',
footer: 'mt-8',
links: 'flex flex-wrap gap-x-6 gap-y-3'
},
variants: {
orientation: {
horizontal: {
container: 'lg:grid-cols-2 lg:items-center',
description: 'text-pretty'
},
vertical: {
container: '',
title: 'text-center',
description: 'text-center text-balance',
links: 'justify-center'
}
},
reverse: {
true: {
wrapper: 'order-last'
}
},
variant: {
solid: {
root: 'bg-inverted text-inverted',
title: 'text-inverted',
description: 'text-dimmed'
},
outline: {
root: 'bg-default ring ring-default',
description: 'text-muted'
},
soft: {
root: 'bg-elevated/50',
description: 'text-toned'
},
subtle: {
root: 'bg-elevated/50 ring ring-default',
description: 'text-toned'
},
naked: {
description: 'text-muted'
}
},
title: {
true: {
description: 'mt-6'
}
}
},
defaultVariants: {
variant: 'outline'
}
}
}
})
]
})