Review Page Header 3

Tag Migration Notice: This widget uses the legacy bw-widget tag. For new implementations, please use <nw-blocks> tags instead. The bw-widget tag remains supported for backward compatibility.

Review Page Header 3

The ReviewPageHeader3 widget is the most advanced review page header variant, featuring enhanced styling with custom background themes, refined bonus label positioning, mobile-first responsive design, and optimized tracking link architecture. Built on the modular foundation of v2 with premium visual enhancements.

Key Features

  • Custom Background Themes: Light/dark/custom background support via background attribute
  • Enhanced Bonus Labels: Refined positioning with data attributes for advanced styling
  • Mobile-Desktop Layouts: Separate optimized layouts for mobile and desktop viewports
  • Clickable Bonus Sections: Entire bonus area is a tracking link for improved CTR
  • Normalized Background: Utility function normalizeBackgroundMain() for consistent theming
  • Tracking URL Builder: Dedicated buildTrackingUrl() utility for cleaner link generation
  • Social Proof Ribbons: Six ribbon types (sp/tr/ec/pc/so/eo) with translation keys
  • State Code Support: Enhanced US/CA state parsing with hyphen separator (e.g., “US-NJ”)
  • Modular Components: Separated Logo3, Rating3, Bonuses3, CTA3, Disclaimer3 components
  • Accessibility Enhanced: ARIA labels on clickable bonus sections

Demo Examples

Light Background

Expand me...

Dark Background

Expand me...

Usage Examples

Basic Implementation

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="en"
    country="US"
    rating="4.5"
    votes="153">
</nw-blocks>

With Light Background Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="betway-sports"
    language="fr"
    country="FR"
    rating="4.8"
    votes="287"
    background="light"
    ctakey="cta-visit-site"
    socialproofkey="wgt-reviewPageHeader-socialproof-sp">
</nw-blocks>

With Dark Background Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="fresh-casino"
    language="de"
    country="DE"
    rating="4.9"
    votes="421"
    background="dark"
    ctacolors="#d4af37"
    ctahovercolors="#c9a22b"
    socialproofkey="wgt-reviewPageHeader-socialproof-tr">
</nw-blocks>

Full Width with Custom Colors

<nw-blocks id="reviewpageheader3"
    cloakedlink="unibet-casino"
    language="es"
    country="ES"
    rating="4.6"
    votes="192"
    fullwidth="true"
    ctacolors="#ff6b35"
    ctahovercolors="#e85a2a"
    exclusivebonuskey="wgt-toplist-exclusive"
    socialproofkey="wgt-reviewPageHeader-socialproof-ec">
</nw-blocks>

Regional US State with Hyphen Separator

<nw-blocks id="reviewpageheader3"
    cloakedlink="draftkings-sports"
    language="en"
    country="US"
    rating="4.7"
    votes="512"
    ctatext="Bet in New Jersey"
    background="light"
    socialproofkey="wgt-reviewPageHeader-socialproof-so">
</nw-blocks>


Social Proof Ribbon Types

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="DE"
    rating="5.0"
    socialproofkey="wgt-reviewPageHeader-socialproof-sp"
    exclusivebonuskey="wgt-social-ribbon-sp">
</nw-blocks>

Use Case: Brands with highest traffic/engagement

2. Top Rated (tr)

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="DE"
    rating="5.0"
    socialproofkey="wgt-reviewPageHeader-socialproof-tr"
    exclusivebonuskey="wgt-social-ribbon-tr">
</nw-blocks>

Use Case: Brands with highest user ratings

3. Editor’s Choice (ec)

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="DE"
    rating="5.0"
    socialproofkey="wgt-reviewPageHeader-socialproof-ec"
    exclusivebonuskey="wgt-social-ribbon-ec">
</nw-blocks>

Use Case: Editorial team recommendations

4. Light Background Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="ZZ"
    rating="5.0"
    background="light"
    socialproofkey="wgt-reviewPageHeader-socialproof-sp">
</nw-blocks>

Use Case: Sites with light color schemes

