import React from 'react'; import { StyleSheet, View, ViewProps } from 'react-native'; import { Text, TextElement } from '@ui-kitten/components'; import { ComponentShowcaseItem } from '../model/showcase.model'; export interface ShowcaseItemProps extends ViewProps { item: ComponentShowcaseItem; renderItem: (props: any) => React.ReactElement; } export const ShowcaseItem = (props: ShowcaseItemProps): React.ReactElement => { const { style, item, renderItem } = props; const renderElement = (): React.ReactElement => { const element: React.ReactElement = renderItem(item.props); return React.cloneElement(element, { style: [element.props.style], }); }; const renderTitleElement = (): TextElement => ( {item.title} ); const titleElement: TextElement = item.title && renderTitleElement(); const showcaseElement: React.ReactElement = renderElement(); return ( {titleElement} {showcaseElement} ); }; const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', }, titleLabel: { minWidth: 128, fontSize: 13, textAlign: 'left', }, });