import { useState } from "react"; import ChannelYoutubeIcon from "@/assets/icons/channel-youtube.svg?react"; import { Pill } from "@/components/atoms/Pill"; import { Surface } from "@/components/atoms/Surface"; import { SegmentTabButton } from "@/features/plan/ui/SegmentTabButton"; import type { AssetCollectionData } from "@/features/plan/types/marketingPlan"; import { ASSET_COLLECTION_FILTER_TABS, type AssetCollectionFilterKey, } from "@/features/plan/ui/assetCollection/assetCollectionFilterTabs"; import { assetSourceBadgeClass, assetStatusConfig, assetTypeBadgeClass, assetTypeDisplayLabel, formatYoutubeViews, } from "@/features/plan/ui/assetCollection/assetCollectionBadgeClasses"; type AssetCollectionPanelProps = { data: AssetCollectionData; }; export function AssetCollectionPanel({ data }: AssetCollectionPanelProps) { const [activeFilter, setActiveFilter] = useState("all"); const filteredAssets = activeFilter === "all" ? data.assets : data.assets.filter((a) => a.source === activeFilter); return (
{ASSET_COLLECTION_FILTER_TABS.map((tab) => { const isActive = activeFilter === tab.key; return ( setActiveFilter(tab.key)} > {tab.label} ); })}
{filteredAssets.map((asset) => { const statusInfo = assetStatusConfig(asset.status); return (
{asset.sourceLabel} {assetTypeDisplayLabel(asset.type)} {statusInfo.label}

{asset.title}

{asset.description}

{asset.repurposingSuggestions.length > 0 ? (

Repurposing →

{asset.repurposingSuggestions.map((suggestion, j) => ( {suggestion} ))}
) : null}
); })}
{data.youtubeRepurpose.length > 0 ? (

YouTube Top Videos for Repurposing

{data.youtubeRepurpose.map((video) => (

{video.title}

{formatYoutubeViews(video.views)} views {video.type}

Repurpose As:

{video.repurposeAs.map((suggestion, j) => ( {suggestion} ))}
))}
) : null}
); }