X Enterprises

nuxt-x-marketing

Nuxt layer with 38+ marketing components — hero, features, pricing, testimonials, blog, affiliate, cookie/GDPR, and a full CSS design system. Zero required props on all components.

nuxt-x-marketing

Marketing website layer for Nuxt 4. Provides 38+ XMark-prefixed components with zero required props, dark mode support, responsive design, WCAG 2.0 AA accessibility, and a complete CSS design system (typography, animations, glass effects). Built on Nuxt UI v4.

Installation

npm install @xenterprises/nuxt-x-marketing
// nuxt.config.ts
export default defineNuxtConfig({
  extends: "@xenterprises/nuxt-x-marketing",
});

Quick Start

<template>
  <div>
    <XMarkNavbar :links="navLinks" logo-light="/logo-white.svg" logo-dark="/logo-dark.svg">
      <template #actions>
        <UButton variant="ghost">Sign In</UButton>
        <UButton color="primary">Get Started</UButton>
      </template>
    </XMarkNavbar>

    <XMarkHero
      eyebrow="Welcome"
      title="Build something amazing"
      subtitle="The modern platform for teams."
      :buttons="[{ label: 'Get Started', color: 'primary' }, { label: 'Watch Demo', variant: 'outline' }]"
    />

    <XMarkSection bg="subtle" padding="xl">
      <XMarkFeatures :features="features" layout="grid" :columns="3" />
    </XMarkSection>

    <XMarkSection bg="default" padding="xl">
      <XMarkPricing :plans="pricingPlans" :show-billing-toggle="true" />
    </XMarkSection>

    <XMarkFooter
      logo="/logo.svg"
      description="Building the future of modern software."
      :social="socialLinks"
      :columns="footerColumns"
    />
  </div>
</template>

Components

All components are auto-imported with the XMark prefix. Every component works out of the box with zero required props.

Core Layout

ComponentDescription
XMarkNavbarFixed navigation with transparent-to-solid scroll transition, mobile menu.
XMarkSectionSection wrapper with bg variants (default, subtle, elevated, bold), padding, container size, and SVG pattern backgrounds.
XMarkFooterFull footer with brand, link columns, social icons, optional newsletter.
XMarkLegalFooterMinimal footer with copyright and legal links only.

XMarkNavbar props: links, logoLight, logoDark, logoAlt, transparent (default true), scrollThreshold (default 100).

XMarkSection props: bg, padding (none/sm/md/lg/xl), container (smxl/full), pattern (dots/grid/diagonal/topography/circuit/waves), patternOpacity, bgImage, parallax.


Hero & Landing

ComponentDescription
XMarkHeroFull-screen hero with image/video background, overlay, text alignment, scroll indicator.

XMarkHero props: imageSrc, videoSrc, eyebrow, title, subtitle, align (left/center/right), verticalAlign (center/bottom), overlay (light/heavy/gradient/none), showScrollIndicator.

<XMarkHero
  image-src="/hero.jpg"
  eyebrow="Welcome"
  title="Build something amazing"
  subtitle="The modern platform for teams."
  align="left"
  overlay="gradient"
  :show-scroll-indicator="true"
>
  <template #actions>
    <UButton size="xl" color="white">Get Started</UButton>
  </template>
</XMarkHero>

Content Sections

ComponentDescription
XMarkFeaturesFeature grid/list/alternating with icons or images. Props: features, layout (grid/list/alternating), columns (2/3/4).
XMarkTestimonialsTestimonial cards in grid or carousel.
XMarkPricingPricing cards with billing toggle and popular badge.
XMarkComparisonFeature comparison table across plans.
XMarkNewsletterEmail signup with variants (default, minimal, inline).

XMarkPricing props: plans, highlighted, showBillingToggle (default false), yearlyDiscount (default 20). Emits: select.


Blog Components