5. Dark Background Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="ZZ"
    rating="5.0"
    background="dark"
    socialproofkey="wgt-reviewPageHeader-socialproof-sp">
</nw-blocks>

Use Case: Sites with dark/night mode themes


Attributes Reference

Attribute Type Required Default Description
id string Yes - Unique widget identifier
cloakedlink string Yes - Brand identifier for tracking and data lookup
language string No "en" Language code (ISO 639-1)
country string No "ZZ" Country code with optional state (e.g., “US-NJ”, “CA-ON”)
rating string No "5.0" Brand rating (0.0-5.0 scale)
votes string No "153" Number of user votes/reviews
votescountkey string No "wgt-reviewPageHeader-votecount" Translation key for vote count text
socialproofkey string No - Translation key for social proof ribbon
exclusivebonuskey string No "wgt-toplist-exclusive" Translation key for bonus label
ctakey string No - Translation key for CTA button text
ctatext string No - Override CTA button text (bypasses translation)
ctacolors string/JSON No "#05842A" CTA button color (solid or array for gradient)
ctahovercolors string/JSON No "#096725" CTA button hover color
background string No - Widget background theme (“light”, “dark”, or custom value)
trackinglinktarget string No - Tracking link target path segment
trackingdata string No - Additional tracking metadata
target string No "_blank" Link target attribute
rel string No "nofollow" Link relationship attribute
referer string No - Referrer identifier for attribution
fullwidth boolean/string No true Enable full-width container layout

Widget Components

1. Bonus Label Section

  • Component: <LabelBonus3>
  • Position: Top of widget with data attribute
  • Styling: Uses data-bonus attribute for CSS targeting
  • CSS Classes: .label-has-bonus when bonus text exists
  • Conditional: Only displays if bonusTagText is provided

2. Logo Section (Left Column)

  • Component: <Logo3>
  • Position: Left side of widget
  • Tracking: Full tracking URL with target and referer
  • Responsive: Optimized sizing for all viewports

3. Rating Display

  • Components: <Rating3> + <StarSprite>
  • Mobile Layout: Positioned in right column, below bonuses
  • Desktop Layout: Positioned in left column, below logo
  • Visibility Classes: .show-mobile and .show-desktop
  • Background Aware: Receives normalizedBgMain for theme adaptation

4. Bonuses Section (Clickable)

  • Component: <Bonuses3> wrapped in <a> tag
  • Mobile Layout: In left column (below logo)
  • Desktop Layout: In right column (top section)
  • Tracking: Entire section is clickable with full tracking URL
  • ARIA: aria-label="Open {brandName}" for accessibility
  • Data Attributes: data-tracking and data-referer for analytics

5. CTA Button

  • Component: <CtaButton3>
  • Position: Right column bottom
  • Colors: Supports solid colors or gradient arrays
  • Hover States: Configurable via ctahovercolors

6. Disclaimer Section

  • Component: <Disclaimer3>
  • Position: Bottom row spanning full width
  • Conditional: Only displays if hasDisclaimer is true
  • Content: Age requirement + compliance HTML + T&C link

Background Theme System

normalizeBackgroundMain() Utility

The widget uses a normalization function to handle background values:

normalizeBackgroundMain(background, backgroundMain)

Behavior:

  • background="light" → Returns light theme value
  • background="dark" → Returns dark theme value
  • background="custom-value" → Returns custom value
  • Falls back to backgroundMain prop if background not provided

Usage in Component:

const normalizedBgMain = normalizeBackgroundMain(
  data.background,
  data.backgroundMain
);

buildTrackingUrl() Utility

Dedicated utility function for clean tracking URL generation:

buildTrackingUrl({
  trackingLink: string,
  trackingTarget?: string,
  id: string,
  trackingData?: string,
  referer?: string
})

Returns: /go/{trackingLink}/{trackingTarget}?wid={id}&trackingData={trackingData}&referer={referer}

Usage in Bonuses Section:

