agora-appbuilder-core 2.0.1 → 2.0.3-rc2

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 (79) hide show
  1. package/Readme.md +2 -1
  2. package/package.json +1 -1
  3. package/template/_package-lock.json +8853 -8806
  4. package/template/agora-rn-uikit/.git/index +0 -0
  5. package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
  6. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +1 -1
  7. package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
  8. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
  9. package/template/agora-rn-uikit/.git/objects/pack/pack-2a0122bf5a3199f941e5a52535f43881623f752c.idx +0 -0
  10. package/template/agora-rn-uikit/.git/objects/pack/{pack-f379286d0537eb68377220b4929979324b8d5d1c.pack → pack-2a0122bf5a3199f941e5a52535f43881623f752c.pack} +0 -0
  11. package/template/agora-rn-uikit/.git/packed-refs +4 -2
  12. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +1 -1
  13. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +21 -0
  14. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +22 -14
  15. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +17 -13
  16. package/template/agora-rn-uikit/src/Controls/types.ts +4 -0
  17. package/template/agora-rn-uikit/src/Rtc/Create.tsx +117 -19
  18. package/template/agora-rn-uikit/src/RtcConfigure.tsx +24 -13
  19. package/template/{src/utils/isSafariBrowser.tsx → agora-rn-uikit/src/Utils/isSafariBrowser.ts} +3 -0
  20. package/template/{src → agora-rn-uikit/src}/hooks/useImageDelay.tsx +5 -2
  21. package/template/agora-rn-uikit/src/index.ts +2 -0
  22. package/template/bridge/rtc/webNg/RtcEngine.ts +73 -70
  23. package/template/bridge/rtc/webNg/Types.ts +59 -5
  24. package/template/bridge/rtm/web/Types.ts +13 -0
  25. package/template/bridge/rtm/web/index.ts +78 -1
  26. package/template/global.d.ts +2 -0
  27. package/template/package-lock.json +8853 -8806
  28. package/template/package.json +3 -4
  29. package/template/react-native-toast-message/src/components/base/styles.js +4 -2
  30. package/template/src/assets/icons.ts +41 -28
  31. package/template/src/components/Chat.tsx +70 -184
  32. package/template/src/components/ChatContext.ts +13 -2
  33. package/template/src/components/Controls.native.tsx +37 -76
  34. package/template/src/components/Controls.tsx +50 -158
  35. package/template/src/components/DeviceConfigure.native.tsx +5 -1
  36. package/template/src/components/DeviceConfigure.tsx +38 -20
  37. package/template/src/components/Navbar.tsx +185 -226
  38. package/template/src/components/ParticipantsView.tsx +176 -184
  39. package/template/src/components/Precall.native.tsx +83 -69
  40. package/template/src/components/Precall.tsx +174 -191
  41. package/template/src/components/RTMConfigure.tsx +264 -78
  42. package/template/src/components/SettingsView.tsx +9 -19
  43. package/template/src/components/livestream/LiveStreamContext.tsx +411 -0
  44. package/template/src/components/livestream/Types.ts +69 -0
  45. package/template/src/components/livestream/index.ts +9 -0
  46. package/template/src/components/livestream/views/LiveStreamControls.tsx +27 -0
  47. package/template/src/components/participants/AllAudienceParticipants.tsx +53 -0
  48. package/template/src/components/participants/AllHostParticipants.tsx +65 -0
  49. package/template/src/components/participants/MeParticipant.tsx +37 -0
  50. package/template/src/components/participants/ParticipantName.tsx +47 -0
  51. package/template/src/components/participants/ParticipantSectionTitle.tsx +29 -0
  52. package/template/src/components/participants/RemoteParticipants.tsx +69 -0
  53. package/template/src/components/participants/ScreenshareParticipants.tsx +28 -0
  54. package/template/src/components/participants/context/ParticipantContext.tsx +97 -0
  55. package/template/src/components/styles.ts +13 -0
  56. package/template/src/pages/Create.tsx +25 -14
  57. package/template/src/pages/VideoCall.tsx +197 -159
  58. package/template/src/subComponents/ChatBubble.tsx +4 -1
  59. package/template/src/subComponents/ChatContainer.tsx +44 -20
  60. package/template/src/subComponents/ChatInput.tsx +4 -12
  61. package/template/src/subComponents/Checkbox.native.tsx +6 -5
  62. package/template/src/subComponents/Checkbox.tsx +1 -0
  63. package/template/src/subComponents/Recording.tsx +23 -9
  64. package/template/src/subComponents/RemoteVideoMute.tsx +2 -3
  65. package/template/src/subComponents/SelectDevice.tsx +70 -35
  66. package/template/src/subComponents/chat/ChatParticipants.tsx +121 -0
  67. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +23 -0
  68. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +70 -0
  69. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +57 -0
  70. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +24 -0
  71. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +38 -0
  72. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +37 -0
  73. package/template/src/subComponents/livestream/index.ts +18 -0
  74. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +80 -0
  75. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +24 -0
  76. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +200 -0
  77. package/template/src/subComponents/screenshare/ScreenshareContext.tsx +21 -0
  78. package/template/src/utils/index.tsx +48 -0
  79. package/template/agora-rn-uikit/.git/objects/pack/pack-f379286d0537eb68377220b4929979324b8d5d1c.idx +0 -0
