agora-appbuilder-core 1.0.8 → 2.0.1

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 (134) hide show
  1. package/package.json +5 -2
  2. package/template/_package-lock.json +22850 -0
  3. package/template/agora-rn-uikit/.git/HEAD +1 -0
  4. package/template/agora-rn-uikit/.git/config +16 -0
  5. package/template/agora-rn-uikit/.git/description +1 -0
  6. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +15 -0
  7. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +24 -0
  8. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +173 -0
  9. package/template/agora-rn-uikit/.git/hooks/post-update.sample +8 -0
  10. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +14 -0
  11. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +49 -0
  12. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +13 -0
  13. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +53 -0
  14. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +169 -0
  15. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +24 -0
  16. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +42 -0
  17. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +78 -0
  18. package/template/agora-rn-uikit/.git/hooks/update.sample +128 -0
  19. package/template/agora-rn-uikit/.git/index +0 -0
  20. package/template/agora-rn-uikit/.git/info/exclude +6 -0
  21. package/template/agora-rn-uikit/.git/logs/HEAD +2 -0
  22. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +1 -0
  23. package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -0
  24. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -0
  25. package/template/agora-rn-uikit/.git/objects/pack/pack-f379286d0537eb68377220b4929979324b8d5d1c.idx +0 -0
  26. package/template/agora-rn-uikit/.git/objects/pack/pack-f379286d0537eb68377220b4929979324b8d5d1c.pack +0 -0
  27. package/template/agora-rn-uikit/.git/packed-refs +12 -0
  28. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +1 -0
  29. package/template/agora-rn-uikit/.git/refs/heads/master +1 -0
  30. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +1 -0
  31. package/template/agora-rn-uikit/.gitignore +63 -0
  32. package/template/agora-rn-uikit/package-lock.json +7612 -0
  33. package/template/agora-rn-uikit/package.json +1 -0
  34. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +8 -8
  35. package/template/agora-rn-uikit/src/{LocalUserContext.tsx → Contexts/LocalUserContext.tsx} +1 -1
  36. package/template/agora-rn-uikit/src/{MaxUidContext.tsx → Contexts/MaxUidContext.tsx} +0 -0
  37. package/template/agora-rn-uikit/src/{MinUidContext.tsx → Contexts/MinUidContext.tsx} +0 -0
  38. package/template/agora-rn-uikit/src/{PropsContext.tsx → Contexts/PropsContext.tsx} +34 -16
  39. package/template/agora-rn-uikit/src/{RtcContext.tsx → Contexts/RtcContext.tsx} +12 -21
  40. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +25 -15
  41. package/template/agora-rn-uikit/src/Controls/Icons.ts +53 -3
  42. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +53 -0
  43. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +4 -3
  44. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -3
  45. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +58 -14
  46. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +60 -14
  47. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +2 -2
  48. package/template/agora-rn-uikit/src/Controls/Local/Screenshare.tsx +2 -2
  49. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +9 -9
  50. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +20 -17
  51. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +8 -8
  52. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -3
  53. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +13 -8
  54. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +1 -2
  55. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +20 -0
  56. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +20 -0
  57. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +26 -0
  58. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +26 -0
  59. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +46 -0
  60. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +47 -0
  61. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +20 -0
  62. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +20 -0
  63. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +21 -0
  64. package/template/agora-rn-uikit/src/Reducer/index.ts +9 -0
  65. package/template/agora-rn-uikit/src/Rtc/Create.tsx +138 -0
  66. package/template/agora-rn-uikit/src/Rtc/Join.tsx +100 -0
  67. package/template/agora-rn-uikit/src/RtcConfigure.tsx +197 -0
  68. package/template/agora-rn-uikit/src/Style.ts +3 -3
  69. package/template/agora-rn-uikit/src/Utils/actionTypeGuard.tsx +9 -0
  70. package/template/agora-rn-uikit/src/{events.ts → Utils/events.ts} +0 -0
  71. package/template/agora-rn-uikit/src/{permission.ts → Utils/permission.ts} +0 -0
  72. package/template/agora-rn-uikit/src/{quality.tsx → Utils/quality.tsx} +0 -0
  73. package/template/agora-rn-uikit/src/{MaxVideoView.native.tsx → Views/MaxVideoView.native.tsx} +3 -4
  74. package/template/agora-rn-uikit/src/{MaxVideoView.tsx → Views/MaxVideoView.tsx} +3 -4
  75. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +86 -0
  76. package/template/agora-rn-uikit/src/index.ts +67 -0
  77. package/template/bridge/rtc/webNg/RtcEngine.ts +23 -6
  78. package/template/package-lock.json +22850 -0
  79. package/template/package.json +6 -4
  80. package/template/react-native-toast-message/.gitignore +5 -0
  81. package/template/react-native-toast-message/.npmignore +5 -0
  82. package/template/react-native-toast-message/package-lock.json +10553 -0
  83. package/template/src/.DS_Store +0 -0
  84. package/template/src/assets/icons.ts +35 -6
  85. package/template/src/atoms/SecondaryButton.tsx +6 -5
  86. package/template/src/atoms/TextInput.tsx +6 -1
  87. package/template/src/components/Chat.tsx +50 -21
  88. package/template/src/components/ChatContext.ts +22 -1
  89. package/template/src/components/Controls.native.tsx +2 -2
  90. package/template/src/components/Controls.tsx +2 -2
  91. package/template/src/components/DeviceConfigure.tsx +1 -1
  92. package/template/src/components/GridVideo.tsx +69 -31
  93. package/template/src/components/Navbar.tsx +136 -113
  94. package/template/src/components/NetworkQualityContext.tsx +134 -0
  95. package/template/src/components/ParticipantsView.tsx +105 -49
  96. package/template/src/components/PinnedVideo.tsx +112 -71
  97. package/template/src/components/Precall.native.tsx +42 -23
  98. package/template/src/components/Precall.tsx +56 -51
  99. package/template/src/components/RTMConfigure.tsx +331 -181
  100. package/template/src/components/RTMEvents.tsx +84 -0
  101. package/template/src/components/Settings.tsx +19 -16
  102. package/template/src/components/Share.tsx +131 -62
  103. package/template/src/components/StorageContext.tsx +2 -0
  104. package/template/src/hooks/useImageDelay.tsx +28 -0
  105. package/template/src/pages/Authenticate.tsx +5 -4
  106. package/template/src/pages/Create.tsx +26 -16
  107. package/template/src/pages/Join.tsx +13 -30
  108. package/template/src/pages/VideoCall.tsx +181 -137
  109. package/template/src/subComponents/.DS_Store +0 -0
  110. package/template/src/subComponents/ChatContainer.tsx +40 -28
  111. package/template/src/subComponents/CopyJoinInfo.tsx +9 -12
  112. package/template/src/subComponents/LocalAudioMute.tsx +9 -9
  113. package/template/src/subComponents/LocalVideoMute.tsx +9 -9
  114. package/template/src/subComponents/LogoutButton.tsx +1 -1
  115. package/template/src/subComponents/NetworkQualityPill.tsx +161 -0
  116. package/template/src/subComponents/Recording.tsx +12 -16
  117. package/template/src/subComponents/RemoteAudioMute.tsx +23 -27
  118. package/template/src/subComponents/RemoteEndCall.tsx +7 -15
  119. package/template/src/subComponents/RemoteVideoMute.tsx +15 -28
  120. package/template/src/subComponents/ScreenShareNotice.tsx +61 -0
  121. package/template/src/subComponents/ScreenshareButton.tsx +76 -75
  122. package/template/src/subComponents/SelectOAuth.tsx +25 -12
  123. package/template/src/subComponents/SwitchCamera.tsx +5 -2
  124. package/template/src/subComponents/TextWithTooltip.native.tsx +128 -0
  125. package/template/src/subComponents/TextWithTooltip.tsx +44 -0
  126. package/template/src/subComponents/toastConfig.tsx +2 -2
  127. package/template/src/utils/hasBrandLogo.tsx +3 -0
  128. package/template/src/utils/isSafariBrowser.tsx +22 -0
  129. package/template/webpack.commons.js +1 -0
  130. package/template/agora-rn-uikit/Components.js +0 -35
  131. package/template/agora-rn-uikit/Contexts.js +0 -7
  132. package/template/agora-rn-uikit/index.js +0 -12
  133. package/template/agora-rn-uikit/src/MinVideoView.tsx +0 -87
  134. package/template/agora-rn-uikit/src/RTCConfigure.tsx +0 -516