<a
  href={trackingHref}
  target={data.target || '_blank'}
  rel={data.rel ?? 'nofollow'}
  aria-label={`Open ${data.brandName}`}
>
  <Bonuses3 bonus={data.bonusText} bonusExtra={data.additionalBonusText} />
</a>

Responsive Behavior

Mobile Layout (< 768px)

  • Column Order: Logo → Bonuses (clickable) → Rating → CTA
  • Stacked Layout: All components in vertical arrangement
  • Bonuses Position: Left column below logo (.show-mobile)
  • Rating Position: Right column above CTA (.show-mobile)
  • Full Width: Components span container width

Desktop Layout (≥ 768px)

  • Two-Column Layout: Left (logo + rating) | Right (bonuses + CTA)
  • Bonuses Position: Right column top (.show-desktop)
  • Rating Position: Left column below logo (.show-desktop)
  • Clickable Area: Entire bonus section is interactive
  • Enhanced Spacing: More generous whitespace

Dynamic CSS Classes

Class Condition Purpose
is-fw fullwidth="true" Full-width container layout
no-label-bonus No bonusTagText Hide bonus label section
label-has-bonus bonusTagText exists Style bonus label container
show-mobile CSS media query Display only on mobile
show-desktop CSS media query Display only on desktop/tablet

Common Use Cases

1. Premium Casino with Light Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="betway-casino"
    language="en"
    country="US"
    rating="4.7"
    votes="234"
    background="light"
    ctacolors="#4a90e2"
    ctahovercolors="#357abd"
    socialproofkey="wgt-reviewPageHeader-socialproof-sp">
</nw-blocks>

2. Sports Betting with Dark Theme

<nw-blocks id="reviewpageheader3"
    cloakedlink="draftkings-sports"
    language="en"
    country="US"
    rating="4.9"
    votes="512"
    background="dark"
    ctacolors="#ff6b35"
    ctahovercolors="#e85a2a"
    socialproofkey="wgt-reviewPageHeader-socialproof-tr">
</nw-blocks>

3. Multi-language with Custom Background

<nw-blocks id="reviewpageheader3"
    cloakedlink="cresus-casino"
    language="fr"
    country="FR"
    rating="4.5"
    votes="153"
    background="#f5f5f5"
    ctakey="cta-jouer-maintenant"
    socialproofkey="wgt-reviewPageHeader-socialproof-ec">
</nw-blocks>

4. Regional US State (New Jersey)

<nw-blocks id="reviewpageheader3"
    cloakedlink="fanduel-casino"
    language="en"
    country="US"
    rating="4.6"
    votes="378"
    background="light"
    ctatext="Play in New Jersey"
    trackingdata="nj-review"
    socialproofkey="wgt-reviewPageHeader-socialproof-so">
</nw-blocks>

5. Full Width Editor’s Choice

<nw-blocks id="reviewpageheader3"
    cloakedlink="fresh-casino"
    language="de"
    country="DE"
    rating="4.3"
    votes="89"
    fullwidth="true"
    background="dark"
    socialproofkey="wgt-reviewPageHeader-socialproof-ec"
    exclusivebonuskey="wgt-editors-pick">
</nw-blocks>

6. Canadian Province Targeting

<nw-blocks id="reviewpageheader3"
    cloakedlink="betmgm-casino"
    language="en"
    country="CA-ON"
    rating="4.8"
    votes="421"
    background="light"
    ctatext="Play in Ontario"
    trackingdata="on-review">
</nw-blocks>

7. Player’s Choice with Tracking

<nw-blocks id="reviewpageheader3"
    cloakedlink="unibet-sports"
    language="en"
    country="UK"
    rating="4.8"
    votes="421"
    trackinglinktarget="review-page"
    trackingdata="player-choice-click"
    referer="comparison-table"
    socialproofkey="wgt-reviewPageHeader-socialproof-pc">
</nw-blocks>

8. Exclusive Offer with Custom Styling

