page ProductHerocomponent { seo { title = "ProductHero component" description = "Reusable product hero component." } view {
W WRNexusJS
layout component

ProductHero

Reusable product hero component.

@wrnexus/ui 0.2.775 props1 slots0 events

Usage

Components are auto-discovered. Use the component directly in any .wrn view:

<ProductHero
  eyebrow="eyebrow"
  title="title"
  description="description"
  align="start"
/>

Legacy mount name: data-component="ProductHero".

Props and attributes

PropTypeRequirementDefault
eyebrowstringOptional""
titlestringOptional""
descriptionstringOptional""
alignstringOptional"start"
classstringOptional""

Slots

  • default

Events

This component does not declare a custom event.

Source contract

Installed source: components/ProductHero.wrn

component ProductHero {
  props {
    eyebrow = ""
    title = ""
    description = ""
    align = "start"
    class = ""
  }

  view {
        <section
      class="
        relative isolate overflow-hidden border-b border-[var(--wire-color-border,#e2e8f0)]
        bg-[var(--wire-color-background,#ffffff)] px-4 py-16 sm:px-6 sm:py-20 lg:px-8 lg:py-24
        {class}
      "
    >
        <div
        class="pointer-events-none absolute inset-0 -z-10 opacity-80"
        style="background: radial-gradient(circle at 16% 0%, color-mix(in srgb, var(--wire-color-primary, #059669) 16%, transparent), transparent 36%);"
        aria-hidden="true"
      >
        </div>
        <div class="mx-auto w-full max-w-7xl">
        <div
          class="max-w-4xl"
          class:mx-auto='{align === "center"}'
          class:text-center='{align === "center"}'
        >
          {#if eyebrow}
            <p class="mb-4 text-xs font-bold uppercase tracking-[0.18em] text-[var(--wire-color-primary,#059669)] sm:text-sm">
              {eyebrow}
            </p>
          {/if}

          {#if title}
            <h1 class="m-0 max-w-[18ch] text-4xl font-semibold leading-[1.05] tracking-[-0.045em] text-[var(--wire-color-text,#0f172a)] sm:text-5xl lg:text-6xl" class:mx-auto='{align === "center"}'>
              {title}
            </h1>
          {/if}

          {#if description}
            <p class="mt-6 max-w-3xl text-base leading-8 text-[var(--wire-color-text-muted,#64748b)] sm:text-lg" class:mx-auto='{align === "center"}'>
              {description}
            </p>
          {/if}
        </div>
        <div class="mt-8 space-y-8">
        <slot />
        </div>
        </div>
        </section>
    }
}
} }