@@ -18,15 +18,15 @@ import {
18
18
  ImageBackground,
19
19
  Platform,
20
20
  } from 'react-native';
21
- import MaxUidContext from '../../agora-rn-uikit/src/MaxUidContext';
22
- import {MaxVideoView} from '../../agora-rn-uikit/Components';
21
+ import {MaxUidContext} from '../../agora-rn-uikit';
22
+ import {MaxVideoView} from '../../agora-rn-uikit';
23
23
  import {
24
24
  LocalAudioMute,
25
25
  LocalVideoMute,
26
26
  SwitchCamera,
27
- } from '../../agora-rn-uikit/Components';
28
- import LocalUserContext from '../../agora-rn-uikit/src/LocalUserContext';
29
- import RtcContext from '../../agora-rn-uikit/src/RtcContext';
27
+ } from '../../agora-rn-uikit';
28
+ import {LocalUserContext} from '../../agora-rn-uikit';
29
+ import {RtcContext} from '../../agora-rn-uikit';
30
30
  // import ColorContext from './ColorContext';
31
31
  import TextInput from '../atoms/TextInput';
32
32
  import Error from '../subComponents/Error';
@@ -46,24 +46,29 @@ const Precall = (props: any) => {
46
46
  <View style={style.heading}>
47
47
  <Text style={style.headingText}>Precall </Text>
48
48
  </View>
49
- <View style={{zIndex: 50, position: 'absolute', width: '100%', left: '18%', top: 10, alignSelf: 'center'}}>
49
+ <View
50
+ style={{
51
+ zIndex: 50,
52
+ position: 'absolute',
53
+ width: '100%',
54
+ left: '18%',
55
+ top: 10,
56
+ alignSelf: 'center',
57
+ }}>
50
58
  {error ? <Error error={error} showBack={true} /> : <></>}
51
59
  </View>
52
60
  <View style={style.full}>
53
61
  <MaxVideoView user={maxUsers[0]} key={maxUsers[0].uid} />
54
62
  </View>
55
63
  {Platform.OS === 'ios' ? (
56
- <View
57
- style={style.textInputHolder}>
64
+ <View style={style.textInputHolder}>
58
65
  <TextInput
59
66
  value={username}
60
67
  onChangeText={(text) => {
61
- if (username !== 'Getting name...') {
62
- setUsername(text);
63
- }
68
+ setUsername(text);
64
69
  }}
65
70
  onSubmitEditing={() => {}}
66
- placeholder="Display Name"
71
+ placeholder={queryComplete ? 'Display name*' : 'Getting name...'}
67
72
  />
68
73
  </View>
69
74
  ) : (
@@ -71,23 +76,28 @@ const Precall = (props: any) => {
71
76
  <TextInput
72
77
  value={username}
73
78
  onChangeText={(text) => {
74
- if (username !== 'Getting name...') {
75
- setUsername(text);
76
- }
79
+ setUsername(text);
77
80
  }}
78
81
  onSubmitEditing={() => {}}
79
- placeholder="Display Name"
82
+ placeholder={queryComplete ? 'Display name*' : 'Getting name...'}
83
+ editable={queryComplete}
80
84
  />
81
85
  </View>
82
86
  )}
83
87
  <View style={{height: 20}} />
84
88
  <View style={style.controls}>
85
89
  <LocalUserContext>
86
- <LocalVideoMute />
90
+ <View style={style.width50}>
91
+ <LocalVideoMute />
92
+ </View>
87
93
  <View style={style.width50} />
88
- <LocalAudioMute />
94
+ <View style={style.width50}>
95
+ <LocalAudioMute />
96
+ </View>
89
97
  <View style={style.width50} />
90
- <SwitchCamera />
98
+ <View style={style.width50}>
99
+ <SwitchCamera />
100
+ </View>
91
101
  </LocalUserContext>
92
102
  </View>
93
103
  <View
@@ -95,10 +105,14 @@ const Precall = (props: any) => {
95
105
  // disabled={!queryComplete}
96
106
  style={{marginBottom: 50}}>
97
107
  {/* <Text style={style.buttonText}> */}
98
- {/* {queryComplete ? 'Join Room' : 'Loading...'} */}
108
+ {/* {queryComplete ? 'Join Room' : 'Loading...'} */}
99
109
  {/* </Text> */}
100
- {/* </TouchableOpacity> */}
101
- <PrimaryButton text={"Join Room"} disabled={!queryComplete} onPress={() => setCallActive(true)} />
110
+ {/* </TouchableOpacity> */}
111
+ <PrimaryButton
112
+ text={'Join Room'}
113
+ disabled={!queryComplete || username.trim() === ''}
114
+ onPress={() => setCallActive(true)}
115
+ />
102
116
  </View>
103
117
  {/* </ImageBackground> */}
104
118
  </View>
@@ -132,7 +146,12 @@ const style = StyleSheet.create({
132
146
  minHeight: 45,
133
147
  alignSelf: 'center',
134
148
  },
135
- controls: {flex: 0.2, flexDirection: 'row', alignSelf: 'center', padding: 5},
149
+ controls: {
150
+ flex: 0.2,
151
+ flexDirection: 'row',
152
+ alignSelf: 'center',
153
+ padding: 5,
154
+ },
136
155
  width50: {width: 50},
137
156
  buttonActive: {
138
157
  backgroundColor: $config.PRIMARY_COLOR,
@@ -1,48 +1,54 @@
1
1
  /*
2
2
  ********************************************
3
3
  Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
- AppBuilder and all associated components, source code, APIs, services, and documentation
5
- (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
- accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
- Use without a license or in violation of any license terms and conditions (including use for
8
- any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
- information visit https://appbuilder.agora.io.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useState, useContext} from 'react';
13
- import {
14
- View,
15
- Text,
16
- StyleSheet,
17
- Dimensions,
18
- Platform,
19
- } from 'react-native';
12
+ import React, {useState, useContext, useEffect} from 'react';
13
+ import {View, Text, StyleSheet, Dimensions, Platform} from 'react-native';
20
14
  import TextInput from '../atoms/TextInput';
21
15
  import PrimaryButton from '../atoms/PrimaryButton';
22
- import {MaxUidConsumer} from '../../agora-rn-uikit/src/MaxUidContext';
23
- import {MaxVideoView} from '../../agora-rn-uikit/Components';
24
- import {LocalAudioMute, LocalVideoMute} from '../../agora-rn-uikit/Components';
25
- import LocalUserContext from '../../agora-rn-uikit/src/LocalUserContext';
16
+
17
+ import {
18
+ MaxUidConsumer,
19
+ MaxVideoView,
20
+ LocalAudioMute,
21
+ LocalVideoMute,
22
+ LocalUserContext,
23
+ } from '../../agora-rn-uikit';
24
+
26
25
  import SelectDevice from '../subComponents/SelectDevice';
27
26
  import Logo from '../subComponents/Logo';
28
- // import OpenInNativeButton from '../subComponents/OpenInNativeButton';
27
+ import hasBrandLogo from '../utils/hasBrandLogo';
29
28
  import ColorContext from './ColorContext';
30
- // import {useHistory} from './Router';
31
- // import {precallCard} from '../../theme.json';
32
29
  import Error from '../subComponents/Error';
33
30
 
34
31
  const Precall = (props: any) => {
35
32
  const {primaryColor} = useContext(ColorContext);
36
- const {setCallActive, queryComplete, username, setUsername, error} = props;
33
+ const {setCallActive, queryComplete, username, setUsername, error, title} = props;
37
34
  const [dim, setDim] = useState([
38
35
  Dimensions.get('window').width,
39
36
  Dimensions.get('window').height,
40
37
  Dimensions.get('window').width > Dimensions.get('window').height,
41
38
  ]);
39
+
42
40
  let onLayout = (e: any) => {
43
41
  setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
44
42
  };
45
43
 
44
+ useEffect(()=>{
45
+ if(Platform.OS === 'web'){
46
+ if(title){
47
+ document.title = title + ' | ' + $config.APP_NAME
48
+ }
49
+ }
50
+ })
51
+
46
52
  return (
47
53
  // <ImageBackground
48
54
  // onLayout={onLayout}
@@ -50,7 +56,7 @@ const Precall = (props: any) => {
50
56
  // resizeMode={'cover'}>
51
57
  <View style={style.main} onLayout={onLayout}>
52
58
  <View style={style.nav}>
53
- <Logo />
59
+ {hasBrandLogo && <Logo />}
54
60
  {error ? <Error error={error} showBack={true} /> : <></>}
55
61
  {/* <OpenInNativeButton /> */}
56
62
  </View>
@@ -67,25 +73,9 @@ const Precall = (props: any) => {
67
73
  <LocalUserContext>
68
74
  <View style={{alignSelf: 'center'}}>
69
75
  <LocalVideoMute />
70
- {/* <Text
71
- style={{
72
- textAlign: 'center',
73
- marginTop: 5,
74
- color: $config.PRIMARY_COLOR,
75
- }}>
76
- Video
77
- </Text> */}
78
76
  </View>
79
77
  <View style={{alignSelf: 'center'}}>
80
78
  <LocalAudioMute />
81
- {/* <Text
82
- style={{
83
- textAlign: 'center',
84
- marginTop: 5,
85
- color: $config.PRIMARY_COLOR,
86
- }}>
87
- Audio
88
- </Text> */}
89
79
  </View>
90
80
  </LocalUserContext>
91
81
  </View>
@@ -94,17 +84,18 @@ const Precall = (props: any) => {
94
84
  <TextInput
95
85
  value={username}
96
86
  onChangeText={(text) => {
97
- if (username !== 'Getting name...') {
98
- setUsername(text);
99
- }
87
+ setUsername(text);
100
88
  }}
101
89
  onSubmitEditing={() => {}}
102
- placeholder="Display Name"
90
+ placeholder={
91
+ queryComplete ? 'Display name*' : 'Getting name...'
92
+ }
93
+ editable={queryComplete}
103
94
  />
104
95
  <View style={style.margin5Btm} />
105
96
  <PrimaryButton
106
97
  onPress={() => setCallActive(true)}
107
- disabled={!queryComplete}
98
+ disabled={!queryComplete || username.trim() === ''}
108
99
  text={queryComplete ? 'Join Room' : 'Loading...'}
109
100
  />
110
101
  </View>
@@ -132,6 +123,10 @@ const Precall = (props: any) => {
132
123
  justifyContent: 'center',
133
124
  marginBottom: '10%',
134
125
  }}>
126
+ <Text style={[style.titleHeading, {color: $config.PRIMARY_COLOR}]}>
127
+ {title}
128
+ </Text>
129
+ <View style={{height: 20}} />
135
130
  <View style={[{shadowColor: primaryColor}, style.precallPickers]}>
136
131
  {/* <View style={{flex: 1}}> */}
137
132
  <Text
@@ -140,7 +135,11 @@ const Precall = (props: any) => {
140
135
  </Text>
141
136
  {/* </View> */}
142
137
  <View style={{height: 20}} />
143
- <View style={{flex: 1, maxWidth: Platform.OS === 'web'? '25vw' : 'auto'}}>
138
+ <View
139
+ style={{
140
+ flex: 1,
141
+ maxWidth: Platform.OS === 'web' ? '25vw' : 'auto',
142
+ }}>
144
143
  <SelectDevice />
145
144
  </View>
146
145
  <View
@@ -154,17 +153,18 @@ const Precall = (props: any) => {
154
153
  <TextInput
155
154
  value={username}
156
155
  onChangeText={(text) => {
157
- if (username !== 'Getting name...') {
158
- setUsername(text);
159
- }
156
+ setUsername(text);
160
157
  }}
161
158
  onSubmitEditing={() => {}}
162
- placeholder="Display Name"
159
+ placeholder={
160
+ queryComplete ? 'Display name*' : 'Getting name...'
161
+ }
162
+ editable={queryComplete}
163
163
  />
164
164
  <View style={{height: 20}} />
165
165
  <PrimaryButton
166
166
  onPress={() => setCallActive(true)}
167
- disabled={!queryComplete}
167
+ disabled={!queryComplete || username.trim() === ''}
168
168
  text={queryComplete ? 'Join Room' : 'Loading...'}
169
169
  />
170
170
  </View>
@@ -204,11 +204,16 @@ const style = StyleSheet.create({
204
204
  marginBottom: '1%',
205
205
  // marginRight: '5%',
206
206
  },
207
- subHeading: {
207
+ titleHeading: {
208
208
  fontSize: 28,
209
209
  fontWeight: '700',
210
210
  color: $config.SECONDARY_FONT_COLOR,
211
211
  },
212
+ subHeading: {
213
+ fontSize: 18,
214
+ fontWeight: '700',
215
+ color: $config.SECONDARY_FONT_COLOR,
216
+ },
212
217
  headline: {
213
218
  fontSize: 20,
214
219
  fontWeight: '400',