@eohjsc/react-native-smart-city 0.2.87 → 0.2.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/assets/images/Common/Calendar.svg +3 -0
  2. package/assets/images/Common/SmartPhone.svg +3 -0
  3. package/assets/images/Hanet/CaptureFaceID.svg +25 -0
  4. package/assets/images/Hanet/FaceFrame.svg +6 -0
  5. package/package.json +3 -3
  6. package/src/Images/SmartIr/Remote.svg +15 -0
  7. package/src/Images/SmartIr/SmartIr.svg +4 -0
  8. package/src/Images/SmartIr/Union.svg +9 -0
  9. package/src/Images/SmartIr/index.js +4 -1
  10. package/src/commons/ActionGroup/ColorPickerTemplate.js +51 -0
  11. package/src/commons/ActionGroup/ColorPickerTemplateStyles.js +17 -0
  12. package/src/commons/ActionGroup/SliderRangeTemplate.js +64 -0
  13. package/src/commons/ActionGroup/{LightActionTemplateStyles.js → SliderRangeTemplateStyles.js} +0 -8
  14. package/src/commons/ActionGroup/SmartTiviActionTemplate/SmartTiviActionTemplate.js +47 -68
  15. package/src/commons/ActionGroup/index.js +6 -3
  16. package/src/commons/BottomSheet/index.js +2 -1
  17. package/src/commons/Device/Hanet/ItemHanetDevice.js +109 -0
  18. package/src/commons/Device/HistoryChart.js +2 -2
  19. package/src/commons/Device/HorizontalBarChart.js +7 -0
  20. package/src/commons/Device/ItemDevice.js +18 -15
  21. package/src/commons/Device/LinearChart.js +11 -1
  22. package/src/commons/SubUnit/Favorites/index.js +2 -2
  23. package/src/commons/SubUnit/ShortDetail.js +39 -20
  24. package/src/configs/API.js +22 -0
  25. package/src/configs/Constants.js +37 -0
  26. package/src/configs/SCConfig.js +1 -1
  27. package/src/context/actionType.ts +4 -0
  28. package/src/context/mockStore.ts +2 -0
  29. package/src/context/reducer.ts +20 -0
  30. package/src/iot/RemoteControl/Bluetooth.js +0 -19
  31. package/src/iot/RemoteControl/index.js +0 -1
  32. package/src/navigations/HanetCameraStack.js +41 -0
  33. package/src/navigations/UnitStack.js +34 -1
  34. package/src/screens/ActivityLog/hooks/index.js +1 -1
  35. package/src/screens/AddNewGateway/PlugAndPlay/ConnectWifiWarning.js +51 -66
  36. package/src/screens/AddNewGateway/PlugAndPlay/GatewayWifiList.js +68 -54
  37. package/src/screens/AddNewGateway/PlugAndPlay/__test__/ConnectWifiWarning.test.js +7 -0
  38. package/src/screens/Device/__test__/detail.test.js +0 -10
  39. package/src/screens/Device/detail.js +70 -29
  40. package/src/screens/Device/hooks/useDisconnectedDevice.js +16 -20
  41. package/src/screens/HanetCamera/CaptureFaceID.js +210 -0
  42. package/src/screens/HanetCamera/Detail.js +252 -0
  43. package/src/screens/HanetCamera/ManageAccess.js +173 -0
  44. package/src/screens/HanetCamera/MemberInfo.js +208 -0
  45. package/src/screens/HanetCamera/__test__/CaptureFaceID.test.js +133 -0
  46. package/src/screens/HanetCamera/__test__/Detail.test.js +185 -0
  47. package/src/screens/HanetCamera/__test__/ManageAccess.test.js +152 -0
  48. package/src/screens/HanetCamera/__test__/MemberInfo.test.js +178 -0
  49. package/src/screens/HanetCamera/components/CheckinHeader.js +37 -0
  50. package/src/screens/HanetCamera/hooks/__test__/useHanetCheckinData.test.js +151 -0
  51. package/src/screens/HanetCamera/hooks/__test__/useHanetPlaceMembers.test.js +71 -0
  52. package/src/screens/HanetCamera/hooks/index.js +5 -0
  53. package/src/screens/HanetCamera/hooks/useHanetCheckinData.js +116 -0
  54. package/src/screens/HanetCamera/hooks/useHanetPlaceMembers.js +86 -0
  55. package/src/screens/HanetCamera/hooks/useStateAlertAction.js +62 -0
  56. package/src/screens/HanetCamera/styles/captureFaceIDStyles.js +50 -0
  57. package/src/screens/HanetCamera/styles/checkinHeaderStyles.js +24 -0
  58. package/src/screens/HanetCamera/styles/detailStyles.js +107 -0
  59. package/src/screens/HanetCamera/styles/manageAccessStyles.js +49 -0
  60. package/src/screens/HanetCamera/styles/memberInfoStyles.js +73 -0
  61. package/src/screens/HanetCamera/utils/Monitor.js +52 -0
  62. package/src/screens/SmartIr/__test__/ButtonsBottom.test.js +31 -0
  63. package/src/screens/SmartIr/__test__/GroupButtonByType.test.js +35 -9
  64. package/src/screens/SmartIr/__test__/SelectBrand.test.js +0 -9
  65. package/src/screens/SmartIr/__test__/SelectDeviceType.test.js +1 -8
  66. package/src/screens/SmartIr/components/GroupButtonByType/ButtonsBottom.js +45 -0
  67. package/src/screens/SmartIr/components/GroupButtonByType/ButtonsBottomStyles.js +31 -0
  68. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByType.js +156 -34
  69. package/src/screens/SmartIr/components/GroupButtonByType/GroupButtonByTypeStyles.js +52 -15
  70. package/src/screens/Unit/Detail.js +2 -10
  71. package/src/screens/Unit/__test__/Detail.test.js +0 -10
  72. package/src/utils/I18n/translations/en.json +28 -1
  73. package/src/utils/I18n/translations/vi.json +27 -0
  74. package/src/utils/Route/index.js +5 -0
  75. package/src/commons/ActionGroup/LightActionTemplate.js +0 -103
  76. package/src/commons/ActionGroup/__test__/LightActionTemplate.test.js +0 -59
