diff --git a/app/(explore)/category.tsx b/app/(explore)/category.tsx
index 499c0c9..2627ab0 100644
--- a/app/(explore)/category.tsx
+++ b/app/(explore)/category.tsx
@@ -10,9 +10,9 @@ import RenderHtml from 'react-native-render-html';
import { useNavigation } from '@react-navigation/native';
import { useSelector } from 'react-redux';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { ThemedView } from '@/lib/components/ThemedView';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { ThemedView } from '@/src/components/themed/ThemedView';
export default function CategoryScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(onboarding)/start.tsx b/app/(onboarding)/start.tsx
index 186619f..104416d 100644
--- a/app/(onboarding)/start.tsx
+++ b/app/(onboarding)/start.tsx
@@ -6,16 +6,16 @@ import DeviceInfo from 'react-native-device-info';
import { useTranslation } from 'react-i18next';
import Ionicons from '@expo/vector-icons/Ionicons';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { useToken } from '@/lib/context/AppProvider';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { Message } from '@/lib/services/message';
-import { Request } from '@/lib/services/request';
-import { store } from '@/lib/store/store';
-import { setSession } from '@/lib/store/dataStore';
-import ThemedInput from '@/lib/components/ThemedInput';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { useToken } from '@/src/context/AppProvider';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { Message } from '@/src/services/message';
+import { Request } from '@/src/services/request';
+import { store } from '@/src/store/store';
+import { setSession } from '@/src/store/dataStore';
+import ThemedInput from '@/src/components/themed/ThemedInput';
export default function OnboardStartScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(settings)/notifications.tsx b/app/(settings)/notifications.tsx
index 1eeb57a..652b1b6 100644
--- a/app/(settings)/notifications.tsx
+++ b/app/(settings)/notifications.tsx
@@ -5,16 +5,16 @@ import { DateTimePickerAndroid, DateTimePickerEvent } from '@react-native-commun
import { useSelector } from 'react-redux';
import { useTranslation } from 'react-i18next';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { Request } from '@/lib/services/request';
-import { useToken } from '@/lib/context/AppProvider';
-import { Message } from '@/lib/services/message';
-import { store } from '@/lib/store/store';
-import { setSession } from '@/lib/store/dataStore';
-import { ThemedIcon } from '@/lib/components/ThemedIcon';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { Request } from '@/src/services/request';
+import { useToken } from '@/src/context/AppProvider';
+import { Message } from '@/src/services/message';
+import { store } from '@/src/store/store';
+import { setSession } from '@/src/store/dataStore';
+import { ThemedIcon } from '@/src/components/themed/ThemedIcon';
export default function CategoryScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx
index 693bdc1..6b2aad4 100644
--- a/app/(tabs)/_layout.tsx
+++ b/app/(tabs)/_layout.tsx
@@ -1,9 +1,9 @@
import { Tabs } from 'expo-router';
import React from 'react';
-import { TabBarIcon } from '@/lib/components/navigation/TabBarIcon';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
+import { TabBarIcon } from '@/src/components/navigation/TabBarIcon';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
export default function TabLayout() {
const colorScheme = useColorScheme();
diff --git a/app/(tabs)/explore.tsx b/app/(tabs)/explore.tsx
index d813fdc..2c2678a 100644
--- a/app/(tabs)/explore.tsx
+++ b/app/(tabs)/explore.tsx
@@ -14,14 +14,14 @@ import { AutocompleteDropdown } from 'react-native-autocomplete-dropdown';
import Modal from "react-native-modal";
import { useTranslation } from 'react-i18next';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { Request } from '@/lib/services/request';
-import List from '@/lib/components/List';
-import { store } from '@/lib/store/store';
-import { setViewCategory } from '@/lib/store/dataStore';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { Request } from '@/src/services/request';
+import List from '@/src/components/List';
+import { store } from '@/src/store/store';
+import { setViewCategory } from '@/src/store/dataStore';
export default function ExploreScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx
index 466c79d..fcf324d 100644
--- a/app/(tabs)/index.tsx
+++ b/app/(tabs)/index.tsx
@@ -7,15 +7,15 @@ import { useSelector } from 'react-redux';
import { LogLevel, OneSignal } from 'react-native-onesignal';
import { useTranslation } from 'react-i18next';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { useToken } from '@/lib/context/AppProvider';
-import { Request } from '@/lib/services/request';
-import List from '@/lib/components/List';
-import { Message } from '@/lib/services/message';
-import { ThemedIcon } from '@/lib/components/ThemedIcon';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { useToken } from '@/src/context/AppProvider';
+import { Request } from '@/src/services/request';
+import List from '@/src/components/List';
+import { Message } from '@/src/services/message';
+import { ThemedIcon } from '@/src/components/themed/ThemedIcon';
export default function HomeScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(tabs)/map.tsx b/app/(tabs)/map.tsx
index 4d02fe8..f69b1a3 100644
--- a/app/(tabs)/map.tsx
+++ b/app/(tabs)/map.tsx
@@ -7,12 +7,12 @@ import { useTranslation } from 'react-i18next';
Mapbox.setAccessToken( "pk.eyJ1IjoibWFhcnRlbnZyOTgiLCJhIjoiY2x6ZDFqMGp1MGVyejJrczhqcXpvYm9iYiJ9.XvYcL62dWiJQiFmG6mOoug" );
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import List from '@/lib/components/List';
-import { Request } from '@/lib/services/request';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import List from '@/src/components/List';
+import { Request } from '@/src/services/request';
export default function MapScreen() {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/app/(tabs)/settings.tsx b/app/(tabs)/settings.tsx
index 684f4e3..041ae19 100644
--- a/app/(tabs)/settings.tsx
+++ b/app/(tabs)/settings.tsx
@@ -13,18 +13,18 @@ import { useTranslation } from 'react-i18next';
import { BottomSheet, BottomSheetRefType } from 'react-native-select-bottom-list';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { useToken } from '@/lib/context/AppProvider';
-import { Message } from '@/lib/services/message';
-import { Request } from '@/lib/services/request';
-import CustomModal from '@/lib/components/EditModal';
-import { store } from '@/lib/store/store';
-import { setSession, setReloadCalendar } from '@/lib/store/dataStore';
-import { ThemedIcon } from '@/lib/components/ThemedIcon';
-import List from '@/lib/components/List';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { useToken } from '@/src/context/AppProvider';
+import { Message } from '@/src/services/message';
+import { Request } from '@/src/services/request';
+import CustomModal from '@/src/components/EditModal';
+import { store } from '@/src/store/store';
+import { setSession, setReloadCalendar } from '@/src/store/dataStore';
+import { ThemedIcon } from '@/src/components/themed/ThemedIcon';
+import List from '@/src/components/List';
export default function SettingsScreen() {
const colorScheme = useColorScheme() ?? 'light';
@@ -266,20 +266,14 @@ export default function SettingsScreen() {
]}
viewStyle={styles.languagesList}
renderItem={(item: any, index: any) => (
-
- {item.key === language ?
- (
- changeLanguage( item.key )}>
- {item.name}
-
-
- ) : (
- changeLanguage( item.key )}>
- {item.name}
-
- )
+
+ changeLanguage( item.key )}>
+ {item.name}
+
+ {item.key === language &&
+
}
-
+
)}
/>
diff --git a/app/_layout.tsx b/app/_layout.tsx
index d930e74..8330551 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -7,9 +7,9 @@ import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native
import Toast from 'react-native-toast-message';
import { AutocompleteDropdownContextProvider } from 'react-native-autocomplete-dropdown';
-import { AppProvider } from '@/lib/context/AppProvider';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { store } from '@/lib/store/store';
+import { AppProvider } from '@/src/context/AppProvider';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { store } from '@/src/store/store';
// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
diff --git a/app/index.tsx b/app/index.tsx
index c9317c3..891ffe5 100644
--- a/app/index.tsx
+++ b/app/index.tsx
@@ -2,14 +2,14 @@ import React, { useEffect } from 'react';
import { Redirect, useRouter } from 'expo-router';
import { useTranslation } from 'react-i18next';
-import '@/lib/localization/i18n';
+import '@/src/localization/i18n';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { useToken } from '@/lib/context/AppProvider';
-import { Request } from '@/lib/services/request';
-import { store } from '@/lib/store/store';
-import { setSession } from '@/lib/store/dataStore';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { useToken } from '@/src/context/AppProvider';
+import { Request } from '@/src/services/request';
+import { store } from '@/src/store/store';
+import { setSession } from '@/src/store/dataStore';
export default function OnboardStartScreen() {
const { token, isLoading } = useToken();
diff --git a/lib/components/__tests__/ThemedText-test.tsx b/lib/components/__tests__/ThemedText-test.tsx
deleted file mode 100644
index acf89f8..0000000
--- a/lib/components/__tests__/ThemedText-test.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import * as React from 'react';
-import renderer from 'react-test-renderer';
-
-import { ThemedText } from '../ThemedText';
-
-it( `renders correctly`, () => {
- const tree = renderer.create( Snapshot test! ).toJSON();
-
- expect( tree ).toMatchSnapshot();
-} );
diff --git a/lib/components/__tests__/__snapshots__/ThemedText-test.tsx.snap b/lib/components/__tests__/__snapshots__/ThemedText-test.tsx.snap
deleted file mode 100644
index b68e53e..0000000
--- a/lib/components/__tests__/__snapshots__/ThemedText-test.tsx.snap
+++ /dev/null
@@ -1,24 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`renders correctly 1`] = `
-
- Snapshot test!
-
-`;
diff --git a/lib/components/EditModal.tsx b/src/components/EditModal.tsx
similarity index 92%
rename from lib/components/EditModal.tsx
rename to src/components/EditModal.tsx
index 95f4048..24968be 100644
--- a/lib/components/EditModal.tsx
+++ b/src/components/EditModal.tsx
@@ -7,11 +7,11 @@ import {
import Modal from "react-native-modal";
import { useTranslation } from 'react-i18next';
-import { Colors } from '@/lib/constants/Colors';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import ThemedInput from '@/lib/components/ThemedInput';
+import { Colors } from '@/src/constants/Colors';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import ThemedInput from '@/src/components/themed/ThemedInput';
interface Field {
name: string;
diff --git a/lib/components/List.tsx b/src/components/List.tsx
similarity index 87%
rename from lib/components/List.tsx
rename to src/components/List.tsx
index 67e8f90..2749140 100644
--- a/lib/components/List.tsx
+++ b/src/components/List.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { ViewStyle } from 'react-native';
-import { ThemedView } from '@/lib/components/ThemedView';
+import { ThemedView } from '@/src/components/themed/ThemedView';
interface ListProps {
data: any;
diff --git a/lib/components/navigation/TabBarIcon.tsx b/src/components/navigation/TabBarIcon.tsx
similarity index 100%
rename from lib/components/navigation/TabBarIcon.tsx
rename to src/components/navigation/TabBarIcon.tsx
diff --git a/lib/components/ThemedIcon.tsx b/src/components/themed/ThemedIcon.tsx
similarity index 82%
rename from lib/components/ThemedIcon.tsx
rename to src/components/themed/ThemedIcon.tsx
index 9f961d4..59fdb22 100644
--- a/lib/components/ThemedIcon.tsx
+++ b/src/components/themed/ThemedIcon.tsx
@@ -3,8 +3,8 @@
import Ionicons from '@expo/vector-icons/Ionicons';
import { type IconProps } from '@expo/vector-icons/build/createIconSet';
import { type ComponentProps } from 'react';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
-import { Colors } from '@/lib/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
+import { Colors } from '@/src/constants/Colors';
export function ThemedIcon({ style, ...rest }: IconProps['name']>) {
const colorScheme = useColorScheme() ?? 'light';
diff --git a/lib/components/ThemedInput.tsx b/src/components/themed/ThemedInput.tsx
similarity index 85%
rename from lib/components/ThemedInput.tsx
rename to src/components/themed/ThemedInput.tsx
index 0060747..511093d 100644
--- a/lib/components/ThemedInput.tsx
+++ b/src/components/themed/ThemedInput.tsx
@@ -1,9 +1,9 @@
import React from 'react';
import { TextInput, StyleSheet, TextInputProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
-import { ThemedView } from '@/lib/components/ThemedView';
-import { ThemedText } from '@/lib/components/ThemedText';
-import { Colors } from '@/lib/constants/Colors';
-import { useColorScheme } from '@/lib/hooks/useColorScheme';
+import { ThemedView } from '@/src/components/themed/ThemedView';
+import { ThemedText } from '@/src/components/themed/ThemedText';
+import { Colors } from '@/src/constants/Colors';
+import { useColorScheme } from '@/src/hooks/useColorScheme';
interface InputComponentProps extends TextInputProps {
label?: string;
diff --git a/lib/components/ThemedText.tsx b/src/components/themed/ThemedText.tsx
similarity index 95%
rename from lib/components/ThemedText.tsx
rename to src/components/themed/ThemedText.tsx
index e8532c5..184af01 100644
--- a/lib/components/ThemedText.tsx
+++ b/src/components/themed/ThemedText.tsx
@@ -1,6 +1,6 @@
import { Text, type TextProps, StyleSheet } from 'react-native';
-import { useThemeColor } from '@/lib/hooks/useThemeColor';
+import { useThemeColor } from '@/src/hooks/useThemeColor';
export type ThemedTextProps = TextProps & {
lightColor?: string;
diff --git a/lib/components/ThemedView.tsx b/src/components/themed/ThemedView.tsx
similarity index 87%
rename from lib/components/ThemedView.tsx
rename to src/components/themed/ThemedView.tsx
index 1c77f54..bdbd6db 100644
--- a/lib/components/ThemedView.tsx
+++ b/src/components/themed/ThemedView.tsx
@@ -1,6 +1,6 @@
import { View, type ViewProps } from 'react-native';
-import { useThemeColor } from '@/lib/hooks/useThemeColor';
+import { useThemeColor } from '@/src/hooks/useThemeColor';
export type ThemedViewProps = ViewProps & {
lightColor?: string;
diff --git a/lib/constants/Colors.ts b/src/constants/Colors.ts
similarity index 100%
rename from lib/constants/Colors.ts
rename to src/constants/Colors.ts
diff --git a/lib/context/AppProvider.tsx b/src/context/AppProvider.tsx
similarity index 92%
rename from lib/context/AppProvider.tsx
rename to src/context/AppProvider.tsx
index 8616719..1f164a2 100644
--- a/lib/context/AppProvider.tsx
+++ b/src/context/AppProvider.tsx
@@ -1,5 +1,5 @@
import { createContext, PropsWithChildren, useContext } from "react";
-import { useStorageState } from '@/lib/context/UseStorageState';
+import { useStorageState } from '@/src/context/UseStorageState';
type TokenType = {
token: string | null;
diff --git a/lib/context/UseStorageState.tsx b/src/context/UseStorageState.tsx
similarity index 100%
rename from lib/context/UseStorageState.tsx
rename to src/context/UseStorageState.tsx
diff --git a/lib/hooks/useColorScheme.ts b/src/hooks/useColorScheme.ts
similarity index 100%
rename from lib/hooks/useColorScheme.ts
rename to src/hooks/useColorScheme.ts
diff --git a/lib/hooks/useColorScheme.web.ts b/src/hooks/useColorScheme.web.ts
similarity index 100%
rename from lib/hooks/useColorScheme.web.ts
rename to src/hooks/useColorScheme.web.ts
diff --git a/lib/hooks/useThemeColor.ts b/src/hooks/useThemeColor.ts
similarity index 91%
rename from lib/hooks/useThemeColor.ts
rename to src/hooks/useThemeColor.ts
index 8b0a6f1..19d55d2 100644
--- a/lib/hooks/useThemeColor.ts
+++ b/src/hooks/useThemeColor.ts
@@ -5,7 +5,7 @@
import { useColorScheme } from 'react-native';
-import { Colors } from '@/lib/constants/Colors';
+import { Colors } from '@/src/constants/Colors';
export function useThemeColor(
props: { light?: string; dark?: string },
diff --git a/lib/localization/i18n.tsx b/src/localization/i18n.tsx
similarity index 100%
rename from lib/localization/i18n.tsx
rename to src/localization/i18n.tsx
diff --git a/lib/services/message.tsx b/src/services/message.tsx
similarity index 100%
rename from lib/services/message.tsx
rename to src/services/message.tsx
diff --git a/lib/services/request.tsx b/src/services/request.tsx
similarity index 100%
rename from lib/services/request.tsx
rename to src/services/request.tsx
diff --git a/lib/store/dataStore.tsx b/src/store/dataStore.tsx
similarity index 100%
rename from lib/store/dataStore.tsx
rename to src/store/dataStore.tsx
diff --git a/lib/store/store.tsx b/src/store/store.tsx
similarity index 100%
rename from lib/store/store.tsx
rename to src/store/store.tsx