import React, { FC, useMemo } from 'react' import { Box } from '@vtex/store-ui' import { useIntl } from '@vtex/gatsby-plugin-i18n' import { useNumberFormat } from '../../sdk/localization/useNumberFormat' import { ShippingQueryQuery } from './hooks/__generated__/ShippingQuery.graphql' import { TranslateEstimate } from './TranslateEstimate' type ShippingOptionProps = { id: string estimate: string price?: number | null variant: string } const ShippingOption: FC = ({ id, price, estimate, variant, }) => { const format = useNumberFormat() const intl = useIntl() const freightPrice = useMemo(() => { if (price === 0) { return intl.formatMessage({ id: 'shipping.free' }) } if (!price) { return '-' } return format.format(price / 100) }, [price, format, intl]) return ( {id} {freightPrice} ) } type ShippingTableProps = { shipping: ShippingQueryQuery | null variant: string } const ShippingTable: FC = ({ shipping, variant: tableVariant, }) => { const intl = useIntl() if (!shipping?.vtex?.shippingSLA?.deliveryOptions?.length) { return null } return ( {intl.formatMessage({ id: 'shipping.label.id' })} {intl.formatMessage({ id: 'shipping.label.estimate' })} {intl.formatMessage({ id: 'shipping.label.price' })} {shipping?.vtex.shippingSLA?.deliveryOptions?.map((option) => { if (!option?.estimate || !option.id) return null const shippingOptionProps = { id: option.id, price: option.price, estimate: option.estimate, } return ( ) })} ) } export default ShippingTable