@@ -0,0 +1,50 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: Colors.White,
8
+ },
9
+ center: {
10
+ flex: 1,
11
+ alignItems: 'center',
12
+ justifyContent: 'center',
13
+ },
14
+ textDes: {
15
+ marginTop: 30,
16
+ fontSize: 18,
17
+ },
18
+ wrapCamera: {
19
+ flex: 1,
20
+ },
21
+ camera: {
22
+ height: '90%',
23
+ width: '100%',
24
+ alignItems: 'center',
25
+ justifyContent: 'flex-end',
26
+ },
27
+ maskOutter: {
28
+ position: 'absolute',
29
+ alignSelf: 'center',
30
+ top: '12%',
31
+ },
32
+ wrapBottom: {
33
+ paddingBottom: 24,
34
+ paddingTop: 30,
35
+ justifyContent: 'space-between',
36
+ backgroundColor: Colors.White,
37
+ },
38
+ bottomButton: {
39
+ padding: 12,
40
+ backgroundColor: Colors.Primary,
41
+ borderRadius: 50,
42
+ alignItems: 'center',
43
+ justifyContent: 'center',
44
+ marginHorizontal: 16,
45
+ },
46
+ bottomButton2: {
47
+ backgroundColor: Colors.White,
48
+ marginTop: 8,
49
+ },
50
+ });
@@ -0,0 +1,24 @@
1
+ import { StyleSheet } from 'react-native';
2
+
3
+ export default StyleSheet.create({
4
+ wrap: {
5
+ flexDirection: 'row',
6
+ alignItems: 'center',
7
+ justifyContent: 'space-between',
8
+ },
9
+ row: {
10
+ flexDirection: 'row',
11
+ alignItems: 'center',
12
+ },
13
+ arrowRight: {
14
+ transform: [{ rotate: '180deg' }],
15
+ },
16
+ wrapDate: {
17
+ flexDirection: 'row',
18
+ alignItems: 'center',
19
+ marginHorizontal: 24,
20
+ },
21
+ marginRight10: {
22
+ marginRight: 10,
23
+ },
24
+ });
@@ -0,0 +1,107 @@
1
+ import { StyleSheet, Platform } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: Colors.White,
8
+ },
9
+ contentContainerStyle: {
10
+ paddingBottom: 60,
11
+ },
12
+ headerRight: {
13
+ flexDirection: 'row',
14
+ },
15
+ button: {
16
+ marginRight: 10,
17
+ justifyContent: 'center',
18
+ alignItems: 'center',
19
+ },
20
+ menuAction: {
21
+ borderRadius: 10,
22
+ borderBottomRightRadius: 10,
23
+ borderBottomLeftRadius: 10,
24
+ marginTop: Platform.select({
25
+ ios: 0,
26
+ android: -25,
27
+ }),
28
+ },
29
+ wrapTop: {
30
+ padding: 16,
31
+ backgroundColor: Colors.White,
32
+ shadowColor: Colors.Shadow,
33
+ shadowOffset: {
34
+ width: 0,
35
+ height: 2,
36
+ },
37
+ shadowOpacity: 0.1,
38
+ shadowRadius: 4,
39
+ elevation: 3,
40
+ },
41
+ row: {
42
+ flexDirection: 'row',
43
+ alignItems: 'center',
44
+ justifyContent: 'space-between',
45
+ },
46
+ row2: {
47
+ flexDirection: 'row',
48
+ alignItems: 'center',
49
+ },
50
+ marginTop16: {
51
+ marginTop: 16,
52
+ },
53
+ marginRight10: {
54
+ marginRight: 10,
55
+ },
56
+ wrapDate: {
57
+ flexDirection: 'row',
58
+ alignItems: 'center',
59
+ marginHorizontal: 24,
60
+ },
61
+ arrowRight: {
62
+ transform: [{ rotate: '180deg' }],
63
+ },
64
+ wrapItem: {
65
+ flexDirection: 'row',
66
+ alignItems: 'center',
67
+ paddingHorizontal: 16,
68
+ height: 70,
69
+ },
70
+ wrapItemInfo: {
71
+ flex: 1,
72
+ },
73
+ avatar: {
74
+ height: 36,
75
+ width: 36,
76
+ borderRadius: 18,
77
+ marginVertical: 24,
78
+ },
79
+ verticalLine: {
80
+ height: '100%',
81
+ width: 1,
82
+ backgroundColor: Colors.Gray4,
83
+ marginHorizontal: 16,
84
+ justifyContent: 'center',
85
+ alignItems: 'center',
86
+ },
87
+ centerCircle: {
88
+ height: 12,
89
+ width: 12,
90
+ borderRadius: 5,
91
+ },
92
+ timeCheckIn: {
93
+ marginVertical: 24,
94
+ width: '20%',
95
+ },
96
+ itemDescription: {
97
+ flexDirection: 'row',
98
+ alignItems: 'center',
99
+ },
100
+ dot: {
101
+ height: 4,
102
+ width: 4,
103
+ backgroundColor: Colors.Gray7,
104
+ borderRadius: 2,
105
+ marginHorizontal: 4,
106
+ },
107
+ });
@@ -0,0 +1,49 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: Colors.White,
8
+ },
9
+ headerRight: {
10
+ flexDirection: 'row',
11
+ },
12
+ contentContainerStyle: {
13
+ paddingBottom: 60,
14
+ },
15
+ wrapItem: {
16
+ height: 100,
17
+ width: '100%',
18
+ flexDirection: 'row',
19
+ alignItems: 'center',
20
+ padding: 16,
21
+ borderBottomWidth: 1,
22
+ borderBottomColor: Colors.Gray3,
23
+ },
24
+ itemAvatar: {
25
+ height: 48,
26
+ width: 48,
27
+ borderRadius: 24,
28
+ borderWidth: 1,
29
+ borderColor: Colors.Gray3,
30
+ },
31
+ itemName: {
32
+ marginLeft: 16,
33
+ flex: 1,
34
+ },
35
+ addMemberModal: {
36
+ paddingBottom: 50,
37
+ },
38
+ row: {
39
+ flexDirection: 'row',
40
+ alignItems: 'center',
41
+ paddingVertical: 16,
42
+ marginHorizontal: 16,
43
+ borderBottomColor: Colors.Gray3,
44
+ borderBottomWidth: 1,
45
+ },
46
+ textOption: {
47
+ marginLeft: 18,
48
+ },
49
+ });
@@ -0,0 +1,73 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../configs';
3
+
4
+ export default StyleSheet.create({
5
+ container: {
6
+ flex: 1,
7
+ backgroundColor: Colors.White,
8
+ },
9
+ headerRight: {
10
+ flexDirection: 'row',
11
+ },
12
+ wrapAvatar: {
13
+ alignItems: 'center',
14
+ marginTop: 24,
15
+ marginBottom: 52,
16
+ },
17
+ avatar: {
18
+ height: 88,
19
+ width: 88,
20
+ borderRadius: 44,
21
+ borderWidth: 1,
22
+ borderColor: Colors.Gray3,
23
+ },
24
+ row: {
25
+ flexDirection: 'row',
26
+ alignItems: 'center',
27
+ borderBottomWidth: 1,
28
+ borderBottomColor: Colors.Gray3,
29
+ height: 64,
30
+ marginHorizontal: 16,
31
+ },
32
+ textSetPhoto: {
33
+ flex: 1,
34
+ marginLeft: 16,
35
+ lineHeight: 24,
36
+ },
37
+ photoID: {
38
+ width: 42,
39
+ height: 42,
40
+ borderRadius: 6,
41
+ borderWidth: 1,
42
+ borderColor: Colors.Gray3,
43
+ },
44
+ spaceBetween: {
45
+ justifyContent: 'space-between',
46
+ },
47
+ buttonRemove: {
48
+ position: 'absolute',
49
+ alignItems: 'center',
50
+ padding: 32,
51
+ bottom: 0,
52
+ left: 0,
53
+ right: 0,
54
+ },
55
+ textInput: {
56
+ margin: 16,
57
+ marginTop: 0,
58
+ borderWidth: 0,
59
+ paddingLeft: 0,
60
+ paddingTop: 0,
61
+ borderBottomWidth: 2,
62
+ borderBottomColor: Colors.Primary,
63
+ fontSize: 16,
64
+ color: Colors.Gray9,
65
+ },
66
+ bottomButton: {
67
+ paddingBottom: 24,
68
+ },
69
+ textError: {
70
+ marginHorizontal: 16,
71
+ marginTop: 4,
72
+ },
73
+ });
@@ -0,0 +1,52 @@
1
+ import { API } from '../../../configs';
2
+ import Pusher from 'pusher-js/react-native';
3
+ import { SCConfig } from '../../../configs/SCConfig';
4
+ import { axiosPost } from '../../../utils/Apis/axios';
5
+
6
+ Pusher.logToConsole = true;
7
+ let pusher = null;
8
+
9
+ const getPusher = () => {
10
+ if (!pusher) {
11
+ pusher = new Pusher(SCConfig.pusherAppKey, {
12
+ cluster: SCConfig.pusherAppCluste,
13
+ authorizer: function (channel, option) {
14
+ return {
15
+ // eslint-disable-next-line promise/prefer-await-to-callbacks
16
+ authorize: async function (socketId, callback) {
17
+ const { success, data } = await axiosPost(
18
+ API.CAMERA.HANET.PUSHER_AUTH(),
19
+ {
20
+ channel_name: channel.name,
21
+ socket_id: socketId,
22
+ }
23
+ );
24
+ if (success) {
25
+ // eslint-disable-next-line promise/prefer-await-to-callbacks
26
+ callback(null, data);
27
+ }
28
+ },
29
+ };
30
+ },
31
+ });
32
+ }
33
+ return pusher;
34
+ };
35
+
36
+ const destroyPusher = () => {
37
+ pusher.disconnect();
38
+ pusher = null;
39
+ };
40
+
41
+ // eslint-disable-next-line promise/prefer-await-to-callbacks
42
+ export const watchHanetCheckinData = (hanetCamera, callback) => {
43
+ const channel = getPusher().subscribe(
44
+ `private-hanet-camera-${hanetCamera.device_id}`
45
+ );
46
+ channel.bind('new-checkin-data', callback);
47
+ };
48
+
49
+ export const unwatchHanetCheckinData = (hanetCamera) => {
50
+ getPusher().unsubscribe(`private-hanet-camera-${hanetCamera.device_id}`);
51
+ destroyPusher();
52
+ };
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import renderer, { act } from 'react-test-renderer';
3
+ import { ButtonsBottom } from '../components/GroupButtonByType/ButtonsBottom';
4
+ import { SCProvider } from '../../../context';
5
+ import { mockSCStore } from '../../../context/mockStore';
6
+ import { TouchableOpacity } from 'react-native';
7
+
8
+ const wrapComponent = () => (
9
+ <SCProvider initState={mockSCStore({})}>
10
+ <ButtonsBottom />
11
+ </SCProvider>
12
+ );
13
+
14
+ jest.mock('react', () => {
15
+ return {
16
+ ...jest.requireActual('react'),
17
+ memo: (x) => x,
18
+ };
19
+ });
20
+ describe('Test ButtonsBottom', () => {
21
+ let tree;
22
+
23
+ test('render ButtonsBottom', () => {
24
+ act(() => {
25
+ tree = renderer.create(wrapComponent());
26
+ });
27
+ const instance = tree.root;
28
+ const touchableOpacity = instance.findAllByType(TouchableOpacity);
29
+ expect(touchableOpacity).toHaveLength(2);
30
+ });
31
+ });
@@ -4,6 +4,7 @@ import GroupButtonByType from '../components/GroupButtonByType/GroupButtonByType
4
4
  import { SCProvider } from '../../../context';
