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}
>
);
}