import { useParams } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import BodyClassName from 'react-body-classname'; import { PaymentPortal } from './PaymentPortal'; import { PaymentPortalBoot, usePaymentPortalBoot } from './PaymentPortalBoot'; import { PaymentInvoicePreviewDrawer } from './drawers/PaymentInvoicePreviewDrawer/PaymentInvoicePreviewDrawer'; import { DRAWERS } from '@/constants/drawers'; import styles from './PaymentPortal.module.scss'; import { useEffect } from 'react'; import { hsl, lighten, parseToHsl } from 'polished'; export default function PaymentPortalPage() { const { linkId } = useParams<{ linkId: string }>(); return ( ); } /** * Renders the document title of the current payment page. * @returns {React.ReactNode} */ function PaymentPortalHelmet() { const { sharableLinkMeta } = usePaymentPortalBoot(); return ( {sharableLinkMeta?.invoiceNo} | {sharableLinkMeta?.organization?.name} ); } /** * Renders the dynamic CSS variables for the current payment page. * @returns {React.ReactNode} */ function PaymentPortalCssVariables() { const { sharableLinkMeta } = usePaymentPortalBoot(); useEffect(() => { if (sharableLinkMeta?.brandingTemplate?.primaryColor) { const primaryColorHsl = parseToHsl( sharableLinkMeta?.brandingTemplate?.primaryColor, ); document.body.style.setProperty( '--payment-page-background-color', hsl(primaryColorHsl.hue, 0.19, 0.14), ); document.body.style.setProperty( '--payment-page-primary-button', sharableLinkMeta?.brandingTemplate?.primaryColor, ); document.body.style.setProperty( '--payment-page-primary-button-hover', lighten(0.05, sharableLinkMeta?.brandingTemplate?.primaryColor), ); } }, [sharableLinkMeta?.brandingTemplate?.primaryColor]); return null; }