import type { ElementType, JSXElementConstructor, ReactNode } from 'react'; import type { ChildrenProps, RequiredProps, SpiritPolymorphicElementPropsWithRef, StyleProps } from './shared'; export interface PricingPlanBaseProps extends ChildrenProps, StyleProps { hasComparableFeatures?: boolean; isHighlighted?: boolean; rows?: number; } export interface PricingPlanHeaderBaseProps extends StyleProps { action?: ReactNode; badge?: string; note?: string; price?: string; subtitle?: string; title?: ReactNode; } export type PricingPlanFeature = { description?: string | ReactNode; modalContent?: string | ReactNode; title: string; tooltipContent?: string | ReactNode; }; export interface PricingPlanBodyBaseProps extends StyleProps, RequiredProps { description?: string; features?: PricingPlanFeature[]; } export type PricingPlanProps = { elementType?: E | JSXElementConstructor; }; export type SpiritPricingPlanProps = PricingPlanProps & PricingPlanBaseProps & SpiritPolymorphicElementPropsWithRef>; export type SpiritPricingPlanHeaderProps = PricingPlanProps & PricingPlanHeaderBaseProps & Omit>, 'title'>; export type SpiritPricingPlanBodyProps = PricingPlanProps & PricingPlanBodyBaseProps & SpiritPolymorphicElementPropsWithRef>; export type SpiritPricingPlanFooterProps = PricingPlanProps & StyleProps & ChildrenProps & SpiritPolymorphicElementPropsWithRef>;