FinalCTA
Reusable final c t a component.
Usage
Components are auto-discovered. Use the component directly in any .wrn view:
<FinalCTA
label="Action"
href="href"
type="button"
variant="primary"
disabled="false"
/>Legacy mount name: data-component="FinalCTA".
Props and attributes
| Prop | Type | Requirement | Default |
|---|---|---|---|
label | string | Optional | "Action" |
href | string | Optional | "" |
type | string | Optional | "button" |
variant | string | Optional | "primary" |
disabled | boolean | Optional | false |
class | string | Optional | "" |
Slots
default
Events
This component does not declare a custom event.
Source contract
Installed source: components/FinalCTA.wrn
component FinalCTA {
props {
label = "Get started"
href = ""
type = "button"
variant = "primary"
disabled = false
class = ""
}
view {
<span class="contents {class}">
{#if href}
<a
href="{href}"
class=' group inline-flex min-h-11 items-center justify-center gap-2 rounded-xl px-5 py-2.5 text-sm font-semibold no-underline transition duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--wire-color-primary,#059669)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--wire-color-background,#ffffff)] {variant === "primary" ? "bg-[var(--wire-color-primary,#059669)] text-[var(--wire-color-primary-contrast,#ffffff)] hover:bg-[var(--wire-color-primary-hover,#047857)]" : "border border-[var(--wire-color-border,#e2e8f0)] bg-[var(--wire-color-surface,#ffffff)] text-[var(--wire-color-text,#0f172a)] hover:border-[var(--wire-color-primary,#059669)] hover:text-[var(--wire-color-primary,#059669)]"} '
aria-disabled="{disabled}"
>
<span>{label}</span>
<span class="transition-transform duration-200 group-hover:translate-x-0.5" aria-hidden="true">→</span>
<slot />
</a>
{:else}
<button
type="{type}"
disabled="{disabled}"
class=' group inline-flex min-h-11 items-center justify-center gap-2 rounded-xl px-5 py-2.5 text-sm font-semibold transition duration-200 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--wire-color-primary,#059669)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--wire-color-background,#ffffff)] {variant === "primary" ? "bg-[var(--wire-color-primary,#059669)] text-[var(--wire-color-primary-contrast,#ffffff)] hover:bg-[var(--wire-color-primary-hover,#047857)]" : "border border-[var(--wire-color-border,#e2e8f0)] bg-[var(--wire-color-surface,#ffffff)] text-[var(--wire-color-text,#0f172a)] hover:border-[var(--wire-color-primary,#059669)] hover:text-[var(--wire-color-primary,#059669)]"} '
>
<span>{label}</span>
<slot />
</button>
{/if}
</span>
}
}