Promo Banners

Promotional banners used to highlight special offers, announcements, or important information. Fully responsive design that adapts from desktop to mobile layouts automatically.

Default Variant - No Border

Larger layout without border. Button appears below text on desktop, full width on mobile.

Special Offer

Need a HeyLink.me page that stands out?

Engage a professional design team to elevate and distinguish your HeyLink.me.

New Feature

Need a HeyLink.me page that stands out?

Engage a professional design team to elevate and distinguish your HeyLink.me.

Small Variant - With Border

Compact layout with border. Button appears below text on both desktop and mobile.

Special Offer

Need a HeyLink.me page that stands out?

Engage a professional design team to elevate and distinguish your HeyLink.me.

New Feature

Need a HeyLink.me page that stands out?

Engage a professional design team to elevate and distinguish your HeyLink.me.

Text Only Variants

Promotional messages without images.

Important Announcement

We've updated our terms of service. Please review the changes to continue using our platform.

Limited Time Offer

Get 30% off on all annual plans. Offer ends soon!

Custom Background Color

Use backgroundColor prop to set custom background colors.

New Feature

New Feature Available

Check out our latest updates and improvements. Explore new tools designed to boost your productivity.

Success! Your account is verified

You can now access all premium features and start using our platform.

Exclusive Premium Access

Unlock all premium features and get priority support. Join thousands of satisfied customers today!

Usage Example

Example code for implementing Promo Banners

import { PromoBanner, Button } from '@monorepo/ui/DesignSystem';

// Default variant (no border)
<PromoBanner
  title="Special Offer"
  description="Get 50% off on all premium features"
  imageSrc="/promo-desktop.jpg"
  imageSrcMobile="/promo-mobile.jpg"
  imageAlt="Promo"
  primaryAction={<Button size="md">Learn More</Button>}
  onClose={() => console.log('closed')}
/>

// Small variant with border (no image on mobile)
<PromoBanner
  size="small"
  backgroundColor="bg-blue-50"
  title="New Feature Available"
  description="Check out our latest updates"
  primaryAction={<Button size="md">Explore</Button>}
/>

Props

PropTypeDefaultDescription
size'default' | 'small''default'Banner size (default has no border, small has border)
backgroundColorstring-Custom background color (Tailwind class)
titleReactNode-Banner title (required)
descriptionReactNode-Banner description (optional)
imageSrcstring-Desktop image source URL
imageSrcMobilestring-Mobile image source (falls back to imageSrc)
imageAltstring'Promo'Image alt text
primaryActionReactNode-Primary action button
onClose() => void-Close button handler

Responsive Behavior

  • Default Variant:
  • • Desktop: Image (max-width 160px) + Text + Button stacked vertically. Padding: 24px 48px. Gap: 34px (image to text), 24px (text to button)
  • • Mobile: Image (max-width 120px) + Text horizontal, Button full width below. Padding: 16px. Gap: 16px
  • • No border
  • Small Variant:
  • • Desktop: Image (max-width 160px) + Text + Button stacked vertically. Padding: 16px. Gap: 32px (image to text), 24px (text to button)
  • • Mobile: Image (max-width 120px) at top, Text below, Button full width at bottom. Padding: 16px. Gap: 16px
  • • Has 0.5px border (brand-1)
  • Images: Images are responsive with max-width constraints (120px mobile, 160px desktop). Height adjusts automatically to maintain aspect ratio.
  • Close Button: Positioned absolutely - slightly outside on mobile (-8px), inside on desktop (8px)
  • Typography: Title 14px/16px, Description 12px/14px
  • Button: Full width on mobile, auto width on desktop