import { Flex, Stack, StackProps, Heading as ChakraHeading, Text, } from "@chakra-ui/react"; import { Assembly } from "@jsii/spec"; import type { FunctionComponent } from "react"; import { SelectVersion } from "./SelectVersion"; import { mapConstructFrameworks } from "../../../api/catalog-search/util"; import { Metadata } from "../../../api/package/metadata"; import { CDKTypeBadge } from "../../../components/CDKType"; import { PackageTag } from "../../../components/PackageTag"; import { tagObjectsFrom } from "../../../util/package"; import { PACKAGE_ANALYTICS } from "../constants"; import testIds from "../testIds"; interface HeadingProps extends StackProps { assembly: Assembly; name: string; description?: string; metadata: Metadata; version: string; } export const Heading: FunctionComponent = ({ assembly, name, description, metadata, version, ...stackProps }) => { const tags = tagObjectsFrom({ packageTags: metadata?.packageTags ?? [], keywords: assembly?.keywords ?? [], }); const constructFrameworks = mapConstructFrameworks(metadata); const [constructFramework] = constructFrameworks; const [cdkName, majorVersion] = constructFramework ?? []; const dataEvent = constructFrameworks.size === 1 ? PACKAGE_ANALYTICS.CDK_BADGE.eventName( `${cdkName}${majorVersion !== undefined ? ` v${majorVersion}` : ""}` ) : undefined; return ( {name} {description} {tags.map(({ id, keyword: { label, color } = {} }) => ( {label} ))} ); };