<nw-blocks id="reviewpageheader3"
    cloakedlink="williamhill-casino"
    language="en"
    country="US"
    rating="4.7"
    votes="298"
    background="#1a1a1a"
    ctacolors="#d4af37"
    ctahovercolors="#c9a22b"
    socialproofkey="wgt-reviewPageHeader-socialproof-eo"
    exclusivebonuskey="wgt-site-exclusive">
</nw-blocks>

Best Practices

Content Strategy

  1. Theme Selection: Choose light/dark based on site color scheme
  2. Background Consistency: Use same background theme across similar pages
  3. Ribbon Accuracy: Assign social proof ribbons based on real metrics
  4. State Codes: Use hyphen format for US/CA states (e.g., “US-NJ”, “CA-ON”)
  5. CTA Clarity: Match button text to user intent and locale

User Experience

  1. Clickable Bonuses: Entire bonus section is clickable for improved CTR
  2. Color Contrast: Ensure CTA buttons contrast well with background theme
  3. Mobile First: Test on mobile devices where most traffic occurs
  4. Loading Performance: Optimize logo images for fast rendering
  5. Accessibility: Leverage ARIA labels on clickable sections

Visual Design

  1. Theme Harmony: Match background attribute to site design system
  2. Button Colors: Use brand colors that complement background
  3. Contrast Ratios: Maintain WCAG AA standards (4.5:1 for text)
  4. Hover States: Provide clear visual feedback on interactive elements
  5. Bonus Label: Use exclusivebonuskey to customize bonus ribbon text

Performance

  1. Normalized Backgrounds: Utility function prevents redundant calculations
  2. Tracking URLs: Centralized buildTrackingUrl() reduces code duplication
  3. Component Modularity: Separate components enable code splitting
  4. CSS Classes: Dynamic classes avoid inline style calculations
  5. Image Optimization: Compress brand logos without quality loss

Accessibility

  1. ARIA Labels: Clickable bonus sections include descriptive labels
  2. Keyboard Navigation: All interactive elements keyboard accessible
  3. Screen Readers: Rating component includes brand context
  4. Focus Indicators: Visible focus states on links/buttons
  5. Semantic HTML: Proper use of anchor tags for tracking links

SEO

  1. Structured Data: Add aggregate rating schema markup
  2. Descriptive Links: Use meaningful text for T&C links
  3. Image Alt Tags: Include brand name in logo alt attributes
  4. NoFollow Links: Use rel="nofollow" for affiliate links
  5. Noopener/Noreferrer: Automatically added for _blank targets

Advanced Configuration

Custom Background Color

<nw-blocks id="reviewpageheader3"
    cloakedlink="casino-brand"
    language="en"
    country="US"
    rating="4.5"
    background="#2c3e50"
    ctacolors="#e74c3c"
    ctahovercolors="#c0392b">
</nw-blocks>

Gradient CTA Button

<nw-blocks id="reviewpageheader3"
    cloakedlink="casino-brand"
    language="en"
    country="US"
    rating="4.5"
    background="dark"
    ctacolors='["#667eea", "#764ba2"]'
    ctahovercolors='["#5568d3", "#63408b"]'>
</nw-blocks>

Multiple Headers with Different Themes

<!-- Primary: Light Theme -->
<nw-blocks id="review-header-primary"
    cloakedlink="top-casino"
    language="en"
    country="US"
    rating="4.9"
    background="light"
    fullwidth="true"
    socialproofkey="wgt-reviewPageHeader-socialproof-ec">
</nw-blocks>

<!-- Alternative: Dark Theme -->
<nw-blocks id="review-header-alternative"
    cloakedlink="runner-up-casino"
    language="en"
    country="US"
    rating="4.7"
    background="dark"
    socialproofkey="wgt-reviewPageHeader-socialproof-pc">
</nw-blocks>

Regional with Full Tracking

<nw-blocks id="reviewpageheader3"
    cloakedlink="betmgm-sports"
    language="en"
    country="US-PA"
    rating="4.6"
    votes="287"
    background="light"
    ctatext="Bet in Pennsylvania"
    trackinglinktarget="review-page"
    trackingdata="pa-header-click"
    referer="best-pa-sportsbooks"
    ctacolors="#004d00"
    ctahovercolors="#003300">
