Game Providers Widget

Migration Notice: We are transitioning from <bw-widget> to <nw-blocks> tags. While both are currently supported for backward compatibility, <nw-blocks> is now the recommended tag for all new implementations. Existing <bw-widget> implementations will continue to function.

Overview

The Game Providers widget displays a comprehensive list of gaming software providers associated with a specific casino brand. It features an interactive card layout with scrollable navigation, expandable content, and customizable styling options.

Key Features:

  • Provider Showcase: Display gaming software providers with logos and rankings
  • Interactive Navigation: Horizontal scroll buttons for easy browsing
  • Expandable Content: Show more/less toggle for handling large provider lists
  • Customizable Display: Control number of visible items and styling
  • Brand Integration: Automatically fetches providers linked to casino brands
  • Responsive Design: Adapts to different screen sizes and layouts

Basic Usage

Expand me...

With Custom Styling

Expand me...

With Custom Heading

Expand me...


Attributes Reference

Attribute Type Required Default Description
id string Yes - Must be “gameProvider”
cloaked-link string Yes - Brand identifier/cloaked link for fetching provider data
language string No “en” ISO 639-1 language code for localization
country string No Auto-detected ISO 3166-1 country code (supports state format: US-CA)
country-state string No - State/province code for US/Canada (auto-parsed from country)
items-displayed number No All Number of providers initially visible before “Show More”
heading-key string No “Game Providers” Custom heading text for the widget
order-by object No {attribute:“name”, direction:“ASC”} Sorting configuration
configuration JSON No {} Styling configuration object

Configuration Object Properties

Property Type Default Description
heading-text-color string “#b1b1b1” Color of the heading text
heading-background-color string “#b1b1b1” Background color of the header section
heading-font-size string “14px” Font size for the heading text

Widget Features

Interactive Navigation

Horizontal Scrolling:

  • Left/right arrow buttons for desktop navigation
  • Touch-swipe support for mobile devices
  • Smooth scroll animation between provider groups
  • Automatic button visibility based on content overflow

Show More/Less Toggle:

  • Collapses providers beyond items-displayed limit
  • “Show More ▼” expands to show all providers
  • “Show Less ▲” collapses back to initial view
  • Maintains scroll position during toggle

Provider Display

Visual Elements:

  • Ranking Number: Sequential number for each provider
  • Provider Logo: High-quality branded images
  • Fallback Display: Shows “N/A” if logo unavailable
  • Card Layout: Clean, consistent provider cards

Layout Features:

  • Responsive grid adapts to screen size
  • Fixed card dimensions for uniform appearance
  • Hover effects for interactive feedback
  • Numbered ranking for easy reference

Sorting Options

Control provider display order using order-by attribute:

<!-- Sort by name alphabetically -->
<nw-blocks id="gameProvider" cloaked-link="..." 
  order-by='{"attribute":"name", "direction":"ASC"}' \>
</nw-blocks>

<!-- Sort by popularity (if available) -->
<nw-blocks id="gameProvider" cloaked-link="..." 
  order-by='{"attribute":"popularity", "direction":"DESC"}' \>
</nw-blocks>

Supported Sorting:

  • Attribute: name, popularity, rating
  • Direction: ASC (ascending), DESC (descending)

Common Use Cases

Casino Review Page

<nw-blocks 
  id="gameProvider"
  cloaked-link="betsson-casino"
  language="en"
  country="UK"
  heading-key="Available Game Providers"
  items-displayed="12" \>
</nw-blocks>

Branded Styling for Dark Theme

<nw-blocks 
  id="gameProvider"
  cloaked-link="fresh-casino"
  language="en"
  country="US"
  items-displayed="10"
  configuration='{
    "heading-text-color": "#FFFFFF",
    "heading-background-color": "#1A1A1A",
    "heading-font-size": "20px"
  }' \>
</nw-blocks>

Regional Display (US State)

<nw-blocks 
  id="gameProvider"
  cloaked-link="draftkings-casino"
  language="en"
  country="US"
  heading-key="Licensed Providers in New Jersey"
  items-displayed="15" \>
</nw-blocks>

Compact Mobile View

<nw-blocks 
  id="gameProvider"
  cloaked-link="betmgm-casino"
  language="en"
  country="CA"
  items-displayed="6"
  configuration='{
    "heading-font-size": "16px"
  }' \>
</nw-blocks>

Full Provider List

<!-- Show all providers without limit -->
<nw-blocks 
  id="gameProvider"
  cloaked-link="leovegas-casino"
  language="en"
  country="SE"
  heading-key="All Gaming Providers" \>
</nw-blocks>

Best Practices

Display Configuration

  • Desktop: Show 10-15 providers initially for optimal scrolling experience
  • Mobile: Limit to 6-8 providers to reduce initial load
  • Full Display: Omit items-displayed to show all providers without expansion
  • Large Lists: Use items-displayed with 30+ providers to improve performance

