import { Box, OrderedList, UnorderedList, Code as ChakraCode, Link as ChakraLink, Text as ChakraText, Divider as ChakraDivider, Heading as ChakraHeading, Checkbox as ChakraCheckbox, ListItem as ChakraListItem, useToken, } from '@chakra-ui/react'; import { CodeBlock as CustomCodeBlock, If } from '~/components'; import { useColorValue } from '~/context'; import { TD, TH, Table as ChakraTable } from './table'; import type { BoxProps, TextProps, CodeProps, LinkProps, ChakraProps, HeadingProps, DividerProps, } from '@chakra-ui/react'; import type { TCheckbox, TList, THeading, TCodeBlock, TTableData, TListItem } from './types'; type MDProps = { node: Dict; }; /* eslint @typescript-eslint/no-explicit-any: off */ function hasNode(p: any): p is C & MDProps { return 'node' in p; } function clean

(props: P): P { if (hasNode

(props)) { const { node, ...rest } = props; const r = (rest as unknown) as P; return r; } return props; } export const Checkbox: React.FC = (props: TCheckbox & MDProps) => { const { checked, node, ...rest } = props; return ; }; export const List: React.FC = (props: TList) => { const { ordered, ...rest } = props; return ( <> ); }; export const ListItem: React.FC = (props: TListItem & MDProps) => { const { checked, node, ...rest } = props; return checked ? ( ) : ( ); }; export const Heading: React.FC = (props: THeading) => { const { level, ...rest } = props; const levelMap = { 1: { as: 'h1', size: 'lg', fontWeight: 'bold' }, 2: { as: 'h2', size: 'lg', fontWeight: 'normal' }, 3: { as: 'h3', size: 'lg', fontWeight: 'bold' }, 4: { as: 'h4', size: 'md', fontWeight: 'normal' }, 5: { as: 'h5', size: 'md', fontWeight: 'bold' }, 6: { as: 'h6', size: 'sm', fontWeight: 'bold' }, } as { [i: number]: HeadingProps }; return >(rest)} />; }; export const Link: React.FC = (props: LinkProps) => { const color = useColorValue('blue.500', 'blue.300'); return (props)} />; }; export const CodeBlock: React.FC = (props: TCodeBlock) => ( {props.value} ); export const TableData: React.FC = (props: TTableData) => { const { isHeader, ...rest } = props; return ( <> ); }; export const Paragraph: React.FC = (props: TextProps) => ( (props)} /> ); export const InlineCode: React.FC = (props: CodeProps) => ( (props)} /> ); export const Divider: React.FC = (props: DividerProps) => ( (props)} /> ); export const Table: React.FC = (props: BoxProps) => ( (props)} /> ); export const Br: React.FC = (props: BoxProps) => ( (props)} /> );