Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
import { CardWebNotifications } from "content-src/components/TopSitesHoverCard/CardWebNotifications/CardWebNotifications";
import { CardAd } from "content-src/components/TopSitesHoverCard/CardAd/CardAd";
/**
* Ordered content registry for the top-sites hover card. The shell renders
* exactly one variant — the first whose `match` accepts the tile — so content
* types never mix in a single card. Order is precedence: a sponsored tile
* matches the ad variant first, keeping notifications off ad tiles.
*
* Each variant component takes `{ link }` and is responsible for rendering
* nothing when it has nothing to show, so an unmatched-but-empty variant never
* paints an empty card.
*
* @type {Array<{key: string, match: (link: object) => boolean, Component: Function}>}
*/
export const HOVER_CARD_CONTENT = [
{
key: "ad",
match: link =>
Boolean(
link?.isSponsored ||
link?.sponsored_tile_id ||
link?.show_sponsored_label ||
link?.sponsored_position
),
Component: CardAd,
},
{
key: "notifications",
match: () => true,
Component: CardWebNotifications,
},
];