ComponentDescription
XMarkBlogCardBlog post card with image, excerpt, author, date, category. Props: post, variant.
XMarkBlogListBlog listing grid. Props: posts, columns, showFeatured.
XMarkBlogDetailFull post view with author, share buttons, related posts.
XMarkBlogSidebarSidebar with search, categories, tags, recent posts.
XMarkBlogAuthorAuthor bio with social links. Props: author, variant (inline/sm/full/card).
XMarkBlogNavigationPrevious/next post navigation.
XMarkBlogCTAIn-article newsletter signup. Props: title, description, variant (featured/…).

UI Elements

ComponentDescription
XMarkBadgeTrust badges with presets (no-credit-card, cancel-anytime, money-back, free-trial, secure) or custom icon/label.
XMarkGlassCardGlassmorphism card. Props: blur, opacity.
XMarkPromoCardPromotional card with image and CTA.
XMarkGlowDividerGlowing section divider. Props: color, intensity.
XMarkPatternBgSVG background patterns. Props: pattern (dots/grid/diagonal/topography/circuit/waves), opacity.
XMarkSectionStitchSection divider shapes. Props: shape (angle/wave/curve/triangle/zigzag), position (top/bottom), flip.

Modals & Overlays

ComponentDescription
XMarkVideoModalVideo lightbox for YouTube, Vimeo, and direct URLs. Props: v-model, url, title.
XMarkImageLightboxImage gallery lightbox with keyboard nav. Props: v-model, images, startIndex.
XMarkFeatureModalFeature detail modal. Props: v-model, feature.

Notifications & Banners

ComponentDescription
XMarkAnnouncementBarDismissible top announcement. Props: message, linkText, linkUrl, variant, dismissible.
XMarkCookieBannerCookie consent banner with accept/decline.
XMarkCookieToastCookie toast notification.
XMarkGDPRGDPR cookie preference modal with category toggles.
XMarkSocialProofToastSocial proof notification toasts. Props: notifications, interval, position.

Affiliate & Review Components

For affiliate marketing, product review sites, and comparison posts.

