import { Documentation } from "react-docgen" import { Suspense } from "react" import { Spinner } from "@medusajs/icons" import { PropTable } from "../PropsTable" import { Container } from "@medusajs/ui" import Feedback from "../Feedback" import { H3, MarkdownContent } from "docs-ui" import MDXComponents from "../MDXComponents" import slugify from "slugify" type ComponentReferenceProps = { mainComponent: string componentsToShow?: string[] specsSrc?: string hideFeedback?: boolean } const ComponentReference = ({ mainComponent, componentsToShow = [mainComponent], specsSrc, hideFeedback = false, }: ComponentReferenceProps) => { if (!specsSrc) { return <> } const specs = JSON.parse(specsSrc) as Documentation[] return ( <> {componentsToShow.map((component, index) => { const componentSpec = specs?.find( (spec) => spec.displayName === component ) const hasProps = componentSpec?.props && Object.keys(componentSpec.props).length > 0 const componentName = componentsToShow.length > 1 ? componentSpec?.displayName || component : "" const componentSlug = slugify(componentName) return ( } key={index} > {componentSpec && ( <> {componentsToShow.length > 1 && (

{componentName}

)} {componentSpec.description && ( {componentSpec.description} )} {hasProps && ( <> } > {!hideFeedback && ( )} )} )}
) })} ) } export { ComponentReference }