X Enterprises
nuxt-x-affiliate

Site Footer

Site-wide footer with a brand column, link columns, social row, optional newsletter band, and the required FTC legal row.

Site Footer

The site-wide footer. Structure ported from the marketing layer: brand column with description and social row, link columns, an optional newsletter band, and a bottom bar.

The legal row is not optional layout — it carries the FTC affiliate disclosure, privacy, terms, cookies, and earnings links, resolved from xAffiliate.legal. It is a compliance requirement, which is why it is configured separately from everything else on this component.

Components

<XAFSiteFooter />

<XAFSiteFooter />
<XAFLegalBar />
<XAFSiteFooter
  :columns="columns"
  :social="[
    { label: 'YouTube', href: 'https://youtube.com/@example', icon: 'i-simple-icons-youtube' },
  ]"
  description="Hands-on kitchen gear reviews since 2019."
/>

Configure the shared parts once instead of passing them per page:

export default defineAppConfig({
  xAffiliate: {
    brand: { name: 'BestKitchenGear', tagline: 'Tested, not spec-sheeted.' },
    footer: {
      description: 'Hands-on kitchen gear reviews since 2019.',
      socials: [{ label: 'YouTube', href: 'https://youtube.com/@example', icon: 'i-simple-icons-youtube' }],
    },
    // Drives the legal row. NOT under `footer` — these links are required.
    legal: { baseUrl: 'https://x.enterprises/legal' },
  },
})

Props

PropTypeDefaultDescription
columnsFooterColumn[]Reviews + AboutLink columns
showLegalbooleantrueRender the legal row from xAffiliate.legal
newsletterbooleantrueShow the newsletter band
newsletterEndpointstring'/api/newsletter'Where the newsletter form posts
newsletterTitlestring'Get the best deals'Newsletter heading
newsletterDescriptionstring'Weekly roundup of the top picks.'Newsletter subhead
social{ label, href, icon? }[]xAffiliate.footer.socialsSocial icon row
descriptionstringfooter.description, then brand.taglineBlurb under the brand
logostringfooter.logo, then brand.logoFooter mark

Slots

SlotDescription
brandReplace the logo / wordmark block

Tips

  • Set :newsletter="false" on sites that intentionally don't collect email addresses — privacy-first sites whose public privacy notice says so.
  • The legal row renders whenever xAffiliate.legal is configured, independent of the link columns above it. Don't rebuild those links by hand in columns.

Migration

The brand-blurb slot was replaced by the description prop and the wider brand slot. Move that copy to :description or xAffiliate.footer.description.


AI Context

component: XAFSiteFooter
package: "@xenterprises/nuxt-x-affiliate"
use-when: Site-wide footer with brand, link columns, newsletter, and FTC legal links
Copyright © 2026