End of first session
This commit is contained in:
parent
96e24551bb
commit
6b4085043c
|
@ -127,7 +127,7 @@ const ActionSheetContentWithInputAndSubmit = ({
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
<FooterButtons
|
<FooterButtons
|
||||||
confirmBackgroundColor={confirmBackgroundColor || colors.actionTintColor}
|
confirmBackgroundColor={confirmBackgroundColor || colors.tintColor}
|
||||||
cancelAction={onCancel || hideActionSheet}
|
cancelAction={onCancel || hideActionSheet}
|
||||||
confirmAction={() => onSubmit(inputValue)}
|
confirmAction={() => onSubmit(inputValue)}
|
||||||
cancelTitle={i18n.t('Cancel')}
|
cancelTitle={i18n.t('Cancel')}
|
||||||
|
|
|
@ -36,8 +36,8 @@ const BackgroundContainer = ({ text, loading }: IBackgroundContainer): React.Rea
|
||||||
return (
|
return (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<ImageBackground source={{ uri: `message_empty_${theme}` }} style={styles.image} />
|
<ImageBackground source={{ uri: `message_empty_${theme}` }} style={styles.image} />
|
||||||
{text && !loading ? <Text style={[styles.text, { color: themes[theme].auxiliaryTintColor }]}>{text}</Text> : null}
|
{text && !loading ? <Text style={[styles.text, { color: themes[theme].auxiliaryText }]}>{text}</Text> : null}
|
||||||
{loading ? <ActivityIndicator style={styles.text} color={themes[theme].auxiliaryTintColor} /> : null}
|
{loading ? <ActivityIndicator style={styles.text} color={themes[theme].auxiliaryText} /> : null}
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -61,7 +61,7 @@ const Button = ({
|
||||||
disabled={disabled || loading}
|
disabled={disabled || loading}
|
||||||
style={[
|
style={[
|
||||||
styles.container,
|
styles.container,
|
||||||
backgroundColor ? { backgroundColor } : { backgroundColor: isPrimary ? colors.actionTintColor : colors.backgroundColor },
|
backgroundColor ? { backgroundColor } : { backgroundColor: isPrimary ? colors.tintColor : colors.backgroundColor },
|
||||||
disabled && styles.disabled,
|
disabled && styles.disabled,
|
||||||
style
|
style
|
||||||
]}
|
]}
|
||||||
|
|
|
@ -20,7 +20,7 @@ const ServicesSeparator = ({ services, separator, collapsed, onPress }: IService
|
||||||
type='secondary'
|
type='secondary'
|
||||||
onPress={onPress}
|
onPress={onPress}
|
||||||
style={styles.options}
|
style={styles.options}
|
||||||
color={colors.actionTintColor}
|
color={colors.tintColor}
|
||||||
/>
|
/>
|
||||||
<OrSeparator theme={theme} />
|
<OrSeparator theme={theme} />
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -38,7 +38,7 @@ const Item = ({ item }: IMessageBoxCommandsPreviewItem) => {
|
||||||
{loading ? <ActivityIndicator /> : null}
|
{loading ? <ActivityIndicator /> : null}
|
||||||
</FastImage>
|
</FastImage>
|
||||||
) : (
|
) : (
|
||||||
<CustomIcon name='attach' size={36} color={themes[theme].actionTintColor} />
|
<CustomIcon name='attach' size={36} color={themes[theme].tintColor} />
|
||||||
)}
|
)}
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
);
|
);
|
||||||
|
|
|
@ -45,7 +45,7 @@ const MentionItemContent = React.memo(({ trackingType, item }: IMessageBoxMentio
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Text style={[styles.cannedItem, { color: themes[theme].titleText }]}>!{item.shortcut}</Text>
|
<Text style={[styles.cannedItem, { color: themes[theme].titleText }]}>!{item.shortcut}</Text>
|
||||||
<Text numberOfLines={1} style={[styles.cannedMentionText, { color: themes[theme].auxiliaryTintColor }]}>
|
<Text numberOfLines={1} style={[styles.cannedMentionText, { color: themes[theme].auxiliaryText }]}>
|
||||||
{item.text}
|
{item.text}
|
||||||
</Text>
|
</Text>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -197,7 +197,7 @@ export default class RecordAudio extends React.PureComponent<IMessageBoxRecordAu
|
||||||
return (
|
return (
|
||||||
<BorderlessButton onPress={this.startRecordingAudio} style={styles.actionButton} testID='messagebox-send-audio'>
|
<BorderlessButton onPress={this.startRecordingAudio} style={styles.actionButton} testID='messagebox-send-audio'>
|
||||||
<View accessible accessibilityLabel={I18n.t('Send_audio_message')} accessibilityRole='button'>
|
<View accessible accessibilityLabel={I18n.t('Send_audio_message')} accessibilityRole='button'>
|
||||||
<CustomIcon name='microphone' size={24} color={themes[theme].auxiliaryTintColor} />
|
<CustomIcon name='microphone' size={24} color={themes[theme].auxiliaryText} />
|
||||||
</View>
|
</View>
|
||||||
</BorderlessButton>
|
</BorderlessButton>
|
||||||
);
|
);
|
||||||
|
|
|
@ -24,7 +24,7 @@ const BaseButton = ({ accessibilityLabel, icon, color, ...props }: IBaseButton)
|
||||||
accessible
|
accessible
|
||||||
accessibilityLabel={accessibilityLabel ? i18n.t(accessibilityLabel) : accessibilityLabel}
|
accessibilityLabel={accessibilityLabel ? i18n.t(accessibilityLabel) : accessibilityLabel}
|
||||||
accessibilityRole='button'>
|
accessibilityRole='button'>
|
||||||
<CustomIcon name={icon} size={24} color={color || themes[theme].auxiliaryTintColor} />
|
<CustomIcon name={icon} size={24} color={color || themes[theme].auxiliaryText} />
|
||||||
</View>
|
</View>
|
||||||
</BorderlessButton>
|
</BorderlessButton>
|
||||||
);
|
);
|
||||||
|
|
|
@ -135,7 +135,7 @@ export const FormTextInput = ({
|
||||||
|
|
||||||
{showClearInput ? (
|
{showClearInput ? (
|
||||||
<Touchable onPress={onClearInput} style={[styles.iconContainer, styles.iconRight]} testID='clear-text-input'>
|
<Touchable onPress={onClearInput} style={[styles.iconContainer, styles.iconRight]} testID='clear-text-input'>
|
||||||
<CustomIcon name='input-clear' size={20} color={colors.auxiliaryTintColor} />
|
<CustomIcon name='input-clear' size={20} color={colors.auxiliaryText} />
|
||||||
</Touchable>
|
</Touchable>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ const ThreadDetails = ({ item, user, badgeColor, toggleFollowThread, style }: IT
|
||||||
<CustomIcon
|
<CustomIcon
|
||||||
size={24}
|
size={24}
|
||||||
name={isFollowing ? 'notification' : 'notification-disabled'}
|
name={isFollowing ? 'notification' : 'notification-disabled'}
|
||||||
color={themes[theme].auxiliaryTintColor}
|
color={themes[theme].auxiliaryText}
|
||||||
/>
|
/>
|
||||||
</Touchable>
|
</Touchable>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -71,7 +71,7 @@ const UserItem = ({ name, username, onPress, testID, onLongPress, style, icon, t
|
||||||
@{username}
|
@{username}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
{icon ? <CustomIcon name={icon} size={22} color={themes[theme].actionTintColor} style={styles.icon} /> : null}
|
{icon ? <CustomIcon name={icon} size={22} color={themes[theme].tintColor} style={styles.icon} /> : null}
|
||||||
</View>
|
</View>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
);
|
);
|
||||||
|
|
|
@ -37,7 +37,7 @@ const Link = React.memo(({ children, link, theme, onLinkPress }: ILink) => {
|
||||||
|
|
||||||
// if you have a [](https://rocket.chat) render https://rocket.chat
|
// if you have a [](https://rocket.chat) render https://rocket.chat
|
||||||
return (
|
return (
|
||||||
<Text onPress={handlePress} onLongPress={onLongPress} style={{ ...styles.link, color: themes[theme].actionTintColor }}>
|
<Text onPress={handlePress} onLongPress={onLongPress} style={{ ...styles.link, color: themes[theme].tintColor }}>
|
||||||
{childLength !== 0 ? children : link}
|
{childLength !== 0 ? children : link}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
|
|
|
@ -26,7 +26,7 @@ const MessageImage = ({ img, theme }: TMessageImage) => (
|
||||||
resizeMode={FastImage.resizeMode.cover}
|
resizeMode={FastImage.resizeMode.cover}
|
||||||
indicator={Progress.Pie}
|
indicator={Progress.Pie}
|
||||||
indicatorProps={{
|
indicatorProps={{
|
||||||
color: themes[theme].actionTintColor
|
color: themes[theme].tintColor
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
@ -39,7 +39,7 @@ const Link = ({ value }: ILinkProps) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Text onPress={handlePress} onLongPress={onLongPress} style={[styles.link, { color: themes[theme].actionTintColor }]}>
|
<Text onPress={handlePress} onLongPress={onLongPress} style={[styles.link, { color: themes[theme].tintColor }]}>
|
||||||
{(block => {
|
{(block => {
|
||||||
switch (block.type) {
|
switch (block.type) {
|
||||||
case 'PLAIN_TEXT':
|
case 'PLAIN_TEXT':
|
||||||
|
|
|
@ -50,7 +50,7 @@ export const MessageImage = React.memo(({ imgUri, theme }: { imgUri: string; the
|
||||||
resizeMode={FastImage.resizeMode.cover}
|
resizeMode={FastImage.resizeMode.cover}
|
||||||
indicator={Progress.Pie}
|
indicator={Progress.Pie}
|
||||||
indicatorProps={{
|
indicatorProps={{
|
||||||
color: themes[theme].actionTintColor
|
color: themes[theme].tintColor
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
|
|
|
@ -98,7 +98,7 @@ const Title = React.memo(
|
||||||
return (
|
return (
|
||||||
<View style={styles.authorContainer}>
|
<View style={styles.authorContainer}>
|
||||||
{attachment.author_name ? (
|
{attachment.author_name ? (
|
||||||
<Text style={[styles.author, { color: themes[theme].auxiliaryTintColor }]}>{attachment.author_name}</Text>
|
<Text style={[styles.author, { color: themes[theme].auxiliaryText }]}>{attachment.author_name}</Text>
|
||||||
) : null}
|
) : null}
|
||||||
{time ? <Text style={[messageStyles.time, { color: themes[theme].auxiliaryText }]}>{time}</Text> : null}
|
{time ? <Text style={[messageStyles.time, { color: themes[theme].auxiliaryText }]}>{time}</Text> : null}
|
||||||
{attachment.title ? <Text style={[styles.title, { color: themes[theme].bodyText }]}>{attachment.title}</Text> : null}
|
{attachment.title ? <Text style={[styles.title, { color: themes[theme].bodyText }]}>{attachment.title}</Text> : null}
|
||||||
|
@ -127,7 +127,7 @@ const Description = React.memo(
|
||||||
return (
|
return (
|
||||||
<Markdown
|
<Markdown
|
||||||
msg={text}
|
msg={text}
|
||||||
style={[{ color: themes[theme].auxiliaryTintColor, fontSize: 14 }]}
|
style={[{ color: themes[theme].auxiliaryText, fontSize: 14 }]}
|
||||||
baseUrl={baseUrl}
|
baseUrl={baseUrl}
|
||||||
username={user.username}
|
username={user.username}
|
||||||
getCustomEmoji={getCustomEmoji}
|
getCustomEmoji={getCustomEmoji}
|
||||||
|
@ -253,7 +253,7 @@ const Reply = React.memo(
|
||||||
attachments={attachment.attachments}
|
attachments={attachment.attachments}
|
||||||
getCustomEmoji={getCustomEmoji}
|
getCustomEmoji={getCustomEmoji}
|
||||||
timeFormat={timeFormat}
|
timeFormat={timeFormat}
|
||||||
style={[{ color: themes[theme].auxiliaryTintColor, fontSize: 14, marginBottom: 8 }]}
|
style={[{ color: themes[theme].auxiliaryText, fontSize: 14, marginBottom: 8 }]}
|
||||||
isReply
|
isReply
|
||||||
/>
|
/>
|
||||||
<UrlImage image={attachment.thumb_url} />
|
<UrlImage image={attachment.thumb_url} />
|
||||||
|
|
|
@ -21,7 +21,7 @@ const OmnichannelQueue = ({ queueSize, onPress }: IOmnichannelQueue) => {
|
||||||
<List.Item
|
<List.Item
|
||||||
title='Omnichannel_queue'
|
title='Omnichannel_queue'
|
||||||
heightContainer={50}
|
heightContainer={50}
|
||||||
left={() => <List.Icon name='queue' size={24} color={themes[theme].auxiliaryTintColor} />}
|
left={() => <List.Icon name='queue' size={24} color={themes[theme].auxiliaryText} />}
|
||||||
color={themes[theme].bodyText}
|
color={themes[theme].bodyText}
|
||||||
onPress={queueSize ? onPress : undefined}
|
onPress={queueSize ? onPress : undefined}
|
||||||
styleTitle={styles.titleOmnichannelQueue}
|
styleTitle={styles.titleOmnichannelQueue}
|
||||||
|
@ -33,7 +33,7 @@ const OmnichannelQueue = ({ queueSize, onPress }: IOmnichannelQueue) => {
|
||||||
<CustomIcon name='chevron-right' style={styles.actionIndicator} color={themes[theme].bodyText} size={24} />
|
<CustomIcon name='chevron-right' style={styles.actionIndicator} color={themes[theme].bodyText} size={24} />
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<Text style={[styles.emptyText, { color: themes[theme].auxiliaryTintColor }]}>{i18n.t('Empty')}</Text>
|
<Text style={[styles.emptyText, { color: themes[theme].auxiliaryText }]}>{i18n.t('Empty')}</Text>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -23,7 +23,7 @@ export const colors = {
|
||||||
light: {
|
light: {
|
||||||
backgroundColor: '#ffffff', // surface-light
|
backgroundColor: '#ffffff', // surface-light
|
||||||
// focusedBackground: '#ffffff', // removed in favor of backgroundColor
|
// focusedBackground: '#ffffff', // removed in favor of backgroundColor
|
||||||
chatComponentBackground: 'red',
|
// chatComponentBackground: 'red',
|
||||||
surfaceTint: '#F7F8FA',
|
surfaceTint: '#F7F8FA',
|
||||||
buttonBackgroundSecondaryDefault: '#E4E7EA',
|
buttonBackgroundSecondaryDefault: '#E4E7EA',
|
||||||
buttonBackgroundSecondaryPress: '#9EA2A8',
|
buttonBackgroundSecondaryPress: '#9EA2A8',
|
||||||
|
@ -38,42 +38,42 @@ export const colors = {
|
||||||
separatorColor: '#CBCED1', // strokeLight
|
separatorColor: '#CBCED1', // strokeLight
|
||||||
tintColor: '#156FF5', // buttonBackgroundPrimaryDefault
|
tintColor: '#156FF5', // buttonBackgroundPrimaryDefault
|
||||||
// tintColor: '#549df9', // removed in favor of tintColor
|
// tintColor: '#549df9', // removed in favor of tintColor
|
||||||
tintDisabled: '#88B4F5',
|
// actionTintColor: '#1d74f5', // removed in favor of tintColor
|
||||||
auxiliaryTintColor: '#6C727A',
|
tintDisabled: '#D1EBFE', // buttonBackgroundDisabled
|
||||||
actionTintColor: '#1d74f5',
|
// auxiliaryTintColor: '#6C727A', // removed in favor of auxiliaryText
|
||||||
backdropColor: '#000000',
|
backdropColor: '#000000',
|
||||||
dangerColor: '#f5455c',
|
backdropOpacity: 0.7,
|
||||||
successColor: '#2de0a5',
|
dangerColor: '#EC0D2A', // buttonBackgroundDangerDefault
|
||||||
|
// successColor: '#2de0a5', not used
|
||||||
borderColor: '#9EA2A8', // strokeMedium
|
borderColor: '#9EA2A8', // strokeMedium
|
||||||
navbarBackground: '#ffffff',
|
navbarBackground: '#F7F8FA', // surfaceTint
|
||||||
headerBorder: '#B2B2B2',
|
headerBorder: '#CBCED1', // strokeLight
|
||||||
headerBackground: '#EEEFF1',
|
headerBackground: '#F7F8FA', // surfaceTint
|
||||||
headerSecondaryBackground: '#ffffff',
|
// headerSecondaryBackground: '#ffffff', removed in favor of headerBackground
|
||||||
headerTintColor: '#6C727A',
|
headerTintColor: '#6C727A', // fontSecondaryInfo
|
||||||
headerTitleColor: '#0C0D0F',
|
headerTitleColor: '#1F2329', // fontTitleLabels
|
||||||
headerSecondaryText: '#1d74f5',
|
// headerSecondaryText: '#1d74f5', not used
|
||||||
toastBackground: '#0C0D0F',
|
toastBackground: '#0C0D0F', // strokeExtraDark
|
||||||
videoBackground: '#1f2329',
|
videoBackground: '#0C0D0F', // strokeExtraDark
|
||||||
favoriteBackground: '#ffbb00',
|
favoriteBackground: '#ffbb00', // tbd
|
||||||
hideBackground: '#54585e',
|
hideBackground: '#54585e', // tbd
|
||||||
messageboxBackground: '#ffffff',
|
messageboxBackground: '#F7F8FA', // surfaceTint
|
||||||
searchboxBackground: '#E6E6E7',
|
// searchboxBackground: '#E6E6E7', removed in favor of buttonBackgroundSecondaryDefault
|
||||||
buttonBackground: '#414852',
|
// buttonBackground: '#414852', buttonBackgroundSecondaryDefault
|
||||||
buttonText: '#ffffff',
|
buttonText: '#ffffff', // buttonFontOnPrimary
|
||||||
passcodeBackground: '#EEEFF1',
|
passcodeBackground: '#F7F8FA', // surfaceTint
|
||||||
passcodeButtonActive: '#E4E7EA',
|
passcodeButtonActive: '#9EA2A8', // buttonBackgroundSecondaryPress
|
||||||
passcodeLockIcon: '#6C727A',
|
passcodeLockIcon: '#1F2329', // fontTitleLabels
|
||||||
passcodePrimary: '#2F343D',
|
passcodePrimary: '#1F2329', // fontTitleLabels
|
||||||
passcodeSecondary: '#6C727A',
|
passcodeSecondary: '#6C727A', // fontSecondaryInfo
|
||||||
passcodeDotEmpty: '#CBCED1',
|
passcodeDotEmpty: '#CBCED1', // surfaceLight
|
||||||
passcodeDotFull: '#6C727A',
|
passcodeDotFull: '#9EA2A8', // surfaceMedium
|
||||||
previewBackground: '#1F2329',
|
previewBackground: '#0C0D0F', // strokeExtraDark
|
||||||
previewTintColor: '#f9f9f9',
|
previewTintColor: '#ffffff', // buttonFontOnPrimary change later
|
||||||
backdropOpacity: 0.3,
|
attachmentLoadingOpacity: 0.7, // tbd
|
||||||
attachmentLoadingOpacity: 0.7,
|
collapsibleQuoteBorder: '#CBCED1', // strokeLight
|
||||||
collapsibleQuoteBorder: '#CBCED1',
|
collapsibleChevron: '#6C727A', // fontSecondaryInfo
|
||||||
collapsibleChevron: '#6C727A',
|
cancelButton: '#E4E7EA', // buttonBackgroundSecondaryDefault
|
||||||
cancelButton: '#E4E7EA',
|
|
||||||
...mentions
|
...mentions
|
||||||
},
|
},
|
||||||
dark: {
|
dark: {
|
||||||
|
@ -92,7 +92,7 @@ export const colors = {
|
||||||
auxiliaryText: '#9297a2',
|
auxiliaryText: '#9297a2',
|
||||||
infoText: '#6D6D72',
|
infoText: '#6D6D72',
|
||||||
tintColor: '#1d74f5',
|
tintColor: '#1d74f5',
|
||||||
tintColor: '#549df9',
|
// tintColor: '#549df9',
|
||||||
tintDisabled: '#88B4F5',
|
tintDisabled: '#88B4F5',
|
||||||
auxiliaryTintColor: '#f9f9f9',
|
auxiliaryTintColor: '#f9f9f9',
|
||||||
actionTintColor: '#1d74f5',
|
actionTintColor: '#1d74f5',
|
||||||
|
@ -144,7 +144,7 @@ export const colors = {
|
||||||
auxiliaryText: '#b2b8c6',
|
auxiliaryText: '#b2b8c6',
|
||||||
infoText: '#6d6d72',
|
infoText: '#6d6d72',
|
||||||
tintColor: '#1e9bfe',
|
tintColor: '#1e9bfe',
|
||||||
tintColor: '#76b7fc',
|
// tintColor: '#76b7fc',
|
||||||
tintDisabled: '#88B4F5', // TODO: Evaluate this with design team
|
tintDisabled: '#88B4F5', // TODO: Evaluate this with design team
|
||||||
auxiliaryTintColor: '#f9f9f9',
|
auxiliaryTintColor: '#f9f9f9',
|
||||||
actionTintColor: '#1e9bfe',
|
actionTintColor: '#1e9bfe',
|
||||||
|
|
|
@ -13,9 +13,9 @@ export const defaultHeader = {
|
||||||
cardStyle: { backgroundColor: 'transparent' }
|
cardStyle: { backgroundColor: 'transparent' }
|
||||||
};
|
};
|
||||||
|
|
||||||
export const cardStyle = {
|
// export const cardStyle = {
|
||||||
backgroundColor: 'rgba(0,0,0,0)'
|
// backgroundColor: 'rgba(0,0,0,0)'
|
||||||
};
|
// };
|
||||||
|
|
||||||
export const borderBottom: any = (theme: TSupportedThemes) => ({
|
export const borderBottom: any = (theme: TSupportedThemes) => ({
|
||||||
borderBottomWidth: StyleSheet.hairlineWidth,
|
borderBottomWidth: StyleSheet.hairlineWidth,
|
||||||
|
|
|
@ -149,12 +149,12 @@ const CannedResponseDetail = ({ navigation, route }: ICannedResponseDetailProps)
|
||||||
<View style={styles.cannedTagContainer}>
|
<View style={styles.cannedTagContainer}>
|
||||||
{cannedResponse?.tags?.length > 0 ? (
|
{cannedResponse?.tags?.length > 0 ? (
|
||||||
cannedResponse.tags.map(t => (
|
cannedResponse.tags.map(t => (
|
||||||
<View style={[styles.cannedTagWrap, { backgroundColor: themes[theme].searchboxBackground }]}>
|
<View style={[styles.cannedTagWrap, { backgroundColor: themes[theme].buttonBackgroundSecondaryDefault }]}>
|
||||||
<Text style={[styles.cannedTag, { color: themes[theme].auxiliaryTintColor }]}>{t}</Text>
|
<Text style={[styles.cannedTag, { color: themes[theme].auxiliaryText }]}>{t}</Text>
|
||||||
</View>
|
</View>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
<Text style={[styles.cannedText, { color: themes[theme].auxiliaryTintColor }]}>-</Text>
|
<Text style={[styles.cannedText, { color: themes[theme].auxiliaryText }]}>-</Text>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -32,7 +32,7 @@ const CannedResponseItem = ({
|
||||||
<View style={styles.cannedRow}>
|
<View style={styles.cannedRow}>
|
||||||
<View style={styles.cannedWrapShortcutScope}>
|
<View style={styles.cannedWrapShortcutScope}>
|
||||||
<Text style={[styles.cannedShortcut, { color: themes[theme].titleText }]}>!{shortcut}</Text>
|
<Text style={[styles.cannedShortcut, { color: themes[theme].titleText }]}>!{shortcut}</Text>
|
||||||
<Text style={[styles.cannedScope, { color: themes[theme].auxiliaryTintColor }]}>{scope}</Text>
|
<Text style={[styles.cannedScope, { color: themes[theme].auxiliaryText }]}>{scope}</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -44,14 +44,14 @@ const CannedResponseItem = ({
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<Text ellipsizeMode='tail' numberOfLines={2} style={[styles.cannedText, { color: themes[theme].auxiliaryTintColor }]}>
|
<Text ellipsizeMode='tail' numberOfLines={2} style={[styles.cannedText, { color: themes[theme].auxiliaryText }]}>
|
||||||
“{text}”
|
“{text}”
|
||||||
</Text>
|
</Text>
|
||||||
<View style={styles.cannedTagContainer}>
|
<View style={styles.cannedTagContainer}>
|
||||||
{tags?.length > 0
|
{tags?.length > 0
|
||||||
? tags.map(t => (
|
? tags.map(t => (
|
||||||
<View style={[styles.cannedTagWrap, { backgroundColor: themes[theme].searchboxBackground }]}>
|
<View style={[styles.cannedTagWrap, { backgroundColor: themes[theme].buttonBackgroundSecondaryDefault }]}>
|
||||||
<Text style={[styles.cannedTag, { color: themes[theme].auxiliaryTintColor }]}>{t}</Text>
|
<Text style={[styles.cannedTag, { color: themes[theme].auxiliaryText }]}>{t}</Text>
|
||||||
</View>
|
</View>
|
||||||
))
|
))
|
||||||
: null}
|
: null}
|
||||||
|
|
|
@ -107,7 +107,7 @@ export default class DirectoryOptions extends PureComponent<IDirectoryOptionsPro
|
||||||
style={[styles.dropdownItemIcon, styles.inverted]}
|
style={[styles.dropdownItemIcon, styles.inverted]}
|
||||||
size={22}
|
size={22}
|
||||||
name='chevron-down'
|
name='chevron-down'
|
||||||
color={themes[theme].auxiliaryTintColor}
|
color={themes[theme].auxiliaryText}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
</Touch>
|
</Touch>
|
||||||
|
|
|
@ -219,12 +219,7 @@ class DirectoryView extends React.Component<IDirectoryViewProps, IDirectoryViewS
|
||||||
]}>
|
]}>
|
||||||
<CustomIcon name={icon} size={20} color={themes[theme].tintColor} style={styles.toggleDropdownIcon} />
|
<CustomIcon name={icon} size={20} color={themes[theme].tintColor} style={styles.toggleDropdownIcon} />
|
||||||
<Text style={[styles.toggleDropdownText, { color: themes[theme].tintColor }]}>{I18n.t(text)}</Text>
|
<Text style={[styles.toggleDropdownText, { color: themes[theme].tintColor }]}>{I18n.t(text)}</Text>
|
||||||
<CustomIcon
|
<CustomIcon name='chevron-down' size={20} color={themes[theme].auxiliaryText} style={styles.toggleDropdownArrow} />
|
||||||
name='chevron-down'
|
|
||||||
size={20}
|
|
||||||
color={themes[theme].auxiliaryTintColor}
|
|
||||||
style={styles.toggleDropdownArrow}
|
|
||||||
/>
|
|
||||||
</View>
|
</View>
|
||||||
</Touch>
|
</Touch>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -87,7 +87,7 @@ const DisplayPrefsView = (): React.ReactElement => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderCheckBox = (value: boolean) => (
|
const renderCheckBox = (value: boolean) => (
|
||||||
<List.Icon name={value ? 'checkbox-checked' : 'checkbox-unchecked'} color={value ? colors.actionTintColor : null} />
|
<List.Icon name={value ? 'checkbox-checked' : 'checkbox-unchecked'} color={value ? colors.tintColor : null} />
|
||||||
);
|
);
|
||||||
|
|
||||||
const renderAvatarSwitch = (value: boolean) => (
|
const renderAvatarSwitch = (value: boolean) => (
|
||||||
|
@ -95,7 +95,7 @@ const DisplayPrefsView = (): React.ReactElement => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const renderRadio = (value: boolean) => (
|
const renderRadio = (value: boolean) => (
|
||||||
<RadioButton selected={!!value} color={value ? colors.actionTintColor : colors.auxiliaryText} size={ICON_SIZE} />
|
<RadioButton selected={!!value} color={value ? colors.tintColor : colors.auxiliaryText} size={ICON_SIZE} />
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -100,7 +100,7 @@ class InviteUsersEditView extends React.Component<IInviteUsersEditViewProps, any
|
||||||
renderPicker = (key: 'days' | 'maxUses', first: string) => {
|
renderPicker = (key: 'days' | 'maxUses', first: string) => {
|
||||||
const { props } = this;
|
const { props } = this;
|
||||||
const { theme } = props;
|
const { theme } = props;
|
||||||
const textInputStyle: TextInputProps = { style: { ...styles.pickerText, color: themes[theme].actionTintColor } };
|
const textInputStyle: TextInputProps = { style: { ...styles.pickerText, color: themes[theme].tintColor } };
|
||||||
const firstEl = [
|
const firstEl = [
|
||||||
{
|
{
|
||||||
label: I18n.t(first),
|
label: I18n.t(first),
|
||||||
|
|
|
@ -212,7 +212,7 @@ class LoginView extends React.Component<ILoginViewProps, ILoginViewState> {
|
||||||
{I18n.t('Dont_Have_An_Account')}
|
{I18n.t('Dont_Have_An_Account')}
|
||||||
</Text>
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
style={[styles.bottomContainerTextBold, { color: themes[theme].actionTintColor }]}
|
style={[styles.bottomContainerTextBold, { color: themes[theme].tintColor }]}
|
||||||
onPress={this.register}
|
onPress={this.register}
|
||||||
testID='login-view-register'>
|
testID='login-view-register'>
|
||||||
{I18n.t('Create_account')}
|
{I18n.t('Create_account')}
|
||||||
|
|
|
@ -139,7 +139,7 @@ class NotificationPreferencesView extends React.Component<INotificationPreferenc
|
||||||
const { theme } = this.props;
|
const { theme } = this.props;
|
||||||
const text = room[key] ? OPTIONS[key].find(option => option.value === room[key]) : (OPTIONS[key][0] as IOptionsField);
|
const text = room[key] ? OPTIONS[key].find(option => option.value === room[key]) : (OPTIONS[key][0] as IOptionsField);
|
||||||
return (
|
return (
|
||||||
<Text style={[styles.pickerText, { color: themes[theme].actionTintColor }]}>
|
<Text style={[styles.pickerText, { color: themes[theme].tintColor }]}>
|
||||||
{text?.label ? I18n.t(text?.label, { defaultValue: text?.label, second: text?.second }) : text?.label}
|
{text?.label ? I18n.t(text?.label, { defaultValue: text?.label, second: text?.second }) : text?.label}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
|
|
|
@ -106,7 +106,7 @@ class ReadReceiptView extends React.Component<IReadReceiptViewProps, IReadReceip
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<View style={[styles.listEmptyContainer, { backgroundColor: themes[theme].backgroundColor }]} testID='read-receipt-view'>
|
<View style={[styles.listEmptyContainer, { backgroundColor: themes[theme].backgroundColor }]} testID='read-receipt-view'>
|
||||||
<Text style={[styles.emptyText, { color: themes[theme].auxiliaryTintColor }]}>{I18n.t('No_Read_Receipts')}</Text>
|
<Text style={[styles.emptyText, { color: themes[theme].auxiliaryText }]}>{I18n.t('No_Read_Receipts')}</Text>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -310,13 +310,13 @@ class RegisterView extends React.Component<IProps, any> {
|
||||||
<Text style={[styles.bottomContainerText, { color: themes[theme].auxiliaryText }]}>
|
<Text style={[styles.bottomContainerText, { color: themes[theme].auxiliaryText }]}>
|
||||||
{`${I18n.t('Onboarding_agree_terms')}\n`}
|
{`${I18n.t('Onboarding_agree_terms')}\n`}
|
||||||
<Text
|
<Text
|
||||||
style={[styles.bottomContainerTextBold, { color: themes[theme].actionTintColor }]}
|
style={[styles.bottomContainerTextBold, { color: themes[theme].tintColor }]}
|
||||||
onPress={() => this.openContract('terms-of-service')}>
|
onPress={() => this.openContract('terms-of-service')}>
|
||||||
{I18n.t('Terms_of_Service')}
|
{I18n.t('Terms_of_Service')}
|
||||||
</Text>{' '}
|
</Text>{' '}
|
||||||
{I18n.t('and')}
|
{I18n.t('and')}
|
||||||
<Text
|
<Text
|
||||||
style={[styles.bottomContainerTextBold, { color: themes[theme].actionTintColor }]}
|
style={[styles.bottomContainerTextBold, { color: themes[theme].tintColor }]}
|
||||||
onPress={() => this.openContract('privacy-policy')}>
|
onPress={() => this.openContract('privacy-policy')}>
|
||||||
{' '}
|
{' '}
|
||||||
{I18n.t('Privacy_Policy')}
|
{I18n.t('Privacy_Policy')}
|
||||||
|
@ -329,7 +329,7 @@ class RegisterView extends React.Component<IProps, any> {
|
||||||
<Text style={[styles.bottomContainerText, { color: themes[theme].auxiliaryText }]}>
|
<Text style={[styles.bottomContainerText, { color: themes[theme].auxiliaryText }]}>
|
||||||
{I18n.t('Do_you_have_an_account')}
|
{I18n.t('Do_you_have_an_account')}
|
||||||
</Text>
|
</Text>
|
||||||
<Text style={[styles.bottomContainerTextBold, { color: themes[theme].actionTintColor }]} onPress={this.login}>
|
<Text style={[styles.bottomContainerTextBold, { color: themes[theme].tintColor }]} onPress={this.login}>
|
||||||
{I18n.t('Login')}
|
{I18n.t('Login')}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -740,7 +740,7 @@ class RoomInfoEditView extends React.Component<IRoomInfoEditViewProps, IRoomInfo
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={[
|
style={[
|
||||||
styles.buttonContainer,
|
styles.buttonContainer,
|
||||||
{ backgroundColor: themes[theme].buttonBackground },
|
{ backgroundColor: themes[theme].buttonBackgroundSecondaryDefault },
|
||||||
!this.formIsChanged() && styles.buttonContainerDisabled
|
!this.formIsChanged() && styles.buttonContainerDisabled
|
||||||
]}
|
]}
|
||||||
onPress={this.submit}
|
onPress={this.submit}
|
||||||
|
|
|
@ -387,8 +387,8 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BorderlessButton onPress={onActionPress} style={styles.roomButton}>
|
<BorderlessButton onPress={onActionPress} style={styles.roomButton}>
|
||||||
<CustomIcon name={iconName} size={30} color={themes[theme].actionTintColor} />
|
<CustomIcon name={iconName} size={30} color={themes[theme].tintColor} />
|
||||||
<Text style={[styles.roomButtonText, { color: themes[theme].actionTintColor }]}>{text}</Text>
|
<Text style={[styles.roomButtonText, { color: themes[theme].tintColor }]}>{text}</Text>
|
||||||
</BorderlessButton>
|
</BorderlessButton>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -339,7 +339,7 @@ class RoomMembersView extends React.Component<IRoomMembersViewProps, IRoomMember
|
||||||
testID={isOwner ? 'action-sheet-set-owner-checked' : 'action-sheet-set-owner-unchecked'}
|
testID={isOwner ? 'action-sheet-set-owner-checked' : 'action-sheet-set-owner-unchecked'}
|
||||||
name={isOwner ? 'checkbox-checked' : 'checkbox-unchecked'}
|
name={isOwner ? 'checkbox-checked' : 'checkbox-unchecked'}
|
||||||
size={20}
|
size={20}
|
||||||
color={isOwner ? themes[theme].tintColor : themes[theme].auxiliaryTintColor}
|
color={isOwner ? themes[theme].tintColor : themes[theme].auxiliaryText}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
testID: 'action-sheet-set-owner'
|
testID: 'action-sheet-set-owner'
|
||||||
|
@ -359,7 +359,7 @@ class RoomMembersView extends React.Component<IRoomMembersViewProps, IRoomMember
|
||||||
testID={isLeader ? 'action-sheet-set-leader-checked' : 'action-sheet-set-leader-unchecked'}
|
testID={isLeader ? 'action-sheet-set-leader-checked' : 'action-sheet-set-leader-unchecked'}
|
||||||
name={isLeader ? 'checkbox-checked' : 'checkbox-unchecked'}
|
name={isLeader ? 'checkbox-checked' : 'checkbox-unchecked'}
|
||||||
size={20}
|
size={20}
|
||||||
color={isLeader ? themes[theme].tintColor : themes[theme].auxiliaryTintColor}
|
color={isLeader ? themes[theme].tintColor : themes[theme].auxiliaryText}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
testID: 'action-sheet-set-leader'
|
testID: 'action-sheet-set-leader'
|
||||||
|
@ -379,7 +379,7 @@ class RoomMembersView extends React.Component<IRoomMembersViewProps, IRoomMember
|
||||||
testID={isModerator ? 'action-sheet-set-moderator-checked' : 'action-sheet-set-moderator-unchecked'}
|
testID={isModerator ? 'action-sheet-set-moderator-checked' : 'action-sheet-set-moderator-unchecked'}
|
||||||
name={isModerator ? 'checkbox-checked' : 'checkbox-unchecked'}
|
name={isModerator ? 'checkbox-checked' : 'checkbox-unchecked'}
|
||||||
size={20}
|
size={20}
|
||||||
color={isModerator ? themes[theme].tintColor : themes[theme].auxiliaryTintColor}
|
color={isModerator ? themes[theme].tintColor : themes[theme].auxiliaryText}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
testID: 'action-sheet-set-moderator'
|
testID: 'action-sheet-set-moderator'
|
||||||
|
|
|
@ -65,7 +65,7 @@ const NavBottomFAB = ({
|
||||||
<Animated.View style={[styles.container, { bottom }]} testID='nav-jump-to-bottom'>
|
<Animated.View style={[styles.container, { bottom }]} testID='nav-jump-to-bottom'>
|
||||||
<Touch onPress={handleOnPress} theme={theme} style={[styles.button, { backgroundColor: themes[theme].backgroundColor }]}>
|
<Touch onPress={handleOnPress} theme={theme} style={[styles.button, { backgroundColor: themes[theme].backgroundColor }]}>
|
||||||
<View style={[styles.content, { borderColor: themes[theme].borderColor }]}>
|
<View style={[styles.content, { borderColor: themes[theme].borderColor }]}>
|
||||||
<CustomIcon name='chevron-down' color={themes[theme].auxiliaryTintColor} size={36} />
|
<CustomIcon name='chevron-down' color={themes[theme].auxiliaryText} size={36} />
|
||||||
</View>
|
</View>
|
||||||
</Touch>
|
</Touch>
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
|
|
|
@ -1370,7 +1370,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
</Text>
|
</Text>
|
||||||
<Touch
|
<Touch
|
||||||
onPress={this.resumeRoom}
|
onPress={this.resumeRoom}
|
||||||
style={[styles.joinRoomButton, { backgroundColor: themes[theme].actionTintColor }]}
|
style={[styles.joinRoomButton, { backgroundColor: themes[theme].tintColor }]}
|
||||||
enabled={!loading}
|
enabled={!loading}
|
||||||
theme={theme}>
|
theme={theme}>
|
||||||
<Text style={[styles.joinRoomText, { color: themes[theme].buttonText }]} testID='room-view-chat-on-hold-button'>
|
<Text style={[styles.joinRoomText, { color: themes[theme].buttonText }]} testID='room-view-chat-on-hold-button'>
|
||||||
|
@ -1390,7 +1390,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
</Text>
|
</Text>
|
||||||
<Touch
|
<Touch
|
||||||
onPress={this.joinRoom}
|
onPress={this.joinRoom}
|
||||||
style={[styles.joinRoomButton, { backgroundColor: themes[theme].actionTintColor }]}
|
style={[styles.joinRoomButton, { backgroundColor: themes[theme].tintColor }]}
|
||||||
enabled={!loading}
|
enabled={!loading}
|
||||||
theme={theme}>
|
theme={theme}>
|
||||||
<Text style={[styles.joinRoomText, { color: themes[theme].buttonText }]} testID='room-view-join-button'>
|
<Text style={[styles.joinRoomText, { color: themes[theme].buttonText }]} testID='room-view-join-button'>
|
||||||
|
|
|
@ -38,7 +38,7 @@ const ListHeader = React.memo(
|
||||||
}
|
}
|
||||||
left={() => <List.Icon name='encrypted' color={themes[theme].buttonText} />}
|
left={() => <List.Icon name='encrypted' color={themes[theme].buttonText} />}
|
||||||
underlayColor={themes[theme].tintColor}
|
underlayColor={themes[theme].tintColor}
|
||||||
backgroundColor={themes[theme].actionTintColor}
|
backgroundColor={themes[theme].tintColor}
|
||||||
color={themes[theme].buttonText}
|
color={themes[theme].buttonText}
|
||||||
onPress={goEncryption}
|
onPress={goEncryption}
|
||||||
testID='listheader-encryption'
|
testID='listheader-encryption'
|
||||||
|
|
|
@ -160,7 +160,7 @@ class SelectListView extends React.Component<ISelectListViewProps, ISelectListVi
|
||||||
<RadioButton
|
<RadioButton
|
||||||
testID={selected ? `radio-button-selected-${item.name}` : `radio-button-unselected-${item.name}`}
|
testID={selected ? `radio-button-selected-${item.name}` : `radio-button-unselected-${item.name}`}
|
||||||
selected={selected.includes(item.rid)}
|
selected={selected.includes(item.rid)}
|
||||||
color={themes[theme].actionTintColor}
|
color={themes[theme].tintColor}
|
||||||
size={ICON_SIZE}
|
size={ICON_SIZE}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
@ -169,7 +169,7 @@ class SelectListView extends React.Component<ISelectListViewProps, ISelectListVi
|
||||||
<List.Icon
|
<List.Icon
|
||||||
testID={checked ? `${item.name}-checked` : `${item.name}-unchecked`}
|
testID={checked ? `${item.name}-checked` : `${item.name}-unchecked`}
|
||||||
name={checked}
|
name={checked}
|
||||||
color={themes[theme].actionTintColor}
|
color={themes[theme].tintColor}
|
||||||
/>
|
/>
|
||||||
) : null;
|
) : null;
|
||||||
|
|
||||||
|
|
|
@ -63,12 +63,8 @@ const CancelButton = ({ onCancelPress }: { onCancelPress?: () => void }) => {
|
||||||
const SearchBox = ({ hasCancel, onCancelPress, inputRef, ...props }: ISearchBox): React.ReactElement => {
|
const SearchBox = ({ hasCancel, onCancelPress, inputRef, ...props }: ISearchBox): React.ReactElement => {
|
||||||
const { theme } = useTheme();
|
const { theme } = useTheme();
|
||||||
return (
|
return (
|
||||||
<View
|
<View style={[styles.container, { backgroundColor: themes[theme].headerBackground }]}>
|
||||||
style={[
|
<View style={[styles.searchBox, { backgroundColor: themes[theme].buttonBackgroundSecondaryDefault }]}>
|
||||||
styles.container,
|
|
||||||
{ backgroundColor: isIOS ? themes[theme].headerBackground : themes[theme].headerSecondaryBackground }
|
|
||||||
]}>
|
|
||||||
<View style={[styles.searchBox, { backgroundColor: themes[theme].searchboxBackground }]}>
|
|
||||||
<CustomIcon name='search' size={14} color={themes[theme].auxiliaryText} />
|
<CustomIcon name='search' size={14} color={themes[theme].auxiliaryText} />
|
||||||
<TextInput
|
<TextInput
|
||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
|
|
|
@ -434,7 +434,7 @@ class TeamChannelsView extends React.Component<ITeamChannelsViewProps, ITeamChan
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const isAutoJoinChecked = item.teamDefault;
|
const isAutoJoinChecked = item.teamDefault;
|
||||||
const autoJoinIcon = isAutoJoinChecked ? 'checkbox-checked' : 'checkbox-unchecked';
|
const autoJoinIcon = isAutoJoinChecked ? 'checkbox-checked' : 'checkbox-unchecked';
|
||||||
const autoJoinIconColor = isAutoJoinChecked ? themes[theme].tintColor : themes[theme].auxiliaryTintColor;
|
const autoJoinIconColor = isAutoJoinChecked ? themes[theme].tintColor : themes[theme].auxiliaryText;
|
||||||
|
|
||||||
const options: TActionSheetOptionsItem[] = [];
|
const options: TActionSheetOptionsItem[] = [];
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ class UserNotificationPreferencesView extends React.Component<
|
||||||
const { theme } = this.props;
|
const { theme } = this.props;
|
||||||
const text = this.findDefaultOption(key);
|
const text = this.findDefaultOption(key);
|
||||||
return (
|
return (
|
||||||
<Text style={[styles.pickerText, { color: themes[theme].actionTintColor }]}>
|
<Text style={[styles.pickerText, { color: themes[theme].tintColor }]}>
|
||||||
{text?.label ? I18n.t(text?.label) : text?.label}
|
{text?.label ? I18n.t(text?.label) : text?.label}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
|
|
|
@ -67,7 +67,7 @@ const ServerAvatar = React.memo(({ theme, url, image }: IServerAvatar) => (
|
||||||
resizeMode={FastImage.resizeMode.cover}
|
resizeMode={FastImage.resizeMode.cover}
|
||||||
indicator={Progress.Pie}
|
indicator={Progress.Pie}
|
||||||
indicatorProps={{
|
indicatorProps={{
|
||||||
color: themes[theme].actionTintColor
|
color: themes[theme].tintColor
|
||||||
}}
|
}}
|
||||||
renderError={() => <Fallback theme={theme} initial={getInitial(url)} />}
|
renderError={() => <Fallback theme={theme} initial={getInitial(url)} />}
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Reference in New Issue