import React from 'react'; import clsx from 'classnames'; import { get, isFunction } from 'lodash'; import { x } from '@xstyled/emotion'; import { css } from '@emotion/css'; import { Box, BoxProps } from '../lib/layout/Box'; import { Group, GroupProps } from '../lib/layout/Group'; export interface PaperTemplateProps extends BoxProps { primaryColor?: string; secondaryColor?: string; children?: React.ReactNode; } export function PaperTemplate({ primaryColor, secondaryColor, children, ...restProps }: PaperTemplateProps) { return ( {children} ); } interface PaperTemplateBigTitleProps { title: string; } PaperTemplate.BigTitle = ({ title }: PaperTemplateBigTitleProps) => { return ( {title} ); }; interface PaperTemplateLogoProps { logoUri: string; } PaperTemplate.Logo = ({ logoUri }: PaperTemplateLogoProps) => { return ( ); }; interface PaperTemplateTableProps { columns: Array<{ accessor: string | ((data: Record) => JSX.Element); label: string; value?: JSX.Element; align?: 'left' | 'center' | 'right'; }>; data: Array>; } PaperTemplate.Table = ({ columns, data }: PaperTemplateTableProps) => { return ( {columns.map((col, index) => ( {col.label} ))} {data.map((_data: any) => ( {columns.map((column, index) => ( {isFunction(column?.accessor) ? column?.accessor(_data) : get(_data, column.accessor)} ))} ))}
); }; export enum PaperTemplateTotalBorder { Gray = 'gray', Dark = 'dark', } PaperTemplate.Totals = ({ children }: { children: React.ReactNode }) => { return ( {children} ); }; const totalBottomBordered = css` border-bottom: 1px solid #000; `; const totalBottomGrayBordered = css` border-bottom: 1px solid #dadada; `; PaperTemplate.TotalLine = ({ label, amount, border, style, }: { label: string; amount: string; border?: PaperTemplateTotalBorder; style?: any; }) => { return ( {label} {amount} ); }; PaperTemplate.AddressesGroup = (props: GroupProps) => { return ( div { flex: 1; } `} /> ); }; 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} ); };