Skip to content

Instantly share code, notes, and snippets.

@artyorsh
artyorsh / README.md
Last active June 21, 2023 16:36
Metro and Babel monorepo resolver functions

React Native Metro and Babel resolver functions for monorepo projects

Have you ever faced troubles when configuring a fresh react-native app to test your framework locally? These utility functions will help you to configure metro and babel to run your monorepo-structured framework and test it's modules without a need to publish them.

Simply copy and paste the files below into your project root and follow the guides explained in both of them.

See an Example project

@artyorsh
artyorsh / refreshControl.component.tsx
Last active January 10, 2022 02:54
UI Kitten - Spinner Refresh Control
import * as React from 'react';
import {
RefreshControl as RNRefreshControl,
RefreshControlProps as RNRefreshControlProps,
StyleSheet,
View,
ViewProps,
} from 'react-native';
import {
Spinner,
@artyorsh
artyorsh / auth.navigator.tsx
Last active October 23, 2019 10:56
React Navigation 5 Overview (Binding React Navigation 5 to Eva Design System)
import { createStackNavigator } from '@react-navigation/stack';
const Stack = createStackNavigator();
export const AuthNavigator = (): React.ReactElement => (
<Stack.Navigator headerMode='none'>
<Stack.Screen name='Sign In' component={SignInScreen}/>
<Stack.Screen name='Sign Up' component={SignUpScreen}/>
</Stack.Navigator>
);
@artyorsh
artyorsh / auth.navigator.tsx
Last active October 22, 2019 14:33
Auth Navigator (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { SignInScreen, SignUpScreen, ResetPasswordScreen } from '@app-scenes/auth';
import { AppRoute } from './app-routes';
const Stack = createStackNavigator();
export const AuthNavigator = (): React.ReactElement => (
<Stack.Navigator headerMode='none'>
<Stack.Screen name={AppRoute.SIGN_IN} component={SignInScreen}/>
@artyorsh
artyorsh / app.navigator.tsx
Created October 22, 2019 14:30
App Navigator with initial Auth screen (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { NavigationNativeContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { AuthNavigator } from './auth.navigator';
import { AppRoute } from './app-routes';
const Stack = createStackNavigator();
export const AppNavigator = (config): React.ReactElement => (
<NavigationNativeContainer>
@artyorsh
artyorsh / todo.navigator.tsx
Last active October 23, 2019 11:14
Todo Navigator with Tabs at the top (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
import { TodoScreen, TodoInProgressScreen, TodoDoneScreen } from '@app-scenes/todo';
import { AppRoute } from './app-routes';
const Stack = createStackNavigator();
const TopTab = createMaterialTopTabNavigator();
export const TodoNavigator = (): React.ReactElement => (
@artyorsh
artyorsh / app.navigator.tsx
Last active October 22, 2019 15:22
App Navigator with Auth and Home screens Binding (React Navigation 5 to Eva Design System)
import React from 'react';
import { NavigationNativeContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { AuthNavigator } from './auth.navigator';
import { TodoNavigator } from './todo.navigator';
import { AppRoute } from './app-routes';
const Stack = createStackNavigator();
export const AppNavigator = (config): React.ReactElement => (
@artyorsh
artyorsh / todo.component.tsx
Last active October 25, 2019 13:23
UI Kitten TabBar (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { TabBar, Tab, Divider } from 'react-native-ui-kitten';
import { SafeAreaLayout, SaveAreaInset, SafeAreaLayoutElement } from '@app-components/safe-area-layout.component';
import { Toolbar } from '@app-components/toolbar.component';
import { DoneAllIcon, GridIcon } from '@app-assets/icons';
export const TodoScreen = (props): SafeAreaLayoutElement => {
const onTabSelect = (index: number): void => {
const { [index]: selectedTabRoute } = props.state.routeNames;
@artyorsh
artyorsh / bottom-home.component.tsx
Last active October 25, 2019 13:24
UI Kitten BottomNavigation (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { BottomNavigation, BottomNavigationTab, Divider } from 'react-native-ui-kitten';
import { SafeAreaLayout, SafeAreaLayoutElement, SaveAreaInset } from '@app-components/safe-area-layout.component';
import { LayoutIcon, PersonIcon } from '@app-assets/icons';
export const BottomHomeScreen = (props): SafeAreaLayoutElement => {
const onSelect = (index: number): void => {
const { [index]: selectedRoute } = props.state.routeNames;
props.navigation.navigate(selectedRoute);
@artyorsh
artyorsh / profile.navigator.tsx
Created October 23, 2019 12:23
The second navigator for bottom tabs (Binding React Navigation 5 to Eva Design System)
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { ProfileScreen } from '@app-scenes/profile';
import { AppRoute } from './app-routes';
const Stack = createStackNavigator();
export const ProfileNavigator = (): React.ReactElement => (
<Stack.Navigator headerMode='none'>
<Stack.Screen name={AppRoute.PROFILE} component={ProfileScreen}/>