import React, { useState } from 'react'; import type { ManualCompetitor } from '../../service/visibility/visibility.interface'; import AddCompetitorModal from './AddCompetitorModal'; import ConfirmRemoveCompetitorModal from './ConfirmRemoveCompetitorModal'; interface TrackedCompetitorsPanelProps { competitors: ManualCompetitor[]; onChange: (competitors: ManualCompetitor[]) => void; clientId: string; token: string; brandId: string; } /** * "Tracked competitors" section that sits above the full leaderboard. * Contains add / remove affordances. */ const TrackedCompetitorsPanel = ({ competitors, onChange, clientId, token, brandId, }: TrackedCompetitorsPanelProps): JSX.Element => { const [addOpen, setAddOpen] = useState(false); const [removeTarget, setRemoveTarget] = useState( null ); return ( <>

Tracked competitors

{competitors.length === 0 ? (

You haven't added any competitors yet. Adding one forces it into the weekly leaderboard even when it scored zero mentions.

) : (
{competitors.map(competitor => (
{competitor.name || competitor.domain} {competitor.name && ( {competitor.domain} )}
))}
)}
setAddOpen(false)} onAdded={onChange} clientId={clientId} token={token} brandId={brandId} /> setRemoveTarget(null)} onRemoved={onChange} clientId={clientId} token={token} brandId={brandId} /> ); }; export default TrackedCompetitorsPanel;