import React, { ComponentType, forwardRef, PropsWithChildren } from 'react'; import { Platform } from 'react-native'; import Text, { TextProps } from '../primitives/Text'; import View, { ViewProps } from '../primitives/View'; function createView(nativeProps: ViewProps = {}): ComponentType { return forwardRef((props: ViewProps, ref) => { return ; }) as ComponentType; } export const UL = createView( Platform.select({ web: { accessibilityRole: 'list', }, }) ); function isTextProps(props: any): props is TextProps { // Treat
  • as a Text element. return typeof props.children === 'string'; } type LIProps = TextProps | ViewProps; export const LI = forwardRef((props: PropsWithChildren, ref: any) => { if (isTextProps(props)) { const accessibilityRole: LIProps['accessibilityRole'] = Platform.select({ web: 'listitem', default: props.accessibilityRole, }); return ; } const accessibilityRole: LIProps['accessibilityRole'] = Platform.select({ web: 'listitem', default: props.accessibilityRole, }); return ; }) as ComponentType;