import { ProductServiceConfig } from '../../services/product-service.js'; import { productsV3 } from '@wix/stores'; export interface RootProps { children: React.ReactNode; productServiceConfig: ProductServiceConfig; } /** * Root component that provides the Product service context to its children. * This component sets up the necessary services for rendering and managing a single product's data. * * @order 1 * @component * @example * ```tsx * import { Product } from '@wix/stores/components'; * * function ProductPage() { * return ( * *
* * {({ name }) => ( *

* {name} *

* )} *
*
*
* ); * } * ``` */ export declare function Root(props: RootProps): React.ReactNode; /** * Props for ProductName headless component */ export interface ProductNameProps { /** Render prop function that receives product name data */ children: (props: ProductNameRenderProps) => React.ReactNode; } /** * Render props for ProductName component */ export interface ProductNameRenderProps { /** Product name */ name: string; } /** * Headless component for product name display * * @component * @example * ```tsx * import { Product } from '@wix/stores/components'; * * function ProductHeader() { * return ( * * {({ name }) => ( *

{name}

* )} *
* ); * } * ``` */ export declare function Name(props: ProductNameProps): import("react").ReactNode; /** * Props for ProductDescription headless component */ export interface ProductDescriptionProps { /** Render prop function that receives product description data */ children: (props: ProductDescriptionRenderProps) => React.ReactNode; } /** * Render props for ProductDescription component */ export interface ProductDescriptionRenderProps { /** Product description using the RICOS (Rich Content Object) format. See https://dev.wix.com/docs/ricos/api-reference/ricos-document */ description: NonNullable; /** Product description with plain html */ plainDescription: NonNullable; } /** * Render props for ProductDescription component */ export interface ProductDescriptionRenderProps { /** Product description using the RICOS (Rich Content Object) format. See https://dev.wix.com/docs/ricos/api-reference/ricos-document */ description: NonNullable; /** Product description with plain html */ plainDescription: NonNullable; } /** * Headless component for product description display * * @component * @example * ```tsx * import { Product } from '@wix/stores/components'; * * function ProductDescription() { * return ( * * {({ plainDescription, description }) => ( *
* {plainDescription && ( *
* )} * {description && ( *
Rich content description available
* )} *
* )} * * ); * } * ``` */ export declare function Description(props: ProductDescriptionProps): import("react").ReactNode; export interface ProductMediaProps { children: (props: ProductMediaRenderProps) => React.ReactNode; } export interface ProductMediaRenderProps { mediaItems: productsV3.ProductMedia[]; mainMedia?: productsV3.ProductMedia; } export declare function Media(props: ProductMediaProps): import("react").ReactNode; export interface ProductProps { children: (props: ProductRenderProps) => React.ReactNode; } export interface ProductRenderProps { product: productsV3.V3Product; } export declare function Content(props: ProductProps): import("react").ReactNode; export interface LoadingProps { children: (props: LoadingRenderProps) => React.ReactNode; } export interface LoadingRenderProps { isLoading: boolean; } export declare function Loading(props: LoadingProps): import("react").ReactNode; /** * Props for ProductSlug headless component */ export interface ProductSlugProps { /** Render prop function that receives product slug data */ children: (props: ProductSlugRenderProps) => React.ReactNode; } /** * Render props for ProductSlug component */ export interface ProductSlugRenderProps { /** Product slug */ slug: string; } /** * Headless component for product slug display * * @component * @example * ```tsx * import { Product } from '@wix/stores/components'; * * function ProductSlugDisplay() { * return ( * * {({ slug }) => ( * * View Product * * )} * * ); * } * ``` */ export declare function Slug(props: ProductSlugProps): import("react").ReactNode; /** * Props for ProductRibbon headless component */ export interface ProductRibbonProps { /** Render prop function that receives product ribbon data */ children: (props: ProductRibbonRenderProps) => React.ReactNode; } /** * Render props for ProductRibbon component */ export interface ProductRibbonRenderProps { /** Product ribbon text */ ribbon: string | null; /** Whether the product has a ribbon */ hasRibbon: boolean; } /** * Headless component for product ribbon display * * @component * @example * ```tsx * import { Product } from '@wix/stores/components'; * * function ProductRibbonDisplay() { * return ( * * {({ ribbon, hasRibbon }) => ( * hasRibbon ? ( * * {ribbon} * * ) : null * )} * * ); * } * ``` */ export declare function Ribbon(props: ProductRibbonProps): import("react").ReactNode;