import React from 'react'; import Box from '@mui/material/Box'; import LocationOnOutlinedIcon from '@mui/icons-material/LocationOnOutlined'; import StarRoundedIcon from '@mui/icons-material/StarRounded'; import type { SxProps, Theme } from '@mui/material/styles'; import { Card } from '../../atoms/Card'; import { Typography } from '../../atoms/Typography'; // ─── Types ─────────────────────────────────────────────────────────────────── /** Props for the FA NearbyPackageCard molecule */ export interface NearbyPackageCardProps { /** Package display name */ packageName: string; /** Package price in dollars */ price: number; /** Provider display name */ providerName: string; /** Provider location (suburb, city) */ location: string; /** Provider rating (e.g. 4.5). Omit to hide. */ rating?: number; /** Number of reviews */ reviewCount?: number; /** Click handler — navigates to that provider's PackagesStep with this package loaded */ onClick?: () => void; /** MUI sx prop */ sx?: SxProps; } // ─── Component ─────────────────────────────────────────────────────────────── /** * Compact card representing a package offered by a nearby verified provider. * * Surfaced in the "Similar packages from verified providers nearby" section * of the unverified-tier PackagesStep pages. Clicking the card is a route * change to that verified provider's PackagesStep with this package loaded. * * Composes Card + Typography. */ export const NearbyPackageCard = React.forwardRef( ({ packageName, price, providerName, location, rating, reviewCount, onClick, sx }, ref) => { return ( {/* Package name + price */} {packageName} ${price.toLocaleString('en-AU')} {/* Provider info */} {providerName} {rating != null && ( <> · {rating} {reviewCount != null ? ` (${reviewCount})` : ''} )} · {location} ); }, ); NearbyPackageCard.displayName = 'NearbyPackageCard'; export default NearbyPackageCard;