diff --git a/App.js b/App.js
index 7d771f2..5f60e71 100644
--- a/App.js
+++ b/App.js
@@ -1,19 +1,54 @@
import React from 'react';
-import { StyleSheet, Text, View } from 'react-native';
+import {Dimensions, StyleSheet, View, Text} from 'react-native';
+import {StyleProvider} from 'native-base';
+import AppNavigator from './navigation/AppNavigator';
+import ThemeManager from './utils/ThemeManager';
+import LocaleManager from './utils/LocaleManager';
+import * as Font from 'expo-font';
-export default function App() {
- return (
-
- Open up App.js to start working on your app!
-
- );
+
+export default class App extends React.Component {
+
+ constructor(props) {
+ super(props);
+ LocaleManager.getInstance().initTranslations();
+ this.updateTheme = this.updateTheme.bind(this);
+ this.state = {
+ isLoading: true,
+ currentTheme: undefined,
+ };
+ }
+
+ async componentWillMount() {
+ await Font.loadAsync({
+ 'Roboto': require('native-base/Fonts/Roboto.ttf'),
+ 'Roboto_medium': require('native-base/Fonts/Roboto_medium.ttf'),
+ });
+ ThemeManager.getInstance().setUpdateThemeCallback(this.updateTheme);
+ await ThemeManager.getInstance().getDataFromPreferences();
+ this.setState({
+ isLoading: false,
+ currentTheme: ThemeManager.getInstance().getCurrentTheme()
+ });
+ }
+
+ updateTheme() {
+ console.log('update theme called');
+ // Change not propagating, need to restart the app
+ // this.setState({
+ // currentTheme: ThemeManager.getInstance().getCurrentTheme()
+ // });
+ }
+
+ render() {
+ if (this.state.isLoading) {
+ return ;
+ }
+ console.log('rendering');
+ // console.log(this.state.currentTheme.variables.containerBgColor);
+ return (
+
+
+ );
+ }
}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: '#fff',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
diff --git a/assets/amicale.png b/assets/amicale.png
new file mode 100644
index 0000000..c1cdd1b
Binary files /dev/null and b/assets/amicale.png differ
diff --git a/assets/drawer-cover.png b/assets/drawer-cover.png
new file mode 100644
index 0000000..895f486
Binary files /dev/null and b/assets/drawer-cover.png differ
diff --git a/assets/icon.png b/assets/icon.png
index 7f5e01c..e56d6ab 100644
Binary files a/assets/icon.png and b/assets/icon.png differ
diff --git a/assets/image-missing.png b/assets/image-missing.png
new file mode 100644
index 0000000..0252766
Binary files /dev/null and b/assets/image-missing.png differ
diff --git a/assets/splash.png b/assets/splash.png
index 4f9ade6..9cb8c72 100644
Binary files a/assets/splash.png and b/assets/splash.png differ
diff --git a/components/CustomHeader.js b/components/CustomHeader.js
new file mode 100644
index 0000000..b1f2174
--- /dev/null
+++ b/components/CustomHeader.js
@@ -0,0 +1,33 @@
+import React from "react";
+import {Body, Button, Header, Icon, Left, Right, Title} from "native-base";
+import {StyleSheet} from "react-native";
+import {getStatusBarHeight} from "react-native-status-bar-height";
+
+export default class CustomHeader extends React.Component {
+ render() {
+ return (
+
+
+
+
+
+ {this.props.title}
+
+
+ );
+ }
+};
+
+
+// Fix header in status bar on Android
+const styles = StyleSheet.create({
+ header: {
+ paddingTop: getStatusBarHeight(),
+ height: 54 + getStatusBarHeight(),
+ },
+});
\ No newline at end of file
diff --git a/components/SideMenu.js b/components/SideMenu.js
new file mode 100644
index 0000000..4cff317
--- /dev/null
+++ b/components/SideMenu.js
@@ -0,0 +1,146 @@
+import React from 'react';
+import {Platform, Dimensions, ScrollView, StyleSheet, View, Image, FlatList} from 'react-native';
+import {Drawer} from 'react-native-paper';
+import {Badge, Text, Container, Content, Icon, Left, List, ListItem, Right} from "native-base";
+import i18n from "i18n-js";
+
+const deviceHeight = Dimensions.get("window").height;
+
+const drawerCover = require("../assets/drawer-cover.png");
+
+export default class SideBar extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ active: 'Home',
+ };
+ this.dataSet = [
+ {
+ name: i18n.t('screens.home'),
+ route: "Home",
+ icon: "home",
+ bg: "#C5F442"
+ // types: "11" // Shows the badge
+ },
+ {
+ name: i18n.t('screens.planning'),
+ route: "Planning",
+ icon: "calendar-range",
+ bg: "#477EEA",
+ // types: "11"
+ },
+ {
+ name: "Proxiwash",
+ route: "Proxiwash",
+ icon: "washing-machine",
+ bg: "#477EEA",
+ // types: "11"
+ },
+ {
+ name: "Proximo",
+ route: "Proximo",
+ icon: "shopping",
+ bg: "#477EEA",
+ // types: "11"
+ },
+ {
+ name: i18n.t('screens.settings'),
+ route: "Settings",
+ icon: "settings",
+ bg: "#477EEA",
+ // types: "11"
+ },
+ {
+ name: i18n.t('screens.about'),
+ route: "About",
+ icon: "information",
+ bg: "#477EEA",
+ // types: "11"
+ },
+ ];
+ }
+
+ navigateToScreen = (route) => () => {
+ this.props.navigation.navigate(route);
+ this.props.navigation.closeDrawer();
+ this.setState({active: route});
+ };
+
+ render() {
+ return (
+
+
+
+
+ item.route}
+ renderItem={({item}) =>
+
+
+
+
+ {item.name}
+
+
+ {item.types &&
+
+
+ {`${item.types} Types`}
+
+ }
+ }
+ />
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ drawerCover: {
+ alignSelf: "stretch",
+ height: deviceHeight / 4,
+ width: null,
+ position: "relative",
+ marginBottom: 10,
+ marginTop: 20
+ },
+ text: {
+ fontWeight: Platform.OS === "ios" ? "500" : "400",
+ fontSize: 16,
+ marginLeft: 20
+ },
+ badgeText: {
+ fontSize: Platform.OS === "ios" ? 13 : 11,
+ fontWeight: "400",
+ textAlign: "center",
+ marginTop: Platform.OS === "android" ? -3 : undefined
+ }
+});
diff --git a/components/TabBarIcon.js b/components/TabBarIcon.js
new file mode 100644
index 0000000..245d56b
--- /dev/null
+++ b/components/TabBarIcon.js
@@ -0,0 +1,16 @@
+import React from 'react';
+import {Ionicons} from '@expo/vector-icons/build/Icons';
+
+export default class TabBarIcon extends React.Component {
+ render() {
+ return (
+
+ );
+ }
+
+}
diff --git a/native-base-theme/components/Badge.js b/native-base-theme/components/Badge.js
new file mode 100644
index 0000000..b164a6c
--- /dev/null
+++ b/native-base-theme/components/Badge.js
@@ -0,0 +1,38 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const badgeTheme = {
+ ".primary": {
+ backgroundColor: variables.btnPrimaryBg
+ },
+ ".warning": {
+ backgroundColor: variables.btnWarningBg
+ },
+ ".info": {
+ backgroundColor: variables.btnInfoBg
+ },
+ ".success": {
+ backgroundColor: variables.btnSuccessBg
+ },
+ ".danger": {
+ backgroundColor: variables.btnDangerBg
+ },
+ "NativeBase.Text": {
+ color: variables.badgeColor,
+ fontSize: variables.fontSizeBase,
+ lineHeight: variables.lineHeight - 1,
+ textAlign: "center",
+ paddingHorizontal: 3
+ },
+ backgroundColor: variables.badgeBg,
+ padding: variables.badgePadding,
+ paddingHorizontal: 6,
+ alignSelf: "flex-start",
+ justifyContent: variables.platform === "ios" ? "center" : undefined,
+ borderRadius: 13.5,
+ height: 27
+ };
+ return badgeTheme;
+};
diff --git a/native-base-theme/components/Body.js b/native-base-theme/components/Body.js
new file mode 100644
index 0000000..0f85f4a
--- /dev/null
+++ b/native-base-theme/components/Body.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const bodyTheme = {
+ flex: 1,
+ alignItems: 'center',
+ alignSelf: 'center',
+ };
+
+ return bodyTheme;
+};
diff --git a/native-base-theme/components/Button.js b/native-base-theme/components/Button.js
new file mode 100644
index 0000000..62cefe6
--- /dev/null
+++ b/native-base-theme/components/Button.js
@@ -0,0 +1,396 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+ const darkCommon = {
+ "NativeBase.Text": {
+ color: variables.brandDark
+ },
+ "NativeBase.Icon": {
+ color: variables.brandDark
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandDark
+ }
+ };
+ const lightCommon = {
+ "NativeBase.Text": {
+ color: variables.brandLight
+ },
+ "NativeBase.Icon": {
+ color: variables.brandLight
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandLight
+ }
+ };
+ const primaryCommon = {
+ "NativeBase.Text": {
+ color: variables.btnPrimaryBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnPrimaryBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnPrimaryBg
+ }
+ };
+ const successCommon = {
+ "NativeBase.Text": {
+ color: variables.btnSuccessBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnSuccessBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnSuccessBg
+ }
+ };
+ const infoCommon = {
+ "NativeBase.Text": {
+ color: variables.btnInfoBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnInfoBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnInfoBg
+ }
+ };
+ const warningCommon = {
+ "NativeBase.Text": {
+ color: variables.btnWarningBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnWarningBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnWarningBg
+ }
+ };
+ const dangerCommon = {
+ "NativeBase.Text": {
+ color: variables.btnDangerBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnDangerBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnDangerBg
+ }
+ };
+ const buttonTheme = {
+ ".disabled": {
+ ".transparent": {
+ backgroundColor: null,
+ "NativeBase.Text": {
+ color: variables.btnDisabledBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnDisabledBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnDisabledBg
+ }
+ },
+ "NativeBase.Icon": {
+ color: variables.brandLight
+ },
+ "NativeBase.IconNB": {
+ color: variables.brandLight
+ },
+ backgroundColor: variables.btnDisabledBg
+ },
+ ".bordered": {
+ ".dark": {
+ ...darkCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.brandDark,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".light": {
+ ...lightCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.brandLight,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".primary": {
+ ...primaryCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.btnPrimaryBg,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".success": {
+ ...successCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.btnSuccessBg,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".info": {
+ ...infoCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.btnInfoBg,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".warning": {
+ ...warningCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.btnWarningBg,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".danger": {
+ ...dangerCommon,
+ backgroundColor: "transparent",
+ borderColor: variables.btnDangerBg,
+ borderWidth: variables.borderWidth * 2
+ },
+ ".disabled": {
+ backgroundColor: null,
+ borderColor: variables.btnDisabledBg,
+ borderWidth: variables.borderWidth * 2,
+ "NativeBase.Text": {
+ color: variables.btnDisabledBg
+ }
+ },
+ ...primaryCommon,
+ borderWidth: variables.borderWidth * 2,
+ elevation: null,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ shadowRadius: null,
+ backgroundColor: "transparent"
+ },
+
+ ".dark": {
+ ".bordered": {
+ ...darkCommon
+ },
+ backgroundColor: variables.brandDark
+ },
+ ".light": {
+ ".transparent": {
+ ...lightCommon,
+ backgroundColor: null
+ },
+ ".bordered": {
+ ...lightCommon
+ },
+ ...darkCommon,
+ backgroundColor: variables.brandLight
+ },
+
+ ".primary": {
+ ".bordered": {
+ ...primaryCommon
+ },
+ backgroundColor: variables.btnPrimaryBg
+ },
+
+ ".success": {
+ ".bordered": {
+ ...successCommon
+ },
+ backgroundColor: variables.btnSuccessBg
+ },
+
+ ".info": {
+ ".bordered": {
+ ...infoCommon
+ },
+ backgroundColor: variables.btnInfoBg
+ },
+
+ ".warning": {
+ ".bordered": {
+ ...warningCommon
+ },
+ backgroundColor: variables.btnWarningBg
+ },
+
+ ".danger": {
+ ".bordered": {
+ ...dangerCommon
+ },
+ backgroundColor: variables.btnDangerBg
+ },
+
+ ".block": {
+ justifyContent: "center",
+ alignSelf: "stretch"
+ },
+
+ ".full": {
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0
+ },
+
+ ".rounded": {
+ // paddingHorizontal: variables.buttonPadding + 20,
+ borderRadius: variables.borderRadiusLarge
+ },
+
+ ".transparent": {
+ backgroundColor: "transparent",
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...primaryCommon,
+ ".dark": {
+ ...darkCommon,
+ backgroundColor: null
+ },
+ ".danger": {
+ ...dangerCommon,
+ backgroundColor: null
+ },
+ ".warning": {
+ ...warningCommon,
+ backgroundColor: null
+ },
+ ".info": {
+ ...infoCommon,
+ backgroundColor: null
+ },
+ ".primary": {
+ ...primaryCommon,
+ backgroundColor: null
+ },
+ ".success": {
+ ...successCommon,
+ backgroundColor: null
+ },
+ ".light": {
+ ...lightCommon,
+ backgroundColor: null
+ },
+ ".disabled": {
+ backgroundColor: "transparent",
+ borderColor: variables.btnDisabledBg,
+ borderWidth: variables.borderWidth * 2,
+ "NativeBase.Text": {
+ color: variables.btnDisabledBg
+ },
+ "NativeBase.Icon": {
+ color: variables.btnDisabledBg
+ },
+ "NativeBase.IconNB": {
+ color: variables.btnDisabledBg
+ }
+ }
+ },
+
+ ".small": {
+ height: 30,
+ "NativeBase.Text": {
+ fontSize: 14
+ },
+ "NativeBase.Icon": {
+ fontSize: 20,
+ paddingTop: 0
+ },
+ "NativeBase.IconNB": {
+ fontSize: 20,
+ paddingTop: 0
+ }
+ },
+
+ ".large": {
+ height: 60,
+ "NativeBase.Text": {
+ fontSize: 22,
+ }
+ },
+
+ ".capitalize": {},
+
+ ".vertical": {
+ flexDirection: "column",
+ height: null
+ },
+
+ "NativeBase.Text": {
+ fontFamily: variables.btnFontFamily,
+ marginLeft: 0,
+ marginRight: 0,
+ color: variables.inverseTextColor,
+ fontSize: variables.btnTextSize,
+ paddingHorizontal: 16,
+ backgroundColor: "transparent"
+ // childPosition: 1
+ },
+
+ "NativeBase.Icon": {
+ color: variables.inverseTextColor,
+ fontSize: 24,
+ marginHorizontal: 16,
+ paddingTop: platform === "ios" ? 2 : undefined
+ },
+ "NativeBase.IconNB": {
+ color: variables.inverseTextColor,
+ fontSize: 24,
+ marginHorizontal: 16,
+ paddingTop: platform === "ios" ? 2 : undefined
+ },
+
+ ".iconLeft": {
+ "NativeBase.Text": {
+ marginLeft: 0
+ },
+ "NativeBase.IconNB": {
+ marginRight: 0,
+ marginLeft: 16
+ },
+ "NativeBase.Icon": {
+ marginRight: 0,
+ marginLeft: 16
+ }
+ },
+ ".iconRight": {
+ "NativeBase.Text": {
+ marginRight: 0
+ },
+ "NativeBase.IconNB": {
+ marginLeft: 0,
+ marginRight: 16
+ },
+ "NativeBase.Icon": {
+ marginLeft: 0,
+ marginRight: 16
+ }
+ },
+ ".picker": {
+ "NativeBase.Text": {
+ ".note": {
+ fontSize: 16,
+ lineHeight: null
+ }
+ }
+ },
+
+ paddingVertical: variables.buttonPadding,
+ // paddingHorizontal: variables.buttonPadding + 10,
+ backgroundColor: variables.btnPrimaryBg,
+ borderRadius: variables.borderRadiusBase,
+ borderColor: variables.btnPrimaryBg,
+ borderWidth: null,
+ height: 45,
+ alignSelf: "flex-start",
+ flexDirection: "row",
+ elevation: 2,
+ shadowColor: platformStyle === "material" ? variables.brandDark : undefined,
+ shadowOffset:
+ platformStyle === "material" ? { width: 0, height: 2 } : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ alignItems: "center",
+ justifyContent: "space-between"
+ };
+ return buttonTheme;
+};
diff --git a/native-base-theme/components/Card.js b/native-base-theme/components/Card.js
new file mode 100644
index 0000000..f917e20
--- /dev/null
+++ b/native-base-theme/components/Card.js
@@ -0,0 +1,37 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const cardTheme = {
+ ".transparent": {
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ shadowRadius: null,
+ elevation: null,
+ backgroundColor: "transparent",
+ borderWidth: 0
+ },
+ ".noShadow": {
+ shadowColor: null,
+ shadowOffset: null,
+ shadowOpacity: null,
+ elevation: null
+ },
+ marginVertical: 5,
+ marginHorizontal: 2,
+ borderWidth: variables.borderWidth,
+ borderRadius: variables.cardBorderRadius,
+ borderColor: variables.cardBorderColor,
+ flexWrap: "nowrap",
+ backgroundColor: variables.cardDefaultBg,
+ shadowColor: "#000",
+ shadowOffset: { width: 0, height: 2 },
+ shadowOpacity: 0.1,
+ shadowRadius: 1.5,
+ elevation: 3
+ };
+
+ return cardTheme;
+};
diff --git a/native-base-theme/components/CardItem.js b/native-base-theme/components/CardItem.js
new file mode 100644
index 0000000..57724ac
--- /dev/null
+++ b/native-base-theme/components/CardItem.js
@@ -0,0 +1,196 @@
+// @flow
+
+import { StyleSheet } from "react-native";
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+ const transparentBtnCommon = {
+ "NativeBase.Text": {
+ fontSize: variables.DefaultFontSize - 3,
+ color: variables.sTabBarActiveTextColor
+ },
+ "NativeBase.Icon": {
+ fontSize: variables.iconFontSize - 10,
+ color: variables.sTabBarActiveTextColor,
+ marginHorizontal: null
+ },
+ "NativeBase.IconNB": {
+ fontSize: variables.iconFontSize - 10,
+ color: variables.sTabBarActiveTextColor
+ },
+ paddingVertical: null,
+ paddingHorizontal: null
+ };
+
+ const cardItemTheme = {
+ "NativeBase.Left": {
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "400",
+ marginRight: 20
+ }
+ },
+ flex: 1,
+ marginLeft: 10,
+ alignItems: null
+ },
+ "NativeBase.Icon": {
+ fontSize: variables.iconFontSize
+ },
+ "NativeBase.IconNB": {
+ fontSize: variables.iconFontSize
+ },
+ "NativeBase.Text": {
+ marginLeft: 10,
+ alignSelf: "center"
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ ...transparentBtnCommon,
+ paddingRight: variables.cardItemPadding + 5
+ }
+ },
+ flex: 1,
+ flexDirection: "row",
+ alignItems: "center"
+ },
+ ".content": {
+ "NativeBase.Text": {
+ color: platform === "ios" ? "#555" : "#222",
+ fontSize: variables.DefaultFontSize - 2
+ }
+ },
+ ".cardBody": {
+ padding: -5,
+ "NativeBase.Text": {
+ marginTop: 5
+ }
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200",
+ marginRight: 20
+ }
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ ...transparentBtnCommon,
+ paddingRight: variables.cardItemPadding + 5,
+ alignSelf: "stretch"
+ }
+ },
+ flex: 1,
+ alignSelf: "stretch",
+ alignItems: "flex-start"
+ },
+ "NativeBase.Right": {
+ "NativeBase.Badge": {
+ alignSelf: null
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ ...transparentBtnCommon
+ },
+ alignSelf: null
+ },
+ "NativeBase.Icon": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8,
+ color: variables.cardBorderColor
+ },
+ "NativeBase.IconNB": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8,
+ color: variables.cardBorderColor
+ },
+ "NativeBase.Text": {
+ fontSize: variables.DefaultFontSize - 1,
+ alignSelf: null
+ },
+ "NativeBase.Thumbnail": {
+ alignSelf: null
+ },
+ "NativeBase.Image": {
+ alignSelf: null
+ },
+ "NativeBase.Radio": {
+ alignSelf: null
+ },
+ "NativeBase.Checkbox": {
+ alignSelf: null
+ },
+ "NativeBase.Switch": {
+ alignSelf: null
+ },
+ flex: 0.8
+ },
+ ".header": {
+ "NativeBase.Text": {
+ fontSize: 16,
+ fontWeight: platform === "ios" ? "600" : "500"
+ },
+ ".bordered": {
+ "NativeBase.Text": {
+ color: variables.brandPrimary,
+ fontWeight: platform === "ios" ? "600" : "500"
+ },
+ borderBottomWidth: variables.borderWidth
+ },
+ borderBottomWidth: null,
+ paddingVertical: variables.cardItemPadding + 5
+ },
+ ".footer": {
+ "NativeBase.Text": {
+ fontSize: 16,
+ fontWeight: platform === "ios" ? "600" : "500"
+ },
+ ".bordered": {
+ "NativeBase.Text": {
+ color: variables.brandPrimary,
+ fontWeight: platform === "ios" ? "600" : "500"
+ },
+ borderTopWidth: variables.borderWidth
+ },
+ borderBottomWidth: null
+ },
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ }
+ },
+ "NativeBase.Icon": {
+ width: variables.iconFontSize + 5,
+ fontSize: variables.iconFontSize - 2
+ },
+ "NativeBase.IconNB": {
+ width: variables.iconFontSize + 5,
+ fontSize: variables.iconFontSize - 2
+ },
+ ".bordered": {
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderColor: variables.cardBorderColor
+ },
+ ".first": {
+ borderTopLeftRadius: variables.cardBorderRadius,
+ borderTopRightRadius: variables.cardBorderRadius
+ },
+ ".last": {
+ borderBottomLeftRadius: variables.cardBorderRadius,
+ borderBottomRightRadius: variables.cardBorderRadius
+ },
+ flexDirection: "row",
+ alignItems: "center",
+ borderRadius: variables.cardBorderRadius,
+ padding: variables.cardItemPadding + 5,
+ paddingVertical: variables.cardItemPadding,
+ backgroundColor: variables.cardDefaultBg
+ };
+
+ return cardItemTheme;
+};
diff --git a/native-base-theme/components/CheckBox.js b/native-base-theme/components/CheckBox.js
new file mode 100644
index 0000000..d143e07
--- /dev/null
+++ b/native-base-theme/components/CheckBox.js
@@ -0,0 +1,38 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const checkBoxTheme = {
+ ".checked": {
+ "NativeBase.Icon": {
+ color: variables.checkboxTickColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.checkboxTickColor
+ }
+ },
+ "NativeBase.Icon": {
+ color: "transparent",
+ lineHeight: variables.CheckboxIconSize,
+ marginTop: variables.CheckboxIconMarginTop,
+ fontSize: variables.CheckboxFontSize
+ },
+ "NativeBase.IconNB": {
+ color: "transparent",
+ lineHeight: variables.CheckboxIconSize,
+ marginTop: variables.CheckboxIconMarginTop,
+ fontSize: variables.CheckboxFontSize
+ },
+ borderRadius: variables.CheckboxRadius,
+ overflow: "hidden",
+ width: variables.checkboxSize,
+ height: variables.checkboxSize,
+ borderWidth: variables.CheckboxBorderWidth,
+ paddingLeft: variables.CheckboxPaddingLeft - 1,
+ paddingBottom: variables.CheckboxPaddingBottom,
+ left: 10
+ };
+
+ return checkBoxTheme;
+};
diff --git a/native-base-theme/components/Container.js b/native-base-theme/components/Container.js
new file mode 100644
index 0000000..7a93fcc
--- /dev/null
+++ b/native-base-theme/components/Container.js
@@ -0,0 +1,16 @@
+// @flow
+
+import { Platform, Dimensions } from "react-native";
+
+import variable from "./../variables/platform";
+
+const deviceHeight = Dimensions.get("window").height;
+export default (variables /*: * */ = variable) => {
+ const theme = {
+ flex: 1,
+ height: Platform.OS === "ios" ? deviceHeight : deviceHeight - 20,
+ backgroundColor: variables.containerBgColor
+ };
+
+ return theme;
+};
diff --git a/native-base-theme/components/Content.js b/native-base-theme/components/Content.js
new file mode 100644
index 0000000..72230c4
--- /dev/null
+++ b/native-base-theme/components/Content.js
@@ -0,0 +1,16 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const contentTheme = {
+ flex: 1,
+ backgroundColor: "transparent",
+ "NativeBase.Segment": {
+ borderWidth: 0,
+ backgroundColor: "transparent"
+ }
+ };
+
+ return contentTheme;
+};
diff --git a/native-base-theme/components/Fab.js b/native-base-theme/components/Fab.js
new file mode 100644
index 0000000..c3314da
--- /dev/null
+++ b/native-base-theme/components/Fab.js
@@ -0,0 +1,29 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const fabTheme = {
+ "NativeBase.Button": {
+ alignItems: "center",
+ padding: null,
+ justifyContent: "center",
+ "NativeBase.Icon": {
+ alignSelf: "center",
+ fontSize: 20,
+ marginLeft: 0,
+ marginRight: 0,
+ },
+ "NativeBase.IconNB": {
+ alignSelf: "center",
+ fontSize: 20,
+ marginLeft: 0,
+ marginRight: 0,
+ },
+ },
+ };
+
+ return fabTheme;
+};
diff --git a/native-base-theme/components/Footer.js b/native-base-theme/components/Footer.js
new file mode 100644
index 0000000..0021508
--- /dev/null
+++ b/native-base-theme/components/Footer.js
@@ -0,0 +1,118 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const iconCommon = {
+ "NativeBase.Icon": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const iconNBCommon = {
+ "NativeBase.IconNB": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const textCommon = {
+ "NativeBase.Text": {
+ color: variables.tabBarActiveTextColor
+ }
+ };
+ const footerTheme = {
+ "NativeBase.Left": {
+ "NativeBase.Button": {
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ alignSelf: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ },
+ flex: 1,
+ alignSelf: "center",
+ alignItems: "flex-start"
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ alignItems: "center",
+ alignSelf: "center",
+ flexDirection: "row",
+ "NativeBase.Button": {
+ alignSelf: "center",
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ ".full": {
+ height: variables.footerHeight,
+ paddingBottom: variables.footerPaddingBottom,
+ flex: 1
+ },
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ }
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": {
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ ...textCommon
+ },
+ alignSelf: null,
+ ...iconCommon,
+ ...iconNBCommon,
+ // ...textCommon
+ },
+ flex: 1,
+ alignSelf: "center",
+ alignItems: "flex-end"
+ },
+ backgroundColor: variables.footerDefaultBg,
+ flexDirection: "row",
+ justifyContent: "center",
+ borderTopWidth:
+ platform === "ios" && platformStyle !== "material"
+ ? variables.borderWidth
+ : undefined,
+ borderColor:
+ platform === "ios" && platformStyle !== "material"
+ ? "#cbcbcb"
+ : undefined,
+ height: variables.footerHeight,
+ paddingBottom: variables.footerPaddingBottom,
+ elevation: 3,
+ left: 0,
+ right: 0
+ };
+ return footerTheme;
+};
diff --git a/native-base-theme/components/FooterTab.js b/native-base-theme/components/FooterTab.js
new file mode 100644
index 0000000..8fcdf03
--- /dev/null
+++ b/native-base-theme/components/FooterTab.js
@@ -0,0 +1,79 @@
+// @flow
+
+import { Platform } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const footerTabTheme = {
+ "NativeBase.Button": {
+ ".active": {
+ "NativeBase.Text": {
+ color: variables.tabBarActiveTextColor,
+ fontSize: variables.tabBarTextSize,
+ lineHeight: 16
+ },
+ "NativeBase.Icon": {
+ color: variables.tabBarActiveTextColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.tabBarActiveTextColor
+ },
+ backgroundColor: variables.tabActiveBgColor
+ },
+ flexDirection: null,
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ alignSelf: "center",
+ flex: 1,
+ height: variables.footerHeight,
+ justifyContent: "center",
+ ".badge": {
+ "NativeBase.Badge": {
+ "NativeBase.Text": {
+ fontSize: 11,
+ fontWeight: platform === "ios" ? "600" : undefined,
+ lineHeight: 14
+ },
+ top: -3,
+ alignSelf: "center",
+ left: 10,
+ zIndex: 99,
+ height: 18,
+ padding: 1.7,
+ paddingHorizontal: 3
+ },
+ "NativeBase.Icon": {
+ marginTop: -18
+ }
+ },
+ "NativeBase.Icon": {
+ color: variables.tabBarTextColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.tabBarTextColor
+ },
+ "NativeBase.Text": {
+ color: variables.tabBarTextColor,
+ fontSize: variables.tabBarTextSize,
+ lineHeight: 16
+ }
+ },
+ backgroundColor: Platform.OS === "android"
+ ? variables.footerDefaultBg
+ : undefined,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ flex: 1,
+ alignSelf: "stretch"
+ };
+
+ return footerTabTheme;
+};
diff --git a/native-base-theme/components/Form.js b/native-base-theme/components/Form.js
new file mode 100644
index 0000000..8d7aedc
--- /dev/null
+++ b/native-base-theme/components/Form.js
@@ -0,0 +1,90 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const theme = {
+ "NativeBase.Item": {
+ ".fixedLabel": {
+ "NativeBase.Label": {
+ paddingLeft: null
+ },
+ marginLeft: 15
+ },
+ ".inlineLabel": {
+ "NativeBase.Label": {
+ paddingLeft: null
+ },
+ marginLeft: 15
+ },
+ ".placeholderLabel": {
+ "NativeBase.Input": {}
+ },
+ ".stackedLabel": {
+ "NativeBase.Label": {
+ top: 5,
+ paddingLeft: null
+ },
+ "NativeBase.Input": {
+ paddingLeft: null,
+ marginLeft: null
+ },
+ "NativeBase.Icon": {
+ marginTop: 36
+ },
+ marginLeft: 15
+ },
+ ".floatingLabel": {
+ "NativeBase.Input": {
+ paddingLeft: null,
+ top: 10,
+ marginLeft: null
+ },
+ "NativeBase.Label": {
+ left: 0,
+ top: 6
+ },
+ "NativeBase.Icon": {
+ top: 6
+ },
+ marginTop: 15,
+ marginLeft: 15
+ },
+ ".regular": {
+ "NativeBase.Label": {
+ left: 0
+ },
+ marginLeft: 0
+ },
+ ".rounded": {
+ "NativeBase.Label": {
+ left: 0
+ },
+ marginLeft: 0
+ },
+ ".underline": {
+ "NativeBase.Label": {
+ left: 0,
+ top: 0,
+ position: "relative"
+ },
+ "NativeBase.Input": {
+ left: -15
+ },
+ marginLeft: 15
+ },
+ ".last": {
+ marginLeft: 0,
+ paddingLeft: 15
+ },
+ "NativeBase.Label": {
+ paddingRight: 5
+ },
+ marginLeft: 15
+ }
+ };
+
+ return theme;
+};
diff --git a/native-base-theme/components/H1.js b/native-base-theme/components/H1.js
new file mode 100644
index 0000000..dd87958
--- /dev/null
+++ b/native-base-theme/components/H1.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const h1Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH1,
+ lineHeight: variables.lineHeightH1,
+ };
+
+ return h1Theme;
+};
diff --git a/native-base-theme/components/H2.js b/native-base-theme/components/H2.js
new file mode 100644
index 0000000..0a1aa77
--- /dev/null
+++ b/native-base-theme/components/H2.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const h2Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH2,
+ lineHeight: variables.lineHeightH2,
+ };
+
+ return h2Theme;
+};
diff --git a/native-base-theme/components/H3.js b/native-base-theme/components/H3.js
new file mode 100644
index 0000000..45e5891
--- /dev/null
+++ b/native-base-theme/components/H3.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const h3Theme = {
+ color: variables.textColor,
+ fontSize: variables.fontSizeH3,
+ lineHeight: variables.lineHeightH3
+ };
+
+ return h3Theme;
+};
diff --git a/native-base-theme/components/Header.js b/native-base-theme/components/Header.js
new file mode 100644
index 0000000..9e7f30f
--- /dev/null
+++ b/native-base-theme/components/Header.js
@@ -0,0 +1,394 @@
+// @flow
+
+import { PixelRatio, StatusBar } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const headerTheme = {
+ ".span": {
+ height: 128,
+ "NativeBase.Left": {
+ alignSelf: "flex-start"
+ },
+ "NativeBase.Body": {
+ alignSelf: "flex-end",
+ alignItems: "flex-start",
+ justifyContent: "center",
+ paddingBottom: 26
+ },
+ "NativeBase.Right": {
+ alignSelf: "flex-start"
+ }
+ },
+ ".hasSubtitle": {
+ "NativeBase.Body": {
+ "NativeBase.Title": {
+ fontSize: variables.titleFontSize - 2,
+ fontFamily: variables.titleFontfamily,
+ textAlign: "center",
+ fontWeight: "500",
+ paddingBottom: 3
+ },
+ "NativeBase.Subtitle": {
+ fontSize: variables.subTitleFontSize,
+ fontFamily: variables.titleFontfamily,
+ color: variables.subtitleColor,
+ textAlign: "center"
+ }
+ }
+ },
+ ".transparent": {
+ backgroundColor: "transparent",
+ borderBottomColor: "transparent",
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ paddingTop: platform === "android" ? StatusBar.currentHeight : undefined,
+ height: platform === "android" ? variables.toolbarHeight + StatusBar.currentHeight : variables.toolbarHeight
+ },
+ ".noShadow": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null
+ },
+ ".hasTabs": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ borderBottomWidth: null
+ },
+ ".hasSegment": {
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null,
+ borderBottomWidth: null,
+ "NativeBase.Left": {
+ flex: 0.3
+ },
+ "NativeBase.Right": {
+ flex: 0.3
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ "NativeBase.Segment": {
+ marginRight: 0,
+ alignSelf: "center",
+ "NativeBase.Button": {
+ paddingLeft: 0,
+ paddingRight: 0
+ }
+ }
+ }
+ },
+ ".noLeft": {
+ "NativeBase.Left": {
+ width: platform === "ios" ? undefined : 0,
+ flex: platform === "ios" ? 1 : 0
+ },
+ "NativeBase.Body": {
+ "NativeBase.Title": {
+ paddingLeft: platform === "ios" ? undefined : 10
+ },
+ "NativeBase.Subtitle": {
+ paddingLeft: platform === "ios" ? undefined : 10
+ }
+ }
+ },
+ "NativeBase.Button": {
+ justifyContent: "center",
+ alignSelf: "center",
+ alignItems: "center",
+ ".transparent": {
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ fontWeight: "600"
+ },
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor
+ },
+ paddingHorizontal: variables.buttonPadding
+ },
+ paddingHorizontal: 15
+ },
+ ".searchBar": {
+ "NativeBase.Item": {
+ "NativeBase.Icon": {
+ backgroundColor: "transparent",
+ color: variables.dropdownLinkColor,
+ fontSize: variables.toolbarSearchIconSize,
+ alignItems: "center",
+ marginTop: 2,
+ paddingRight: 10,
+ paddingLeft: 10
+ },
+ "NativeBase.IconNB": {
+ backgroundColor: "transparent",
+ color: null,
+ alignSelf: "center"
+ },
+ "NativeBase.Input": {
+ alignSelf: "center",
+ lineHeight: null,
+ height: variables.searchBarInputHeight
+ },
+ alignSelf: "center",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ flex: 1,
+ height: variables.searchBarHeight,
+ borderColor: "transparent",
+ backgroundColor: variables.toolbarInputColor
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontWeight: "500"
+ },
+ paddingHorizontal: null,
+ paddingLeft: platform === "ios" ? 10 : null
+ },
+ paddingHorizontal: platform === "ios" ? undefined : null,
+ width: platform === "ios" ? undefined : 0,
+ height: platform === "ios" ? undefined : 0
+ }
+ },
+ ".rounded": {
+ "NativeBase.Item": {
+ borderRadius:
+ platform === "ios" && platformStyle !== "material" ? 25 : 3
+ }
+ },
+ "NativeBase.Left": {
+ "NativeBase.Button": {
+ ".hasText": {
+ marginLeft: -10,
+ height: 30,
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize,
+ marginTop: 2,
+ marginRight: 5,
+ marginLeft: 2
+ },
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ fontSize: platform === "ios" ? 17 : 0,
+ marginLeft: 7,
+ lineHeight: 19.5
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize,
+ marginTop: 2,
+ marginRight: 5,
+ marginLeft: 2
+ }
+ },
+ ".transparent": {
+ marginLeft:
+ platform === "ios" && platformStyle !== "material" ? -3 : 0,
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor,
+ fontSize:
+ platform === "ios" && variables.platformStyle !== "material"
+ ? variables.iconHeaderSize + 1
+ : variables.iconHeaderSize,
+ marginTop: 0,
+ marginRight: 2,
+ marginLeft: 1,
+ paddingTop: 1
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor,
+ fontSize:
+ platform === "ios" && variables.platformStyle !== "material"
+ ? variables.iconHeaderSize + 1
+ : variables.iconHeaderSize - 2,
+ marginTop: 0,
+ marginRight: 2,
+ marginLeft: 1,
+ paddingTop: 1
+ },
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ fontSize: platform === "ios" ? 17 : 0,
+ top: platform === "ios" ? 1 : -1.5,
+ paddingLeft:
+ platform === "ios" && platformStyle !== "material" ? 2 : 5,
+ paddingRight:
+ platform === "ios" && platformStyle !== "material"
+ ? undefined
+ : 10
+ },
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null
+ },
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor
+ },
+ alignSelf: null,
+ paddingRight: variables.buttonPadding,
+ paddingLeft: platform === "ios" && platformStyle !== "material" ? 4 : 8
+ },
+ flex: platform === "ios" && platformStyle !== "material" ? 1 : 0.4,
+ alignSelf: "center",
+ alignItems: "flex-start"
+ },
+ "NativeBase.Body": {
+ flex: 1,
+ alignItems:
+ platform === "ios" && platformStyle !== "material"
+ ? "center"
+ : "flex-start",
+ alignSelf: "center",
+ "NativeBase.Segment": {
+ borderWidth: 0,
+ alignSelf: "flex-end",
+ marginRight: platform === "ios" ? -40 : -55
+ },
+ "NativeBase.Button": {
+ alignSelf: "center",
+ ".transparent": {
+ backgroundColor: "transparent"
+ },
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor
+ },
+ "NativeBase.Text": {
+ color: variables.inverseTextColor,
+ backgroundColor: "transparent"
+ }
+ }
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": {
+ ".hasText": {
+ height: 30,
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize - 2,
+ marginTop: 2,
+ marginRight: 2,
+ marginLeft: 5
+ },
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ fontSize: platform === "ios" ? 17 : 14,
+ lineHeight: 19.5
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize - 2,
+ marginTop: 2,
+ marginRight: 2,
+ marginLeft: 5
+ }
+ },
+ ".transparent": {
+ marginRight: platform === "ios" ? -9 : -5,
+ paddingLeft: 15,
+ paddingRight: 12,
+ paddingHorizontal: 15,
+ borderRadius: 50,
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize - 2,
+ marginTop: 0,
+ marginLeft: 2,
+ marginRight: 0
+ // paddingTop: 0
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor,
+ fontSize: variables.iconHeaderSize - 2,
+ marginTop: 0,
+ marginLeft: 2,
+ marginRight: 0
+ // paddingTop: 0
+ },
+ "NativeBase.Text": {
+ color: variables.toolbarBtnTextColor,
+ fontSize: platform === "ios" ? 17 : 14,
+ top: platform === "ios" ? 1 : -1.5,
+ paddingRight:
+ platform === "ios" && variables.platformStyle !== "material"
+ ? 0
+ : undefined
+ },
+ backgroundColor: "transparent",
+ borderColor: null,
+ elevation: 0,
+ shadowColor: null,
+ shadowOffset: null,
+ shadowRadius: null,
+ shadowOpacity: null
+ },
+ "NativeBase.Icon": {
+ color: variables.toolbarBtnColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.toolbarBtnColor
+ },
+ alignSelf: null,
+ paddingHorizontal: variables.buttonPadding
+ },
+ flex: 1,
+ alignSelf: "center",
+ alignItems: "flex-end",
+ flexDirection: "row",
+ justifyContent: "flex-end"
+ },
+ backgroundColor: variables.toolbarDefaultBg,
+ flexDirection: "row",
+ // paddingHorizontal: 10,
+ paddingLeft:
+ platform === "ios" && variables.platformStyle !== "material" ? 6 : 10,
+ paddingRight: 10,
+ justifyContent: "center",
+ paddingTop: platform === "ios" ? 18 : 0,
+ borderBottomWidth:
+ platform === "ios" ? 1 / PixelRatio.getPixelSizeForLayoutSize(1) : 0,
+ borderBottomColor: variables.toolbarDefaultBorder,
+ height:
+ variables.platform === "ios" && variables.platformStyle === "material"
+ ? variables.toolbarHeight + 10
+ : variables.toolbarHeight,
+ elevation: 3,
+ shadowColor: platformStyle === "material" ? "#000" : undefined,
+ shadowOffset:
+ platformStyle === "material" ? { width: 0, height: 2 } : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ top: 0,
+ left: 0,
+ right: 0
+ };
+
+ return headerTheme;
+};
diff --git a/native-base-theme/components/Icon.js b/native-base-theme/components/Icon.js
new file mode 100644
index 0000000..0b75534
--- /dev/null
+++ b/native-base-theme/components/Icon.js
@@ -0,0 +1,12 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const iconTheme = {
+ fontSize: variables.iconFontSize,
+ color: "#000"
+ };
+
+ return iconTheme;
+};
diff --git a/native-base-theme/components/Input.js b/native-base-theme/components/Input.js
new file mode 100644
index 0000000..ad0abff
--- /dev/null
+++ b/native-base-theme/components/Input.js
@@ -0,0 +1,19 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const inputTheme = {
+ '.multiline': {
+ height: null,
+ },
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ paddingLeft: 5,
+ paddingRight: 5,
+ flex: 1,
+ fontSize: variables.inputFontSize
+ };
+
+ return inputTheme;
+};
diff --git a/native-base-theme/components/InputGroup.js b/native-base-theme/components/InputGroup.js
new file mode 100644
index 0000000..9d33525
--- /dev/null
+++ b/native-base-theme/components/InputGroup.js
@@ -0,0 +1,132 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const inputGroupTheme = {
+ "NativeBase.Icon": {
+ fontSize: 24,
+ color: variables.sTabBarActiveTextColor,
+ paddingHorizontal: 5
+ },
+ "NativeBase.IconNB": {
+ fontSize: 24,
+ color: variables.sTabBarActiveTextColor,
+ paddingHorizontal: 5
+ },
+ "NativeBase.Input": {
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ paddingLeft: 5,
+ paddingRight: 5,
+ flex: 1,
+ fontSize: variables.inputFontSize,
+ lineHeight: variables.inputLineHeight
+ },
+ ".underline": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5,
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor
+ },
+ ".regular": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5,
+ borderWidth: variables.borderWidth,
+ borderColor: variables.inputBorderColor
+ },
+ ".rounded": {
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ paddingLeft: 5,
+ borderWidth: variables.borderWidth,
+ borderRadius: variables.inputGroupRoundedBorderRadius,
+ borderColor: variables.inputBorderColor
+ },
+
+ ".success": {
+ "NativeBase.Icon": {
+ color: variables.inputSuccessBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputSuccessBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ borderColor: variables.inputSuccessBorderColor
+ },
+
+ ".error": {
+ "NativeBase.Icon": {
+ color: variables.inputErrorBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputErrorBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30,
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".disabled": {
+ "NativeBase.Icon": {
+ color: "#384850"
+ },
+ "NativeBase.IconNB": {
+ color: "#384850"
+ }
+ },
+
+ paddingLeft: 5,
+ borderWidth: variables.borderWidth,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor,
+ backgroundColor: "transparent",
+ flexDirection: "row",
+ alignItems: "center"
+ };
+
+ return inputGroupTheme;
+};
diff --git a/native-base-theme/components/Item.js b/native-base-theme/components/Item.js
new file mode 100644
index 0000000..447f297
--- /dev/null
+++ b/native-base-theme/components/Item.js
@@ -0,0 +1,240 @@
+// @flow
+
+import { Platform } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const itemTheme = {
+ ".floatingLabel": {
+ "NativeBase.Input": {
+ height: 50,
+ top: 8,
+ paddingTop: 3,
+ paddingBottom: 7,
+ ".multiline": {
+ minHeight: variables.inputHeightBase,
+ paddingTop: Platform.OS === "ios" ? 10 : 3,
+ paddingBottom: Platform.OS === "ios" ? 14 : 10
+ }
+ },
+ "NativeBase.Label": {
+ paddingTop: 5
+ },
+ "NativeBase.Icon": {
+ top: 6,
+ paddingTop: 8
+ },
+ "NativeBase.IconNB": {
+ top: 6,
+ paddingTop: 8
+ }
+ },
+ ".fixedLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ flex: 1,
+ height: null,
+ width: null,
+ fontSize: variables.inputFontSize
+ },
+ "NativeBase.Input": {
+ flex: 2,
+ fontSize: variables.inputFontSize
+ }
+ },
+ ".stackedLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ paddingTop: 5,
+ alignSelf: "flex-start",
+ fontSize: variables.inputFontSize - 2
+ },
+ "NativeBase.Icon": {
+ marginTop: 36
+ },
+ "NativeBase.Input": {
+ alignSelf: Platform.OS === "ios" ? "stretch" : "flex-start",
+ flex: 1,
+ width: Platform.OS === "ios" ? null : variables.deviceWidth - 25,
+ fontSize: variables.inputFontSize,
+ lineHeight: variables.inputLineHeight - 6,
+ ".secureTextEntry": {
+ fontSize: variables.inputFontSize - 4
+ },
+ ".multiline": {
+ paddingTop: Platform.OS === "ios" ? 9 : undefined,
+ paddingBottom: Platform.OS === "ios" ? 9 : undefined
+ }
+ },
+ flexDirection: null,
+ minHeight: variables.inputHeightBase + 15
+ },
+ ".inlineLabel": {
+ "NativeBase.Label": {
+ position: null,
+ top: null,
+ left: null,
+ right: null,
+ paddingRight: 20,
+ height: null,
+ width: null,
+ fontSize: variables.inputFontSize
+ },
+ "NativeBase.Input": {
+ paddingLeft: 5,
+ fontSize: variables.inputFontSize
+ },
+ flexDirection: "row"
+ },
+ "NativeBase.Label": {
+ fontSize: variables.inputFontSize,
+ color: variables.inputColorPlaceholder,
+ paddingRight: 5
+ },
+ "NativeBase.Icon": {
+ fontSize: 24,
+ paddingRight: 8
+ },
+ "NativeBase.IconNB": {
+ fontSize: 24,
+ paddingRight: 8
+ },
+ "NativeBase.Input": {
+ ".multiline": {
+ height: null
+ },
+ height: variables.inputHeightBase,
+ color: variables.inputColor,
+ flex: 1,
+ top: Platform.OS === "ios" ? 1.5 : undefined,
+ fontSize: variables.inputFontSize
+ },
+ ".underline": {
+ "NativeBase.Input": {
+ paddingLeft: 15
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth * 2,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor
+ },
+ ".regular": {
+ "NativeBase.Input": {
+ paddingLeft: 8
+ },
+ "NativeBase.Icon": {
+ paddingLeft: 10
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth * 2,
+ borderColor: variables.inputBorderColor
+ },
+ ".rounded": {
+ "NativeBase.Input": {
+ paddingLeft: 8
+ },
+ "NativeBase.Icon": {
+ paddingLeft: 10
+ },
+ ".success": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".error": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderWidth: variables.borderWidth * 2,
+ borderRadius: 30,
+ borderColor: variables.inputBorderColor
+ },
+
+ ".success": {
+ "NativeBase.Icon": {
+ color: variables.inputSuccessBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputSuccessBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputSuccessBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth * 2,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputSuccessBorderColor
+ },
+ borderColor: variables.inputSuccessBorderColor
+ },
+
+ ".error": {
+ "NativeBase.Icon": {
+ color: variables.inputErrorBorderColor
+ },
+ "NativeBase.IconNB": {
+ color: variables.inputErrorBorderColor
+ },
+ ".rounded": {
+ borderRadius: 30,
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".regular": {
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".underline": {
+ borderWidth: variables.borderWidth * 2,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputErrorBorderColor
+ },
+ borderColor: variables.inputErrorBorderColor
+ },
+ ".disabled": {
+ "NativeBase.Icon": {
+ color: "#384850"
+ },
+ "NativeBase.IconNB": {
+ color: "#384850"
+ }
+ },
+ ".picker": {
+ marginLeft: 0
+ },
+
+ borderWidth: variables.borderWidth * 2,
+ borderTopWidth: 0,
+ borderRightWidth: 0,
+ borderLeftWidth: 0,
+ borderColor: variables.inputBorderColor,
+ backgroundColor: "transparent",
+ flexDirection: "row",
+ alignItems: "center",
+ marginLeft: 2
+ };
+
+ return itemTheme;
+};
diff --git a/native-base-theme/components/Label.js b/native-base-theme/components/Label.js
new file mode 100644
index 0000000..01aa47b
--- /dev/null
+++ b/native-base-theme/components/Label.js
@@ -0,0 +1,14 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const labelTheme = {
+ ".focused": {
+ width: 0
+ },
+ fontSize: 17
+ };
+
+ return labelTheme;
+};
diff --git a/native-base-theme/components/Left.js b/native-base-theme/components/Left.js
new file mode 100644
index 0000000..0a4bc96
--- /dev/null
+++ b/native-base-theme/components/Left.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const leftTheme = {
+ flex: 1,
+ alignSelf: 'center',
+ alignItems: 'flex-start',
+ };
+
+ return leftTheme;
+};
diff --git a/native-base-theme/components/ListItem.js b/native-base-theme/components/ListItem.js
new file mode 100644
index 0000000..94a345d
--- /dev/null
+++ b/native-base-theme/components/ListItem.js
@@ -0,0 +1,444 @@
+// @flow
+
+import { Platform, PixelRatio } from "react-native";
+
+import pickerTheme from "./Picker";
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+ const selectedStyle = {
+ "NativeBase.Text": {
+ color: variables.listItemSelected
+ },
+ "NativeBase.Icon": {
+ color: variables.listItemSelected
+ }
+ };
+
+ const listItemTheme = {
+ "NativeBase.InputGroup": {
+ "NativeBase.Icon": {
+ paddingRight: 5
+ },
+ "NativeBase.IconNB": {
+ paddingRight: 5
+ },
+ "NativeBase.Input": {
+ paddingHorizontal: 5
+ },
+ flex: 1,
+ borderWidth: null,
+ margin: -10,
+ borderBottomColor: "transparent"
+ },
+ ".searchBar": {
+ "NativeBase.Item": {
+ "NativeBase.Icon": {
+ backgroundColor: "transparent",
+ color: variables.dropdownLinkColor,
+ fontSize:
+ platform === "ios"
+ ? variables.iconFontSize - 10
+ : variables.iconFontSize - 5,
+ alignItems: "center",
+ marginTop: 2,
+ paddingRight: 8
+ },
+ "NativeBase.IconNB": {
+ backgroundColor: "transparent",
+ color: null,
+ alignSelf: "center"
+ },
+ "NativeBase.Input": {
+ alignSelf: "center"
+ },
+ alignSelf: "center",
+ alignItems: "center",
+ justifyContent: "flex-start",
+ flex: 1,
+ height: platform === "ios" ? 30 : 40,
+ borderColor: "transparent",
+ backgroundColor: "#fff",
+ borderRadius: 5
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontWeight: "500"
+ },
+ paddingHorizontal: null,
+ paddingLeft: platform === "ios" ? 10 : null
+ },
+ paddingHorizontal: platform === "ios" ? undefined : null,
+ width: platform === "ios" ? undefined : 0,
+ height: platform === "ios" ? undefined : 0
+ },
+ backgroundColor: variables.toolbarInputColor,
+ padding: 10,
+ marginLeft: null
+ },
+ "NativeBase.CheckBox": {
+ marginLeft: -10,
+ marginRight: 10
+ },
+ ".first": {
+ ".itemHeader": {
+ paddingTop: variables.listItemPadding + 3
+ }
+ },
+ ".itemHeader": {
+ ".first": {
+ paddingTop: variables.listItemPadding + 3
+ },
+ borderBottomWidth: platform === "ios" ? variables.borderWidth : null,
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 5,
+ paddingTop:
+ platform === "ios" ? variables.listItemPadding + 25 : undefined,
+ paddingBottom:
+ platform === "android" ? variables.listItemPadding + 20 : undefined,
+ flexDirection: "row",
+ borderColor: variables.listBorderColor,
+ "NativeBase.Text": {
+ fontSize: 14,
+ color: platform === "ios" ? undefined : variables.listNoteColor
+ }
+ },
+ ".itemDivider": {
+ borderBottomWidth: null,
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 5,
+ backgroundColor: variables.listDividerBg,
+ flexDirection: "row",
+ borderColor: variables.listBorderColor
+ },
+ ".selected": {
+ "NativeBase.Left": {
+ ...selectedStyle
+ },
+ "NativeBase.Body": {
+ ...selectedStyle
+ },
+ "NativeBase.Right": {
+ ...selectedStyle
+ },
+ ...selectedStyle
+ },
+ "NativeBase.Left": {
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ fontWeight: "600"
+ },
+ marginLeft: 10,
+ alignItems: null,
+ alignSelf: null
+ },
+ "NativeBase.Icon": {
+ width: variables.iconFontSize - 10,
+ fontSize: variables.iconFontSize - 10
+ },
+ "NativeBase.IconNB": {
+ width: variables.iconFontSize - 10,
+ fontSize: variables.iconFontSize - 10
+ },
+ "NativeBase.Text": {
+ alignSelf: "center"
+ },
+ flexDirection: "row"
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginHorizontal: variables.listItemPadding,
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ }
+ },
+ alignSelf: null,
+ alignItems: null
+ },
+ "NativeBase.Right": {
+ "NativeBase.Badge": {
+ alignSelf: null
+ },
+ "NativeBase.PickerNB": {
+ "NativeBase.Button": {
+ marginRight: -15,
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ },
+ "NativeBase.Button": {
+ alignSelf: null,
+ ".transparent": {
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ },
+ "NativeBase.Icon": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8,
+ color: "#c9c8cd"
+ },
+ "NativeBase.IconNB": {
+ alignSelf: null,
+ fontSize: variables.iconFontSize - 8,
+ color: "#c9c8cd"
+ },
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ alignSelf: null
+ },
+ "NativeBase.Thumbnail": {
+ alignSelf: null
+ },
+ "NativeBase.Image": {
+ alignSelf: null
+ },
+ "NativeBase.Radio": {
+ alignSelf: null
+ },
+ "NativeBase.Checkbox": {
+ alignSelf: null
+ },
+ "NativeBase.Switch": {
+ alignSelf: null
+ },
+ padding: null,
+ flex: 0.28
+ },
+ "NativeBase.Text": {
+ ".note": {
+ color: variables.listNoteColor,
+ fontWeight: "200"
+ },
+ alignSelf: "center"
+ },
+ ".last": {
+ marginLeft: -(variables.listItemPadding + 5),
+ paddingLeft: (variables.listItemPadding + 5) * 2,
+ top: 1
+ },
+ ".avatar": {
+ "NativeBase.Left": {
+ flex: 0,
+ alignSelf: "flex-start",
+ paddingTop: 14
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null
+ },
+ flex: 1,
+ paddingVertical: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ marginLeft: variables.listItemPadding + 5
+ },
+ "NativeBase.Right": {
+ "NativeBase.Text": {
+ ".note": {
+ fontSize: variables.noteFontSize - 2
+ }
+ },
+ flex: 0,
+ paddingRight: variables.listItemPadding + 5,
+ alignSelf: "stretch",
+ paddingVertical: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null
+ },
+ ".thumbnail": {
+ "NativeBase.Left": {
+ flex: 0
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null
+ },
+ flex: 1,
+ paddingVertical: variables.listItemPadding + 8,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ marginLeft: variables.listItemPadding + 5
+ },
+ "NativeBase.Right": {
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontSize: variables.listNoteSize,
+ color: variables.sTabBarActiveTextColor
+ }
+ },
+ height: null
+ },
+ flex: 0,
+ justifyContent: "center",
+ alignSelf: "stretch",
+ paddingRight: variables.listItemPadding + 5,
+ paddingVertical: variables.listItemPadding + 5,
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null
+ },
+ ".icon": {
+ ".last": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ },
+ borderBottomWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor
+ },
+ "NativeBase.Left": {
+ "NativeBase.Button": {
+ "NativeBase.IconNB": {
+ marginHorizontal: null,
+ fontSize: variables.iconFontSize - 5
+ },
+ "NativeBase.Icon": {
+ marginHorizontal: null,
+ fontSize: variables.iconFontSize - 8
+ },
+ alignSelf: "center",
+ height: 29,
+ width: 29,
+ borderRadius: 6,
+ paddingVertical: null,
+ paddingHorizontal: null,
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ "NativeBase.Icon": {
+ width: variables.iconFontSize - 5,
+ fontSize: variables.iconFontSize - 2
+ },
+ "NativeBase.IconNB": {
+ width: variables.iconFontSize - 5,
+ fontSize: variables.iconFontSize - 2
+ },
+ paddingRight: variables.listItemPadding + 5,
+ flex: 0,
+ height: 44,
+ justifyContent: "center",
+ alignItems: "center"
+ },
+ "NativeBase.Body": {
+ "NativeBase.Text": {
+ marginLeft: null,
+ fontSize: 17
+ },
+ flex: 1,
+ height: 44,
+ justifyContent: "center",
+ borderBottomWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ borderColor: variables.listBorderColor
+ },
+ "NativeBase.Right": {
+ "NativeBase.Text": {
+ textAlign: "center",
+ color: "#8F8E95",
+ fontSize: 17
+ },
+ "NativeBase.IconNB": {
+ color: "#C8C7CC",
+ fontSize: variables.iconFontSize - 10,
+ alignSelf: "center",
+ paddingLeft: 10,
+ paddingTop: 3
+ },
+ "NativeBase.Icon": {
+ color: "#C8C7CC",
+ fontSize: variables.iconFontSize - 10,
+ alignSelf: "center",
+ paddingLeft: 10,
+ paddingTop: 3
+ },
+ "NativeBase.Switch": {
+ marginRight: Platform.OS === "ios" ? undefined : -5,
+ alignSelf: null
+ },
+ "NativeBase.PickerNB": {
+ ...pickerTheme()
+ },
+ flexDirection: "row",
+ alignItems: "center",
+ flex: 0,
+ alignSelf: "stretch",
+ height: 44,
+ justifyContent: "flex-end",
+ borderBottomWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ borderColor: variables.listBorderColor,
+ paddingRight: variables.listItemPadding + 5
+ },
+ ".noBorder": {
+ "NativeBase.Body": {
+ borderBottomWidth: null
+ },
+ "NativeBase.Right": {
+ borderBottomWidth: null
+ }
+ },
+ borderBottomWidth: null,
+ paddingVertical: null,
+ paddingRight: null,
+ height: 44,
+ justifyContent: "center"
+ },
+ ".noBorder": {
+ borderBottomWidth: null
+ },
+ ".noIndent": {
+ marginLeft: null,
+ padding: variables.listItemPadding,
+ paddingLeft: variables.listItemPadding + 6
+ },
+ alignItems: "center",
+ flexDirection: "row",
+ paddingRight: variables.listItemPadding + 6,
+ paddingVertical: variables.listItemPadding + 3,
+ marginLeft: variables.listItemPadding + 6,
+ borderBottomWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ backgroundColor: variables.listBg,
+ borderColor: variables.listBorderColor
+ };
+
+ return listItemTheme;
+};
diff --git a/native-base-theme/components/Picker.android.js b/native-base-theme/components/Picker.android.js
new file mode 100644
index 0000000..b1867f9
--- /dev/null
+++ b/native-base-theme/components/Picker.android.js
@@ -0,0 +1,16 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const pickerTheme = {
+ ".note": {
+ color: "#8F8E95"
+ },
+ // width: 90,
+ marginRight: -4,
+ flexGrow: 1
+ };
+
+ return pickerTheme;
+};
diff --git a/native-base-theme/components/Picker.ios.js b/native-base-theme/components/Picker.ios.js
new file mode 100644
index 0000000..36ea854
--- /dev/null
+++ b/native-base-theme/components/Picker.ios.js
@@ -0,0 +1,9 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const pickerTheme = {};
+
+ return pickerTheme;
+};
diff --git a/native-base-theme/components/Picker.js b/native-base-theme/components/Picker.js
new file mode 100644
index 0000000..b1867f9
--- /dev/null
+++ b/native-base-theme/components/Picker.js
@@ -0,0 +1,16 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const pickerTheme = {
+ ".note": {
+ color: "#8F8E95"
+ },
+ // width: 90,
+ marginRight: -4,
+ flexGrow: 1
+ };
+
+ return pickerTheme;
+};
diff --git a/native-base-theme/components/Radio.js b/native-base-theme/components/Radio.js
new file mode 100644
index 0000000..b6fb0ea
--- /dev/null
+++ b/native-base-theme/components/Radio.js
@@ -0,0 +1,28 @@
+// @flow
+
+import { Platform } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const radioTheme = {
+ ".selected": {
+ "NativeBase.IconNB": {
+ color: Platform.OS === "ios"
+ ? variables.radioColor
+ : variables.radioSelectedColorAndroid,
+ lineHeight: Platform.OS === "ios" ? 25 : variables.radioBtnLineHeight,
+ height: Platform.OS === "ios" ? 20 : undefined
+ }
+ },
+ "NativeBase.IconNB": {
+ color: Platform.OS === "ios" ? "transparent" : undefined,
+ lineHeight: Platform.OS === "ios"
+ ? undefined
+ : variables.radioBtnLineHeight,
+ fontSize: Platform.OS === "ios" ? undefined : variables.radioBtnSize
+ }
+ };
+
+ return radioTheme;
+};
diff --git a/native-base-theme/components/Right.js b/native-base-theme/components/Right.js
new file mode 100644
index 0000000..382e70b
--- /dev/null
+++ b/native-base-theme/components/Right.js
@@ -0,0 +1,16 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const rightTheme = {
+ 'NativeBase.Button': {
+ alignSelf: null,
+ },
+ flex: 1,
+ alignSelf: 'center',
+ alignItems: 'flex-end',
+ };
+
+ return rightTheme;
+};
diff --git a/native-base-theme/components/Segment.js b/native-base-theme/components/Segment.js
new file mode 100644
index 0000000..6ff15c2
--- /dev/null
+++ b/native-base-theme/components/Segment.js
@@ -0,0 +1,56 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const segmentTheme = {
+ height: 45,
+ borderColor: variables.segmentBorderColorMain,
+ flexDirection: "row",
+ justifyContent: "center",
+ backgroundColor: variables.segmentBackgroundColor,
+ "NativeBase.Button": {
+ alignSelf: "center",
+ borderRadius: 0,
+ paddingTop: 3,
+ paddingBottom: 3,
+ height: 30,
+ backgroundColor: "transparent",
+ borderWidth: 1,
+ borderLeftWidth: 0,
+ borderColor: variables.segmentBorderColor,
+ elevation: 0,
+ ".active": {
+ backgroundColor: variables.segmentActiveBackgroundColor,
+ "NativeBase.Text": {
+ color: variables.segmentActiveTextColor
+ },
+ "NativeBase.Icon": {
+ color: variables.segmentActiveTextColor
+ }
+ },
+ ".first": {
+ borderTopLeftRadius: platform === "ios" ? 5 : undefined,
+ borderBottomLeftRadius: platform === "ios" ? 5 : undefined,
+ borderLeftWidth: 1
+ },
+ ".last": {
+ borderTopRightRadius: platform === "ios" ? 5 : undefined,
+ borderBottomRightRadius: platform === "ios" ? 5 : undefined
+ },
+ "NativeBase.Text": {
+ color: variables.segmentTextColor,
+ fontSize: 14
+ },
+ "NativeBase.Icon": {
+ fontSize: 22,
+ paddingTop: 0,
+ color: variables.segmentTextColor
+ }
+ }
+ };
+
+ return segmentTheme;
+};
diff --git a/native-base-theme/components/Separator.js b/native-base-theme/components/Separator.js
new file mode 100644
index 0000000..f31b48a
--- /dev/null
+++ b/native-base-theme/components/Separator.js
@@ -0,0 +1,49 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const theme = {
+ '.group': {
+ height: 50,
+ paddingVertical: variables.listItemPadding - 8,
+ paddingTop: variables.listItemPadding + 12,
+ '.bordered': {
+ height: 50,
+ paddingVertical: variables.listItemPadding - 8,
+ paddingTop: variables.listItemPadding + 12,
+ },
+ },
+ '.bordered': {
+ '.noTopBorder': {
+ borderTopWidth: 0,
+ },
+ '.noBottomBorder': {
+ borderBottomWidth: 0,
+ },
+ height: 35,
+ paddingTop: variables.listItemPadding + 2,
+ paddingBottom: variables.listItemPadding,
+ borderBottomWidth: variables.borderWidth,
+ borderTopWidth: variables.borderWidth,
+ borderColor: variables.listBorderColor,
+ },
+ 'NativeBase.Text': {
+ fontSize: variables.tabBarTextSize - 2,
+ color: '#777',
+ },
+ '.noTopBorder': {
+ borderTopWidth: 0,
+ },
+ '.noBottomBorder': {
+ borderBottomWidth: 0,
+ },
+ height: 38,
+ backgroundColor: '#F0EFF5',
+ flex: 1,
+ justifyContent: 'center',
+ paddingLeft: variables.listItemPadding + 5,
+ };
+
+ return theme;
+};
diff --git a/native-base-theme/components/Spinner.js b/native-base-theme/components/Spinner.js
new file mode 100644
index 0000000..edc811b
--- /dev/null
+++ b/native-base-theme/components/Spinner.js
@@ -0,0 +1,11 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const spinnerTheme = {
+ height: 80
+ };
+
+ return spinnerTheme;
+};
diff --git a/native-base-theme/components/Subtitle.js b/native-base-theme/components/Subtitle.js
new file mode 100644
index 0000000..897c560
--- /dev/null
+++ b/native-base-theme/components/Subtitle.js
@@ -0,0 +1,18 @@
+// @flow
+
+import { Platform } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const subtitleTheme = {
+ fontSize: variables.subTitleFontSize,
+ fontFamily: variables.titleFontfamily,
+ color: variables.subtitleColor,
+ textAlign: "center",
+ paddingLeft: Platform.OS === "ios" ? 4 : 0,
+ marginLeft: Platform.OS === "ios" ? undefined : -3
+ };
+
+ return subtitleTheme;
+};
diff --git a/native-base-theme/components/SwipeRow.js b/native-base-theme/components/SwipeRow.js
new file mode 100644
index 0000000..3686582
--- /dev/null
+++ b/native-base-theme/components/SwipeRow.js
@@ -0,0 +1,48 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const swipeRowTheme = {
+ "NativeBase.ListItem": {
+ ".list": {
+ backgroundColor: "#FFF",
+ },
+ marginLeft: 0,
+ },
+ "NativeBase.Left": {
+ flex: 0,
+ alignSelf: null,
+ alignItems: null,
+ "NativeBase.Button": {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ },
+ "NativeBase.Right": {
+ flex: 0,
+ alignSelf: null,
+ alignItems: null,
+ "NativeBase.Button": {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ },
+ "NativeBase.Button": {
+ flex: 1,
+ height: null,
+ alignItems: "center",
+ justifyContent: "center",
+ alignSelf: "stretch",
+ borderRadius: 0,
+ },
+ };
+
+ return swipeRowTheme;
+};
diff --git a/native-base-theme/components/Switch.js b/native-base-theme/components/Switch.js
new file mode 100644
index 0000000..116fa8f
--- /dev/null
+++ b/native-base-theme/components/Switch.js
@@ -0,0 +1,11 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const switchTheme = {
+ marginVertical: -5,
+ };
+
+ return switchTheme;
+};
diff --git a/native-base-theme/components/Tab.js b/native-base-theme/components/Tab.js
new file mode 100644
index 0000000..35ede8b
--- /dev/null
+++ b/native-base-theme/components/Tab.js
@@ -0,0 +1,12 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const tabTheme = {
+ flex: 1,
+ backgroundColor: "#FFF"
+ };
+
+ return tabTheme;
+};
diff --git a/native-base-theme/components/TabBar.js b/native-base-theme/components/TabBar.js
new file mode 100644
index 0000000..9714cdc
--- /dev/null
+++ b/native-base-theme/components/TabBar.js
@@ -0,0 +1,57 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const tabBarTheme = {
+ ".tabIcon": {
+ height: undefined
+ },
+ ".vertical": {
+ height: 60
+ },
+ "NativeBase.Button": {
+ ".transparent": {
+ "NativeBase.Text": {
+ fontSize: variables.tabFontSize,
+ color: variables.sTabBarActiveTextColor,
+ fontWeight: "400"
+ },
+ "NativeBase.IconNB": {
+ color: variables.sTabBarActiveTextColor
+ }
+ },
+ "NativeBase.IconNB": {
+ color: variables.sTabBarActiveTextColor
+ },
+ "NativeBase.Text": {
+ fontSize: variables.tabFontSize,
+ color: variables.sTabBarActiveTextColor,
+ fontWeight: "400"
+ },
+ ".isTabActive": {
+ "NativeBase.Text": {
+ fontWeight: "900"
+ }
+ },
+ flex: 1,
+ alignSelf: "stretch",
+ alignItems: "center",
+ justifyContent: "center",
+ borderRadius: null,
+ borderBottomColor: "transparent",
+ backgroundColor: variables.tabBgColor
+ },
+ height: 45,
+ flexDirection: "row",
+ justifyContent: "space-around",
+ borderWidth: 1,
+ borderTopWidth: 0,
+ borderLeftWidth: 0,
+ borderRightWidth: 0,
+ borderBottomColor: "#ccc",
+ backgroundColor: variables.tabBgColor
+ };
+
+ return tabBarTheme;
+};
diff --git a/native-base-theme/components/TabContainer.js b/native-base-theme/components/TabContainer.js
new file mode 100644
index 0000000..44d4886
--- /dev/null
+++ b/native-base-theme/components/TabContainer.js
@@ -0,0 +1,26 @@
+// @flow
+
+import variable from "./../variables/platform";
+import { Platform } from "react-native";
+
+export default (variables /*: * */ = variable) => {
+ const platformStyle = variables.platformStyle;
+ const platform = variables.platform;
+
+ const tabContainerTheme = {
+ elevation: 3,
+ height: 50,
+ flexDirection: "row",
+ shadowColor: platformStyle === "material" ? "#000" : undefined,
+ shadowOffset: platformStyle === "material"
+ ? { width: 0, height: 2 }
+ : undefined,
+ shadowOpacity: platformStyle === "material" ? 0.2 : undefined,
+ shadowRadius: platformStyle === "material" ? 1.2 : undefined,
+ justifyContent: "space-around",
+ borderBottomWidth: Platform.OS === "ios" ? variables.borderWidth : 0,
+ borderColor: variables.topTabBarBorderColor
+ };
+
+ return tabContainerTheme;
+};
diff --git a/native-base-theme/components/TabHeading.js b/native-base-theme/components/TabHeading.js
new file mode 100644
index 0000000..9f79903
--- /dev/null
+++ b/native-base-theme/components/TabHeading.js
@@ -0,0 +1,39 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const tabHeadingTheme = {
+ flexDirection: "row",
+ backgroundColor: variables.tabDefaultBg,
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ ".scrollable": {
+ paddingHorizontal: 20,
+ flex: platform === "android" ? 0 : 1,
+ minWidth: platform === "android" ? undefined : 60
+ },
+ "NativeBase.Text": {
+ color: variables.topTabBarTextColor,
+ marginHorizontal: 7
+ },
+ "NativeBase.Icon": {
+ color: variables.topTabBarTextColor,
+ fontSize: platform === "ios" ? 26 : undefined
+ },
+ ".active": {
+ "NativeBase.Text": {
+ color: variables.topTabBarActiveTextColor,
+ fontWeight: "600"
+ },
+ "NativeBase.Icon": {
+ color: variables.topTabBarActiveTextColor
+ }
+ }
+ };
+
+ return tabHeadingTheme;
+};
diff --git a/native-base-theme/components/Text.js b/native-base-theme/components/Text.js
new file mode 100644
index 0000000..2c95ce1
--- /dev/null
+++ b/native-base-theme/components/Text.js
@@ -0,0 +1,17 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const textTheme = {
+ fontSize: variables.DefaultFontSize,
+ fontFamily: variables.fontFamily,
+ color: variables.textColor,
+ ".note": {
+ color: "#a7a7a7",
+ fontSize: variables.noteFontSize
+ }
+ };
+
+ return textTheme;
+};
diff --git a/native-base-theme/components/Textarea.js b/native-base-theme/components/Textarea.js
new file mode 100644
index 0000000..f5e3974
--- /dev/null
+++ b/native-base-theme/components/Textarea.js
@@ -0,0 +1,25 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const textAreaTheme = {
+ ".underline": {
+ borderBottomWidth: variables.borderWidth,
+ marginTop: 5,
+ borderColor: variables.inputBorderColor
+ },
+ ".bordered": {
+ borderWidth: 1,
+ marginTop: 5,
+ borderColor: variables.inputBorderColor
+ },
+ color: variables.textColor,
+ paddingLeft: 10,
+ paddingRight: 5,
+ fontSize: 15,
+ textAlignVertical: "top"
+ };
+
+ return textAreaTheme;
+};
diff --git a/native-base-theme/components/Thumbnail.js b/native-base-theme/components/Thumbnail.js
new file mode 100644
index 0000000..efff792
--- /dev/null
+++ b/native-base-theme/components/Thumbnail.js
@@ -0,0 +1,42 @@
+// @flow
+
+import variable from './../variables/platform';
+
+export default (variables /*: * */ = variable) => {
+ const thumbnailTheme = {
+ '.square': {
+ borderRadius: 0,
+ '.small': {
+ width: 36,
+ height: 36,
+ borderRadius: 0,
+ },
+ '.large': {
+ width: 80,
+ height: 80,
+ borderRadius: 0,
+ },
+ },
+ '.small': {
+ width: 36,
+ height: 36,
+ borderRadius: 18,
+ '.square': {
+ borderRadius: 0,
+ },
+ },
+ '.large': {
+ width: 80,
+ height: 80,
+ borderRadius: 40,
+ '.square': {
+ borderRadius: 0,
+ },
+ },
+ width: 56,
+ height: 56,
+ borderRadius: 28,
+ };
+
+ return thumbnailTheme;
+};
diff --git a/native-base-theme/components/Title.js b/native-base-theme/components/Title.js
new file mode 100644
index 0000000..5792e57
--- /dev/null
+++ b/native-base-theme/components/Title.js
@@ -0,0 +1,20 @@
+// @flow
+
+import { Platform } from "react-native";
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const titleTheme = {
+ fontSize: variables.titleFontSize,
+ fontFamily: variables.titleFontfamily,
+ color: variables.titleFontColor,
+ fontWeight: Platform.OS === "ios" ? "700" : undefined,
+ textAlign: "center",
+ paddingLeft: Platform.OS === "ios" ? 4 : 0,
+ marginLeft: Platform.OS === "ios" ? undefined : -3,
+ paddingTop: 1
+ };
+
+ return titleTheme;
+};
diff --git a/native-base-theme/components/Toast.js b/native-base-theme/components/Toast.js
new file mode 100644
index 0000000..a595308
--- /dev/null
+++ b/native-base-theme/components/Toast.js
@@ -0,0 +1,40 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const platform = variables.platform;
+
+ const toastTheme = {
+ ".danger": {
+ backgroundColor: variables.brandDanger
+ },
+ ".warning": {
+ backgroundColor: variables.brandWarning
+ },
+ ".success": {
+ backgroundColor: variables.brandSuccess
+ },
+ backgroundColor: "rgba(0,0,0,0.8)",
+ borderRadius: platform === "ios" ? 5 : 0,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ padding: 10,
+ minHeight: 50,
+ "NativeBase.Text": {
+ color: "#fff",
+ flex: 1
+ },
+ "NativeBase.Button": {
+ backgroundColor: "transparent",
+ height: 30,
+ elevation: 0,
+ "NativeBase.Text": {
+ fontSize: 14
+ }
+ }
+ };
+
+ return toastTheme;
+};
diff --git a/native-base-theme/components/View.js b/native-base-theme/components/View.js
new file mode 100644
index 0000000..b9c7aeb
--- /dev/null
+++ b/native-base-theme/components/View.js
@@ -0,0 +1,13 @@
+// @flow
+
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const viewTheme = {
+ ".padder": {
+ padding: variables.contentPadding
+ }
+ };
+
+ return viewTheme;
+};
diff --git a/native-base-theme/components/index.js b/native-base-theme/components/index.js
new file mode 100644
index 0000000..d1102fd
--- /dev/null
+++ b/native-base-theme/components/index.js
@@ -0,0 +1,242 @@
+// @flow
+
+import _ from "lodash";
+import bodyTheme from "./Body";
+import leftTheme from "./Left";
+import rightTheme from "./Right";
+import headerTheme from "./Header";
+import switchTheme from "./Switch";
+import thumbnailTheme from "./Thumbnail";
+import containerTheme from "./Container";
+import contentTheme from "./Content";
+import buttonTheme from "./Button";
+import titleTheme from "./Title";
+import subtitleTheme from "./Subtitle";
+import inputGroupTheme from "./InputGroup";
+import badgeTheme from "./Badge";
+import checkBoxTheme from "./CheckBox";
+import cardTheme from "./Card";
+import radioTheme from "./Radio";
+import h3Theme from "./H3";
+import h2Theme from "./H2";
+import h1Theme from "./H1";
+import footerTheme from "./Footer";
+import footerTabTheme from "./FooterTab";
+import fabTheme from "./Fab";
+import itemTheme from "./Item";
+import labelTheme from "./Label";
+import textAreaTheme from "./Textarea";
+import textTheme from "./Text";
+import toastTheme from "./Toast";
+import tabTheme from "./Tab";
+import tabBarTheme from "./TabBar";
+import tabContainerTheme from "./TabContainer";
+import viewTheme from "./View";
+import tabHeadingTheme from "./TabHeading";
+import iconTheme from "./Icon";
+import inputTheme from "./Input";
+import swipeRowTheme from "./SwipeRow";
+import segmentTheme from "./Segment";
+import spinnerTheme from "./Spinner";
+import cardItemTheme from "./CardItem";
+import listItemTheme from "./ListItem";
+import formTheme from "./Form";
+import separatorTheme from "./Separator";
+import pickerTheme from "./Picker"
+import variable from "./../variables/platform";
+
+export default (variables /*: * */ = variable) => {
+ const theme = {
+ variables,
+ "NativeBase.Left": {
+ ...leftTheme(variables)
+ },
+ "NativeBase.Right": {
+ ...rightTheme(variables)
+ },
+ "NativeBase.Body": {
+ ...bodyTheme(variables)
+ },
+
+ "NativeBase.Header": {
+ ...headerTheme(variables)
+ },
+
+ "NativeBase.Button": {
+ ...buttonTheme(variables)
+ },
+
+ "NativeBase.Title": {
+ ...titleTheme(variables)
+ },
+ "NativeBase.Subtitle": {
+ ...subtitleTheme(variables)
+ },
+
+ "NativeBase.InputGroup": {
+ ...inputGroupTheme(variables)
+ },
+
+ "NativeBase.Input": {
+ ...inputTheme(variables)
+ },
+
+ "NativeBase.Badge": {
+ ...badgeTheme(variables)
+ },
+
+ "NativeBase.CheckBox": {
+ ...checkBoxTheme(variables)
+ },
+
+ "NativeBase.Radio": {
+ ...radioTheme(variables)
+ },
+
+ "NativeBase.Card": {
+ ...cardTheme(variables)
+ },
+
+ "NativeBase.CardItem": {
+ ...cardItemTheme(variables)
+ },
+
+ "NativeBase.Toast": {
+ ...toastTheme(variables)
+ },
+
+ "NativeBase.H1": {
+ ...h1Theme(variables)
+ },
+ "NativeBase.H2": {
+ ...h2Theme(variables)
+ },
+ "NativeBase.H3": {
+ ...h3Theme(variables)
+ },
+ "NativeBase.Form": {
+ ...formTheme(variables)
+ },
+
+ "NativeBase.Container": {
+ ...containerTheme(variables)
+ },
+ "NativeBase.Content": {
+ ...contentTheme(variables)
+ },
+
+ "NativeBase.Footer": {
+ ...footerTheme(variables)
+ },
+
+ "NativeBase.Tabs": {
+ flex: 1
+ },
+
+ "NativeBase.FooterTab": {
+ ...footerTabTheme(variables)
+ },
+
+ "NativeBase.ListItem": {
+ ...listItemTheme(variables)
+ },
+
+ "NativeBase.ListItem1": {
+ ...listItemTheme(variables)
+ },
+
+ "NativeBase.Icon": {
+ ...iconTheme(variables)
+ },
+ "NativeBase.IconNB": {
+ ...iconTheme(variables)
+ },
+ "NativeBase.Text": {
+ ...textTheme(variables)
+ },
+ "NativeBase.Spinner": {
+ ...spinnerTheme(variables)
+ },
+
+ "NativeBase.Fab": {
+ ...fabTheme(variables)
+ },
+
+ "NativeBase.Item": {
+ ...itemTheme(variables)
+ },
+
+ "NativeBase.Label": {
+ ...labelTheme(variables)
+ },
+
+ "NativeBase.Textarea": {
+ ...textAreaTheme(variables)
+ },
+
+ "NativeBase.PickerNB": {
+ ...pickerTheme(variables),
+ "NativeBase.Button": {
+ "NativeBase.Text": {}
+ }
+ },
+
+ "NativeBase.Tab": {
+ ...tabTheme(variables)
+ },
+
+ "NativeBase.Segment": {
+ ...segmentTheme(variables)
+ },
+
+ "NativeBase.TabBar": {
+ ...tabBarTheme(variables)
+ },
+ "NativeBase.ViewNB": {
+ ...viewTheme(variables)
+ },
+ "NativeBase.TabHeading": {
+ ...tabHeadingTheme(variables)
+ },
+ "NativeBase.TabContainer": {
+ ...tabContainerTheme(variables)
+ },
+ "NativeBase.Switch": {
+ ...switchTheme(variables)
+ },
+ "NativeBase.Separator": {
+ ...separatorTheme(variables)
+ },
+ "NativeBase.SwipeRow": {
+ ...swipeRowTheme(variables)
+ },
+ "NativeBase.Thumbnail": {
+ ...thumbnailTheme(variables)
+ }
+ };
+
+ const cssifyTheme = (grandparent, parent, parentKey) => {
+ _.forEach(parent, (style, styleName) => {
+ if (
+ styleName.indexOf(".") === 0 &&
+ parentKey &&
+ parentKey.indexOf(".") === 0
+ ) {
+ if (grandparent) {
+ if (!grandparent[styleName]) {
+ grandparent[styleName] = {};
+ } else {
+ grandparent[styleName][parentKey] = style;
+ }
+ }
+ }
+ if (style && typeof style === "object" && styleName !== "fontVariant" && styleName !== "transform") {
+ cssifyTheme(parent, style, styleName);
+ }
+ });
+ };
+
+ cssifyTheme(null, theme, null);
+
+ return theme;
+};
diff --git a/native-base-theme/variables/commonColor.js b/native-base-theme/variables/commonColor.js
new file mode 100644
index 0000000..c004877
--- /dev/null
+++ b/native-base-theme/variables/commonColor.js
@@ -0,0 +1,283 @@
+// @flow
+
+import color from "color";
+
+import { Platform, Dimensions, PixelRatio } from "react-native";
+
+const deviceHeight = Dimensions.get("window").height;
+const deviceWidth = Dimensions.get("window").width;
+const platform = Platform.OS;
+const platformStyle = undefined;
+const isIphoneX =
+ platform === "ios" && (deviceHeight === 812 || deviceWidth === 812 || deviceHeight === 896 || deviceWidth === 896);
+
+export default {
+ platformStyle,
+ platform,
+
+ //Accordion
+ headerStyle: "#edebed",
+ iconStyle: "#000",
+ contentStyle: "#f5f4f5",
+ expandedIconStyle: "#000",
+ accordionBorderColor: "#d3d3d3",
+
+ //Android
+ androidRipple: true,
+ androidRippleColor: "rgba(256, 256, 256, 0.3)",
+ androidRippleColorDark: "rgba(0, 0, 0, 0.15)",
+ btnUppercaseAndroidText: true,
+
+ // Badge
+ badgeBg: "#ED1727",
+ badgeColor: "#fff",
+ badgePadding: platform === "ios" ? 3 : 0,
+
+ // Button
+ btnFontFamily: platform === "ios" ? "System" : "Roboto_medium",
+ btnDisabledBg: "#b5b5b5",
+ buttonPadding: 6,
+ get btnPrimaryBg() {
+ return this.brandPrimary;
+ },
+ get btnPrimaryColor() {
+ return this.inverseTextColor;
+ },
+ get btnInfoBg() {
+ return this.brandInfo;
+ },
+ get btnInfoColor() {
+ return this.inverseTextColor;
+ },
+ get btnSuccessBg() {
+ return this.brandSuccess;
+ },
+ get btnSuccessColor() {
+ return this.inverseTextColor;
+ },
+ get btnDangerBg() {
+ return this.brandDanger;
+ },
+ get btnDangerColor() {
+ return this.inverseTextColor;
+ },
+ get btnWarningBg() {
+ return this.brandWarning;
+ },
+ get btnWarningColor() {
+ return this.inverseTextColor;
+ },
+ get btnTextSize() {
+ return platform === "ios" ? this.fontSizeBase * 1.1 : this.fontSizeBase - 1;
+ },
+ get btnTextSizeLarge() {
+ return this.fontSizeBase * 1.5;
+ },
+ get btnTextSizeSmall() {
+ return this.fontSizeBase * 0.8;
+ },
+ get borderRadiusLarge() {
+ return this.fontSizeBase * 3.8;
+ },
+ get iconSizeLarge() {
+ return this.iconFontSize * 1.5;
+ },
+ get iconSizeSmall() {
+ return this.iconFontSize * 0.6;
+ },
+
+ // Card
+ cardDefaultBg: "#fff",
+ cardBorderColor: "#ccc",
+ cardBorderRadius: 2,
+ cardItemPadding: platform === "ios" ? 10 : 12,
+
+ // CheckBox
+ CheckboxRadius: platform === "ios" ? 13 : 0,
+ CheckboxBorderWidth: platform === "ios" ? 1 : 2,
+ CheckboxPaddingLeft: platform === "ios" ? 4 : 2,
+ CheckboxPaddingBottom: platform === "ios" ? 0 : 5,
+ CheckboxIconSize: platform === "ios" ? 21 : 16,
+ CheckboxIconMarginTop: platform === "ios" ? undefined : 1,
+ CheckboxFontSize: platform === "ios" ? 23 / 0.9 : 17,
+ checkboxBgColor: "#039BE5",
+ checkboxSize: 20,
+ checkboxTickColor: "#fff",
+
+ // Color
+ brandPrimary: platform === "ios" ? "#007aff" : "#3F51B5",
+ brandInfo: "#62B1F6",
+ brandSuccess: "#5cb85c",
+ brandDanger: "#d9534f",
+ brandWarning: "#f0ad4e",
+ brandDark: "#000",
+ brandLight: "#f4f4f4",
+
+ //Container
+ containerBgColor: "#fff",
+
+ //Date Picker
+ datePickerTextColor: "#000",
+ datePickerBg: "transparent",
+
+ // Font
+ DefaultFontSize: 16,
+ fontFamily: platform === "ios" ? "System" : "Roboto",
+ fontSizeBase: 15,
+ get fontSizeH1() {
+ return this.fontSizeBase * 1.8;
+ },
+ get fontSizeH2() {
+ return this.fontSizeBase * 1.6;
+ },
+ get fontSizeH3() {
+ return this.fontSizeBase * 1.4;
+ },
+
+ // Footer
+ footerHeight: 55,
+ footerDefaultBg: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ footerPaddingBottom: 0,
+
+ // FooterTab
+ tabBarTextColor: platform === "ios" ? "#737373" : "#bfc6ea",
+ tabBarTextSize: platform === "ios" ? 14 : 11,
+ activeTab: platform === "ios" ? "#007aff" : "#fff",
+ sTabBarActiveTextColor: "#007aff",
+ tabBarActiveTextColor: platform === "ios" ? "#2874F0" : "#fff",
+ tabActiveBgColor: platform === "ios" ? "#cde1f9" : "#3F51B5",
+
+ // Header
+ toolbarBtnColor: platform === "ios" ? "#007aff" : "#fff",
+ toolbarDefaultBg: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ toolbarHeight: platform === "ios" ? 64 : 56,
+ toolbarSearchIconSize: platform === "ios" ? 20 : 23,
+ toolbarInputColor: platform === "ios" ? "#CECDD2" : "#fff",
+ searchBarHeight: platform === "ios" ? 30 : 40,
+ searchBarInputHeight: platform === "ios" ? 30 : 50,
+ toolbarBtnTextColor: platform === "ios" ? "#007aff" : "#fff",
+ iosStatusbar: "dark-content",
+ toolbarDefaultBorder: platform === "ios" ? "#a7a6ab" : "#3F51B5",
+ get statusBarColor() {
+ return color(this.toolbarDefaultBg)
+ .darken(0.2)
+ .hex();
+ },
+ get darkenHeader() {
+ return color(this.tabBgColor)
+ .darken(0.03)
+ .hex();
+ },
+
+ // Icon
+ iconFamily: "Ionicons",
+ iconFontSize: platform === "ios" ? 30 : 28,
+ iconHeaderSize: platform === "ios" ? 33 : 24,
+
+ // InputGroup
+ inputFontSize: 17,
+ inputBorderColor: "#D9D5DC",
+ inputSuccessBorderColor: "#2b8339",
+ inputErrorBorderColor: "#ed2f2f",
+ inputHeightBase: 50,
+ get inputColor() {
+ return this.textColor;
+ },
+ get inputColorPlaceholder() {
+ return "#575757";
+ },
+
+ // Line Height
+ btnLineHeight: 19,
+ lineHeightH1: 32,
+ lineHeightH2: 27,
+ lineHeightH3: 22,
+ lineHeight: platform === "ios" ? 20 : 24,
+
+ // List
+ listBg: "transparent",
+ listBorderColor: "#c9c9c9",
+ listDividerBg: "#f4f4f4",
+ listBtnUnderlayColor: "#DDD",
+ listItemPadding: platform === "ios" ? 10 : 12,
+ listNoteColor: "#808080",
+ listNoteSize: 13,
+ listItemSelected: platform === "ios" ? "#007aff" : "#3F51B5",
+
+ // Progress Bar
+ defaultProgressColor: "#E4202D",
+ inverseProgressColor: "#1A191B",
+
+ // Radio Button
+ radioBtnSize: platform === "ios" ? 25 : 23,
+ radioSelectedColorAndroid: "#3F51B5",
+ radioBtnLineHeight: platform === "ios" ? 29 : 24,
+ get radioColor() {
+ return this.brandPrimary;
+ },
+
+ // Segment
+ segmentBackgroundColor: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ segmentActiveBackgroundColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentTextColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentActiveTextColor: platform === "ios" ? "#fff" : "#3F51B5",
+ segmentBorderColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentBorderColorMain: platform === "ios" ? "#a7a6ab" : "#3F51B5",
+
+ // Spinner
+ defaultSpinnerColor: "#45D56E",
+ inverseSpinnerColor: "#1A191B",
+
+ // Tab
+ tabDefaultBg: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ topTabBarTextColor: platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ topTabBarActiveTextColor: platform === "ios" ? "#007aff" : "#fff",
+ topTabBarBorderColor: platform === "ios" ? "#a7a6ab" : "#fff",
+ topTabBarActiveBorderColor: platform === "ios" ? "#007aff" : "#fff",
+
+ // Tabs
+ tabBgColor: "#F8F8F8",
+ tabFontSize: 15,
+
+ // Text
+ textColor: "#000",
+ inverseTextColor: "#fff",
+ noteFontSize: 14,
+ get defaultTextColor() {
+ return this.textColor;
+ },
+
+ // Title
+ titleFontfamily: platform === "ios" ? "System" : "Roboto_medium",
+ titleFontSize: platform === "ios" ? 17 : 19,
+ subTitleFontSize: platform === "ios" ? 11 : 14,
+ subtitleColor: platform === "ios" ? "#000" : "#fff",
+ titleFontColor: platform === "ios" ? "#000" : "#fff",
+
+ // Other
+ borderRadiusBase: platform === "ios" ? 5 : 2,
+ borderWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ contentPadding: 10,
+ dropdownLinkColor: "#414142",
+ inputLineHeight: 24,
+ deviceWidth,
+ deviceHeight,
+ isIphoneX,
+ inputGroupRoundedBorderRadius: 30,
+
+ //iPhoneX SafeArea
+ Inset: {
+ portrait: {
+ topInset: 24,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 34
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 44,
+ rightInset: 44,
+ bottomInset: 21
+ }
+ }
+};
diff --git a/native-base-theme/variables/material.js b/native-base-theme/variables/material.js
new file mode 100644
index 0000000..ce917a1
--- /dev/null
+++ b/native-base-theme/variables/material.js
@@ -0,0 +1,283 @@
+// @flow
+
+import color from "color";
+
+import { Platform, Dimensions, PixelRatio } from "react-native";
+
+const deviceHeight = Dimensions.get("window").height;
+const deviceWidth = Dimensions.get("window").width;
+const platform = Platform.OS;
+const platformStyle = "material";
+const isIphoneX =
+platform === "ios" && (deviceHeight === 812 || deviceWidth === 812 || deviceHeight === 896 || deviceWidth === 896);
+
+export default {
+ platformStyle,
+ platform,
+
+ //Accordion
+ headerStyle: "#edebed",
+ iconStyle: "#000",
+ contentStyle: "#f5f4f5",
+ expandedIconStyle: "#000",
+ accordionBorderColor: "#d3d3d3",
+
+ // Android
+ androidRipple: true,
+ androidRippleColor: "rgba(256, 256, 256, 0.3)",
+ androidRippleColorDark: "rgba(0, 0, 0, 0.15)",
+ btnUppercaseAndroidText: true,
+
+ // Badge
+ badgeBg: "#ED1727",
+ badgeColor: "#fff",
+ badgePadding: 0,
+
+ // Button
+ btnFontFamily: "Roboto",
+ btnDisabledBg: "#b5b5b5",
+ buttonPadding: 6,
+ get btnPrimaryBg() {
+ return this.brandPrimary;
+ },
+ get btnPrimaryColor() {
+ return this.inverseTextColor;
+ },
+ get btnInfoBg() {
+ return this.brandInfo;
+ },
+ get btnInfoColor() {
+ return this.inverseTextColor;
+ },
+ get btnSuccessBg() {
+ return this.brandSuccess;
+ },
+ get btnSuccessColor() {
+ return this.inverseTextColor;
+ },
+ get btnDangerBg() {
+ return this.brandDanger;
+ },
+ get btnDangerColor() {
+ return this.inverseTextColor;
+ },
+ get btnWarningBg() {
+ return this.brandWarning;
+ },
+ get btnWarningColor() {
+ return this.inverseTextColor;
+ },
+ get btnTextSize() {
+ return this.fontSizeBase - 1;
+ },
+ get btnTextSizeLarge() {
+ return this.fontSizeBase * 1.5;
+ },
+ get btnTextSizeSmall() {
+ return this.fontSizeBase * 0.8;
+ },
+ get borderRadiusLarge() {
+ return this.fontSizeBase * 3.8;
+ },
+ get iconSizeLarge() {
+ return this.iconFontSize * 1.5;
+ },
+ get iconSizeSmall() {
+ return this.iconFontSize * 0.6;
+ },
+
+ // Card
+ cardDefaultBg: "#fff",
+ cardBorderColor: "#ccc",
+ cardBorderRadius: 2,
+ cardItemPadding: platform === "ios" ? 10 : 12,
+
+ // CheckBox
+ CheckboxRadius: 0,
+ CheckboxBorderWidth: 2,
+ CheckboxPaddingLeft: 2,
+ CheckboxPaddingBottom: 5,
+ CheckboxIconSize: 16,
+ CheckboxIconMarginTop: 1,
+ CheckboxFontSize: 17,
+ checkboxBgColor: "#039BE5",
+ checkboxSize: 20,
+ checkboxTickColor: "#fff",
+
+ // Color
+ brandPrimary: "#3F51B5",
+ brandInfo: "#62B1F6",
+ brandSuccess: "#5cb85c",
+ brandDanger: "#d9534f",
+ brandWarning: "#f0ad4e",
+ brandDark: "#000",
+ brandLight: "#f4f4f4",
+
+ //Container
+ containerBgColor: "#fff",
+
+ //Date Picker
+ datePickerTextColor: "#000",
+ datePickerBg: "transparent",
+
+ // Font
+ DefaultFontSize: 16,
+ fontFamily: "Roboto",
+ fontSizeBase: 15,
+ get fontSizeH1() {
+ return this.fontSizeBase * 1.8;
+ },
+ get fontSizeH2() {
+ return this.fontSizeBase * 1.6;
+ },
+ get fontSizeH3() {
+ return this.fontSizeBase * 1.4;
+ },
+
+ // Footer
+ footerHeight: 55,
+ footerDefaultBg: "#3F51B5",
+ footerPaddingBottom: 0,
+
+ // FooterTab
+ tabBarTextColor: "#bfc6ea",
+ tabBarTextSize: 11,
+ activeTab: "#fff",
+ sTabBarActiveTextColor: "#007aff",
+ tabBarActiveTextColor: "#fff",
+ tabActiveBgColor: "#3F51B5",
+
+ // Header
+ toolbarBtnColor: "#fff",
+ toolbarDefaultBg: "#3F51B5",
+ toolbarHeight: 56,
+ toolbarSearchIconSize: 23,
+ toolbarInputColor: "#fff",
+ searchBarHeight: platform === "ios" ? 30 : 40,
+ searchBarInputHeight: platform === "ios" ? 40 : 50,
+ toolbarBtnTextColor: "#fff",
+ toolbarDefaultBorder: "#3F51B5",
+ iosStatusbar: "light-content",
+ get statusBarColor() {
+ return color(this.toolbarDefaultBg)
+ .darken(0.2)
+ .hex();
+ },
+ get darkenHeader() {
+ return color(this.tabBgColor)
+ .darken(0.03)
+ .hex();
+ },
+
+ // Icon
+ iconFamily: "Ionicons",
+ iconFontSize: 28,
+ iconHeaderSize: 24,
+
+ // InputGroup
+ inputFontSize: 17,
+ inputBorderColor: "#D9D5DC",
+ inputSuccessBorderColor: "#2b8339",
+ inputErrorBorderColor: "#ed2f2f",
+ inputHeightBase: 50,
+ get inputColor() {
+ return this.textColor;
+ },
+ get inputColorPlaceholder() {
+ return "#575757";
+ },
+
+ // Line Height
+ btnLineHeight: 19,
+ lineHeightH1: 32,
+ lineHeightH2: 27,
+ lineHeightH3: 22,
+ lineHeight: 24,
+
+ // List
+ listBg: "transparent",
+ listBorderColor: "#c9c9c9",
+ listDividerBg: "#f4f4f4",
+ listBtnUnderlayColor: "#DDD",
+ listItemPadding: 12,
+ listNoteColor: "#808080",
+ listNoteSize: 13,
+ listItemSelected: "#3F51B5",
+
+ // Progress Bar
+ defaultProgressColor: "#E4202D",
+ inverseProgressColor: "#1A191B",
+
+ // Radio Button
+ radioBtnSize: 23,
+ radioSelectedColorAndroid: "#3F51B5",
+ radioBtnLineHeight: 24,
+ get radioColor() {
+ return this.brandPrimary;
+ },
+
+ // Segment
+ segmentBackgroundColor: "#3F51B5",
+ segmentActiveBackgroundColor: "#fff",
+ segmentTextColor: "#fff",
+ segmentActiveTextColor: "#3F51B5",
+ segmentBorderColor: "#fff",
+ segmentBorderColorMain: "#3F51B5",
+
+ // Spinner
+ defaultSpinnerColor: "#45D56E",
+ inverseSpinnerColor: "#1A191B",
+
+ // Tab
+ tabDefaultBg: "#3F51B5",
+ topTabBarTextColor: "#b3c7f9",
+ topTabBarActiveTextColor: "#fff",
+ topTabBarBorderColor: "#fff",
+ topTabBarActiveBorderColor: "#fff",
+
+ // Tabs
+ tabBgColor: "#F8F8F8",
+ tabFontSize: 15,
+
+ // Text
+ textColor: "#000",
+ inverseTextColor: "#fff",
+ noteFontSize: 14,
+ get defaultTextColor() {
+ return this.textColor;
+ },
+
+ // Title
+ titleFontfamily: "Roboto",
+ titleFontSize: 19,
+ subTitleFontSize: 14,
+ subtitleColor: "#FFF",
+ titleFontColor: "#FFF",
+
+ // Other
+ borderRadiusBase: 2,
+ borderWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ contentPadding: 10,
+ dropdownLinkColor: "#414142",
+ inputLineHeight: 24,
+ deviceWidth,
+ deviceHeight,
+ isIphoneX,
+ inputGroupRoundedBorderRadius: 30,
+
+ //iPhoneX SafeArea
+ Inset: {
+ portrait: {
+ topInset: 24,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 34
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 44,
+ rightInset: 44,
+ bottomInset: 21
+ }
+ }
+};
diff --git a/native-base-theme/variables/platform.js b/native-base-theme/variables/platform.js
new file mode 100644
index 0000000..b5a5252
--- /dev/null
+++ b/native-base-theme/variables/platform.js
@@ -0,0 +1,283 @@
+// @flow
+
+import color from "color";
+
+import { Platform, Dimensions, PixelRatio } from "react-native";
+
+const deviceHeight = Dimensions.get("window").height;
+const deviceWidth = Dimensions.get("window").width;
+const platform = Platform.OS;
+const platformStyle = undefined;
+const isIphoneX =
+platform === "ios" && (deviceHeight === 812 || deviceWidth === 812 || deviceHeight === 896 || deviceWidth === 896);
+
+export default {
+ platformStyle,
+ platform,
+
+ //Accordion
+ headerStyle: "#edebed",
+ iconStyle: "#000",
+ contentStyle: "#f5f4f5",
+ expandedIconStyle: "#000",
+ accordionBorderColor: "#d3d3d3",
+
+ // Android
+ androidRipple: true,
+ androidRippleColor: "rgba(256, 256, 256, 0.3)",
+ androidRippleColorDark: "rgba(0, 0, 0, 0.15)",
+ btnUppercaseAndroidText: true,
+
+ // Badge
+ badgeBg: "#ED1727",
+ badgeColor: "#fff",
+ badgePadding: platform === "ios" ? 3 : 0,
+
+ // Button
+ btnFontFamily: platform === "ios" ? "System" : "Roboto_medium",
+ btnDisabledBg: "#b5b5b5",
+ buttonPadding: 6,
+ get btnPrimaryBg() {
+ return this.brandPrimary;
+ },
+ get btnPrimaryColor() {
+ return this.inverseTextColor;
+ },
+ get btnInfoBg() {
+ return this.brandInfo;
+ },
+ get btnInfoColor() {
+ return this.inverseTextColor;
+ },
+ get btnSuccessBg() {
+ return this.brandSuccess;
+ },
+ get btnSuccessColor() {
+ return this.inverseTextColor;
+ },
+ get btnDangerBg() {
+ return this.brandDanger;
+ },
+ get btnDangerColor() {
+ return this.inverseTextColor;
+ },
+ get btnWarningBg() {
+ return this.brandWarning;
+ },
+ get btnWarningColor() {
+ return this.inverseTextColor;
+ },
+ get btnTextSize() {
+ return platform === "ios" ? this.fontSizeBase * 1.1 : this.fontSizeBase - 1;
+ },
+ get btnTextSizeLarge() {
+ return this.fontSizeBase * 1.5;
+ },
+ get btnTextSizeSmall() {
+ return this.fontSizeBase * 0.8;
+ },
+ get borderRadiusLarge() {
+ return this.fontSizeBase * 3.8;
+ },
+ get iconSizeLarge() {
+ return this.iconFontSize * 1.5;
+ },
+ get iconSizeSmall() {
+ return this.iconFontSize * 0.6;
+ },
+
+ // Card
+ cardDefaultBg: "#fff",
+ cardBorderColor: "#ccc",
+ cardBorderRadius: 2,
+ cardItemPadding: platform === "ios" ? 10 : 12,
+
+ // CheckBox
+ CheckboxRadius: platform === "ios" ? 13 : 0,
+ CheckboxBorderWidth: platform === "ios" ? 1 : 2,
+ CheckboxPaddingLeft: platform === "ios" ? 4 : 2,
+ CheckboxPaddingBottom: platform === "ios" ? 0 : 5,
+ CheckboxIconSize: platform === "ios" ? 21 : 16,
+ CheckboxIconMarginTop: platform === "ios" ? undefined : 1,
+ CheckboxFontSize: platform === "ios" ? 23 / 0.9 : 17,
+ checkboxBgColor: "#039BE5",
+ checkboxSize: 20,
+ checkboxTickColor: "#fff",
+
+ // Color
+ brandPrimary: platform === "ios" ? "#e42612" : "#e42612",
+ brandInfo: "#62B1F6",
+ brandSuccess: "#5cb85c",
+ brandDanger: "#d9534f",
+ brandWarning: "#f0ad4e",
+ brandDark: "#000",
+ brandLight: "#f4f4f4",
+
+ //Container
+ containerBgColor: "#fff",
+
+ //Date Picker
+ datePickerTextColor: "#000",
+ datePickerBg: "transparent",
+
+ // Font
+ DefaultFontSize: 16,
+ fontFamily: platform === "ios" ? "System" : "Roboto",
+ fontSizeBase: 15,
+ get fontSizeH1() {
+ return this.fontSizeBase * 1.8;
+ },
+ get fontSizeH2() {
+ return this.fontSizeBase * 1.6;
+ },
+ get fontSizeH3() {
+ return this.fontSizeBase * 1.4;
+ },
+
+ // Footer
+ footerHeight: 55,
+ footerDefaultBg: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ footerPaddingBottom: 0,
+
+ // FooterTab
+ tabBarTextColor: platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ tabBarTextSize: platform === "ios" ? 14 : 11,
+ activeTab: platform === "ios" ? "#007aff" : "#fff",
+ sTabBarActiveTextColor: "#007aff",
+ tabBarActiveTextColor: platform === "ios" ? "#007aff" : "#fff",
+ tabActiveBgColor: platform === "ios" ? "#cde1f9" : "#3F51B5",
+
+ // Header
+ toolbarBtnColor: platform === "ios" ? "#e42612" : "#fff",
+ toolbarDefaultBg: platform === "ios" ? "#F8F8F8" : "#e42612",
+ toolbarHeight: platform === "ios" ? 64 : 56,
+ toolbarSearchIconSize: platform === "ios" ? 20 : 23,
+ toolbarInputColor: platform === "ios" ? "#CECDD2" : "#fff",
+ searchBarHeight: platform === "ios" ? 30 : 40,
+ searchBarInputHeight: platform === "ios" ? 30 : 50,
+ toolbarBtnTextColor: platform === "ios" ? "#e42612" : "#fff",
+ toolbarDefaultBorder: platform === "ios" ? "#a7a6ab" : "#ba1f0f",
+ iosStatusbar: platform === "ios" ? "dark-content" : "light-content",
+ get statusBarColor() {
+ return color(this.toolbarDefaultBg)
+ .darken(0.2)
+ .hex();
+ },
+ get darkenHeader() {
+ return color(this.tabBgColor)
+ .darken(0.03)
+ .hex();
+ },
+
+ // Icon
+ iconFamily: "Ionicons",
+ iconFontSize: platform === "ios" ? 30 : 28,
+ iconHeaderSize: platform === "ios" ? 33 : 24,
+
+ // InputGroup
+ inputFontSize: 17,
+ inputBorderColor: "#D9D5DC",
+ inputSuccessBorderColor: "#2b8339",
+ inputErrorBorderColor: "#ed2f2f",
+ inputHeightBase: 50,
+ get inputColor() {
+ return this.textColor;
+ },
+ get inputColorPlaceholder() {
+ return "#575757";
+ },
+
+ // Line Height
+ btnLineHeight: 19,
+ lineHeightH1: 32,
+ lineHeightH2: 27,
+ lineHeightH3: 22,
+ lineHeight: platform === "ios" ? 20 : 24,
+ listItemSelected: platform === "ios" ? "#e42612" : "#e42612",
+
+ // List
+ listBg: "transparent",
+ listBorderColor: "#c9c9c9",
+ listDividerBg: "#f4f4f4",
+ listBtnUnderlayColor: "#DDD",
+ listItemPadding: platform === "ios" ? 10 : 12,
+ listNoteColor: "#808080",
+ listNoteSize: 13,
+
+ // Progress Bar
+ defaultProgressColor: "#E4202D",
+ inverseProgressColor: "#1A191B",
+
+ // Radio Button
+ radioBtnSize: platform === "ios" ? 25 : 23,
+ radioSelectedColorAndroid: "#3F51B5",
+ radioBtnLineHeight: platform === "ios" ? 29 : 24,
+ get radioColor() {
+ return this.brandPrimary;
+ },
+
+ // Segment
+ segmentBackgroundColor: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ segmentActiveBackgroundColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentTextColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentActiveTextColor: platform === "ios" ? "#fff" : "#3F51B5",
+ segmentBorderColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentBorderColorMain: platform === "ios" ? "#a7a6ab" : "#3F51B5",
+
+ // Spinner
+ defaultSpinnerColor: "#45D56E",
+ inverseSpinnerColor: "#1A191B",
+
+ // Tab
+ tabDefaultBg: platform === "ios" ? "#F8F8F8" : "#e42612",
+ topTabBarTextColor: platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ topTabBarActiveTextColor: platform === "ios" ? "#e42612" : "#fff",
+ topTabBarBorderColor: platform === "ios" ? "#a7a6ab" : "#fff",
+ topTabBarActiveBorderColor: platform === "ios" ? "#e42612" : "#fff",
+
+ // Tabs
+ tabBgColor: "#F8F8F8",
+ tabFontSize: 15,
+
+ // Text
+ textColor: "#000",
+ inverseTextColor: "#fff",
+ noteFontSize: 14,
+ get defaultTextColor() {
+ return this.textColor;
+ },
+
+ // Title
+ titleFontfamily: platform === "ios" ? "System" : "Roboto_medium",
+ titleFontSize: platform === "ios" ? 17 : 19,
+ subTitleFontSize: platform === "ios" ? 11 : 14,
+ subtitleColor: platform === "ios" ? "#8e8e93" : "#FFF",
+ titleFontColor: platform === "ios" ? "#000" : "#FFF",
+
+ // Other
+ borderRadiusBase: platform === "ios" ? 5 : 2,
+ borderWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ contentPadding: 10,
+ dropdownLinkColor: "#414142",
+ inputLineHeight: 24,
+ deviceWidth,
+ deviceHeight,
+ isIphoneX,
+ inputGroupRoundedBorderRadius: 30,
+
+ //iPhoneX SafeArea
+ Inset: {
+ portrait: {
+ topInset: 24,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 34
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 44,
+ rightInset: 44,
+ bottomInset: 21
+ }
+ }
+};
diff --git a/native-base-theme/variables/platformDark.js b/native-base-theme/variables/platformDark.js
new file mode 100644
index 0000000..e3fe4c2
--- /dev/null
+++ b/native-base-theme/variables/platformDark.js
@@ -0,0 +1,283 @@
+// @flow
+
+import color from "color";
+
+import { Platform, Dimensions, PixelRatio } from "react-native";
+
+const deviceHeight = Dimensions.get("window").height;
+const deviceWidth = Dimensions.get("window").width;
+const platform = Platform.OS;
+const platformStyle = undefined;
+const isIphoneX =
+ platform === "ios" && (deviceHeight === 812 || deviceWidth === 812 || deviceHeight === 896 || deviceWidth === 896);
+
+export default {
+ platformStyle,
+ platform,
+
+ //Accordion
+ headerStyle: "#edebed",
+ iconStyle: "#000",
+ contentStyle: "#f5f4f5",
+ expandedIconStyle: "#000",
+ accordionBorderColor: "#d3d3d3",
+
+ // Android
+ androidRipple: true,
+ androidRippleColor: "rgba(256, 256, 256, 0.3)",
+ androidRippleColorDark: "rgba(0, 0, 0, 0.15)",
+ btnUppercaseAndroidText: true,
+
+ // Badge
+ badgeBg: "#ED1727",
+ badgeColor: "#fff",
+ badgePadding: platform === "ios" ? 3 : 0,
+
+ // Button
+ btnFontFamily: platform === "ios" ? "System" : "Roboto_medium",
+ btnDisabledBg: "#b5b5b5",
+ buttonPadding: 6,
+ get btnPrimaryBg() {
+ return this.brandPrimary;
+ },
+ get btnPrimaryColor() {
+ return this.inverseTextColor;
+ },
+ get btnInfoBg() {
+ return this.brandInfo;
+ },
+ get btnInfoColor() {
+ return this.inverseTextColor;
+ },
+ get btnSuccessBg() {
+ return this.brandSuccess;
+ },
+ get btnSuccessColor() {
+ return this.inverseTextColor;
+ },
+ get btnDangerBg() {
+ return this.brandDanger;
+ },
+ get btnDangerColor() {
+ return this.inverseTextColor;
+ },
+ get btnWarningBg() {
+ return this.brandWarning;
+ },
+ get btnWarningColor() {
+ return this.inverseTextColor;
+ },
+ get btnTextSize() {
+ return platform === "ios" ? this.fontSizeBase * 1.1 : this.fontSizeBase - 1;
+ },
+ get btnTextSizeLarge() {
+ return this.fontSizeBase * 1.5;
+ },
+ get btnTextSizeSmall() {
+ return this.fontSizeBase * 0.8;
+ },
+ get borderRadiusLarge() {
+ return this.fontSizeBase * 3.8;
+ },
+ get iconSizeLarge() {
+ return this.iconFontSize * 1.5;
+ },
+ get iconSizeSmall() {
+ return this.iconFontSize * 0.6;
+ },
+
+ // Card
+ cardDefaultBg: "#2b2b2b",
+ cardBorderColor: "#ccc",
+ cardBorderRadius: 2,
+ cardItemPadding: platform === "ios" ? 10 : 12,
+
+ // CheckBox
+ CheckboxRadius: platform === "ios" ? 13 : 0,
+ CheckboxBorderWidth: platform === "ios" ? 1 : 2,
+ CheckboxPaddingLeft: platform === "ios" ? 4 : 2,
+ CheckboxPaddingBottom: platform === "ios" ? 0 : 5,
+ CheckboxIconSize: platform === "ios" ? 21 : 16,
+ CheckboxIconMarginTop: platform === "ios" ? undefined : 1,
+ CheckboxFontSize: platform === "ios" ? 23 / 0.9 : 17,
+ checkboxBgColor: "#039BE5",
+ checkboxSize: 20,
+ checkboxTickColor: "#fff",
+
+ // Color
+ brandPrimary: platform === "ios" ? "#e42612" : "#e42612",
+ brandInfo: "#62B1F6",
+ brandSuccess: "#5cb85c",
+ brandDanger: "#d9534f",
+ brandWarning: "#f0ad4e",
+ brandDark: "#000",
+ brandLight: "#f4f4f4",
+
+ //Container
+ containerBgColor: "#2b2b2b",
+
+ //Date Picker
+ datePickerTextColor: "#000",
+ datePickerBg: "transparent",
+
+ // Font
+ DefaultFontSize: 16,
+ fontFamily: platform === "ios" ? "System" : "Roboto",
+ fontSizeBase: 15,
+ get fontSizeH1() {
+ return this.fontSizeBase * 1.8;
+ },
+ get fontSizeH2() {
+ return this.fontSizeBase * 1.6;
+ },
+ get fontSizeH3() {
+ return this.fontSizeBase * 1.4;
+ },
+
+ // Footer
+ footerHeight: 55,
+ footerDefaultBg: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ footerPaddingBottom: 0,
+
+ // FooterTab
+ tabBarTextColor: platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ tabBarTextSize: platform === "ios" ? 14 : 11,
+ activeTab: platform === "ios" ? "#007aff" : "#fff",
+ sTabBarActiveTextColor: "#007aff",
+ tabBarActiveTextColor: platform === "ios" ? "#007aff" : "#fff",
+ tabActiveBgColor: platform === "ios" ? "#cde1f9" : "#3F51B5",
+
+ // Header
+ toolbarBtnColor: platform === "ios" ? "#e42612" : "#fff",
+ toolbarDefaultBg: platform === "ios" ? "#F8F8F8" : "#e42612",
+ toolbarHeight: platform === "ios" ? 64 : 56,
+ toolbarSearchIconSize: platform === "ios" ? 20 : 23,
+ toolbarInputColor: platform === "ios" ? "#CECDD2" : "#fff",
+ searchBarHeight: platform === "ios" ? 30 : 40,
+ searchBarInputHeight: platform === "ios" ? 30 : 50,
+ toolbarBtnTextColor: platform === "ios" ? "#e42612" : "#fff",
+ toolbarDefaultBorder: platform === "ios" ? "#a7a6ab" : "#ba1f0f",
+ iosStatusbar: platform === "ios" ? "dark-content" : "light-content",
+ get statusBarColor() {
+ return color(this.toolbarDefaultBg)
+ .darken(0.2)
+ .hex();
+ },
+ get darkenHeader() {
+ return color(this.tabBgColor)
+ .darken(0.03)
+ .hex();
+ },
+
+ // Icon
+ iconFamily: "Ionicons",
+ iconFontSize: platform === "ios" ? 30 : 28,
+ iconHeaderSize: platform === "ios" ? 33 : 24,
+
+ // InputGroup
+ inputFontSize: 17,
+ inputBorderColor: "#D9D5DC",
+ inputSuccessBorderColor: "#2b8339",
+ inputErrorBorderColor: "#ed2f2f",
+ inputHeightBase: 50,
+ get inputColor() {
+ return this.textColor;
+ },
+ get inputColorPlaceholder() {
+ return "#575757";
+ },
+
+ // Line Height
+ btnLineHeight: 19,
+ lineHeightH1: 32,
+ lineHeightH2: 27,
+ lineHeightH3: 22,
+ lineHeight: platform === "ios" ? 20 : 24,
+ listItemSelected: platform === "ios" ? "#e42612" : "#e42612",
+
+ // List
+ listBg: "transparent",
+ listBorderColor: "#c9c9c9",
+ listDividerBg: "#f4f4f4",
+ listBtnUnderlayColor: "#DDD",
+ listItemPadding: platform === "ios" ? 10 : 12,
+ listNoteColor: "#808080",
+ listNoteSize: 13,
+
+ // Progress Bar
+ defaultProgressColor: "#E4202D",
+ inverseProgressColor: "#1A191B",
+
+ // Radio Button
+ radioBtnSize: platform === "ios" ? 25 : 23,
+ radioSelectedColorAndroid: "#3F51B5",
+ radioBtnLineHeight: platform === "ios" ? 29 : 24,
+ get radioColor() {
+ return this.brandPrimary;
+ },
+
+ // Segment
+ segmentBackgroundColor: platform === "ios" ? "#F8F8F8" : "#3F51B5",
+ segmentActiveBackgroundColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentTextColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentActiveTextColor: platform === "ios" ? "#fff" : "#3F51B5",
+ segmentBorderColor: platform === "ios" ? "#007aff" : "#fff",
+ segmentBorderColorMain: platform === "ios" ? "#a7a6ab" : "#3F51B5",
+
+ // Spinner
+ defaultSpinnerColor: "#45D56E",
+ inverseSpinnerColor: "#1A191B",
+
+ // Tab
+ tabDefaultBg: platform === "ios" ? "#2b2b2b" : "#e42612",
+ topTabBarTextColor: platform === "ios" ? "#6b6b6b" : "#b3c7f9",
+ topTabBarActiveTextColor: platform === "ios" ? "#e42612" : "#fff",
+ topTabBarBorderColor: platform === "ios" ? "#a7a6ab" : "#fff",
+ topTabBarActiveBorderColor: platform === "ios" ? "#e42612" : "#fff",
+
+ // Tabs
+ tabBgColor: "#2b2b2b",
+ tabFontSize: 15,
+
+ // Text
+ textColor: "#fff",
+ inverseTextColor: "#000",
+ noteFontSize: 14,
+ get defaultTextColor() {
+ return this.textColor;
+ },
+
+ // Title
+ titleFontfamily: platform === "ios" ? "System" : "Roboto_medium",
+ titleFontSize: platform === "ios" ? 17 : 19,
+ subTitleFontSize: platform === "ios" ? 11 : 14,
+ subtitleColor: platform === "ios" ? "#8e8e93" : "#FFF",
+ titleFontColor: platform === "ios" ? "#000" : "#FFF",
+
+ // Other
+ borderRadiusBase: platform === "ios" ? 5 : 2,
+ borderWidth: 1 / PixelRatio.getPixelSizeForLayoutSize(1),
+ contentPadding: 10,
+ dropdownLinkColor: "#414142",
+ inputLineHeight: 24,
+ deviceWidth,
+ deviceHeight,
+ isIphoneX,
+ inputGroupRoundedBorderRadius: 30,
+
+ //iPhoneX SafeArea
+ Inset: {
+ portrait: {
+ topInset: 24,
+ leftInset: 0,
+ rightInset: 0,
+ bottomInset: 34
+ },
+ landscape: {
+ topInset: 0,
+ leftInset: 44,
+ rightInset: 44,
+ bottomInset: 21
+ }
+ }
+};
diff --git a/navigation/AppNavigator.js b/navigation/AppNavigator.js
new file mode 100644
index 0000000..e01d704
--- /dev/null
+++ b/navigation/AppNavigator.js
@@ -0,0 +1,9 @@
+import { createAppContainer, createSwitchNavigator } from 'react-navigation';
+
+import MainDrawerNavigator from './MainDrawerNavigator';
+
+export default createAppContainer(
+ createSwitchNavigator({
+ Main: MainDrawerNavigator,
+ })
+);
\ No newline at end of file
diff --git a/navigation/MainDrawerNavigator.js b/navigation/MainDrawerNavigator.js
new file mode 100644
index 0000000..a27059a
--- /dev/null
+++ b/navigation/MainDrawerNavigator.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import {createDrawerNavigator} from 'react-navigation';
+
+import HomeScreen from '../screens/HomeScreen';
+import PlanningScreen from '../screens/PlanningScreen';
+import ProxiwashScreen from '../screens/ProxiwashScreen';
+import ProximoScreen from '../screens/ProximoScreen';
+import SettingsScreen from '../screens/SettingsScreen';
+import AboutScreen from '../screens/AboutScreen';
+import SideMenu from "../components/SideMenu";
+
+
+export default createDrawerNavigator({
+ Home: {screen: HomeScreen},
+ Planning: {screen: PlanningScreen,},
+ Proxiwash: {screen: ProxiwashScreen,},
+ Proximo: {screen: ProximoScreen,},
+ Settings: {screen: SettingsScreen,},
+ About: {screen: AboutScreen,},
+ }, {
+ contentComponent: SideMenu,
+ }
+);
+
diff --git a/navigation/MainTabNavigator.js b/navigation/MainTabNavigator.js
new file mode 100644
index 0000000..bc422c7
--- /dev/null
+++ b/navigation/MainTabNavigator.js
@@ -0,0 +1,58 @@
+import React from 'react';
+import {Platform} from 'react-native';
+import {createStackNavigator} from 'react-navigation';
+import {createMaterialBottomTabNavigator} from "react-navigation-material-bottom-tabs";
+import TabBarIcon from '../components/TabBarIcon';
+
+import HomeScreen from '../screens/HomeScreen';
+import PlanningScreen from '../screens/PlanningScreen';
+
+const HomeStack = createStackNavigator({
+ Home: HomeScreen,
+});
+
+HomeStack.navigationOptions = {
+ tabBarLabel: 'Home',
+ tabBarIcon: ({focused}) => (
+
+ ),
+};
+
+const ProfileStack = createStackNavigator({
+ Profile: PlanningScreen,
+});
+
+ProfileStack.navigationOptions = {
+ tabBarLabel: 'Profile',
+ tabBarIcon: ({focused}) => (
+
+ ),
+};
+
+
+export default createMaterialBottomTabNavigator(
+ {
+ Home: HomeStack,
+ Profile: ProfileStack
+ }, {
+ initialRouteName: 'Home',
+ shifting: true,
+ activeColor: Colors.tabIconSelected,
+ inactiveColor: Colors.tabIconDefault,
+ barStyle: {backgroundColor: Colors.mainColor},
+ }
+);
diff --git a/package-lock.json b/package-lock.json
index 0e78474..125244f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -925,6 +925,18 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@callstack/react-theme-provider": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-1.0.7.tgz",
+ "integrity": "sha512-NTjvHadSLja5KruFXThC6rwLrewzbPSZFefgl5hTWXVZ40BsIDn3744AgregeuGTM3249K1cE9uN7UKua87pKQ==",
+ "requires": {
+ "create-react-context": "^0.2.1",
+ "deepmerge": "^2.1.1",
+ "flow-copy-source": "^1.3.0",
+ "hoist-non-react-statics": "^2.5.0",
+ "prop-types": "^15.6.0"
+ }
+ },
"@expo/vector-icons": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-10.0.2.tgz",
@@ -946,9 +958,9 @@
}
},
"@react-native-community/cli": {
- "version": "1.9.11",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.9.11.tgz",
- "integrity": "sha512-VVu/tmTTzODfW2xlqIz0pZgeELG2ppPAIgbBEKLgHCO9DMxNZIKSqmei/JqkAi0gEipqQoP6YPAemHPd43lyrA==",
+ "version": "1.9.10",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.9.10.tgz",
+ "integrity": "sha512-mYFsSljhia/xNozRRDXC5HyGRBWaDh3OickT28i6NrJSZLjp0kAH6g4c0OWk67EslgXcMi/qYpucA8W54ldu1w==",
"requires": {
"chalk": "^1.1.1",
"commander": "^2.19.0",
@@ -1030,6 +1042,62 @@
"resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-2.0.10.tgz",
"integrity": "sha512-NrIzyLe0eSbhgMnHl2QdSEhaA7yXh6p9jzMomfUa//hoTXE+xbObGDdiWWSQm2bnXnZJg8XCU3AB9qzvqcuLnA=="
},
+ "@react-navigation/core": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.4.2.tgz",
+ "integrity": "sha512-7G+iDzLSTeOUU4vVZeRZKJ+Bd7ds7ZxYNqZcB8i0KlBeQEQfR74Ounfu/p0KIEq2RiNnaE3QT7WVP3C87sebzw==",
+ "requires": {
+ "hoist-non-react-statics": "^3.3.0",
+ "path-to-regexp": "^1.7.0",
+ "query-string": "^6.4.2",
+ "react-is": "^16.8.6"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
+ "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "@react-navigation/native": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.5.0.tgz",
+ "integrity": "sha512-TmGOis++ejEXG3sqNJhCSKqB0/qLu3FQgDtO959qpqif36R/diR8SQwJqeSdofoEiK3CepdhFlTCeHdS1/+MsQ==",
+ "requires": {
+ "hoist-non-react-statics": "^3.0.1",
+ "react-native-safe-area-view": "^0.14.1",
+ "react-native-screens": "^1.0.0 || ^1.0.0-alpha"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
+ "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "react-native-safe-area-view": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.5.tgz",
+ "integrity": "sha512-1NxWK1G0gzwCOuyNV/zf4n18s6FWsiqgwkzU3P9C0Iu8AErjhstK1jUqpRwzLH8+/7hGLsrQedmn+ZbQTOrJPg==",
+ "requires": {
+ "hoist-non-react-statics": "^2.3.1"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ }
+ }
+ }
+ }
+ },
"@types/fbemitter": {
"version": "2.0.32",
"resolved": "https://registry.npmjs.org/@types/fbemitter/-/fbemitter-2.0.32.tgz",
@@ -1525,6 +1593,11 @@
"lodash": "^4.17.11"
}
},
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="
+ },
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
@@ -1709,6 +1782,11 @@
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz",
"integrity": "sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ=="
},
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+ },
"blueimp-md5": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.10.0.tgz",
@@ -1760,9 +1838,9 @@
}
},
"bser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz",
- "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
+ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
"requires": {
"node-int64": "^0.4.0"
}
@@ -1856,9 +1934,9 @@
"integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo="
},
"caniuse-lite": {
- "version": "1.0.30000977",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000977.tgz",
- "integrity": "sha512-RTXL32vdfAc2g9aoDL6vnBzbOO/3sM+T+YX4m7W9iFZnl3qIz7WYoZZpcZpALud8xq4+N56rnruX/NQy9HQu6A=="
+ "version": "1.0.30000975",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000975.tgz",
+ "integrity": "sha512-ZsXA9YWQX6ATu5MNg+Vx/cMQ+hM6vBBSqDeJs8ruk9z0ky4yIHML15MoxcFt088ST2uyjgqyUGRJButkptWf0w=="
},
"capture-exit": {
"version": "1.2.0",
@@ -1888,6 +1966,123 @@
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
},
+ "chokidar": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
+ "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "dependencies": {
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ }
+ }
+ },
+ "clamp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz",
+ "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ="
+ },
"class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -1971,6 +2166,15 @@
"object-visit": "^1.0.0"
}
},
+ "color": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz",
+ "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=",
+ "requires": {
+ "color-convert": "^1.8.2",
+ "color-string": "^1.4.0"
+ }
+ },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -1984,6 +2188,15 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
"color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
@@ -2000,9 +2213,9 @@
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
},
"compare-versions": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.0.tgz",
- "integrity": "sha512-hX+4kt2Rcwu+x1U0SsEFCn1quURjEjPEGH/cPBlpME/IidGimAdwfMU+B+xDr7et/KTR7VH2+ZqWGerv4NGs2w=="
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz",
+ "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg=="
},
"component-emitter": {
"version": "1.3.0",
@@ -2117,9 +2330,9 @@
},
"dependencies": {
"semver": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz",
- "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ=="
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
+ "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
}
}
},
@@ -2154,6 +2367,15 @@
"object-assign": "^4.1.1"
}
},
+ "create-react-context": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz",
+ "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==",
+ "requires": {
+ "fbjs": "^0.8.0",
+ "gud": "^1.0.0"
+ }
+ },
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -2218,6 +2440,11 @@
"is-obj": "^1.0.0"
}
},
+ "deepmerge": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
+ "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
+ },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -2296,9 +2523,14 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.173",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.173.tgz",
- "integrity": "sha512-weH16m8as+4Fy4XJxrn/nFXsIqB7zkxERhvj/5YX2HE4HB8MCu98Wsef4E3mu0krIT27ic0bGsr+TvqYrUn6Qg=="
+ "version": "1.3.166",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.166.tgz",
+ "integrity": "sha512-7XwtJz81H/PBnkmQ/07oVPOGTkBZs6ibZN8OqXNUrxjRPzR0Xj+MFcMmRZEXGilEg1Pm+97V8BZVI63qnBX1hQ=="
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
},
"encodeurl": {
"version": "1.0.2",
@@ -2417,9 +2649,9 @@
}
},
"expo": {
- "version": "33.0.7",
- "resolved": "https://registry.npmjs.org/expo/-/expo-33.0.7.tgz",
- "integrity": "sha512-+mDBQ/KeJnDWg8bUoiuP/OpMXwUYaypgHMDPgH7+AXw8OJuedMhJlH+7UEX2OB+UePnWPcQER411sC7m819pag==",
+ "version": "33.0.6",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-33.0.6.tgz",
+ "integrity": "sha512-BhPaEIdB+tEb5Wlp7ux+RDy7/mMPUSR6aCAVH2HlgrIpndFqgaWbm7pjRigE1Aqco0Iwcw/1G5k2spSu180GNA==",
"requires": {
"@babel/runtime": "^7.1.2",
"@expo/vector-icons": "^10.0.1",
@@ -3035,6 +3267,75 @@
"locate-path": "^2.0.0"
}
},
+ "flow-copy-source": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flow-copy-source/-/flow-copy-source-1.3.0.tgz",
+ "integrity": "sha512-F8aRmNmtB5l+RFG7LAWj6IYU22K37BrhIXXCcQyxSsYWm0pNubnhBSEk+eoyGCou3+4aI4tReOfLFtgd5wnnYQ==",
+ "requires": {
+ "chokidar": "^2.0.0",
+ "fs-extra": "^5.0.0",
+ "glob": "^7.0.0",
+ "kefir": "^3.7.3",
+ "yargs": "^11.0.0"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
+ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "yargs": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
"fontfaceobserver": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz",
@@ -3661,6 +3962,11 @@
"resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
"integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
},
+ "gud": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
+ "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
+ },
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -3750,16 +4056,31 @@
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
},
+ "html-parse-stringify2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz",
+ "integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=",
+ "requires": {
+ "void-elements": "^2.0.1"
+ }
+ },
"http-errors": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
- "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
- "inherits": "2.0.4",
+ "inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
}
},
"hyphenate-style-name": {
@@ -3767,6 +4088,19 @@
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
"integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
},
+ "i18n-js": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/i18n-js/-/i18n-js-3.3.0.tgz",
+ "integrity": "sha512-+m8jh84IIWlFwEJgwrWCkeIwIES9ilJKBOj5qx8ZTLLmlPz7bjKnCdxf254wRf6M4pkQHtgXGT9r9lGk0e9aug=="
+ },
+ "i18next": {
+ "version": "17.0.4",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-17.0.4.tgz",
+ "integrity": "sha512-+lwmv3FT8Sv/HwVPjkR6rtEFhgOqt9L/CTehzyxvL/NdkeUYbFZJfE57MsBToB6LFWg3d0sZJIVgYqCpWzUyLQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1"
+ }
+ },
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -3878,6 +4212,14 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -4048,6 +4390,11 @@
"sane": "^3.0.0"
}
},
+ "jest-react-native": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/jest-react-native/-/jest-react-native-18.0.0.tgz",
+ "integrity": "sha1-d92QnwaTJFmfInxYxhwuYhaHJro="
+ },
"jest-serializer": {
"version": "24.4.0",
"resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz",
@@ -4119,6 +4466,21 @@
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
},
+ "kefir": {
+ "version": "3.8.6",
+ "resolved": "https://registry.npmjs.org/kefir/-/kefir-3.8.6.tgz",
+ "integrity": "sha512-H/8ZTjmEEme2YL388rgy5fFlz2NM4ZImNI2rJrTsR8og454kpY3lPVv53W9lfevNELfNeYD33gMdIKHL25z7WA==",
+ "requires": {
+ "symbol-observable": "1.0.4"
+ },
+ "dependencies": {
+ "symbol-observable": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
+ "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0="
+ }
+ }
+ },
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -4255,6 +4617,14 @@
"tmpl": "1.0.x"
}
},
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -4729,9 +5099,9 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
"requires": {
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
@@ -4762,6 +5132,11 @@
}
}
},
+ "moment": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
+ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
+ },
"morgan": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
@@ -4840,6 +5215,65 @@
}
}
},
+ "native-base": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/native-base/-/native-base-2.12.1.tgz",
+ "integrity": "sha512-4DH5aKaazOwh7//URZySVxgHFnoZnkhat3aMEJYd/eWW/RBJQ/lBk/nRmDicLqq1chzq/6Ok4KmkQnVwSTt3mA==",
+ "requires": {
+ "blueimp-md5": "^2.5.0",
+ "clamp": "^1.0.1",
+ "color": "~1.0.3",
+ "fs-extra": "^2.0.0",
+ "jest-react-native": "^18.0.0",
+ "lodash": "4.17.11",
+ "native-base-shoutem-theme": "0.2.3",
+ "print-message": "^2.1.0",
+ "prop-types": "^15.5.10",
+ "react-native-drawer": "2.5.1",
+ "react-native-easy-grid": "0.2.1",
+ "react-native-keyboard-aware-scroll-view": "0.8.0",
+ "react-native-vector-icons": "6.1.0",
+ "react-timer-mixin": "^0.13.4",
+ "react-tween-state": "^0.1.5",
+ "tween-functions": "^1.0.1"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
+ "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ }
+ }
+ },
+ "native-base-shoutem-theme": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/native-base-shoutem-theme/-/native-base-shoutem-theme-0.2.3.tgz",
+ "integrity": "sha512-RitgmvLiQTD5fL5UkiaBYpVQROHlxlP6TzoJjeMUGOxHvwdSFJUnFTfDWZZSxk/YkHP+8CHjnm1XnvmGZvwXKQ==",
+ "requires": {
+ "hoist-non-react-statics": "^1.0.5",
+ "lodash": "4.17.11",
+ "prop-types": "^15.5.10"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz",
+ "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs="
+ }
+ }
+ },
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -5039,6 +5473,11 @@
"mimic-fn": "^1.0.0"
}
},
+ "opencollective-postinstall": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
+ "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw=="
+ },
"opn": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz",
@@ -5119,11 +5558,21 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
+ },
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
},
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
+ },
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -5185,6 +5634,11 @@
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.0.tgz",
"integrity": "sha512-Hkavx/nY4/plImrZPHRk2CL9vpOymZLgEbMNX1U0bjcBL7QN9wODxyx0yaMZURSQaUtSEvDrfAvxa9oPb0at9g=="
},
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+ },
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
@@ -5205,6 +5659,21 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "requires": {
+ "isarray": "0.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
+ }
+ },
"path-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
@@ -5213,6 +5682,11 @@
"pify": "^2.0.0"
}
},
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -5357,6 +5831,38 @@
"ansi-styles": "^3.2.0"
}
},
+ "print-message": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/print-message/-/print-message-2.1.0.tgz",
+ "integrity": "sha1-tViO0IsOG/d6x7y1y3gASvr5qJE=",
+ "requires": {
+ "chalk": "1.1.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+ "requires": {
+ "ansi-styles": "^2.1.0",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -5410,9 +5916,9 @@
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
"query-string": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.8.1.tgz",
- "integrity": "sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.7.0.tgz",
+ "integrity": "sha512-oQ01H1jrgDRbPq5SjtJF470S418GOrKkds+fpvAt6DQatHXl7bmkaJulHbTIM+QNGtoPpa8f5k9W3Zk50zXRPQ==",
"requires": {
"decode-uri-component": "^0.2.0",
"split-on-first": "^1.0.0",
@@ -5424,6 +5930,14 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="
},
+ "raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "requires": {
+ "performance-now": "^2.1.0"
+ }
+ },
"randomatic": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
@@ -5527,11 +6041,25 @@
"warning": "^3.0.0"
}
},
+ "react-i18next": {
+ "version": "10.11.2",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-10.11.2.tgz",
+ "integrity": "sha512-Ru+WonG9BLILDg/By7Pw0Lne2I7HVLRyhyvDtar22tNNu6de2D89zAKl2RzK2jgq7m7l+BFSnLpz4kX7ZPV+JQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "html-parse-stringify2": "2.0.1"
+ }
+ },
"react-is": {
"version": "16.8.6",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
"integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA=="
},
+ "react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
"react-native": {
"version": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
"integrity": "sha512-/qr69tLChymCyNpTvBiHpepa1ufF43cCMtUzpaQxmCwG6Kz5Z9XqyoEP1lJaJ/BNFj/Bp9+l+LIHwvrDoPBnfQ==",
@@ -5652,6 +6180,61 @@
"resolved": "https://registry.npmjs.org/react-native-branch/-/react-native-branch-2.2.5.tgz",
"integrity": "sha1-QHTdY7SXPmOX2c5Q6XtXx3pRjp0="
},
+ "react-native-drawer": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/react-native-drawer/-/react-native-drawer-2.5.1.tgz",
+ "integrity": "sha512-cxcQNbSWy5sbGi7anSVp6EDr6JarOBMY9lbFOeLFeVYbONiudoqRKbgEsSDgSw3/LFCLvUXK5zdjXCOedeytxQ==",
+ "requires": {
+ "prop-types": "^15.5.8",
+ "tween-functions": "^1.0.1"
+ }
+ },
+ "react-native-easy-grid": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-easy-grid/-/react-native-easy-grid-0.2.1.tgz",
+ "integrity": "sha512-u90U4lf5L/PUmq7HoczFKgyElmBCpb3gu21TOWL7pq4gSH2Hz0EGm1Bgu0SQacO9v6jfQbS7JfE+xtMg6MHluQ==",
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "react-native-elements": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/react-native-elements/-/react-native-elements-1.1.0.tgz",
+ "integrity": "sha512-n1eOL0kUdlH01zX7bn1p7qhYXn7kquqxYQ0oWlxoAck9t5Db/KeK5ViOsAk8seYSvAG6Pe7OxgzRFnMfFhng0Q==",
+ "requires": {
+ "color": "^3.1.0",
+ "deepmerge": "^3.1.0",
+ "hoist-non-react-statics": "^3.1.0",
+ "opencollective-postinstall": "^2.0.0",
+ "prop-types": "^15.5.8",
+ "react-native-ratings": "^6.3.0",
+ "react-native-status-bar-height": "^2.2.0"
+ },
+ "dependencies": {
+ "color": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
+ "deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
+ "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
"react-native-gesture-handler": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.2.1.tgz",
@@ -5662,16 +6245,79 @@
"prop-types": "^15.5.10"
}
},
+ "react-native-iphone-x-helper": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz",
+ "integrity": "sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ=="
+ },
+ "react-native-keyboard-aware-scroll-view": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.8.0.tgz",
+ "integrity": "sha512-gPfhgHQI/z7Cc5aeNOEmK0b250QkAeU6V+4oH8EC7mmFneEKn6MAIDjpoiwqt6bV+lFJPABXfx9MtrRmtCeJ/Q==",
+ "requires": {
+ "prop-types": "^15.6.2",
+ "react-native-iphone-x-helper": "^1.0.3"
+ }
+ },
"react-native-maps": {
"version": "0.24.2",
"resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-0.24.2.tgz",
"integrity": "sha512-1iNIDikp2dkCG+8DguaEviYZiMSYyvwqYT7pO2YTZvuFRDSc/P9jXMhTUnSh4wNDlEeQ47OJ09l0pwWVBZ7wxg=="
},
+ "react-native-paper": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-2.16.0.tgz",
+ "integrity": "sha512-dNHbVZNi9cfKr5sd/5pPGSJSo7ctnl61wLmRxWwvQ2VyEhDN+YxflvZ/vDZrnyivVWPcFS1nmiGCxABARISsuw==",
+ "requires": {
+ "@callstack/react-theme-provider": "^1.0.7",
+ "color": "^2.0.1",
+ "create-react-context": "^0.2.3",
+ "hoist-non-react-statics": "^3.1.0",
+ "react-lifecycles-compat": "^3.0.4",
+ "react-native-safe-area-view": "^0.12.0"
+ },
+ "dependencies": {
+ "color": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz",
+ "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==",
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
+ "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "react-native-ratings": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/react-native-ratings/-/react-native-ratings-6.3.1.tgz",
+ "integrity": "sha512-+WEtk4wPvnoN5YbfWcmyM4LpKOlvkrFlpQe0KrqeWBAOkN6OXOZYBtiCh97dCIb8Ovpm7goOEcTf3T1MGCi2LA==",
+ "requires": {
+ "lodash": "^4.17.4",
+ "prop-types": "^15.5.10"
+ }
+ },
"react-native-reanimated": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.0.1.tgz",
"integrity": "sha512-RENoo6/sJc3FApP7vJ1Js7WyDuTVh97bbr5aMjJyw3kqpR2/JDHyL/dQFfOvSSAc+VjitpR9/CfPPad7tLRiIA=="
},
+ "react-native-safe-area-view": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.12.0.tgz",
+ "integrity": "sha512-UrAXmBC4KNR5K2eczIDZgqceWyKsgG9gmWFerHCvoyApfei8ceBB9u/c//PWCpS5Gt8MRLTmX5jPtzdXo2yNqg==",
+ "requires": {
+ "hoist-non-react-statics": "^2.3.1"
+ }
+ },
"react-native-safe-module": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/react-native-safe-module/-/react-native-safe-module-1.2.0.tgz",
@@ -5685,11 +6331,244 @@
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.22.tgz",
"integrity": "sha512-kSyAt0AeVU6N7ZonfV6dP6iZF8B7Bce+tk3eujXhzBGsLg0VSLnU7uE9VqJF0xdQrHR91ZjGgVMieo/8df9KTA=="
},
+ "react-native-settings-page": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/react-native-settings-page/-/react-native-settings-page-2.0.6.tgz",
+ "integrity": "sha512-RSfW30idzS/5hFcVEp2T7peQVuuu97foTJp1ubj9SeQHZcbKWkIQNDeFdRnFZUlGlCi6GbInpAXtckNfXeGCBw==",
+ "requires": {
+ "react": "^16.7.0",
+ "react-native-elements": "^1.0.0",
+ "react-native-vector-icons": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "react-native-vector-icons": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.5.0.tgz",
+ "integrity": "sha512-24Y5hkNTbpwK4OQFQQhJ20vBFWltGOcunJPztjO7E/4QpF3YmpbZIWjjf07wHOAlpeqCz3gEWr5iDI0Y2zLNnA==",
+ "requires": {
+ "lodash": "^4.0.0",
+ "prop-types": "^15.6.2",
+ "yargs": "^13.2.2"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yargs": {
+ "version": "13.2.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+ "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "react-native-status-bar-height": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/react-native-status-bar-height/-/react-native-status-bar-height-2.3.1.tgz",
+ "integrity": "sha512-m9nGKYfFn6ljF1abafzF5cFaD9JCzXwj7kNE9CuF+g0TgtItH70eY2uHaCV9moENTftqd5XIS3Cx0mf4WfistA=="
+ },
"react-native-svg": {
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.4.0.tgz",
"integrity": "sha512-IVJlVbS2dAPerPr927fEi4uXzrPXzlra5ddgyJXZZ2IKA2ZygyYWFZDM+vsQs+Vj20CfL8nOWszQQV57vdQgFg=="
},
+ "react-native-tab-view": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz",
+ "integrity": "sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ==",
+ "requires": {
+ "prop-types": "^15.6.1"
+ }
+ },
+ "react-native-vector-icons": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.1.0.tgz",
+ "integrity": "sha512-1GF5I4VWgwnzBtVfAKNgEiR5ziHi5QaKL381wwApMzuiFgIJMNt5XIChuKwKoaiB86s+P5iMcYWxYCyENL96lA==",
+ "requires": {
+ "lodash": "^4.0.0",
+ "prop-types": "^15.6.2",
+ "yargs": "^8.0.2"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+ "requires": {
+ "camelcase": "^4.1.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "read-pkg-up": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^7.0.0"
+ }
+ }
+ }
+ },
"react-native-view-shot": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-2.6.0.tgz",
@@ -5743,6 +6622,74 @@
"invariant": "2.2.4"
}
},
+ "react-native-week-view": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/react-native-week-view/-/react-native-week-view-0.0.7.tgz",
+ "integrity": "sha512-A2/If7b4zIIVQklqQwyaFFhT7Ly7aVrmWwlHUD8btSKxLYEd4DXmOE7b+V9ybm4M/K69LiiahxFu0+DOTWoCXQ==",
+ "requires": {
+ "moment": "^2.19.3",
+ "prop-types": "^15.7.2"
+ }
+ },
+ "react-navigation": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-3.11.0.tgz",
+ "integrity": "sha512-wlPcDtNiIdPeYxNQ/MN4arY5Xe9EphD2QVpRuvvuPWW+BamF3AJaIy060r3Yz59DODAoWllscabat/yqnih8Tg==",
+ "requires": {
+ "@react-navigation/core": "~3.4.1",
+ "@react-navigation/native": "~3.5.0",
+ "react-navigation-drawer": "~1.2.1",
+ "react-navigation-stack": "~1.4.0",
+ "react-navigation-tabs": "~1.1.4"
+ }
+ },
+ "react-navigation-drawer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/react-navigation-drawer/-/react-navigation-drawer-1.2.1.tgz",
+ "integrity": "sha512-T2kaBjY2c4/3I6noWFnaf/c18ntNH5DsST38i+pdc2NPxn5Yi5lkK+ZZTeKuHSFD4a7G0jWY9OGf1iRkHWLMAQ==",
+ "requires": {
+ "react-native-tab-view": "^1.2.0"
+ }
+ },
+ "react-navigation-material-bottom-tabs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/react-navigation-material-bottom-tabs/-/react-navigation-material-bottom-tabs-1.0.0.tgz",
+ "integrity": "sha512-fmPOt82xYpNYWh7gDdk38ce2TDmKuGnVaC7Pd67Ss62bjZ2CwmX9kOXExThtdY039zDGIcABDq9h65c8TQeTUA==",
+ "requires": {
+ "hoist-non-react-statics": "^2.5.0",
+ "prop-types": "^15.6.0",
+ "react-navigation-tabs": "1.0.0"
+ },
+ "dependencies": {
+ "react-navigation-tabs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/react-navigation-tabs/-/react-navigation-tabs-1.0.0.tgz",
+ "integrity": "sha512-2oWPk+XfwHihgdOBhuAuzzU94NPhwdvuzseL30R3VsggunfVB4cUtNiQjRP4rVVpdGgJygQtws1eRbUsQ9cECA==",
+ "requires": {
+ "hoist-non-react-statics": "^2.5.0",
+ "prop-types": "^15.6.1",
+ "react-lifecycles-compat": "^3.0.4",
+ "react-native-tab-view": "^1.0.0"
+ }
+ }
+ }
+ },
+ "react-navigation-stack": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-1.4.0.tgz",
+ "integrity": "sha512-zEe9wCA0Ot8agarYb//0nSWYW1GM+1R0tY/nydUV0EizeJ27At0EklYVWvYEuYU6C48va6cu8OPL7QD/CcJACw=="
+ },
+ "react-navigation-tabs": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/react-navigation-tabs/-/react-navigation-tabs-1.1.4.tgz",
+ "integrity": "sha512-py2hLCRxPwXOzmY1W9XcY1rWXxdK6RGW/aXh56G9gIf8cpHNDhy/bJV4e46/JrVcse3ybFaN0liT09/DM/NdwQ==",
+ "requires": {
+ "hoist-non-react-statics": "^2.5.0",
+ "prop-types": "^15.6.1",
+ "react-lifecycles-compat": "^3.0.4",
+ "react-native-tab-view": "^1.4.1"
+ }
+ },
"react-proxy": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz",
@@ -5766,6 +6713,15 @@
"react-proxy": "^1.1.7"
}
},
+ "react-tween-state": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/react-tween-state/-/react-tween-state-0.1.5.tgz",
+ "integrity": "sha1-6YsGZVHvuTy5LdG+FJlcLj3q4zk=",
+ "requires": {
+ "raf": "^3.1.0",
+ "tween-functions": "^1.0.1"
+ }
+ },
"read-pkg": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
@@ -5799,6 +6755,279 @@
"util-deprecate": "~1.0.1"
}
},
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
"recompose": {
"version": "0.26.0",
"resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz",
@@ -5927,9 +7156,9 @@
"integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc="
},
"resolve": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
- "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
+ "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"requires": {
"path-parse": "^1.0.6"
}
@@ -6383,9 +7612,9 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@@ -6457,6 +7686,21 @@
"plist": "^3.0.1"
}
},
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ }
+ }
+ },
"slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
@@ -6876,6 +8120,11 @@
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
},
+ "tween-functions": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz",
+ "integrity": "sha1-GuOlDnxguz3vd06scHrLynO7w/8="
+ },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -6982,14 +8231,35 @@
"integrity": "sha512-JvR04JZHqt+EJiGL/9KWsaTpTJQ53qqNMmZAC+MX6NUgnz1bWiUw9eY9MAAIaQbmorCwKyCqfpX9twTUM8z1yA=="
},
"union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
"is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
}
},
"universalify": {
@@ -7043,6 +8313,11 @@
}
}
},
+ "upath": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q=="
+ },
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
@@ -7096,6 +8371,11 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
+ "void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
+ },
"walker": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
diff --git a/package.json b/package.json
index 0a103e8..51f0766 100644
--- a/package.json
+++ b/package.json
@@ -8,11 +8,24 @@
"eject": "expo eject"
},
"dependencies": {
+ "@expo/vector-icons": "latest",
"expo": "^33.0.0",
+ "expo-font": "^5.0.1",
+ "expo-localization": "^5.0.1",
+ "i18n-js": "^3.3.0",
+ "i18next": "latest",
+ "native-base": "latest",
"react": "16.8.3",
"react-dom": "^16.8.6",
+ "react-i18next": "latest",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
- "react-native-web": "^0.11.4"
+ "react-native-paper": "latest",
+ "react-native-settings-page": "latest",
+ "react-native-status-bar-height": "latest",
+ "react-native-web": "^0.11.4",
+ "react-native-week-view": "latest",
+ "react-navigation": "latest",
+ "react-navigation-material-bottom-tabs": "latest"
},
"devDependencies": {
"babel-preset-expo": "^5.1.1"
diff --git a/screens/AboutScreen.js b/screens/AboutScreen.js
new file mode 100644
index 0000000..dbda873
--- /dev/null
+++ b/screens/AboutScreen.js
@@ -0,0 +1,226 @@
+import React from 'react';
+import {Platform, StyleSheet, Linking, Alert} from 'react-native';
+import {Container, Content, Text, Card, CardItem, Body, Icon, Left, Right, Thumbnail, H1} from 'native-base';
+import CustomHeader from "../components/CustomHeader";
+import i18n from "i18n-js";
+
+const version = 'a0.0.1';
+const links = {
+ appstore: 'https://qwant.com',
+ playstore: 'https://qwant.com',
+ gitlab: 'https://qwant.com',
+ bugs: 'https://qwant.com',
+ changelog: 'https://qwant.com',
+ license: 'https://qwant.com',
+ mail: "mailto:arnaud.vergnet@netc.fr?subject=Application Amicale INSA Toulouse&body=",
+ linkedin: 'https://www.linkedin.com/in/arnaud-vergnet-434ba5179/',
+ facebook: 'https://www.facebook.com/arnaud.vergnet',
+ react: 'https://facebook.github.io/react-native/',
+};
+
+
+export default class AboutScreen extends React.Component {
+
+ openWebLink(link) {
+ Linking.openURL(link).catch((err) => console.error('Error opening link', err));
+ }
+
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+
+
+
+
+
+ Amicale INSA Toulouse
+
+ v.{version}
+
+
+
+
+ this.openWebLink(Platform.OS === "ios" ? links.appstore : links.playstore)}>
+
+
+ {Platform.OS === "ios" ? i18n.t('aboutScreen.appstore') : i18n.t('aboutScreen.playstore')}
+
+
+
+
+
+ this.openWebLink(links.gitlab)}>
+
+
+ Gitlab
+
+
+
+
+
+ this.openWebLink(links.bugs)}>
+
+
+ {i18n.t('aboutScreen.bugs')}
+
+
+
+
+
+ this.openWebLink(links.changelog)}>
+
+
+
+ {i18n.t('aboutScreen.changelog')}
+
+
+
+
+
+
+ this.openWebLink(links.license)}>
+
+
+
+ {i18n.t('aboutScreen.license')}
+
+
+
+
+
+
+
+
+
+
+ {i18n.t('aboutScreen.author')}
+
+ Alert.alert('Coucou', 'Whaou')}>
+
+
+ Arnaud VERGNET
+
+
+ this.openWebLink(links.mail)}>
+
+
+
+ {i18n.t('aboutScreen.mail')}
+
+
+
+
+
+
+ this.openWebLink(links.linkedin)}>
+
+
+
+ Linkedin
+
+
+
+
+
+
+ this.openWebLink(links.facebook)}>
+
+
+
+ Facebook
+
+
+
+
+
+
+
+
+
+
+ {i18n.t('aboutScreen.technologies')}
+
+ this.openWebLink(links.react)}>
+
+
+
+ {i18n.t('aboutScreen.reactNative')}
+
+
+
+
+
+
+ console.log('libs')}>
+
+
+
+ {i18n.t('aboutScreen.libs')}
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+});
diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js
new file mode 100644
index 0000000..77769b7
--- /dev/null
+++ b/screens/HomeScreen.js
@@ -0,0 +1,28 @@
+import React from 'react';
+import {Container, Content, Text, Button, Icon} from 'native-base';
+import CustomHeader from '../components/CustomHeader';
+import i18n from "i18n-js";
+
+import { Notifications } from 'expo';
+
+
+export default class HomeScreen extends React.Component {
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/screens/PlanningScreen.js b/screens/PlanningScreen.js
new file mode 100644
index 0000000..c74290a
--- /dev/null
+++ b/screens/PlanningScreen.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import { StyleSheet, View } from 'react-native';
+import {Container, Text} from 'native-base';
+import CustomHeader from "../components/CustomHeader";
+import i18n from "i18n-js";
+
+export default class PlanningScreen extends React.Component {
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+ );
+ }
+}
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+});
diff --git a/screens/ProximoScreen.js b/screens/ProximoScreen.js
new file mode 100644
index 0000000..d928e07
--- /dev/null
+++ b/screens/ProximoScreen.js
@@ -0,0 +1,113 @@
+import React from 'react';
+import {StyleSheet, View, Alert, ScrollView, RefreshControl, FlatList} from 'react-native';
+import {Container, Text, Content, ListItem, Left, Thumbnail, Right, Badge} from 'native-base';
+import CustomHeader from "../components/CustomHeader";
+
+const DATA_URL = "https://etud.insa-toulouse.fr/~vergnet/appli-amicale/data.txt";
+const IMG_URL = "https://etud.insa-toulouse.fr/~vergnet/appli-amicale/img/";
+
+const defaultImage = require('../assets/image-missing.png');
+
+export default class ProximoScreen extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ refreshing: false,
+ data: undefined
+ };
+ }
+
+ async readData() {
+ try {
+ let response = await fetch(
+ 'https://etud.insa-toulouse.fr/~vergnet/appli-amicale/data.txt',
+ );
+ let responseText = await response.text();
+ let responseArray = responseText.split('\n');
+ let responseFinal = [];
+ for (let i = 0; i < responseArray.length; i++) {
+ if (responseArray[i] !== "") {
+ let itemArray = responseArray[i]
+ .replace('[', '')
+ .replace(']', '')
+ .split(',')[1]
+ .split(';');
+ let object = {
+ name: itemArray[0],
+ price: itemArray[1],
+ image: defaultImage
+ };
+ responseFinal.push(object);
+ }
+ }
+ this.setState({data: responseFinal});
+ } catch (error) {
+ console.error(error);
+ return undefined;
+ }
+ }
+
+ componentDidMount() {
+ this._onRefresh();
+ }
+
+ _onRefresh = () => {
+ this.setState({refreshing: true});
+ this.readData().then(() => {
+ this.setState({refreshing: false});
+ // console.log(this.state.data);
+ });
+ };
+
+
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+ item.name}
+ refreshControl={
+
+ }
+ style={{minHeight: 300, width: '100%'}}
+ renderItem={({item}) =>
+ {
+ console.log(IMG_URL + item.name + '.jpg')
+ }}
+ >
+
+
+
+ {item.name}
+
+
+
+
+ {item.price}€
+
+
+ }
+ />
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+});
diff --git a/screens/ProxiwashScreen.js b/screens/ProxiwashScreen.js
new file mode 100644
index 0000000..f0b92a5
--- /dev/null
+++ b/screens/ProxiwashScreen.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import {StyleSheet, View} from 'react-native';
+import {Container, Text} from 'native-base';
+import CustomHeader from "../components/CustomHeader";
+
+export default class ProxiwashScreen extends React.Component {
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+});
diff --git a/screens/SettingsScreen.js b/screens/SettingsScreen.js
new file mode 100644
index 0000000..3ea5ced
--- /dev/null
+++ b/screens/SettingsScreen.js
@@ -0,0 +1,56 @@
+import React from 'react';
+import {Alert} from 'react-native'
+import {Badge, Container, Content, Icon, Left, ListItem, Right, Text, List, CheckBox} from "native-base";
+import CustomHeader from "../components/CustomHeader";
+import ThemeManager from '../utils/ThemeManager';
+import i18n from "i18n-js";
+
+
+const nightModeKey = 'nightMode';
+
+export default class SettingsScreen extends React.Component {
+ state = {
+ nightMode: ThemeManager.getInstance().getNightMode(),
+ };
+
+ toggleNightMode() {
+ this.setState({nightMode: !this.state.nightMode});
+ ThemeManager.getInstance().setNightmode(!this.state.nightMode);
+ Alert.alert(i18n.t('settingsScreen.nightMode'), i18n.t('settingsScreen.restart'));
+
+ }
+
+ render() {
+ const nav = this.props.navigation;
+ return (
+
+
+
+
+ this.toggleNightMode()}
+ >
+
+
+
+ {i18n.t('settingsScreen.nightMode')}
+
+
+
+ this.toggleNightMode()}/>
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/translations/en.json b/translations/en.json
new file mode 100644
index 0000000..71214ad
--- /dev/null
+++ b/translations/en.json
@@ -0,0 +1,24 @@
+{
+ "screens": {
+ "home": "Home",
+ "planning": "Planning",
+ "settings": "Settings",
+ "about": "About"
+ },
+ "settingsScreen": {
+ "nightMode": "Night Mode",
+ "restart": "Restart the app to apply changes"
+ },
+ "aboutScreen": {
+ "appstore": "See on the Appstore",
+ "playstore": "See on the Playstore",
+ "bugs": "Report Bugs",
+ "changelog": "Changelog",
+ "license": "License",
+ "author": "Author",
+ "mail": "Send an email",
+ "technologies": "Technologies",
+ "reactNative": "Made with React Native",
+ "libs": "Libraries used"
+ },
+}
diff --git a/translations/fr.json b/translations/fr.json
new file mode 100644
index 0000000..1cb581d
--- /dev/null
+++ b/translations/fr.json
@@ -0,0 +1,24 @@
+{
+ "screens": {
+ "home": "Accueil",
+ "planning": "Planning",
+ "settings": "Paramètres",
+ "about": "À Propos"
+ },
+ "settingsScreen": {
+ "nightMode": "Mode Nuit",
+ "restart": "Redémarrez l'application pour appliquer les changements"
+ },
+ "aboutScreen": {
+ "appstore": "Voir sur l'Appstore",
+ "playstore": "Voir sur le Playstore",
+ "bugs": "Rapporter des Bugs",
+ "changelog": "Historique des modifications",
+ "license": "Licence",
+ "author": "Auteur",
+ "mail": "Envoyer un mail",
+ "technologies": "Technologies",
+ "reactNative": "Créé avec React Native",
+ "libs": "Librairies utilisées"
+ }
+}
diff --git a/utils/LocaleManager.js b/utils/LocaleManager.js
new file mode 100644
index 0000000..36eb711
--- /dev/null
+++ b/utils/LocaleManager.js
@@ -0,0 +1,23 @@
+import i18n from 'i18n-js';
+import * as Localization from 'expo-localization';
+
+import en from '../translations/en';
+import fr from '../translations/fr';
+
+export default class LocaleManager {
+
+ static instance = null;
+
+ static getInstance() {
+ if (LocaleManager.instance == null) {
+ LocaleManager.instance = new LocaleManager();
+ }
+ return this.instance;
+ }
+
+ initTranslations() {
+ i18n.fallbacks = true;
+ i18n.translations = {fr, en};
+ i18n.locale = Localization.locale;
+ }
+}
diff --git a/utils/ThemeManager.js b/utils/ThemeManager.js
new file mode 100644
index 0000000..07b5319
--- /dev/null
+++ b/utils/ThemeManager.js
@@ -0,0 +1,57 @@
+import {DefaultTheme} from 'react-native-paper';
+import {AsyncStorage} from 'react-native'
+import platform from '../native-base-theme/variables/platform';
+import platformDark from '../native-base-theme/variables/platformDark';
+import getTheme from '../native-base-theme/components';
+
+const nightModeKey = 'nightMode';
+
+export default class ThemeManager {
+
+ static instance = null;
+
+ constructor() {
+ this.nightMode = false;
+ this.updateThemeCallback = undefined;
+ }
+
+ static getInstance() {
+ if (ThemeManager.instance == null) {
+ ThemeManager.instance = new ThemeManager();
+ }
+ return this.instance;
+ }
+
+ setUpdateThemeCallback(callback) {
+ this.updateThemeCallback = callback;
+ console.log(this.updateThemeCallback);
+
+ }
+
+ async getDataFromPreferences() {
+ let result = await AsyncStorage.getItem(nightModeKey);
+
+ if (result === '1')
+ this.nightMode = true;
+ console.log('nightmode: ' + this.nightMode);
+ }
+
+ setNightmode(isNightMode) {
+ this.nightMode = isNightMode;
+ AsyncStorage.setItem(nightModeKey, isNightMode ? '1' : '0');
+ if (this.updateThemeCallback !== undefined)
+ this.updateThemeCallback();
+ }
+
+ getNightMode() {
+ return this.nightMode;
+ }
+
+ getCurrentTheme() {
+ if (this.nightMode)
+ return getTheme(platformDark);
+ else
+ return getTheme(platform);
+ }
+
+};