ComponentDescription
XMarkAffiliateDisclosureFTC/Amazon affiliate disclosure. Variants: subtle, banner, inline.
XMarkAffiliateProductCardProduct card with rating, price, pros/cons, buy CTA. Layouts: card, row, compact.
XMarkAffiliateProductGridGrid of product cards with auto rank badges (#1/#2/#3).
XMarkAffiliateProductDetailFull product review layout: image gallery, editorial score, specs, sticky buy box. Slots: buy-box, after-verdict, sidebar.
XMarkAffiliateComparisonTableSide-by-side product comparison with best-value highlighting.

XMarkAffiliateProductCard props: product ({ name, image, price, rating, reviewCount, pros, cons, affiliateUrl, affiliateTag, badge }), layout, showPros, showCons, showRating, showPrice, buttonLabel.


Utilities

ComponentDescription
XMarkBackToTopScroll-to-top button. Props: showAfter, smooth.
XMarkPopupChatChat widget trigger. Props: provider, config.

Composables

All composables are SSR-safe and auto-imported.

ComposableDescription
useScrollReveal(options?)Intersection Observer that adds is-visible to [data-reveal], .xFadeUp, .xFadeIn, .xFadeLeft, .xFadeRight, .xScale, .xFadeUp-stagger elements on scroll.
useParallax(options?)Parallax effect for .xParallax[data-parallax-speed] elements via requestAnimationFrame.
useElementParallax(speed?)Individual element parallax via template ref. Returns { elementRef }.
useStaggerReveal(selector, delay?)Adds incremental transition-delay to [data-reveal] children.
useXBlog()Blog data fetching composable. Reads runtimeConfig.public.apiURL.
// Scroll animations are initialized globally by marketing.client.ts plugin.
// Use directly in components for fine-grained control:
const { elementRef } = useElementParallax(0.3);

Configuration

// app.config.ts
export default defineAppConfig({
  xMarketing: {
    name: "X Enterprises",
    config: {
      markerProjectId: "your-marker-project-id", // Optional: Marker.io integration
    },
  },
});

CSS Design System

The layer ships x-marketing.css with utility classes auto-available in all components.

Typography

ClassDescription
xText-displayDisplay heading — clamp(3rem, 8vw, 6rem), weight 700
xText-headlineSection headline — clamp(2rem, 5vw, 3.5rem), weight 600
xText-titleCard/feature title — clamp(1.25rem, 3vw, 1.75rem), weight 600
xText-bodyBody text — 1.125rem, line-height 1.7
xText-smallCaptions/labels — 0.875rem
xText-eyebrowUppercase label — 0.75rem, 0.1em tracking
xText-gradientGradient text using primary color

Scroll Animations

ClassDescription
xFadeUpFade in + slide up 24px on scroll
xFadeInSimple fade in on scroll
xFadeLeft / xFadeRightFade in from left/right 24px
xScaleScale in (0.95 → 1) on scroll
xFadeUp-staggerStagger children with 100ms delay increments

All animations respect prefers-reduced-motion: reduce.

Hover Effects

ClassDescription
xHover-liftLift up 4px + shadow on hover
xHover-growScale to 1.02 on hover
xHover-glowPrimary color glow shadow on hover
xHover-zoomZoom child <img> to 1.08 on hover

Glass & Glow

ClassDescription
xGlassGlassmorphism — 20px blur, white/70 bg, border, shadow
xGlass-subtle / xGlass-heavy8px / 40px blur variants
xGlow-dividerGlowing horizontal divider
xGlow-borderGlowing gradient border

Environment Variables

VariableRequiredDescription
NUXT_PUBLIC_API_URLNoBase API URL for useXBlog() blog composable.

No required environment variables. All configuration is via app.config.ts.

How It Works

  1. Component registration: All components in app/components/X/Mark/ are auto-imported with the XMark prefix. Branded X Enterprises components live under X/X/ with the XX prefix.
  2. Design system: app/assets/css/x-marketing.css defines CSS custom properties for typography scale, spacing, colors, shadows, and motion. Uses Tailwind CSS v4 with @theme static for custom color palettes. Dark mode via .dark selector.
  3. Animations: A client-side plugin (marketing.client.ts) auto-initializes useScrollReveal() and useParallax() globally on mount. Components can also call these composables directly for fine-grained control.
  4. Configuration: app.config.ts defines the xMarketing namespace with Nuxt UI theme overrides. Consumer apps deep-merge their own app.config.ts to customize.
  5. Type system: app/types/marketing.d.ts exports interfaces for all data structures (BlogPost, Feature, PricingPlan, Testimonial, AffiliateProduct, etc.).

Layer Architecture

PathPurpose
nuxt.config.tsRegisters @nuxt/ui, loads CSS, enables SSR and devtools
app/app.config.tsDefault xMarketing config + Nuxt UI theme overrides
app/assets/css/x-marketing.cssFull design system: colors, typography, animations, glass effects
app/components/X/Mark/Generic XMark* marketing components
app/composables/useScrollReveal, useParallax, useElementParallax, useStaggerReveal, useXBlog
app/plugins/marketing.client.tsClient plugin: auto-initializes scroll/parallax globally
app/types/marketing.d.tsTypeScript interfaces for all data structures
app/pages/Default blog pages (/blog, /blog/[...slug])

Consumer apps can override app.vue to replace the default shell, or override any page by creating their own pages/blog/index.vue.


AI Context

package: "@xenterprises/nuxt-x-marketing"
type: nuxt-layer
prefix: XMark
use-when: >
  Building a marketing website with Nuxt 4. Provides 38+ XMark-prefixed components
  (hero, features, pricing, testimonials, blog, affiliate, cookie/GDPR, modals) with
  zero required props, dark mode, WCAG 2.0 AA accessibility, and a full CSS design
  system. Includes 5 composables (useScrollReveal, useParallax, useElementParallax,
  useStaggerReveal, useXBlog) and default blog pages. Configure via app.config.ts
  under xMarketing.
Copyright © 2026