X Enterprises
nuxt-x-marketing

Layout

Site-wide layout components including a sticky transparent navbar, full-featured footer, compact legal footer, and dismissible announcement bar.

Layout

Layout components wrap every page and provide consistent chrome. Use XMarkLayoutNavbar at the top of your app layout, XMarkLayoutFooter or XMarkLayoutFooterLegal at the bottom, and XMarkLayoutAnnouncementBar above the navbar when you need to surface a promotion or notice.

Components

<XMarkLayoutNavbar />

A fixed-position header that starts transparent over the hero and transitions to a frosted-glass surface after the user scrolls past scrollThreshold pixels. Navigation links and action buttons fall back to appConfig.xMarketing.header if props are not provided. Mobile navigation opens as a full-screen overlay.

<XMarkLayoutNavbar
  :transparent="true"
  :scroll-threshold="80"
  :logo="{ src: '/logo-light.svg', srcDark: '/logo-dark.svg', alt: 'Acme' }"
  :links="[
    { label: 'Features', to: '/features' },
    { label: 'Pricing', to: '/pricing' },
    { label: 'Blog', to: '/blog' },
  ]"
  :buttons="[
    { label: 'Sign In', to: '/login', variant: 'outline' },
    { label: 'Get Started', to: '/signup', color: 'primary' },
  ]"
/>

Props

PropTypeDefaultDescription
transparentBooleantrueStart with a transparent gradient background over a hero
linksArraynullNav links [{ label, to }]; falls back to appConfig
logoObjectnullLogo object { src, srcDark?, alt? }; falls back to appConfig
scrollThresholdNumber100Pixels scrolled before switching to solid background
buttonsArraynullAction buttons [{ label, to, color?, variant?, icon?, target? }]; falls back to appConfig

Slots

SlotDescription
logoCustom logo element
linksCustom desktop navigation links
actionsCustom desktop action area
mobile-actionsCustom mobile menu action area

<XMarkLayoutFooter />

A full-featured dark footer. The left brand column shows the logo, description, and social links. Up to four additional link columns render in a responsive grid. An optional inline newsletter form can be toggled on. A bottom bar renders copyright text and legal links.

<XMarkLayoutFooter
  :logo="{ src: '/logo-white.svg', alt: 'Acme' }"
  description="The platform that helps teams ship faster."
  :social="[
    { name: 'Twitter', icon: 'i-lucide-twitter', href: 'https://twitter.com/acme' },
    { name: 'GitHub', icon: 'i-lucide-github', href: 'https://github.com/acme' },
  ]"
  :columns="[
    { title: 'Product', links: [{ label: 'Features', to: '/features' }, { label: 'Pricing', to: '/pricing' }] },
    { title: 'Company', links: [{ label: 'About', to: '/about' }, { label: 'Blog', to: '/blog' }] },
  ]"
  :has-newsletter="true"
  newsletter-title="Stay in the loop"
  newsletter-description="Get product updates and news."
  :legal-links="[
    { label: 'Privacy Policy', to: '/privacy' },
    { label: 'Terms', to: '/terms' },
  ]"
  copyright="© 2025 Acme Inc."
  @newsletter-submit="onNewsletterSubmit"
/>

Props

PropTypeDefaultDescription
logoObjectnullLogo object { src, alt? }
descriptionString''Brand tagline below the logo
socialArray[]Social links [{ name, icon, href }]
columnsArray[]Link columns [{ title, links: [{ label, to }] }]
legalLinksArray[]Bottom-bar legal links [{ label, to }]
copyrightStringCurrent year stringCopyright notice
hasNewsletterBooleanfalseShow inline newsletter form
newsletterTitleString'Subscribe to our newsletter'Newsletter heading
newsletterDescriptionString'Get the latest updates and news.'Newsletter subtext

Events

EventPayloadDescription
newsletter-submitemail: stringEmitted when newsletter form is submitted

<XMarkLayoutFooterLegal />

A minimal one-row legal strip suitable for pages that already have a full footer or need a standalone copyright bar.

<XMarkLayoutFooterLegal
  copyright="© 2025 Acme Inc. All rights reserved."
  :links="[
    { label: 'Privacy Policy', to: '/privacy' },
    { label: 'Terms of Service', to: '/terms' },
    { label: 'Cookie Policy', to: '/cookies' },
  ]"
/>

Props

PropTypeDefaultDescription
copyrightStringCurrent year stringCopyright text
linksArrayPrivacy & Terms defaultsLegal links [{ label, to }]

<XMarkLayoutAnnouncementBar />

A slim dismissible bar rendered above the navbar. Dismissed state is persisted to localStorage using storageKey. Supports color variants and an optional CTA link.

<XMarkLayoutAnnouncementBar
  message="We just launched v2.0 with major performance improvements."
  badge="New"
  icon="i-lucide-rocket"
  link="/changelog"
  link-text="Read the changelog"
  variant="primary"
  :dismissible="true"
  storage-key="announcement-v2"
/>

Props

PropTypeDefaultDescription
messageStringDefault announcement textMain message
badgeString''Bold label shown before the message
iconString''Lucide icon name
linkString''CTA link URL
linkTextString'Learn more'CTA link label
variantString'primary'Color variant: 'primary', 'neutral', 'success', 'warning', 'error'
dismissibleBooleantrueShow close button
storageKeyString''localStorage key to persist dismissed state

AI Context

category: Layout
package: "@xenterprises/nuxt-x-marketing"
components:
  - XMarkLayoutNavbar
  - XMarkLayoutFooter
  - XMarkLayoutFooterLegal
  - XMarkLayoutAnnouncementBar
use-when: >
  Setting up the persistent chrome for a marketing site — navigation,
  footer, and optional promotional banners that appear on every page.
typical-page-section: >
  XMarkLayoutNavbar: fixed top. XMarkLayoutAnnouncementBar: above the navbar.
  XMarkLayoutFooter / XMarkLayoutFooterLegal: bottom of every page.
Copyright © 2026