5
5
  import { mockSCStore } from '../../../context/mockStore';
6
6
  import WrapHeaderScrollable from '../../../commons/Sharing/WrapHeaderScrollable';
7
+ import { ButtonsBottom } from '../components/GroupButtonByType/ButtonsBottom';
7
8
 
8
9
  const wrapComponent = (route) => (
9
10
  <SCProvider initState={mockSCStore({})}>
@@ -12,7 +13,6 @@ const wrapComponent = (route) => (
12
13
  );
13
14
 
14
15
  const mockNavigate = jest.fn();
15
- const mockSetState = jest.fn();
16
16
  jest.mock('@react-navigation/native', () => {
17
17
  return {
18
18
  ...jest.requireActual('@react-navigation/native'),
@@ -25,18 +25,10 @@ jest.mock('react', () => {
25
25
  return {
26
26
  ...jest.requireActual('react'),
27
27
  memo: (x) => x,
28
- useState: jest.fn((init) => [init, mockSetState]),
29
28
  };
30
29
  });
31
30
  describe('Test GroupButtonByType', () => {
32
31
  let tree;
33
- beforeEach(() => {
34
- mockNavigate.mockClear();
35
- });
36
- afterEach(() => {
37
- mockSetState.mockClear();
38
- });
39
-
40
32
  test('render GroupButtonByType', () => {
41
33
  const route = {
42
34
  params: {
@@ -51,4 +43,38 @@ describe('Test GroupButtonByType', () => {
51
43
  const wrapHeaderScrollable = instance.findAllByType(WrapHeaderScrollable);
52
44
  expect(wrapHeaderScrollable).toHaveLength(1);
53
45
  });
46
+ test('onPressLeft ButtonsBottom', () => {
47
+ const route = {
48
+ params: {
49
+ device_type: { id: 1, name: '', icon: '' },
50
+ brand: { id: 1, name: '' },
51
+ },
52
+ };
53
+ act(() => {
54
+ tree = renderer.create(wrapComponent(route));
55
+ });
56
+ const instance = tree.root;
57
+ const buttonsBottom = instance.findAllByType(ButtonsBottom);
58
+ expect(buttonsBottom).toHaveLength(2);
59
+ act(() => {
60
+ buttonsBottom[0].props.onPressLeft();
61
+ });
62
+ });
63
+ test('onPressRight ButtonsBottom', () => {
64
+ const route = {
65
+ params: {
66
+ device_type: { id: 1, name: '', icon: '' },
67
+ brand: { id: 1, name: '' },
68
+ },
69
+ };
70
+ act(() => {
71
+ tree = renderer.create(wrapComponent(route));
72
+ });
73
+ const instance = tree.root;
74
+ const buttonsBottom = instance.findAllByType(ButtonsBottom);
75
+ expect(buttonsBottom).toHaveLength(2);
76
+ act(() => {
77
+ buttonsBottom[0].props.onPressRight();
78
+ });
79
+ });
54
80
  });
@@ -13,7 +13,6 @@ const wrapComponent = (route) => (
13
13
  );
14
14
 
15
15
  const mockNavigate = jest.fn();
16
- const mockSetState = jest.fn();
17
16
  jest.mock('@react-navigation/native', () => {
18
17
  return {
19
18
  ...jest.requireActual('@react-navigation/native'),
@@ -26,18 +25,10 @@ jest.mock('react', () => {
26
25
  return {
27
26
  ...jest.requireActual('react'),
28
27
  memo: (x) => x,
29
- useState: jest.fn((init) => [init, mockSetState]),
30
28
  };
31
29
  });
32
30
  describe('Test SelectBrand', () => {
33
31
  let tree;
34
- beforeEach(() => {
35
- mockNavigate.mockClear();
36
- });
37
- afterEach(() => {
38
- mockSetState.mockClear();
39
- });
40
-
41
32
  test('render SelectBrand', () => {
42
33
  const route = {
43
34
  params: {
@@ -12,7 +12,7 @@ const wrapComponent = () => (
12
12
  );
13
13
 
14
14
  const mockNavigate = jest.fn();
15
- const mockSetState = jest.fn();
15
+
16
16
  jest.mock('@react-navigation/native', () => {
17
17
  return {
18
18
  ...jest.requireActual('@react-navigation/native'),
@@ -25,17 +25,10 @@ jest.mock('react', () => {
25
25
  return {
26
26
  ...jest.requireActual('react'),
27
27
  memo: (x) => x,
28
- useState: jest.fn((init) => [init, mockSetState]),
29
28
  };
30
29
  });
31
30
  describe('Test SelectDeviceType', () => {
32
31
  let tree;
33
- beforeEach(() => {
34
- mockNavigate.mockClear();
35
- });
36
- afterEach(() => {
37
- mockSetState.mockClear();
38
- });
39
32
 
40
33
  test('render SelectDeviceType', () => {
41
34
  act(() => {
@@ -0,0 +1,45 @@
1
+ import React, { memo } from 'react';
2
+ import { View, TouchableOpacity } from 'react-native';
3
+ import Text from '../../../../commons/Text';
4
+
5
+ import { Colors } from '../../../../configs';
6
+
7
+ import styles from './ButtonsBottomStyles';
8
+
9
+ const ButtonsBottom = memo(
10
+ ({
11
+ onPressLeft,
12
+ onPressRight,
13
+ textLeft,
14
+ colorTextLeft = Colors.White,
15
+ colorTextRight = Colors.Gray8,
16
+ leftButtonStyle,
17
+ rightButtonStyle,
18
+ buttonStyle = {},
19
+ textRight,
20
+ type = 'H4',
21
+ }) => {
22
+ return (
23
+ <View style={styles.ButtonsBottom}>
24
+ <TouchableOpacity
25
+ style={[styles.LeftButton, buttonStyle, leftButtonStyle]}
26
+ onPress={onPressLeft}
27
+ >
28
+ <Text type={type} color={colorTextLeft}>
29
+ {textLeft}
30
+ </Text>
31
+ </TouchableOpacity>
32
+ <TouchableOpacity
33
+ style={[styles.RightButton, buttonStyle, rightButtonStyle]}
34
+ onPress={onPressRight}
35
+ >
36
+ <Text type={type} color={colorTextRight}>
37
+ {textRight}
38
+ </Text>
39
+ </TouchableOpacity>
40
+ </View>
41
+ );
42
+ }
43
+ );
44
+
45
+ export { ButtonsBottom };
@@ -0,0 +1,31 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Colors } from '../../../../configs';
3
+
4
+ const flexCenter = {
5
+ justifyContent: 'center',
6
+ alignItems: 'center',
7
+ };
8
+ const styleButton = {
9
+ paddingVertical: 8,
10
+ paddingHorizontal: 32,
11
+ borderRadius: 30,
12
+ marginHorizontal: 8,
13
+ };
14
+ export default StyleSheet.create({
15
+ ButtonsBottom: {
16
+ marginTop: 16,
17
+ flexDirection: 'row',
18
+ },
19
+ LeftButton: {
20
+ backgroundColor: Colors.Primary,
21
+ ...styleButton,
22
+ ...flexCenter,
23
+ },
24
+ RightButton: {
25
+ backgroundColor: Colors.Gray1,
26
+ borderColor: Colors.Gray5,
27
+ borderWidth: 1,
28
+ ...styleButton,
29
+ ...flexCenter,
30
+ },
31
+ });