@@ -10,20 +10,9 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {useContext, useState} from 'react';
13
- import {
14
- View,
15
- TouchableOpacity,
16
- Image,
17
- Text,
18
- Platform,
19
- StyleSheet,
20
- Dimensions,
21
- } from 'react-native';
22
- // import {MinUidConsumer} from '../../agora-rn-uikit';
23
- // import {PropsContext} from '../../agora-rn-uikit';
13
+ import {View, Text, Platform, StyleSheet, Dimensions} from 'react-native';
24
14
  import icons from '../assets/icons';
25
15
  import Settings from './Settings';
26
- import ColorContext from './ColorContext';
27
16
  import CopyJoinInfo from '../subComponents/CopyJoinInfo';
28
17
  import {SidePanelType} from '../subComponents/SidePanelEnum';
29
18
  import {navHolder} from '../../theme.json';
@@ -32,13 +21,15 @@ import ChatContext from '../components/ChatContext';
32
21
  import mobileAndTabletCheck from '../utils/mobileWebTest';
33
22
  import {BtnTemplate} from '../../agora-rn-uikit';
34
23
  import {ImageIcon} from '../../agora-rn-uikit';
24
+ import LiveStreamContext from './livestream';
25
+ import {numFormatter} from '../utils/index';
35
26
 
