component CTASection { props { eyebrow: string = "" title: string = "Ready to get started?" description: string = "" icon: string = "" align: string = "center" size: string = "default" color: string = "primary" variant: string = "solid" primaryLabel: string = "Get started" primaryHref: string = "#" primaryIcon: string = "" secondaryLabel: string = "" secondaryHref: string = "" secondaryIcon: string = "" backgroundImage: string = "" visualImage: string = "" visualAlt: string = "" visualIcon: string = "" visualTitle: string = "" visualDescription: string = "" visualItems: unknown[] = [] visualPosition: string = "right" maxWidth: string = "xl" fullBleed: boolean = false class: string = "" } view {
{#if backgroundImage} {/if}
{#if icon} {/if} {#if eyebrow}

{eyebrow}

{/if}

{title}

{#if description}

{description}

{/if} {#if primaryLabel || secondaryLabel} {:else}
{/if}
{#if visualImage || visualIcon || visualTitle || visualDescription || visualItems.length > 0}
{#if visualImage}
{visualAlt}
{/if} {#if visualIcon || visualTitle || visualDescription}
{#if visualIcon} {/if}
{#if visualTitle}

{visualTitle}

{/if} {#if visualDescription}

{visualDescription}

{/if}
{/if} {#if visualItems.length > 0}
{#each visualItems as item}
{#if item.icon} {/if}
{item.label || item.title} {#if item.description}

{item.description}

{/if}
{/each}
{/if}
{/if}
} style { .wrn-cta-section { --cta-accent: var(--wrn-color-primary); --cta-accent-hover: var(--wrn-color-primary-hover); --cta-accent-soft: var(--wrn-color-primary-soft); --cta-accent-muted: var(--wrn-color-primary-muted); --cta-contrast: var(--wrn-color-primary-contrast); --cta-border: color-mix(in srgb, var(--cta-accent) 15%, var(--wrn-color-border)); position: relative; width: 100%; color: var(--wrn-color-text); } .wrn-cta-section[data-color="secondary"] { --cta-accent: var(--wrn-color-secondary); --cta-accent-hover: var(--wrn-color-secondary-hover); --cta-accent-soft: var(--wrn-color-secondary-soft); --cta-accent-muted: var(--wrn-color-secondary-muted); --cta-contrast: var(--wrn-color-secondary-contrast); } .wrn-cta-section[data-color="info"] { --cta-accent: var(--wrn-color-info); --cta-accent-hover: var(--wrn-color-info-hover); --cta-accent-soft: var(--wrn-color-info-soft); --cta-accent-muted: var(--wrn-color-info-muted); --cta-contrast: var(--wrn-color-info-contrast); } .wrn-cta-section[data-color="success"] { --cta-accent: var(--wrn-color-success); --cta-accent-hover: var(--wrn-color-success-hover); --cta-accent-soft: var(--wrn-color-success-soft); --cta-accent-muted: var(--wrn-color-success-muted); --cta-contrast: var(--wrn-color-success-contrast); } .wrn-cta-section[data-color="warning"] { --cta-accent: var(--wrn-color-warning); --cta-accent-hover: var(--wrn-color-warning-hover); --cta-accent-soft: var(--wrn-color-warning-soft); --cta-accent-muted: var(--wrn-color-warning-muted); --cta-contrast: var(--wrn-color-warning-contrast); } .wrn-cta-section[data-color="danger"] { --cta-accent: var(--wrn-color-danger); --cta-accent-hover: var(--wrn-color-danger-hover); --cta-accent-soft: var(--wrn-color-danger-soft); --cta-accent-muted: var(--wrn-color-danger-muted); --cta-contrast: var(--wrn-color-danger-contrast); } .wrn-cta-section__outer { width: min(calc(100% - 2rem), 80rem); margin-inline: auto; } .wrn-cta-section[data-max-width="compact"] .wrn-cta-section__outer { width: min(calc(100% - 2rem), 64rem); } .wrn-cta-section[data-max-width="lg"] .wrn-cta-section__outer { width: min(calc(100% - 2rem), 72rem); } .wrn-cta-section[data-max-width="wide"] .wrn-cta-section__outer, .wrn-cta-section[data-max-width="2xl"] .wrn-cta-section__outer { width: min(calc(100% - 2rem), 90rem); } .wrn-cta-section[data-max-width="full"] .wrn-cta-section__outer { width: 100%; max-width: none; } .wrn-cta-section[data-full-bleed="true"] .wrn-cta-section__outer { width: 100%; max-width: none; } .wrn-cta-section__surface { position: relative; isolation: isolate; overflow: hidden; padding: 3rem; background: radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--cta-accent) 10%, transparent), transparent 28%), var(--wrn-color-surface-raised); border: 1px solid var(--cta-border); border-radius: 1.5rem; box-shadow: 0 1px 0 color-mix(in srgb, white 5%, transparent) inset, 0 24px 70px color-mix(in srgb, black 15%, transparent); } .wrn-cta-section[data-size="compact"] .wrn-cta-section__surface, .wrn-cta-section[data-size="sm"] .wrn-cta-section__surface { padding: 2rem; } .wrn-cta-section[data-size="lg"] .wrn-cta-section__surface { padding: 4rem; } .wrn-cta-section[data-full-bleed="true"] .wrn-cta-section__surface { border-inline: 0; border-radius: 0; } .wrn-cta-section[data-variant="soft"] .wrn-cta-section__surface { background: radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--cta-accent) 14%, transparent), transparent 30%), linear-gradient(135deg, var(--cta-accent-soft), transparent 64%), var(--wrn-color-surface-raised); box-shadow: none; } .wrn-cta-section[data-variant="outline"] .wrn-cta-section__surface { background: transparent; box-shadow: none; } .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__surface { color: var(--cta-contrast); background: radial-gradient(circle at 90% 8%, color-mix(in srgb, white 16%, transparent), transparent 30%), linear-gradient(135deg, var(--cta-accent), color-mix(in srgb, var(--cta-accent) 70%, var(--wrn-color-secondary))); border-color: color-mix(in srgb, white 22%, transparent); } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__surface { color: var(--cta-contrast); background: radial-gradient(circle at 90% 8%, color-mix(in srgb, white 14%, transparent), transparent 30%), var(--cta-accent); border-color: color-mix(in srgb, white 22%, transparent); box-shadow: 0 30px 80px color-mix(in srgb, var(--cta-accent) 28%, transparent); } .wrn-cta-section__background-image { position: absolute; inset: 0; z-index: -3; width: 100%; height: 100%; object-fit: cover; opacity: 0.14; } .wrn-cta-section__glow { position: absolute; z-index: -2; width: 22rem; height: 22rem; pointer-events: none; background: var(--cta-accent); border-radius: 999px; filter: blur(110px); opacity: 0.1; } .wrn-cta-section__glow--one { top: -12rem; right: -7rem; } .wrn-cta-section__glow--two { bottom: -14rem; left: -8rem; opacity: 0.06; } .wrn-cta-section__layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; gap: 2.5rem; } .wrn-cta-section__content, .wrn-cta-section__visual-column { min-width: 0; } .wrn-cta-section__content { max-width: 48rem; } .wrn-cta-section[data-align="center"] .wrn-cta-section__content { margin-inline: auto; text-align: center; } .wrn-cta-section[data-align="right"] .wrn-cta-section__content { margin-left: auto; text-align: right; } .wrn-cta-section__icon { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; margin-bottom: 1.1rem; color: var(--cta-accent); background: var(--cta-accent-soft); border: 1px solid color-mix(in srgb, var(--cta-accent) 20%, transparent); border-radius: 0.9rem; font-size: 1.35rem; } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__icon, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__icon { color: currentColor; background: color-mix(in srgb, white 14%, transparent); border-color: color-mix(in srgb, white 22%, transparent); } .wrn-cta-section__eyebrow { margin: 0; color: var(--cta-accent); font-size: 0.72rem; font-weight: 650; letter-spacing: 0.16em; text-transform: uppercase; } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__eyebrow, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__eyebrow { color: currentColor; opacity: 0.78; } .wrn-cta-section__title { max-width: 18ch; margin: 0.75rem 0 0; color: var(--wrn-color-text); font-size: clamp(2rem, 5vw, 4rem); font-weight: 650; line-height: 1.05; letter-spacing: -0.045em; } .wrn-cta-section[data-align="center"] .wrn-cta-section__title, .wrn-cta-section[data-align="right"] .wrn-cta-section__title { margin-inline: auto; } .wrn-cta-section[data-align="right"] .wrn-cta-section__title { margin-right: 0; } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__title, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__title { color: currentColor; } .wrn-cta-section__description { max-width: 44rem; margin: 1rem 0 0; color: var(--wrn-color-text-muted); font-size: 0.96rem; line-height: 1.75; } .wrn-cta-section[data-align="center"] .wrn-cta-section__description, .wrn-cta-section[data-align="right"] .wrn-cta-section__description { margin-inline: auto; } .wrn-cta-section[data-align="right"] .wrn-cta-section__description { margin-right: 0; } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__description, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__description { color: color-mix(in srgb, currentColor 82%, transparent); } .wrn-cta-section__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-top: 1.75rem; } .wrn-cta-section__actions--slot:empty { display: none; } .wrn-cta-section[data-align="center"] .wrn-cta-section__actions { justify-content: center; } .wrn-cta-section[data-align="right"] .wrn-cta-section__actions { justify-content: flex-end; } .wrn-cta-section__action { display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem; min-height: 2.85rem; padding: 0.78rem 1.1rem; border-radius: 0.75rem; font-size: 0.84rem; font-weight: 700; line-height: 1; text-decoration: none; transition: transform 160ms ease, background-color 160ms ease, color 160ms ease, border-color 160ms ease; } .wrn-cta-section__action:hover { transform: translateY(-2px); } .wrn-cta-section__action--primary { color: var(--cta-contrast); background: var(--cta-accent); border: 1px solid transparent; } .wrn-cta-section__action--primary:hover { background: var(--cta-accent-hover); } .wrn-cta-section__action--secondary { color: var(--cta-accent); background: transparent; border: 1px solid color-mix(in srgb, var(--cta-accent) 42%, var(--wrn-color-border)); } .wrn-cta-section__action--secondary:hover { background: var(--cta-accent-soft); border-color: var(--cta-accent); } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__action--primary, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__action--primary { color: var(--cta-accent); background: var(--cta-contrast); } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__action--secondary, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__action--secondary { color: currentColor; border-color: color-mix(in srgb, white 46%, transparent); } .wrn-cta-section[data-variant="solid"] .wrn-cta-section__action--secondary:hover, .wrn-cta-section[data-variant="gradient"] .wrn-cta-section__action--secondary:hover { background: color-mix(in srgb, white 12%, transparent); border-color: color-mix(in srgb, white 68%, transparent); } .wrn-cta-section__action-icon { width: 1rem; height: 1rem; } .wrn-cta-section__action:focus-visible { outline: 2px solid var(--wrn-color-focus); outline-offset: 3px; } .wrn-cta-section__visual-column { position: relative; min-height: 0; } .wrn-cta-section__visual { overflow: hidden; color: var(--wrn-color-text); background: var(--wrn-color-surface-raised); border: 1px solid var(--wrn-color-border); border-radius: 1.2rem; box-shadow: 0 20px 54px color-mix(in srgb, black 18%, transparent); } .wrn-cta-section__visual-media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--wrn-color-surface-soft); } .wrn-cta-section__visual-image { display: block; width: 100%; height: 100%; object-fit: cover; } .wrn-cta-section__visual-header { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.9rem; padding: 1.25rem; } .wrn-cta-section__visual-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.6rem; height: 2.6rem; color: var(--cta-accent); background: var(--cta-accent-soft); border-radius: 0.82rem; font-size: 1.15rem; } .wrn-cta-section__visual-copy { min-width: 0; } .wrn-cta-section__visual-title { margin: 0; color: var(--wrn-color-text); font-size: 1rem; font-weight: 650; } .wrn-cta-section__visual-description { margin: 0.42rem 0 0; color: var(--wrn-color-text-muted); font-size: 0.78rem; line-height: 1.6; } .wrn-cta-section__visual-list { display: grid; border-top: 1px solid var(--wrn-color-border); } .wrn-cta-section__visual-item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.7rem; padding: 0.95rem 1.25rem; } .wrn-cta-section__visual-item + .wrn-cta-section__visual-item { border-top: 1px solid var(--wrn-color-border); } .wrn-cta-section__visual-item-icon { width: 1rem; height: 1rem; margin-top: 0.12rem; color: var(--cta-accent); } .wrn-cta-section__visual-item strong { color: var(--wrn-color-text); font-size: 0.78rem; } .wrn-cta-section__visual-item p { margin: 0.3rem 0 0; color: var(--wrn-color-text-muted); font-size: 0.73rem; line-height: 1.5; } .wrn-cta-section__footer:empty { display: none; } .wrn-cta-section__footer:not(:empty) { margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent); } @media (min-width: 900px) { .wrn-cta-section[data-align="split"] .wrn-cta-section__layout { grid-template-columns: minmax(0, 1.25fr) minmax(18rem, 0.75fr); gap: 4rem; } .wrn-cta-section[data-align="split"][data-visual-position="left"] .wrn-cta-section__content { order: 2; } .wrn-cta-section[data-align="split"][data-visual-position="left"] .wrn-cta-section__visual-column { order: 1; } .wrn-cta-section[data-align="split"] .wrn-cta-section__visual-column:empty { display: none; } .wrn-cta-section[data-align="split"] .wrn-cta-section__visual-column:empty + * { grid-column: 1 / -1; } } @media (max-width: 639px) { .wrn-cta-section__surface { padding: 1.6rem; border-radius: 1.2rem; } .wrn-cta-section__actions { align-items: stretch; } .wrn-cta-section__action { width: 100%; } } @media (prefers-reduced-motion: reduce) { .wrn-cta-section__action { transition: none; } .wrn-cta-section__action:hover { transform: none; } } } }