import React from 'react'; import clsx from 'classnames'; import { get } from 'lodash'; import { Box, Group, GroupProps } from '@/components'; import styles from './InvoicePaperTemplate.module.scss'; export interface PaperTemplateProps { primaryColor?: string; secondaryColor?: string; children?: React.ReactNode; } export function PaperTemplate({ primaryColor, secondaryColor, children, }: PaperTemplateProps) { return (
{children}
); } interface PaperTemplateTableProps { columns: Array<{ accessor: string; label: string; align?: 'left' | 'center' | 'right'; }>; data: Array>; } interface PaperTemplateBigTitleProps { title: string; } PaperTemplate.BigTitle = ({ title }: PaperTemplateBigTitleProps) => { return

{title}

; }; interface PaperTemplateLogoProps { logoUri: string; } PaperTemplate.Logo = ({ logoUri }: PaperTemplateLogoProps) => { return (
); }; PaperTemplate.Table = ({ columns, data }: PaperTemplateTableProps) => { return ( {columns.map((col, index) => ( ))} {data.map((_data: any) => ( {columns.map((column, index) => ( ))} ))}
{col.label}
{get(_data, column.accessor)}
); }; export enum PaperTemplateTotalBorder { Gray = 'gray', Dark = 'dark', } PaperTemplate.Totals = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; PaperTemplate.TotalLine = ({ label, amount, border, style, }: { label: string; amount: string; border?: PaperTemplateTotalBorder; style?: any; }) => { return (
{label}
{amount}
); }; PaperTemplate.MutedText = () => {}; PaperTemplate.Text = () => {}; PaperTemplate.AddressesGroup = (props: GroupProps) => { return ( ); }; PaperTemplate.Address = ({ children }: { children: React.ReactNode }) => { return {children}; }; PaperTemplate.Statement = ({ label, children, }: { label: string; children: React.ReactNode; }) => { return (
{label &&
{label}
}
{children}
); }; PaperTemplate.TermsList = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; PaperTemplate.TermsItem = ({ label, children, }: { label: string; children: React.ReactNode; }) => { return (
{label}
{children}
); };