</nw-blocks>

Data Requirements

Sanity CMS Structure

{
  brandName: string;                 // Brand display name
  imgUrl: string;                    // Logo image URL
  trackingLink: string;              // Base tracking link
  bonusText: string;                 // Main bonus text
  additionalBonusText?: string;      // Extra bonus details
  bonusTagText?: string;             // Bonus label text
  socialRibbonText?: string;         // Social proof ribbon text
  complianceDisclaimer: {
    disclaimer: string | null;       // HTML disclaimer content
  };
  isActive: boolean;                 // Brand availability status
  hasTrackingLink: boolean;          // Whether to show T&C link
  minimumAge?: string;               // Age requirement
}

KV Storage Lookup

KV Key Format: {cloakedlink}#{language}#{country}#default#tc

Example: greatwin-casino#fr#DE#default#tc

Translation Keys

Key Pattern Example Purpose
Vote Count wgt-reviewPageHeader-votecount “{count} votes”
Social Proof (sp) wgt-reviewPageHeader-socialproof-sp “Super Popular”
Social Proof (tr) wgt-reviewPageHeader-socialproof-tr “Top Rated”
Social Proof (ec) wgt-reviewPageHeader-socialproof-ec “Editor’s Choice”
Bonus Label wgt-social-ribbon-sp “Exclusive” / ribbon-specific
CTA Button cta-claim-bonus “Claim Bonus”

Error Handling

Inactive Brand

If isActive === false, displays:

<p id="inactive-brand" style="display: none;">
  The brand with name {brandName} is currently inactive or not allowed in this country! (loaded with Review Header V3 widget..)
</p>

Missing Bonus Data

  • No bonusTagText: .no-label-bonus class applied, label hidden
  • No bonusText/additionalBonusText: Bonus section still renders but empty
  • Entire bonus section remains clickable regardless of content

Invalid Background

  • Undefined background: Falls back to backgroundMain prop
  • Invalid Value: Passes through to CSS (may result in no styling)

State Code Parsing

  • Format “US-NJ”: Splits to country=“US”, countryState=“NJ”
  • Format “US”: country=“US”, countryState=undefined
  • No Hyphen: Uses full string as country code

Comparison: ReviewPageHeader Variants

Feature v1 v2 v3 (Current)
Architecture Fixed 3-layout Modular components Enhanced modular
Background Themes No No ✅ Light/Dark/Custom
Social Proof Single pill 6 ribbon types 6 ribbon types
Clickable Bonus No No ✅ Entire section
Button Colors JSON config Direct attribute Solid or gradient
State Parsing Manual Manual ✅ Hyphen format (US-NJ)
Tracking URLs Inline Inline ✅ Utility function
Background Normalization No No ✅ Utility function
Mobile Layout Fixed Responsive ✅ Optimized separate
CSS Classes Static Dynamic ✅ Enhanced dynamic
ARIA Labels Basic Basic ✅ Enhanced accessibility
Component Naming Standard Standard ✅ Versioned (Logo3, Rating3)
Best For Legacy sites Modern sites Premium showcases

Backward Compatibility

Legacy bw-widget Tag

All examples using <bw-widget> remain fully functional:

<bw-widget id="reviewpageheader3"
    cloakedlink="greatwin-casino"
    language="fr"
    country="DE"
    rating="5.0"
    background="light"
    ctacolors="#05842A"
    ctahovercolors="#096725">
</bw-widget>

Migration Path: Replace <bw-widget> with <nw-blocks> - all attributes compatible.

Attribute Naming

Supports both camelCase and lowercase:

  • cloakedLink / cloakedlink
  • trackingLinkTarget / trackinglinktarget
  • ctaKey / ctakey
  • votesCountKey / votescountkey
  • socialProofKey / socialproofkey
  • exclusiveBonusKey / exclusivebonuskey