36
27
  const Navbar = (props: any) => {
37
- const {primaryColor} = useContext(ColorContext);
38
- const {messageStore} = useContext(ChatContext);
28
+ const {messageStore, onlineUsersCount} = useContext(ChatContext);
29
+ const {isPendingRequestToReview, setLastCheckedRequestTimestamp} =
30
+ useContext(LiveStreamContext);
31
+
39
32
  const {
40
- // participantsView,
41
- // setParticipantsView,
42
33
  recordingActive,
43
34
  sidePanel,
44
35
  setSidePanel,
@@ -46,8 +37,6 @@ const Navbar = (props: any) => {
46
37
  setLayout,
47
38
  pendingMessageLength,
48
39
  setLastCheckedPublicState,
49
- // setChatDisplayed,
50
- // chatDisplayed,
51
40
  isHost,
52
41
  title,
53
42
  } = props;
@@ -60,6 +49,37 @@ const Navbar = (props: any) => {
60
49
  setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
61
50
  };
62
51
  const isDesktop = dim[0] > 1224;
52
+
53
+ const renderSeparator = () => {
54
+ return Platform.OS === 'web' && isDesktop ? (
55
+ <View style={style.navItem}>
56
+ <View style={style.navItemSeparator}></View>
57
+ </View>
58
+ ) : (
59
+ <View style={{marginHorizontal: 2}}></View>
60
+ );
61
+ };
62
+
63
+ const renderBadge = (badgeCount: any) => {
64
+ return (
65
+ <View
66
+ style={{
67
+ position: 'absolute',
68
+ top: Platform.OS === 'web' ? -10 : 2,
69
+ }}>
70
+ <View style={style.badge}>
71
+ <Text
72
+ style={{
73
+ color: $config.SECONDARY_FONT_COLOR,
74
+ fontSize: 12,
75
+ }}>
76
+ {numFormatter(badgeCount)}
77
+ </Text>
78
+ </View>
79
+ </View>
80
+ );
81
+ };
82
+
63
83
  return (
64
84
  <View
65
85
  onLayout={onLayout}
@@ -87,7 +107,7 @@ const Navbar = (props: any) => {
87
107
  height: 20,
88
108
  margin: 1,
89
109
  }}
90
- color='#FD0845'
110
+ color="#FD0845"
91
111
  />
92
112
  <Text
93
113
  style={{
@@ -118,13 +138,16 @@ const Navbar = (props: any) => {
118
138
  justifyContent: 'flex-start',
119
139
  paddingLeft: 5,
120
140
  }}>
121
- <Text style={style.roomNameText}>
122
- {mobileAndTabletCheck()
123
- ? title.length > 13
124
- ? title.slice(0, 13) + '..'
125
- : title
126
- : title}
127
- </Text>
141
+ <View>
142
+ <Text style={style.roomNameText}>
143
+ {mobileAndTabletCheck()
144
+ ? title.length > 13
145
+ ? title.slice(0, 13) + '..'
146
+ : title
147
+ : title}
148
+ </Text>
149
+ </View>
150
+ <View />
128
151
  <View
129
152
  style={{
130
153
  backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
@@ -138,50 +161,43 @@ const Navbar = (props: any) => {
138
161
  </View>
139
162
  </View>
140
163
  ) : (
141
- <Text style={style.roomNameText}>{title}</Text>
164
+ <View>
165
+ <Text style={style.roomNameText}>{title}</Text>
166
+ </View>
142
167
  )}
143
168
  </View>
144
- <View
145
- style={{
146
- width: '50%',
147
- flexDirection: 'row',
148
- justifyContent: 'flex-end',
149
- zIndex: 9,
150
- // flex: 1,
151
- // minWidth: Platform.OS === 'web' ? (isDesktop ? 400 : 280) : 40,
152
- // backgroundColor: '#f00',
153
- }}>
169
+ <View style={style.navControlBar}>
154
170
  <View
155
- style={{
156
- flexDirection: 'row',
157
- alignItems: 'center',
158
- backgroundColor:
159
- Platform.OS === 'web'
160
- ? $config.SECONDARY_FONT_COLOR
161
- : $config.SECONDARY_FONT_COLOR + '00',
162
- paddingVertical: 4,
163
- paddingHorizontal: mobileAndTabletCheck() ? 0 : 4,
164
- minHeight: 35,
165
- // height: 40,
166
- // backgroundColor: '#f0f',
167
- // paddingHorizontal: 16,
168
- borderRadius: 10,
169
- minWidth:
170
- Platform.OS === 'web' && isDesktop
171
- ? 300
172
- : mobileAndTabletCheck()
173
- ? 160
174
- : 200,
175
- // borderTopLeftRadius: 10,
176
- // borderBottomLeftRadius: 10,
177
- justifyContent: 'space-evenly',
178
- }}>
179
- <View style={{width: '20%', height: '100%'}}>
171
+ style={[
172
+ style.navContainer,
173
+ {
174
+ minWidth:
175
+ Platform.OS === 'web' && isDesktop
176
+ ? 300
177
+ : mobileAndTabletCheck()
178
+ ? 160
179
+ : 200,
180
+ },
181
+ ]}>
182
+ {onlineUsersCount !== 0 && (
183
+ <View style={[style.navItem, {justifyContent: 'center'}]}>
184
+ <View style={style.chip}>
185
+ {onlineUsersCount > 0 && (
186
+ <Text style={style.chipText}>
187
+ {numFormatter(onlineUsersCount)}
188
+ </Text>
189
+ )}
190
+ </View>
191
+ </View>
192
+ )}
193
+ <View style={[style.navItem, style.navSmItem]}>
180
194
  <BtnTemplate
181
195
  onPress={() => {
182
196
  sidePanel === SidePanelType.Participants
183
197
  ? setSidePanel(SidePanelType.None)
184
198
  : setSidePanel(SidePanelType.Participants);
199
+ $config.EVENT_MODE && $config.RAISE_HAND;
200
+ setLastCheckedRequestTimestamp(new Date().getTime());
185
201
  }}
186
202
  style={style.btnHolder}
187
203
  name={
@@ -190,98 +206,66 @@ const Navbar = (props: any) => {
190
206
  : 'participantIcon'
191
207
  }
192
208
  />
193
- </View>
194
- {$config.CHAT ? (
195
- <>
196
- {Platform.OS === 'web' && isDesktop ? (
209
+ {$config.EVENT_MODE &&
210
+ $config.RAISE_HAND &&
211
+ isPendingRequestToReview && (
197
212
  <View
198
213
  style={{
199
- backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
200
- width: 1,
201
- height: '100%',
202
- marginHorizontal: 10,
203
- alignSelf: 'center',
204
- opacity: 0.8,
205
- }}
206
- />
207
- ) : (
208
- <></>
209
- )}
210
- <View style={{width: '20%', height: '100%', position: 'relative'}}>
211
- <BtnTemplate
212
- style={style.btnHolder}
213
- onPress={() => {
214
- setLastCheckedPublicState(messageStore.length);
215
- sidePanel === SidePanelType.Chat
216
- ? setSidePanel(SidePanelType.None)
217
- : setSidePanel(SidePanelType.Chat);
218
- }}
219
- name={
220
- sidePanel === SidePanelType.Chat
221
- ? 'chatIconFilled'
222
- : 'chatIcon'
223
- }
214
+ position: 'absolute',
215
+ top: Platform.OS === 'web' ? -10 : 2,
216
+ }}>
217
+ <View style={[style.badge, {paddingHorizontal: 3}]}>
218
+ <ImageIcon
219
+ icon={icons['exclamationIcon']}
220
+ color={$config.SECONDARY_FONT_COLOR}
224
221
  />
225
- <View style={{position: 'absolute', top: Platform.OS === 'web' ? 1 : -15, left: ( Platform.OS === 'web' && isDesktop) ? 10 : 1 }}>
226
- {sidePanel !== SidePanelType.Chat &&
227
- pendingMessageLength !== 0 ? (
228
- <View style={style.chatNotification}>
229
- <Text style={{color: $config.SECONDARY_FONT_COLOR}}>
230
- {pendingMessageLength}
231
- </Text>
232
- </View>
233
- ) : (
234
- <></>
235
- )}
236
- </View>
237
222
  </View>
223
+ </View>
224
+ )}
225
+ </View>
226
+ {$config.CHAT && (
227
+ <>
228
+ {renderSeparator()}
229
+ <View style={[style.navItem, style.navSmItem]}>
230
+ <BtnTemplate
231
+ style={style.btnHolder}
232
+ onPress={() => {
233
+ setLastCheckedPublicState(messageStore.length);
234
+ sidePanel === SidePanelType.Chat
235
+ ? setSidePanel(SidePanelType.None)
236
+ : setSidePanel(SidePanelType.Chat);
237
+ }}
238
+ name={
239
+ sidePanel === SidePanelType.Chat
240
+ ? 'chatIconFilled'
241
+ : 'chatIcon'
242
+ }
243
+ />
244
+ {sidePanel !== SidePanelType.Chat &&
245
+ pendingMessageLength !== 0 &&
246
+ renderBadge(pendingMessageLength)}
247
+ </View>
238
248
  </>
239
- ) : (
240
- <></>
241
249
  )}
242
- {Platform.OS === 'web' && isDesktop ? (
243
- <View
244
- style={{
245
- backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
246
- width: 1,
247
- height: '100%',
248
- marginHorizontal: 10,
249
- alignSelf: 'center',
250
- opacity: 0.8,
250
+ {renderSeparator()}
251
+ <View style={[style.navItem, style.navSmItem]}>
252
+ <BtnTemplate
253
+ style={style.btnHolder}
254
+ onPress={() => {
255
+ setLayout((l: Layout) =>
256
+ l === Layout.Pinned ? Layout.Grid : Layout.Pinned,
257
+ );
251
258
  }}
259
+ name={layout ? 'pinnedLayoutIcon' : 'gridLayoutIcon'}
252
260
  />
253
- ) : (
254
- <></>
255
- )}
256
- <View style={{width: '20%', height: '100%'}}>
257
- <BtnTemplate
258
- style={style.btnHolder}
259
- onPress={() => {
260
- setLayout((l: Layout) =>
261
- l === Layout.Pinned ? Layout.Grid : Layout.Pinned,
262
- );
263
- }}
264
- name={layout ? 'pinnedLayoutIcon' : 'gridLayoutIcon'}
265
- />
266
261
  </View>
267
262
  {/** Show setting icon only in non native apps
268
263
  * show in web/electron/mobile web
269
264
  * hide in android/ios */}
270
- {Platform.OS !== 'android' && Platform.OS !== 'ios' ? (
265
+ {Platform.OS !== 'android' && Platform.OS !== 'ios' && (
271
266
  <>
272
- {Platform.OS === 'web' && isDesktop && (
273
- <View
274
- style={{
275
- backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
276
- width: 1,
277
- height: '100%',
278
- marginHorizontal: 10,
279
- alignSelf: 'center',
280
- opacity: 0.8,
281
- }}
282
- />
283
- )}
284
- <View style={{width: '20%', height: '100%'}}>
267
+ {renderSeparator()}
268
+ <View style={[style.navItem, style.navSmItem]}>
285
269
  <Settings
286
270
  sidePanel={sidePanel}
287
271
  setSidePanel={setSidePanel}
@@ -289,8 +273,6 @@ const Navbar = (props: any) => {
289
273
  />
290
274
  </View>
291
275
  </>
292
- ) : (
293
- <></>
294
276
  )}
295
277
  </View>
296
278
  </View>
@@ -306,27 +288,20 @@ const style = StyleSheet.create({
306
288
  backgroundColor: $config.SECONDARY_FONT_COLOR + '80',
307
289
  flexDirection: 'row',
308
290
  alignItems: 'center',
309
- // marginHorizontal: 10,
310
291
  paddingHorizontal: 10,
311
292
  justifyContent: 'space-between',
312
293
  },
313
294
  recordingView: {
314
- // flex: 0.25,
315
- // maxWidth: 150,
316
- // paddingHorizontal: 2,
317
295
  height: 35,
318
296
  maxHeight: 30,
319
297
  position: 'absolute',
320
298
  left: 10,
321
- // alignSelf: 'center',
322
299
  paddingHorizontal: 5,
323
- // marginVertical: 'auto',
324
300
  flexDirection: 'row',
325
301
  alignItems: 'center',
326
302
  alignContent: 'center',
327
303
  justifyContent: 'center',
328
304
  borderRadius: 10,
329
- // marginHorizontal: 5,
330
305
  },
331
306
  recordingIcon: {
332
307
  width: 20,
@@ -334,100 +309,31 @@ const style = StyleSheet.create({
334
309
  margin: 1,
335
310
  resizeMode: 'contain',
336
311
  },
337
- btnHolder: {
338
- marginHorizontal: mobileAndTabletCheck() ? 2 : 0,
312
+ btnHolder: {
313
+ marginHorizontal: mobileAndTabletCheck() ? 2 : 0,
339
314
  width: '100%',
340
315
  height: '100%',
341
316
  resizeMode: 'contain',
342
317
  },
343
- // participantBtnHolder: {
344
- // backgroundColor: '#fff',
345
- // // flex: 0.5,
346
- // width: 90,
347
- // paddingHorizontal: 5,
348
- // // marginHorizontal: 5,
349
- // height: 30,
350
- // alignSelf: 'center',
351
- // // borderWidth: 2,
352
- // flexDirection: 'row',
353
- // alignItems: 'center',
354
- // alignContent: 'center',
355
- // borderRadius: 3,
356
- // },
357
- // participantBtn: {
358
- // height: '100%',
359
- // // width: '100%',
360
- // flexDirection: 'row',
361
- // alignContent: 'center',
362
- // justifyContent: 'center',
363
- // alignSelf: 'center',
364
- // flex: 1,
365
- // },
366
- // participantBtnIcon: {
367
- // height: '100%',
368
- // width: '100%',
369
- // // margin: 1,
370
- // tintColor: $config.PRIMARY_COLOR,
371
- // resizeMode: 'contain',
372
- // },
373
- // participantText: {
374
- // fontSize: Platform.OS === 'web' ? 20 : 18,
375
- // fontWeight: '400',
376
- // alignSelf: 'center',
377
- // textAlign: 'center',
378
- // flex: 1,
379
- // },
380
318
  roomNameContainer: {
381
319
  paddingHorizontal: 1,
382
320
  marginHorizontal: 1,
383
321
  height: 35,
384
322
  maxHeight: 30,
385
323
  flexDirection: 'row',
386
- // width: '20%',
387
324
  justifyContent: 'flex-end',
388
325
  alignItems: 'center',
389
326
  zIndex: 10,
390
- maxWidth: '50%',
391
327
  },
392
328
  roomNameText: {
393
329
  fontSize: 18,
394
- // flex: 10,
395
- // width: 50,
396
- // color: '#fff',
397
330
  color: $config.PRIMARY_FONT_COLOR,
398
331
  fontWeight: '500',
399
332
  },
400
- // layoutBtnHolder: {
401
- // width: 30,
402
- // height: 30,
403
- // flexDirection: 'row',
404
- // justifyContent: 'center',
405
- // // marginLeft: 'auto',
406
- // // marginRight: 1,
407
- // },
408
- // layoutBtn: {
409
- // height: 30,
410
- // alignSelf: 'center',
411
- // width: 30,
412
- // // marginRight: 5,
413
- // },
414
- // localButton: {
415
- // // backgroundColor: '#f0f',
416
- // height: 30,
417
- // alignSelf: 'center',
418
- // width: 30,
419
- // // marginRight: 5,
420
- // },
421
- // layoutBtnIcon: {
422
- // flex: 1,
423
- // height: 30,
424
- // alignSelf: 'center',
425
- // width: 30,
426
- // resizeMode: 'contain',
427
- // },
428
- chatNotification: {
429
- width: 20,
333
+ badge: {
334
+ lineHeight: 1,
430
335
  height: 20,
336
+ minWidth: 20,
431
337
  display: 'flex',
432
338
  alignItems: 'center',
433
339
  justifyContent: 'center',
@@ -436,8 +342,61 @@ const style = StyleSheet.create({
436
342
  fontFamily: Platform.OS === 'ios' ? 'Helvetica' : 'sans-serif',
437
343
  borderRadius: 10,
438
344
  position: 'absolute',
439
- left: 20,
440
- top: Platform.OS === 'web' ? -8 : 18,
345
+ paddingHorizontal: 5,
346
+ top: 0,
347
+ left: -2,
348
+ },
349
+ chip: {
350
+ backgroundColor: $config.PRIMARY_COLOR,
351
+ borderRadius: 2.5,
352
+ paddingHorizontal: 5,
353
+ marginHorizontal: 5,
354
+ paddingVertical: 1,
355
+ display: 'flex',
356
+ alignItems: 'center',
357
+ justifyContent: 'center',
358
+ },
359
+ chipText: {
360
+ fontFamily: Platform.OS === 'ios' ? 'Helvetica' : 'sans-serif',
361
+ fontSize: 12,
362
+ color: $config.SECONDARY_FONT_COLOR,
363
+ },
364
+ navControlBar: {
365
+ width: '50%',
366
+ flexDirection: 'row',
367
+ justifyContent: 'flex-end',
368
+ zIndex: 9,
369
+ },
370
+ navContainer: {
371
+ display: 'flex',
372
+ flexDirection: 'row',
373
+ justifyContent: 'space-around',
374
+ backgroundColor:
375
+ Platform.OS === 'web'
376
+ ? $config.SECONDARY_FONT_COLOR
377
+ : $config.SECONDARY_FONT_COLOR + '00',
378
+ paddingVertical: 4,
379
+ paddingHorizontal: mobileAndTabletCheck() ? 0 : 10,
380
+ minHeight: 35,
381
+ borderRadius: 10,
382
+ },
383
+ navItem: {
384
+ height: '100%',
385
+ alignItems: 'center',
386
+ position: 'relative',
387
+ },
388
+ navSmItem: {
389
+ flexGrow: 0,
390
+ flexShrink: 0,
391
+ flexBasis: '15%',
392
+ },
393
+ navItemSeparator: {
394
+ backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
395
+ width: 1,
396
+ height: '100%',
397
+ marginHorizontal: 10,
398
+ alignSelf: 'center',
399
+ opacity: 0.8,
441
400
  },
442
401
  });
443
402