Skip to content

Store

Product details panel

Price, host, dates and the call to action on a product page.
Available
Needs mock props

Examples

Rendered live from the maintained Storybook story. Lantern stores only the story id and embeds Storybook rather than duplicating the component or its demo.

Product details panel

Rendered live from Storybook

Storybook must be running for this to load — bun run start:storybook from the monorepo root, or set NEXT_PUBLIC_STORYBOOK_URL to a deployed instance.

Props

The component's public API, read from its TypeScript source. Descriptions come from TSDoc on the prop, so this table cannot drift from the component.

PropTypeDefaultDescription
product*Product—Undocumented — add TSDoc to the prop in the library.
hostProductHostDEFAULT_PRODUCT_HOSTThe space hosting it. Defaults to a prototype BTS space.
viewerModeProductViewerMode"member"Who is looking. `"unauthenticated"` routes the CTA to the join intent.
paymentsNotSetUpbooleanfalseThe space has no payment method configured. The app derived this from `activeSpace.id === "flavor-studio"`, a hard-coded space id.
onCTAClick(payload: { intent: ProductCTAIntent; item: ProductCheckoutItem | null }) => void—The CTA was pressed. `item` is present only when the product is priced and would have gone to checkout.
ctaLabelstring—Override the CTA copy.
currencySymbolstring"$"Currency prefix. AUD by default.
localestring"en-US"Locale for the event date line.
zoomIconSrcstringVIRTUAL_MEETING_ICONIcon shown for a Zoom-flavoured virtual location.
googleMeetIconSrcstringMEET_MEETING_ICONIcon shown for a Google Meet-flavoured virtual location.
classNamestring—Undocumented — add TSDoc to the prop in the library.

Reference

Transcribed from the component audit. If this disagrees with the source, the source is right.

Source
src/components/store/ProductDetailsPanel.tsx
Portability
Needs its app dependencies replaced by props before it renders in isolation.
Notes
Its CTA label and date formatters are exported so a story can pin them.