From dd2cb38c583f207fe79a272a9b39471284ee9635 Mon Sep 17 00:00:00 2001 From: keplyx Date: Tue, 25 Jun 2019 22:20:24 +0200 Subject: [PATCH] Added first application draft --- App.js | 67 +- assets/amicale.png | Bin 0 -> 86980 bytes assets/drawer-cover.png | Bin 0 -> 107929 bytes assets/icon.png | Bin 1091 -> 12504 bytes assets/image-missing.png | Bin 0 -> 732 bytes assets/splash.png | Bin 7178 -> 77115 bytes components/CustomHeader.js | 33 + components/SideMenu.js | 146 ++ components/TabBarIcon.js | 16 + native-base-theme/components/Badge.js | 38 + native-base-theme/components/Body.js | 13 + native-base-theme/components/Button.js | 396 +++++ native-base-theme/components/Card.js | 37 + native-base-theme/components/CardItem.js | 196 +++ native-base-theme/components/CheckBox.js | 38 + native-base-theme/components/Container.js | 16 + native-base-theme/components/Content.js | 16 + native-base-theme/components/Fab.js | 29 + native-base-theme/components/Footer.js | 118 ++ native-base-theme/components/FooterTab.js | 79 + native-base-theme/components/Form.js | 90 ++ native-base-theme/components/H1.js | 13 + native-base-theme/components/H2.js | 13 + native-base-theme/components/H3.js | 13 + native-base-theme/components/Header.js | 394 +++++ native-base-theme/components/Icon.js | 12 + native-base-theme/components/Input.js | 19 + native-base-theme/components/InputGroup.js | 132 ++ native-base-theme/components/Item.js | 240 +++ native-base-theme/components/Label.js | 14 + native-base-theme/components/Left.js | 13 + native-base-theme/components/ListItem.js | 444 ++++++ .../components/Picker.android.js | 16 + native-base-theme/components/Picker.ios.js | 9 + native-base-theme/components/Picker.js | 16 + native-base-theme/components/Radio.js | 28 + native-base-theme/components/Right.js | 16 + native-base-theme/components/Segment.js | 56 + native-base-theme/components/Separator.js | 49 + native-base-theme/components/Spinner.js | 11 + native-base-theme/components/Subtitle.js | 18 + native-base-theme/components/SwipeRow.js | 48 + native-base-theme/components/Switch.js | 11 + native-base-theme/components/Tab.js | 12 + native-base-theme/components/TabBar.js | 57 + native-base-theme/components/TabContainer.js | 26 + native-base-theme/components/TabHeading.js | 39 + native-base-theme/components/Text.js | 17 + native-base-theme/components/Textarea.js | 25 + native-base-theme/components/Thumbnail.js | 42 + native-base-theme/components/Title.js | 20 + native-base-theme/components/Toast.js | 40 + native-base-theme/components/View.js | 13 + native-base-theme/components/index.js | 242 +++ native-base-theme/variables/commonColor.js | 283 ++++ native-base-theme/variables/material.js | 283 ++++ native-base-theme/variables/platform.js | 283 ++++ native-base-theme/variables/platformDark.js | 283 ++++ navigation/AppNavigator.js | 9 + navigation/MainDrawerNavigator.js | 24 + navigation/MainTabNavigator.js | 58 + package-lock.json | 1362 ++++++++++++++++- package.json | 15 +- screens/AboutScreen.js | 226 +++ screens/HomeScreen.js | 28 + screens/PlanningScreen.js | 24 + screens/ProximoScreen.js | 113 ++ screens/ProxiwashScreen.js | 24 + screens/SettingsScreen.js | 56 + translations/en.json | 24 + translations/fr.json | 24 + utils/LocaleManager.js | 23 + utils/ThemeManager.js | 57 + 73 files changed, 6587 insertions(+), 58 deletions(-) create mode 100644 assets/amicale.png create mode 100644 assets/drawer-cover.png create mode 100644 assets/image-missing.png create mode 100644 components/CustomHeader.js create mode 100644 components/SideMenu.js create mode 100644 components/TabBarIcon.js create mode 100644 native-base-theme/components/Badge.js create mode 100644 native-base-theme/components/Body.js create mode 100644 native-base-theme/components/Button.js create mode 100644 native-base-theme/components/Card.js create mode 100644 native-base-theme/components/CardItem.js create mode 100644 native-base-theme/components/CheckBox.js create mode 100644 native-base-theme/components/Container.js create mode 100644 native-base-theme/components/Content.js create mode 100644 native-base-theme/components/Fab.js create mode 100644 native-base-theme/components/Footer.js create mode 100644 native-base-theme/components/FooterTab.js create mode 100644 native-base-theme/components/Form.js create mode 100644 native-base-theme/components/H1.js create mode 100644 native-base-theme/components/H2.js create mode 100644 native-base-theme/components/H3.js create mode 100644 native-base-theme/components/Header.js create mode 100644 native-base-theme/components/Icon.js create mode 100644 native-base-theme/components/Input.js create mode 100644 native-base-theme/components/InputGroup.js create mode 100644 native-base-theme/components/Item.js create mode 100644 native-base-theme/components/Label.js create mode 100644 native-base-theme/components/Left.js create mode 100644 native-base-theme/components/ListItem.js create mode 100644 native-base-theme/components/Picker.android.js create mode 100644 native-base-theme/components/Picker.ios.js create mode 100644 native-base-theme/components/Picker.js create mode 100644 native-base-theme/components/Radio.js create mode 100644 native-base-theme/components/Right.js create mode 100644 native-base-theme/components/Segment.js create mode 100644 native-base-theme/components/Separator.js create mode 100644 native-base-theme/components/Spinner.js create mode 100644 native-base-theme/components/Subtitle.js create mode 100644 native-base-theme/components/SwipeRow.js create mode 100644 native-base-theme/components/Switch.js create mode 100644 native-base-theme/components/Tab.js create mode 100644 native-base-theme/components/TabBar.js create mode 100644 native-base-theme/components/TabContainer.js create mode 100644 native-base-theme/components/TabHeading.js create mode 100644 native-base-theme/components/Text.js create mode 100644 native-base-theme/components/Textarea.js create mode 100644 native-base-theme/components/Thumbnail.js create mode 100644 native-base-theme/components/Title.js create mode 100644 native-base-theme/components/Toast.js create mode 100644 native-base-theme/components/View.js create mode 100644 native-base-theme/components/index.js create mode 100644 native-base-theme/variables/commonColor.js create mode 100644 native-base-theme/variables/material.js create mode 100644 native-base-theme/variables/platform.js create mode 100644 native-base-theme/variables/platformDark.js create mode 100644 navigation/AppNavigator.js create mode 100644 navigation/MainDrawerNavigator.js create mode 100644 navigation/MainTabNavigator.js create mode 100644 screens/AboutScreen.js create mode 100644 screens/HomeScreen.js create mode 100644 screens/PlanningScreen.js create mode 100644 screens/ProximoScreen.js create mode 100644 screens/ProxiwashScreen.js create mode 100644 screens/SettingsScreen.js create mode 100644 translations/en.json create mode 100644 translations/fr.json create mode 100644 utils/LocaleManager.js create mode 100644 utils/ThemeManager.js 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 0000000000000000000000000000000000000000..c1cdd1b8f2c1224282082d4958377eb2846db4fe GIT binary patch literal 86980 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 literal 0 HcmV?d00001 diff --git a/assets/drawer-cover.png b/assets/drawer-cover.png new file mode 100644 index 0000000000000000000000000000000000000000..895f4867ffc06f76c61678d95461684294cb995a GIT binary patch literal 107929 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 z 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 !P`b4doh5s9y;=K`CNYf=FRWW#*$5wqsS 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 S^FsmdfQo{;e5I^;(EkJ7vZwa| literal 1091 zcmeAS@N?(olHy`uVBq!ia0vp^2SAtuNHCOdH@*#|SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`(tK45g7x8Un`6l7?{01T^vIyZoR#GK3gVL=J?0&pWoyp31{nEG!eQT;pP2x zLc{(HQI{jTSx^37Vg7MR$dc9o?~O~@GIbqurK&T$H}3M?G~4If$AmJWBhF=Ff6ge+ zzn+wS~|_bt@( z@mrhPUk}b5eOXqzC`;3P`KlRrU%mXhgl+C@t6h5|WqFvkRcX$fwrAO4YtEJ1x0VYC zIqaX^aPH~Oa5eR=U*Z4wr|h+tpErw%zsW6WO{MKtn#F-Z}JtP=GK?rm?qf`YxRPu)e~6L5HL5p$w-pf7%s} zO{;3TxFzYtFF7v7OJV$mU1k%@8qV2%RXKc{)oC`P2relKJH-25|qJ@3A6XDVlvzx$D!@aM6x!`H%J zM=sqwVENU%+N1b!%VzKT^ZUQcHaxeF`tx$>mhuh%KQ5Zsf9U1A=*!K`i>m5=)n3Z8 z|N48C__u&0o{e7*HVW4>+W!2(zE?lE5SY_cOI#yLQW8s2t&)pUffR$0fuW_Yfw8Wk yNr<6^m63&&iG{X-k(GhL))VnjC>nC}Q!>*kacej-_4zZP1_n=8KbLh*2~7Y=cHpl7 diff --git a/assets/image-missing.png b/assets/image-missing.png new file mode 100644 index 0000000000000000000000000000000000000000..02527663d1c4e9a5aa83b5d515dad5cc7819d6eb GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRh7^U~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+YxJElQ$-)+;PhR``h>>9WWY?Fvx5!nM|FM$9iolT44G7#Y^a{&|&*0KU|AW zKDou9eB4GWK+&@9gZ+=YYa=`ScX&Qzx$rURw!E@KhIq!6oZr81Y?D@Zcp$msQq(^$ z*%|*-_FlWR$lc++SwZ35OHXVc6tPQGTvBx|TEgI4zmQ?i{EOyK8~#NvsJ{Ak?auzo z>bP0l+XkKYOVXe literal 0 HcmV?d00001 diff --git a/assets/splash.png b/assets/splash.png index 4f9ade699a4dc43aaf3c97ad983115cccd0e0640..9cb8c72a51a75b78c068d3d77252026d7f4e1c75 100644 GIT binary patch literal 77115 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 literal 7178 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 Fe*iU3xyt|m 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); + } + +};