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.
The Toplist3Blocked widget displays an unavailable brand notification followed by a Toplist3 of alternative recommended brands. Designed for scenarios where a brand is inactive or IP-excluded in specific regions, providing users with immediate alternatives.
isHero: false<nw-blocks id="toplist3blocked"
cloakedlink="888-ladies-casino"
country="FR"
language="fr"
product="CA"
ctakey="cta-claim-bonus" \>
</nw-blocks>
Note: This example uses an inactive brand (888-ladies-casino)
<nw-blocks id="toplist3blocked"
cloakedlink="campobet-casino"
country="FR"
language="fr"
product="CA"
availabilitytext="A custom availability to say Campobet is unavailable"
suggestiontext="Campobet has been disabled by IP in this country"
ctakey="cta-claim-bonus" \>
</nw-blocks>
Note: Campobet is IP-excluded in Cameroon, Malta, France, Bulgaria
<nw-blocks id="toplist3blocked"
cloakedlink="blocked-casino"
country="US"
language="en"
product="CA"
ctacolors='["#d4af37", "#c9a22b"]'
ctahovercolors='["#c9a22b", "#b8991a"]'
ctatext="Visit Alternative" \>
</nw-blocks>
<nw-blocks id="toplist3blocked"
cloakedlink="blocked-sportsbook"
country="UK"
language="en"
product="SB"
trackingTarget="blocked-banner"
trackingdata="sb-alternatives"
referer="review-page" \>
</nw-blocks>
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id |
string | Yes | - | Unique widget identifier |
cloakedlink |
string | Yes | - | Brand identifier (must be inactive or IP-excluded) |
product |
string | Yes | - | Product code (CA/SB/BI/PO/LO/LI/FN/ES/CR/CF/ST) |
country |
string | Yes | - | Country code (ISO 3166-1) for IP exclusion check |
language |
string | Yes | - | Language code (ISO 639-1) |
availabilitytext |
string | No | - | Custom unavailability message (overrides translation) |
suggestiontext |
string | No | - | Custom suggestion message (overrides translation) |
availabilitykey |
string | No | "wgt-toplist3blocked-ribbon" |
Translation key for availability ribbon |
suggestionkey |
string | No | "wgt-toplist3blocked-label" |
Translation key for suggestion label |
ctakey |
string | No | "cta-claim-bonus" |
Translation key for alternative brands CTA |
ctatext |
string | No | - | Override CTA text for alternative brands |
ctacolors |
JSON array | No | ["#05842A", "#05842A"] |
CTA button colors for alternatives |
ctahovercolors |
JSON array | No | ["#096725", "#096725"] |
CTA hover colors for alternatives |
trackingTarget |
string | No | "" |
Tracking link target for alternatives |
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 |
sellingpointtype |
string | No | "general" |
Selling point type for alternatives |
bonustype |
string | No | "tb" |
Bonus type for alternatives |
eagercount |
number | No | 0 |
Number of images to eager load |
Note: maxRows is internally fixed to 3 for alternative brands
<UnavailableBrandNotification>casinoName: Brand namecasinoUrl: Brand URLcasinoLogo: Logo image pathlabel: Suggestion text or translation keyribbon: Availability text or translation key$id prop<Toplist3>isHero: false for all itemsmaxRows: 3)topData array from CMS{ id, data: toplistItems }if (is_brand_excluded) {
// Display notification + alternatives
return (
<>
<UnavailableBrandNotification />
<Toplist3 />
</>
);
}
if (!is_brand_excluded) {
// Hide widget silently
return (
<span className="active-brand" style={{ display: 'none' }}>
The brand with name {name} is available for your country.
</span>
);
}
{
is_brand_excluded: boolean; // IP exclusion or inactive status
brandData: {
name: string; // Brand display name
url: string; // Brand website URL
transparent: {
asset: {
imagePath: string; // Logo image path
}
}
};
label: string; // Suggestion text
ribbon: string; // Availability text
topData: Array<{ // Alternative brands (3 items)
brandId: string;
brandName: string;
imgUrl: string;
trackingLink: string;
bonus: string;
rating: number;
// ... other Toplist3 fields
}>;
}
Format: brand-{product}-{cloakedlink} (lowercase)
Example: brand-ca-campobet-casino
| Key | Default Text | Purpose |
|---|---|---|
wgt-toplist3blocked-ribbon |
“This casino is unavailable” | Availability ribbon |
wgt-toplist3blocked-label |
“Check out these alternatives” | Suggestion label |
cta-claim-bonus |
“Claim Bonus” | Alternative brands CTA |
<nw-blocks id="toplist3blocked"
cloakedlink="888-ladies-casino"
country="FR"
language="fr"
product="CA"
ctakey="cta-claim-bonus"
ctatext="My default text" \>
</nw-blocks>
Scenario: Brand is completely inactive across all regions
<nw-blocks id="toplist3blocked"
cloakedlink="campobet-casino"
country="FR"
language="fr"
product="CA"
availabilitytext="A custom availability to say Campobet is unavailable"
suggestiontext="Campobet has been disabled by IP in this country"
ctakey="cta-claim-bonus" \>
</nw-blocks>
Scenario: Campobet blocked in Cameroon, Malta, France, Bulgaria
<nw-blocks id="toplist3blocked"
cloakedlink="restricted-sportsbook"
country="US"
language="en"
product="SB"
availabilitytext="This sportsbook is not available in your state"
suggestiontext="Try these licensed alternatives"
ctacolors='["#ff6b35", "#f7931e"]' \>
</nw-blocks>
<nw-blocks id="toplist3blocked"
cloakedlink="unavailable-brand"
country="ES"
language="es"
product="CA"
availabilitytext="Este casino no está disponible"
suggestiontext="Prueba estas alternativas"
ctacolors='["#d4af37", "#c9a22b"]'
ctahovercolors='["#c9a22b", "#b8991a"]' \>
</nw-blocks>
availabilitytext and suggestiontext for region-specific messageseagercount for above-fold imagesrel="nofollow" for affiliate links<!-- Blocked Casino -->
<nw-blocks id="blocked-casino"
cloakedlink="blocked-ca-brand"
country="US"
language="en"
product="CA"
availabilitytext="Casino not available"
suggestiontext="Try these casinos" \>
</nw-blocks>
<!-- Blocked Sportsbook -->
<nw-blocks id="blocked-sportsbook"
cloakedlink="blocked-sb-brand"
country="US"
language="en"
product="SB"
availabilitytext="Sportsbook not available"
suggestiontext="Try these sportsbooks" \>
</nw-blocks>
If is_brand_excluded === false:
<span className="active-brand" style="display: none;">
The brand with name {name} is available for your country.
</span>
Result: Widget hidden, no alternatives shown
topData: Widget may fail to render alternativestopData array: Notification shows but no alternativesbrandData: Widget may fail to render notificationname: May display undefined in hidden messageproduct: May fail to generate correct brand KV keyproduct: Widget may not load properly| Feature | Toplist3Blocked | Toplist3 | Hero |
|---|---|---|---|
| Purpose | Show alternatives for blocked brands | Display top brands | Single-row toplist |
| Max Rows | Fixed to 3 | Configurable | Usually 1 |
| Notification | ✅ Unavailable brand banner | No | No |
| Use Case | IP exclusions, inactive brands | Standard toplists | Homepage hero |
| Custom Messages | ✅ Availability + suggestion text | No | No |
| Conditional Display | ✅ Only if brand blocked | Always | Always |
| Alternative Brands | ✅ Automatic fallback list | Primary list | Single brand |
| isHero Flag | Always false |
Configurable | Always true |
| Best For | Geo-restrictions | Brand comparisons | Featured promotions |
All examples using <bw-widget> remain fully functional:
<bw-widget id="toplist3blocked"
cloakedlink="888-ladies-casino"
country="FR"
language="fr"
product="CA"
ctakey="cta-claim-bonus"
ctacolors='["#05842A", "#05842A"]'
ctahovercolors='["#096725", "#096725"]'>
</bw-widget>
Migration Path: Replace <bw-widget> with <nw-blocks> - all attributes compatible.
Supports both camelCase and lowercase:
cloakedLink / cloakedlink ✅availabilityText / availabilitytext ✅suggestionText / suggestiontext ✅availabilityKey / availabilitykey ✅suggestionKey / suggestionkey ✅trackingTarget / trackinglinktarget ✅ctaColors / ctacolors ✅ctaHoverColors / ctahovercolors ✅