import { Section } from "../../../../components"; import { colors } from "../../../../theme/colors"; import { Box, Text } from "../../../../ui"; import { activityColor, activityLabel, dateShort, sourceDomains, truncate } from "../format"; import type { BuildoutSite } from "../model/types"; import { SiteSatelliteImages } from "./satellite-images"; import { DetailSpecGrid, InlineSources, MarkdownBlock, SourceDetailLines, tickerBadges, type InlineTickerCatalog } from "./ui"; import { booleanText, dateCell, metadataSpecs, reportSectionText } from "./values"; export function SiteDetail({ site, bodyWidth, height, catalog, openTicker, }: { site: BuildoutSite; bodyWidth: number; height: number; catalog: InlineTickerCatalog; openTicker: (symbol: string) => void; }) { const sourceList = [...(site.discoverySources ?? []), ...(site.projectReportSources ?? [])]; const specs = metadataSpecs(site.siteMetadata); return ( <> {site.ownerTicker ? ( {tickerBadges({ symbols: [site.ownerTicker], width: Math.min(bodyWidth, 16) })} ) : null} {(site.observations?.length ?? 0) > 0 ? (
{site.observations!.slice(0, 8).map((observation, index) => { const bounds = observation.captureBounds?.minLat != null && observation.captureBounds?.minLng != null ? `${observation.captureBounds.minLat.toFixed(3)}, ${observation.captureBounds.minLng.toFixed(3)}` : null; return ( {truncate([ dateShort(observation.captureDate), observation.observationSource, observation.note, bounds, ].filter(Boolean).join(" - "), bodyWidth)} ); })}
) : null} {specs.length > 0 ? (
) : null} {(site.projectReportSections?.length ?? 0) > 0 ? (
{site.projectReportSections!.map((section, index) => ( {section.title ? {section.title} : null} ))}
) : null} {site.researchReport ? (
) : null} {(site.builders?.length ?? 0) > 0 ? (
{site.builders!.slice(0, 12).map((builder, index) => ( {builder.companyTicker ? tickerBadges({ symbols: [builder.companyTicker], width: Math.min(12, bodyWidth), }) : null} {truncate(`${builder.companyName ?? "Company"}${builder.role ? ` - ${builder.role}` : ""}`, Math.max(0, bodyWidth - (builder.companyTicker ? 12 : 0)))} ))}
) : null} ); }