@@ -15,7 +15,6 @@ import FastImage from 'react-native-fast-image';
|
||||
import { useGetImage } from '@/utility/JellyfinApi';
|
||||
import { ShadowWrapper } from '@/components/Shadow';
|
||||
import { SafeFlatList } from '@/components/SafeNavigatorView';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { t } from '@/localisation';
|
||||
|
||||
const DownloadedTrack = styled.View`
|
||||
@@ -165,7 +164,9 @@ function Downloads() {
|
||||
</DownloadedTrack>
|
||||
{entities[item]?.error && (
|
||||
<ErrorWrapper>
|
||||
<Text style={{ color: THEME_COLOR }}>{entities[item]?.error}</Text>
|
||||
<Text style={defaultStyles.themeColor}>
|
||||
{entities[item]?.error}
|
||||
</Text>
|
||||
</ErrorWrapper>
|
||||
)}
|
||||
</>
|
||||
|
||||
@@ -2,7 +2,6 @@ import React from 'react';
|
||||
import { StyleSheet } from 'react-native';
|
||||
import { createStackNavigator } from '@react-navigation/stack';
|
||||
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { t } from '@/localisation';
|
||||
import useDefaultStyles, { ColoredBlurView } from '@/components/Colors';
|
||||
import { StackParams } from '@/screens/types';
|
||||
@@ -24,7 +23,7 @@ function MusicStack() {
|
||||
return (
|
||||
<GestureHandlerRootView style={{ flex: 1 }}>
|
||||
<Stack.Navigator initialRouteName="RecentAlbums" screenOptions={{
|
||||
headerTintColor: THEME_COLOR,
|
||||
headerTintColor: defaultStyles.themeColor.color,
|
||||
headerTitleStyle: defaultStyles.stackHeader,
|
||||
cardStyle: defaultStyles.view,
|
||||
headerTransparent: true,
|
||||
|
||||
@@ -14,7 +14,6 @@ import { Text } from '@/components/Typography';
|
||||
import useDefaultStyles, { ColoredBlurView } from '@/components/Colors';
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import { calculateProgressTranslation } from '@/components/Progresstrack';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { NavigationProp } from '@/screens/types';
|
||||
import { ShadowWrapper } from '@/components/Shadow';
|
||||
import { useBottomTabBarHeight } from '@react-navigation/bottom-tabs';
|
||||
@@ -48,7 +47,6 @@ const ProgressTrack = styled(Animated.View)<{ stroke?: number; opacity?: number}
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: ${(props) => props.stroke ? props.stroke + 'px' : '100%'};
|
||||
background-color: ${THEME_COLOR};
|
||||
opacity: ${(props) => props.opacity || 1};
|
||||
border-radius: 99px;
|
||||
`;
|
||||
@@ -191,12 +189,18 @@ function NowPlaying({ offset = 0 }: { offset?: number }) {
|
||||
<SelectActionButton />
|
||||
</ActionButton>
|
||||
<ProgressTrack
|
||||
style={{ transform: [{ translateX: bufferAnimation.current }]}}
|
||||
style={[
|
||||
{ transform: [{ translateX: bufferAnimation.current }]},
|
||||
defaultStyles.themeBackground,
|
||||
]}
|
||||
opacity={0.15}
|
||||
stroke={4}
|
||||
/>
|
||||
<ProgressTrack
|
||||
style={{ transform: [{ translateX: progressAnimation.current }]}}
|
||||
style={[
|
||||
{ transform: [{ translateX: progressAnimation.current }]},
|
||||
defaultStyles.themeBackground,
|
||||
]}
|
||||
stroke={4}
|
||||
/>
|
||||
</InnerContainer>
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useNavigation } from '@react-navigation/native';
|
||||
import { differenceInDays } from 'date-fns';
|
||||
import { useAppDispatch, useTypedSelector } from '@/store';
|
||||
import { fetchAllAlbums } from '@/store/music/actions';
|
||||
import { ALBUM_CACHE_AMOUNT_OF_DAYS, THEME_COLOR } from '@/CONSTANTS';
|
||||
import { ALBUM_CACHE_AMOUNT_OF_DAYS } from '@/CONSTANTS';
|
||||
import AlbumImage from './components/AlbumImage';
|
||||
import { SectionArtistItem, SectionedArtist, selectArtists } from '@/store/music/selectors';
|
||||
import AlphabetScroller from '@/components/AlphabetScroller';
|
||||
@@ -92,7 +92,7 @@ const GeneratedArtistItem = React.memo(function GeneratedArtistItem(props: Gener
|
||||
numberOfLines={1}
|
||||
style={[
|
||||
defaultStyles.text,
|
||||
pressed && { color: THEME_COLOR },
|
||||
pressed && defaultStyles.themeColor,
|
||||
{ flexShrink: 1 }
|
||||
]}
|
||||
|
||||
@@ -201,7 +201,7 @@ const Artists: React.FC = () => {
|
||||
onRefresh={retrieveData}
|
||||
getItemLayout={(_, i) => {
|
||||
if (!(i in itemLayouts)) {
|
||||
console.log('COuLD NOT FIND LAYOUT ITEM', i, _);
|
||||
// console.log('COuLD NOT FIND LAYOUT ITEM', i, _);
|
||||
}
|
||||
return itemLayouts[i] ?? { length: 0, offset: 0, index: i };
|
||||
}}
|
||||
|
||||
@@ -4,7 +4,6 @@ import { useGetImage } from '@/utility/JellyfinApi';
|
||||
import styled, { css } from 'styled-components/native';
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import { useAppDispatch, useTypedSelector } from '@/store';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import TouchableHandler from '@/components/TouchableHandler';
|
||||
import useCurrentTrack from '@/utility/useCurrentTrack';
|
||||
import TrackPlayer from 'react-native-track-player';
|
||||
@@ -32,7 +31,6 @@ const styles = StyleSheet.create({
|
||||
marginRight: 12
|
||||
},
|
||||
activeText: {
|
||||
color: THEME_COLOR,
|
||||
fontWeight: '500',
|
||||
},
|
||||
});
|
||||
@@ -153,13 +151,17 @@ const TrackListView: React.FC<TrackListViewProps> = ({
|
||||
>
|
||||
<TrackContainer
|
||||
isPlaying={currentTrack?.backendId === trackId || false}
|
||||
style={[defaultStyles.border, currentTrack?.backendId === trackId || false ? defaultStyles.activeBackground : null ]}
|
||||
style={[
|
||||
defaultStyles.border,
|
||||
currentTrack?.backendId === trackId ? defaultStyles.activeBackground : null
|
||||
]}
|
||||
>
|
||||
<Text
|
||||
style={[
|
||||
styles.index,
|
||||
{ opacity: 0.25 },
|
||||
currentTrack?.backendId === trackId && styles.activeText
|
||||
defaultStyles.textQuarterOpacity,
|
||||
currentTrack?.backendId === trackId && styles.activeText,
|
||||
currentTrack?.backendId === trackId && defaultStyles.themeColorQuarterOpacity,
|
||||
]}
|
||||
numberOfLines={1}
|
||||
>
|
||||
@@ -169,23 +171,29 @@ const TrackListView: React.FC<TrackListViewProps> = ({
|
||||
</Text>
|
||||
<View style={{ flexShrink: 1 }}>
|
||||
<Text
|
||||
style={{
|
||||
...currentTrack?.backendId === trackId && styles.activeText,
|
||||
flexShrink: 1,
|
||||
marginRight: 4,
|
||||
}}
|
||||
style={[
|
||||
currentTrack?.backendId === trackId && styles.activeText,
|
||||
currentTrack?.backendId === trackId && defaultStyles.themeColor,
|
||||
{
|
||||
flexShrink: 1,
|
||||
marginRight: 4,
|
||||
}
|
||||
]}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{tracks[trackId]?.Name}
|
||||
</Text>
|
||||
{itemDisplayStyle === 'playlist' && (
|
||||
<Text
|
||||
style={{
|
||||
...currentTrack?.backendId === trackId && styles.activeText,
|
||||
flexShrink: 1,
|
||||
marginRight: 4,
|
||||
opacity:currentTrack?.backendId === trackId ? 0.5 : 0.25,
|
||||
}}
|
||||
style={[
|
||||
currentTrack?.backendId === trackId && styles.activeText,
|
||||
currentTrack?.backendId === trackId && defaultStyles.themeColor,
|
||||
{
|
||||
flexShrink: 1,
|
||||
marginRight: 4,
|
||||
opacity: currentTrack?.backendId === trackId ? 0.5 : 0.25,
|
||||
}
|
||||
]}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{tracks[trackId]?.Artists.join(', ')}
|
||||
@@ -195,19 +203,26 @@ const TrackListView: React.FC<TrackListViewProps> = ({
|
||||
<View style={{ marginLeft: 'auto', flexDirection: 'row' }}>
|
||||
<Text
|
||||
style={[
|
||||
{ marginRight: 12, opacity: 0.25 },
|
||||
currentTrack?.backendId === trackId && styles.activeText
|
||||
{ marginRight: 12 },
|
||||
defaultStyles.textQuarterOpacity,
|
||||
currentTrack?.backendId === trackId && styles.activeText,
|
||||
currentTrack?.backendId === trackId && defaultStyles.themeColorQuarterOpacity,
|
||||
]}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{ticksToDuration(tracks[trackId]?.RunTimeTicks || 0)}
|
||||
</Text>
|
||||
<DownloadIcon trackId={trackId} fill={currentTrack?.backendId === trackId ? `${THEME_COLOR}44` : undefined} />
|
||||
<DownloadIcon
|
||||
trackId={trackId}
|
||||
fill={currentTrack?.backendId === trackId ? defaultStyles.themeColorQuarterOpacity.color : undefined}
|
||||
/>
|
||||
</View>
|
||||
</TrackContainer>
|
||||
</TouchableHandler>
|
||||
)}
|
||||
<Text style={{ paddingTop: 24, paddingBottom: 12, textAlign: 'center', opacity: 0.5 }}>{t('total-duration')}{': '}{ticksToDuration(totalDuration)}</Text>
|
||||
<Text style={{ paddingTop: 24, paddingBottom: 12, textAlign: 'center', opacity: 0.5 }}>
|
||||
{t('total-duration')}{': '}{ticksToDuration(totalDuration)}
|
||||
</Text>
|
||||
<WrappableButtonRow style={{ marginTop: 24 }}>
|
||||
<WrappableButton
|
||||
icon={CloudDownArrow}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import React, { useState } from 'react';
|
||||
import { createStackNavigator } from '@react-navigation/stack';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { t } from '@/localisation';
|
||||
import useDefaultStyles, { ColoredBlurView } from '@/components/Colors';
|
||||
import { StackParams } from '@/screens/types';
|
||||
@@ -20,7 +19,7 @@ function SearchStack() {
|
||||
<GestureHandlerRootView style={{ flex: 1 }}>
|
||||
<Stack.Navigator initialRouteName="Search"
|
||||
screenOptions={{
|
||||
headerTintColor: THEME_COLOR,
|
||||
headerTintColor: defaultStyles.themeColor.color,
|
||||
headerTitleStyle: defaultStyles.stackHeader,
|
||||
cardStyle: defaultStyles.view,
|
||||
headerTransparent: true,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import useDefaultStyles from '@/components/Colors';
|
||||
import { Text } from '@/components/Typography';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import React from 'react';
|
||||
import { SvgProps } from 'react-native-svg';
|
||||
import styled, { css } from 'styled-components/native';
|
||||
@@ -21,7 +20,6 @@ const Label = styled(Text)<{ active?: boolean }>`
|
||||
${(props) => props.active && css`
|
||||
opacity: 1;
|
||||
font-weight: 500;
|
||||
color: ${THEME_COLOR};
|
||||
`}
|
||||
`;
|
||||
|
||||
@@ -46,8 +44,10 @@ function SelectableFilter({
|
||||
active={active}
|
||||
onPress={onPress}
|
||||
>
|
||||
<Icon width={14} height={14} fill={active ? THEME_COLOR : defaultStyles.textHalfOpacity.color} />
|
||||
<Label active={active}>{text}</Label>
|
||||
<Icon width={14} height={14} fill={active ? defaultStyles.themeColor.color : defaultStyles.textHalfOpacity.color} />
|
||||
<Label active={active} style={active && defaultStyles.themeColor}>
|
||||
{text}
|
||||
</Label>
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ import styled from 'styled-components/native';
|
||||
import CheckmarkIcon from '@/assets/icons/checkmark.svg';
|
||||
import { Text } from '@/components/Typography';
|
||||
import useDefaultStyles from '@/components/Colors';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { Gap } from '@/components/Utility';
|
||||
import { View } from 'react-native';
|
||||
|
||||
@@ -52,9 +51,9 @@ export function RadioItem<T>({
|
||||
}
|
||||
]}
|
||||
>
|
||||
{checked ? <CheckmarkIcon fill={THEME_COLOR} height={14} width={14} /> : <Gap size={14} />}
|
||||
{checked ? <CheckmarkIcon fill={defaultStyles.themeColor.color} height={14} width={14} /> : <Gap size={14} />}
|
||||
<Gap size={8} />
|
||||
<Text style={checked && { color: THEME_COLOR }}>{label}</Text>
|
||||
<Text style={checked && defaultStyles.themeColor}>{label}</Text>
|
||||
</RadioItemContainer>
|
||||
</View>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,6 @@ import { StyleSheet } from 'react-native';
|
||||
import { t } from '@/localisation';
|
||||
import { createStackNavigator } from '@react-navigation/stack';
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import ListButton from '@/components/ListButton';
|
||||
import useDefaultStyles, { ColoredBlurView } from '@/components/Colors';
|
||||
|
||||
@@ -45,7 +44,7 @@ export default function Settings() {
|
||||
|
||||
return (
|
||||
<Stack.Navigator initialRouteName="SettingList" screenOptions={{
|
||||
headerTintColor: THEME_COLOR,
|
||||
headerTintColor: defaultStyles.themeColor.color,
|
||||
headerTitleStyle: defaultStyles.stackHeader,
|
||||
headerTransparent: true,
|
||||
headerBackground: () => <ColoredBlurView style={StyleSheet.absoluteFill} />,
|
||||
|
||||
@@ -6,7 +6,6 @@ import styled, { css } from 'styled-components/native';
|
||||
import { isSentryEnabled, setSentryStatus } from '@/utility/Sentry';
|
||||
import Accordion from 'react-native-collapsible/Accordion';
|
||||
import ChevronIcon from '@/assets/icons/chevron-right.svg';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import useDefaultStyles, { DefaultStylesProvider } from '@/components/Colors';
|
||||
import { t } from '@/localisation';
|
||||
import { SafeScrollView } from '@/components/SafeNavigatorView';
|
||||
@@ -29,10 +28,6 @@ const HeaderContainer = styled.View<{ isActive?: boolean }>`
|
||||
padding: 16px 24px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
|
||||
${props => props.isActive && css`
|
||||
background-color: ${THEME_COLOR};
|
||||
`}
|
||||
`;
|
||||
|
||||
const HeaderText = styled(Text)`
|
||||
|
||||
@@ -3,7 +3,6 @@ import { createBottomTabNavigator, BottomTabNavigationProp } from '@react-naviga
|
||||
import { StackNavigationProp } from '@react-navigation/stack';
|
||||
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
||||
import { CompositeNavigationProp } from '@react-navigation/native';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
|
||||
import SearchStack from './Search';
|
||||
import Music from './Music';
|
||||
@@ -23,7 +22,7 @@ import ErrorReportingAlert from '@/utility/ErrorReportingAlert';
|
||||
import ErrorReportingPopup from './modals/ErrorReportingPopup';
|
||||
import Player from './modals/Player';
|
||||
import { StyleSheet } from 'react-native';
|
||||
import { ColoredBlurView } from '@/components/Colors';
|
||||
import useDefaultStyles, { ColoredBlurView } from '@/components/Colors';
|
||||
import { StackParams } from './types';
|
||||
|
||||
const Stack = createNativeStackNavigator<StackParams>();
|
||||
@@ -35,6 +34,7 @@ type Screens = {
|
||||
}
|
||||
|
||||
function Screens() {
|
||||
const styles = useDefaultStyles();
|
||||
const isOnboardingComplete = useTypedSelector(state => state.settings.isOnboardingComplete);
|
||||
|
||||
// GUARD: If onboarding has not been completed, we instead render the
|
||||
@@ -62,7 +62,7 @@ function Screens() {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
tabBarActiveTintColor: THEME_COLOR,
|
||||
tabBarActiveTintColor: styles.themeColor.color,
|
||||
tabBarInactiveTintColor: 'gray',
|
||||
headerShown: false,
|
||||
tabBarShowLabel: false,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Text } from '@/components/Typography';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import React, { useCallback } from 'react';
|
||||
import { showRoutePicker, useAirplayRoutes } from 'react-airplay';
|
||||
import { TouchableOpacity } from 'react-native';
|
||||
@@ -27,7 +26,6 @@ const Label = styled(Text)<{ active?: boolean }>`
|
||||
font-size: 13px;
|
||||
|
||||
${(props) => props.active && css`
|
||||
color: ${THEME_COLOR};
|
||||
opacity: 1;
|
||||
`}
|
||||
`;
|
||||
@@ -43,9 +41,13 @@ function Casting() {
|
||||
<AirplayAudioIcon
|
||||
width={20}
|
||||
height={20}
|
||||
fill={routes.length > 0 ? THEME_COLOR : defaultStyles.textHalfOpacity.color}
|
||||
fill={routes.length > 0 ? defaultStyles.themeColor.color : defaultStyles.textHalfOpacity.color}
|
||||
/>
|
||||
<Label active={routes.length > 0} numberOfLines={1}>
|
||||
<Label
|
||||
active={routes.length > 0}
|
||||
numberOfLines={1}
|
||||
style={routes.length > 0 && defaultStyles.themeColor}
|
||||
>
|
||||
{routes.length > 0
|
||||
? `${t('playing-on')} ${routes.map((route) => route.portName).join(', ')}`
|
||||
: t('local-playback')
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import React from 'react';
|
||||
import { useNetInfo } from '@react-native-community/netinfo';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import styled from 'styled-components/native';
|
||||
import CloudSlash from '@/assets/icons/cloud-slash.svg';
|
||||
import { Text } from 'react-native';
|
||||
@@ -23,8 +22,8 @@ function ConnectionNotice() {
|
||||
if (!isInternetReachable) {
|
||||
return (
|
||||
<Well style={defaultStyles.activeBackground}>
|
||||
<CloudSlash width={24} height={24} fill={THEME_COLOR} />
|
||||
<Text style={{ color: THEME_COLOR, marginLeft: 12 }}>
|
||||
<CloudSlash width={24} height={24} fill={defaultStyles.themeColor.color} />
|
||||
<Text style={[ defaultStyles.themeColor, { marginLeft: 12 }]}>
|
||||
{t('you-are-offline-message')}
|
||||
</Text>
|
||||
</Well>
|
||||
|
||||
@@ -8,7 +8,6 @@ import ProgressTrack, {
|
||||
ProgressTrackContainer
|
||||
} from '@/components/Progresstrack';
|
||||
import { Gesture, GestureDetector, gestureHandlerRootHOC } from 'react-native-gesture-handler';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import Reanimated, {
|
||||
useSharedValue,
|
||||
useAnimatedStyle,
|
||||
@@ -19,6 +18,7 @@ import Reanimated, {
|
||||
} from 'react-native-reanimated';
|
||||
import ReText from '@/components/ReText';
|
||||
import useCurrentTrack from '@/utility/useCurrentTrack';
|
||||
import useDefaultStyles from '@/components/Colors';
|
||||
|
||||
const DRAG_HANDLE_SIZE = 20;
|
||||
const PADDING_TOP = 12;
|
||||
@@ -43,7 +43,6 @@ const DragHandle = styled(Reanimated.View)`
|
||||
width: ${DRAG_HANDLE_SIZE}px;
|
||||
height: ${DRAG_HANDLE_SIZE}px;
|
||||
border-radius: ${DRAG_HANDLE_SIZE}px;
|
||||
background-color: ${THEME_COLOR};
|
||||
position: absolute;
|
||||
left: -${DRAG_HANDLE_SIZE / 2}px;
|
||||
top: ${PADDING_TOP - DRAG_HANDLE_SIZE / 2 + 2.5}px;
|
||||
@@ -51,6 +50,7 @@ const DragHandle = styled(Reanimated.View)`
|
||||
`;
|
||||
|
||||
function ProgressBar() {
|
||||
const styles = useDefaultStyles();
|
||||
const { position, buffered } = useProgress();
|
||||
const { track } = useCurrentTrack();
|
||||
|
||||
@@ -182,16 +182,28 @@ function ProgressBar() {
|
||||
<ProgressTrackContainer>
|
||||
<ProgressTrack
|
||||
opacity={0.15}
|
||||
style={styles.themeBackground}
|
||||
/>
|
||||
<ProgressTrack
|
||||
style={bufferStyles}
|
||||
style={[
|
||||
styles.themeBackground,
|
||||
bufferStyles
|
||||
]}
|
||||
opacity={0.15}
|
||||
/>
|
||||
<ProgressTrack
|
||||
style={progressStyles}
|
||||
style={[
|
||||
progressStyles,
|
||||
styles.themeBackground,
|
||||
]}
|
||||
/>
|
||||
</ProgressTrackContainer>
|
||||
<DragHandle style={dragHandleStyles} />
|
||||
<DragHandle
|
||||
style={[
|
||||
styles.themeBackground,
|
||||
dragHandleStyles,
|
||||
]}
|
||||
/>
|
||||
<NumberBar style={{ flex: 1 }}>
|
||||
<Number text={timePassed} style={timePassedStyles} />
|
||||
<Number text={timeRemaining} style={timeRemainingStyles} />
|
||||
|
||||
@@ -11,7 +11,6 @@ import { Text } from '@/components/Typography';
|
||||
import RepeatIcon from '@/assets/icons/repeat.svg';
|
||||
import RepeatSingleIcon from '@/assets/icons/repeat.1.svg';
|
||||
import Button from '@/components/Button';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import DownloadIcon from '@/components/DownloadIcon';
|
||||
import Divider from '@/components/Divider';
|
||||
import ticksToDuration from '@/utility/ticksToDuration';
|
||||
@@ -123,7 +122,7 @@ export default function Queue({ header }: Props) {
|
||||
onPress={toggleTrackLoop}
|
||||
>
|
||||
<RepeatSingleIcon
|
||||
fill={repeatMode === RepeatMode.Track ? THEME_COLOR : defaultStyles.textHalfOpacity.color}
|
||||
fill={repeatMode === RepeatMode.Track ? defaultStyles.themeColor.color : defaultStyles.textHalfOpacity.color}
|
||||
width={ICON_SIZE}
|
||||
height={ICON_SIZE}
|
||||
/>
|
||||
@@ -133,7 +132,7 @@ export default function Queue({ header }: Props) {
|
||||
onPress={toggleQueueLoop}
|
||||
>
|
||||
<RepeatIcon
|
||||
fill={repeatMode === RepeatMode.Queue ? THEME_COLOR : defaultStyles.textHalfOpacity.color}
|
||||
fill={repeatMode === RepeatMode.Queue ? defaultStyles.themeColor.color : defaultStyles.textHalfOpacity.color}
|
||||
width={ICON_SIZE}
|
||||
height={ICON_SIZE}
|
||||
/>
|
||||
@@ -154,14 +153,14 @@ export default function Queue({ header }: Props) {
|
||||
>
|
||||
<View style={{ flex: 1, marginRight: 16 }}>
|
||||
<Text
|
||||
style={[currentIndex === index ? { color: THEME_COLOR, fontWeight: '500' } : styles.trackTitle, { marginBottom: 2 }]}
|
||||
style={[currentIndex === index ? { color: defaultStyles.themeColor.color, fontWeight: '500' } : styles.trackTitle, { marginBottom: 2 }]}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{track.title}
|
||||
</Text>
|
||||
{(track.artist || track.album) && (
|
||||
<TextHalfOpacity
|
||||
style={currentIndex === index ? { color: THEME_COLOR, fontWeight: '400' } : undefined}
|
||||
style={currentIndex === index ? { color: defaultStyles.themeColor.color, fontWeight: '400' } : undefined}
|
||||
numberOfLines={1}
|
||||
>
|
||||
{track.artist}{track.album && ' — ' + track.album}
|
||||
@@ -170,13 +169,13 @@ export default function Queue({ header }: Props) {
|
||||
</View>
|
||||
<View style={{ marginLeft: 'auto', marginRight: 8 }}>
|
||||
<TextHalfOpacity
|
||||
style={currentIndex === index ? { color: THEME_COLOR, fontWeight: '400' } : undefined}
|
||||
style={currentIndex === index ? { color: defaultStyles.themeColor.color, fontWeight: '400' } : undefined}
|
||||
>
|
||||
{ticksToDuration(track.duration || 0)}
|
||||
</TextHalfOpacity>
|
||||
</View>
|
||||
<View>
|
||||
<DownloadIcon trackId={track.backendId} fill={currentIndex === index ? THEME_COLOR + '80' : undefined} />
|
||||
<DownloadIcon trackId={track.backendId} fill={currentIndex === index ? defaultStyles.themeColor.color + '80' : undefined} />
|
||||
</View>
|
||||
</QueueItem>
|
||||
</TouchableHandler>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import DateTimePickerModal from 'react-native-modal-datetime-picker';
|
||||
import styled from 'styled-components/native';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useTypedSelector } from '@/store';
|
||||
import TimerIcon from '@/assets/icons/timer.svg';
|
||||
@@ -109,7 +108,7 @@ export default function Timer() {
|
||||
<View>
|
||||
<TimerIcon
|
||||
fill={showPicker || date
|
||||
? THEME_COLOR
|
||||
? defaultStyles.themeColor.color
|
||||
: defaultStyles.textHalfOpacity.color
|
||||
}
|
||||
width={16}
|
||||
@@ -117,7 +116,7 @@ export default function Timer() {
|
||||
/>
|
||||
<Label
|
||||
style={{ color: showPicker || date
|
||||
? THEME_COLOR
|
||||
? defaultStyles.themeColor.color
|
||||
: defaultStyles.textHalfOpacity.color
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -5,7 +5,6 @@ import Input from '@/components/Input';
|
||||
import { setJellyfinCredentials } from '@/store/settings/actions';
|
||||
import { useNavigation, StackActions } from '@react-navigation/native';
|
||||
import CredentialGenerator from './components/CredentialGenerator';
|
||||
import { THEME_COLOR } from '@/CONSTANTS';
|
||||
import { t } from '@/localisation';
|
||||
import useDefaultStyles from '@/components/Colors';
|
||||
import { Text } from '@/components/Typography';
|
||||
@@ -55,7 +54,7 @@ export default function SetJellyfinServer() {
|
||||
title={t('set-jellyfin-server')}
|
||||
onPress={() => setIsLogginIn(true)}
|
||||
disabled={!serverUrl?.length}
|
||||
color={THEME_COLOR}
|
||||
color={defaultStyles.themeColor.color}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user