Content Strategy

  • Use descriptive heading like “Top Software Providers” or “Available Game Studios”
  • Display providers on casino review pages and brand comparison sections
  • Show provider count in heading (e.g., “100+ Game Providers”)
  • Order by popularity to highlight premium providers

Styling Integration

  • Match heading colors with your site’s theme
  • Ensure sufficient contrast for accessibility
  • Use larger font sizes (18-22px) for premium brand pages
  • Test on both light and dark backgrounds

Brand Selection

  • Use correct cloaked-link matching your casino brand database
  • Verify brand is active before displaying widget
  • Handle inactive brands gracefully (widget shows hidden message)
  • Update links when brand partnerships change

Regional Compliance

  • Set correct country for geo-specific provider availability
  • Use state codes (US-NJ, US-PA) for US gambling markets
  • Display only licensed providers for regulated markets
  • Update provider list when licensing changes

Performance

  • Limit initial display to improve page load times
  • Lazy load provider logos for faster rendering
  • Cache provider data for repeat visitors
  • Use CDN for provider logo delivery

Advanced Configuration

State/Province Support

For US and Canadian markets:

<!-- New Jersey, USA -->
<nw-blocks id="gameProvider" cloaked-link="..." country="US" \>
</nw-blocks>

<!-- Ontario, Canada -->
<nw-blocks id="gameProvider" cloaked-link="..." country="CA-ON" \>
</nw-blocks>

The widget automatically:

  • Parses country and state from hyphenated format
  • Filters providers by regional licensing
  • Shows only compliant providers
  • Applies state-specific regulations

Custom Ordering Examples

<!-- Alphabetical by name -->
<nw-blocks id="gameProvider" cloaked-link="..." 
  order-by='{"attribute":"name", "direction":"ASC"}' \>
</nw-blocks>

<!-- Most popular first -->
<nw-blocks id="gameProvider" cloaked-link="..." 
  order-by='{"attribute":"popularity", "direction":"DESC"}' \>
</nw-blocks>

<!-- Highest rated first -->
<nw-blocks id="gameProvider" cloaked-link="..." 
  order-by='{"attribute":"rating", "direction":"DESC"}' \>
</nw-blocks>

Full Styling Example

<nw-blocks 
  id="gameProvider"
  cloaked-link="betsson-casino"
  language="fr"
  country="FR"
  heading-key="Fournisseurs de Jeux"
  items-displayed="12"
  order-by='{"attribute":"popularity", "direction":"DESC"}'
  configuration='{
    "heading-text-color": "#2C3E50",
    "heading-background-color": "#ECF0F1",
    "heading-font-size": "22px"
  }' \>
</nw-blocks>

Data Requirements

Sanity CMS Structure

Provider data is fetched from Sanity CMS based on brand cloaked link:

{
  brand: {
    cloakedLink: "betsson-casino",
    name: "Betsson Casino",
    gameProviders: [
      {
        id: "provider-1",
        name: "NetEnt",
        url: "https://cdn.../netent-logo.png",
        popularity: 95,
        rating: 4.8
      },
      {
        id: "provider-2",
        name: "Microgaming",
        url: "https://cdn.../microgaming-logo.png",
        popularity: 92,
        rating: 4.7
      }
      // ... more providers
    ]
  }
}

Required Fields:

  • id: Unique provider identifier
  • name: Provider name for display
  • url: Logo image URL (or “N/A” for fallback)

Optional Fields:

  • popularity: Ranking score for sorting
  • rating: Quality rating for sorting
  • license: Regional licensing info

KV Storage

Provider data is cached for performance:

  • Key: BRAND_PROVIDERS:{cloakedLink}:{country}
  • TTL: 24 hours
  • Invalidation: Manual or on brand update

Error Handling

Inactive Brand

If the brand is inactive or not available in the specified country:

<!-- Widget displays hidden message -->
<p id="inactive-brand" style="display: none;">
  The brand used is currently inactive or not allowed in this country!
</p>

Handling:

  • Widget automatically hides if brand is inactive
  • No visual element shown to users
  • Prevents displaying unavailable content
  • Check browser console for debugging info

No Providers Available

If no providers are found:

<p>No game provider available</p>

Common Causes:

  • Brand has no associated providers in CMS
  • Regional filtering removed all providers
  • Data not yet synced from Sanity
  • Incorrect cloaked link specified

Backward Compatibility

All examples above use the new <nw-blocks> tag. For backward compatibility, you can still use <bw-widget>:

<!-- Old syntax (still supported) -->
<bw-widget 
  id="gameProvider"
  cloaked-link="betsson-casino"
  language="en"
  country="ZZ"
  items-displayed="10" \>
</bw-widget>

<!-- New syntax (recommended) -->
<nw-blocks 
  id="gameProvider"
  cloaked-link="betsson-casino"
  language="en"
  country="ZZ"
  items-displayed="10" \>
</nw-blocks>

Both tags work identically, but <nw-blocks> is recommended for all new implementations.