import React, { FC, ReactNode, useEffect, useMemo } from 'react'; import { useColorScheme, View, StatusBar } from 'react-native'; import { NavigationContainer } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { ShowcaseTileList } from '../showcaseTileList'; import { TileDimensionsProvider } from '../../providers'; import { darkTheme, lightTheme } from '../../theme'; import type { ShowcaseAppProps } from './types'; import type { ShowcaseExampleScreenType } from '../../types'; import { styles } from './styles'; const Stack = createNativeStackNavigator(); const ShowcaseAppComponent: FC = ({ initialScreen = 'showcase', data, ...rest }) => { //#region hooks const colorScheme = useColorScheme(); //#endregion //#region variables const theme = useMemo( () => (colorScheme === 'dark' ? darkTheme : lightTheme), [colorScheme] ); const screens = useMemo( () => data.reduce((result, item) => { if ('name' in item) { result.push(item as ShowcaseExampleScreenType); return result } result.push(...item.data); return result; }, []), [data] ); //#endregion //#region effects useEffect(() => { StatusBar.setBarStyle( colorScheme === 'dark' ? 'light-content' : 'dark-content', true ); }, [colorScheme]); //#endregion return ( {() => } {screens.map(item => ( ))} ); }; export const ShowcaseApp: FC = ({ children, ...props }) => ( {children} );