diff --git a/.cursor/settings.json b/.cursor/settings.json deleted file mode 100644 index 10492492..00000000 --- a/.cursor/settings.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "explicit" - }, - "typescript.preferences.preferTypeOnlyAutoImports": true, - "workbench.colorCustomizations": { - "activityBar.activeBackground": "#65c89b", - "activityBar.background": "#65c89b", - "activityBar.foreground": "#15202b", - "activityBar.inactiveForeground": "#15202b99", - "activityBarBadge.background": "#945bc4", - "activityBarBadge.foreground": "#e7e7e7", - "commandCenter.border": "#15202b99", - "sash.hoverBorder": "#65c89b", - "statusBar.background": "#42b883", - "statusBar.foreground": "#15202b", - "statusBarItem.hoverBackground": "#359268", - "statusBarItem.remoteBackground": "#42b883", - "statusBarItem.remoteForeground": "#15202b", - "titleBar.activeBackground": "#42b883", - "titleBar.activeForeground": "#15202b", - "titleBar.inactiveBackground": "#42b88399", - "titleBar.inactiveForeground": "#15202b99" - }, - "peacock.color": "#42b883", - "explorer.compactFolders": false -} diff --git a/.dependency-cruiser.js b/.dependency-cruiser.js index 2a94106b..8c40f008 100644 --- a/.dependency-cruiser.js +++ b/.dependency-cruiser.js @@ -27,7 +27,7 @@ module.exports = { collapsePattern: 'node_modules/(?:@[^/]+/[^/]+|[^/]+)', }, archi: { - collapsePattern: '^(?:features|ui|di|convex|app|types)/[^/]+|node_modules/(?:@[^/]+/[^/]+|[^/]+)', + collapsePattern: '^(?:features|di|convex|app|types)/[^/]+|node_modules/(?:@[^/]+/[^/]+|[^/]+)', }, text: { highlightFocused: true, diff --git a/.env.local.sample b/.env.local.sample index 88c34781..3022de23 100644 --- a/.env.local.sample +++ b/.env.local.sample @@ -1,2 +1,3 @@ CONVEX_DEPLOYMENT= -EXPO_PUBLIC_CONVEX_URL= \ No newline at end of file +EXPO_PUBLIC_CONVEX_URL= +SENTRY_AUTH_TOKEN= \ No newline at end of file diff --git a/.gitignore b/.gitignore index 913ee6d8..2e3be1ae 100644 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,7 @@ plan.md plans/ # architecture -arch-report.html \ No newline at end of file +arch-report.html + +# vscode +.vscode/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 10492492..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "explicit" - }, - "typescript.preferences.preferTypeOnlyAutoImports": true, - "workbench.colorCustomizations": { - "activityBar.activeBackground": "#65c89b", - "activityBar.background": "#65c89b", - "activityBar.foreground": "#15202b", - "activityBar.inactiveForeground": "#15202b99", - "activityBarBadge.background": "#945bc4", - "activityBarBadge.foreground": "#e7e7e7", - "commandCenter.border": "#15202b99", - "sash.hoverBorder": "#65c89b", - "statusBar.background": "#42b883", - "statusBar.foreground": "#15202b", - "statusBarItem.hoverBackground": "#359268", - "statusBarItem.remoteBackground": "#42b883", - "statusBarItem.remoteForeground": "#15202b", - "titleBar.activeBackground": "#42b883", - "titleBar.activeForeground": "#15202b", - "titleBar.inactiveBackground": "#42b88399", - "titleBar.inactiveForeground": "#15202b99" - }, - "peacock.color": "#42b883", - "explorer.compactFolders": false -} diff --git a/README.md b/README.md index 4f4b5cc6..e3534be0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@
- HolidAI Icon -

- HolidAI -

+ HolidAI Icon
A smart travel planning assistant that leverages Google Gemini AI to create personalized trip itineraries. Simply input your destination, travel dates, budget, and number of travelers to receive customized travel plans tailored specifically to your needs - eliminating hours of research and planning. diff --git a/app.json b/app.json index 90ca23c1..3a29b819 100644 --- a/app.json +++ b/app.json @@ -4,11 +4,11 @@ "slug": "holidai", "version": "1.0.0", "orientation": "portrait", - "icon": "./ui/assets/images/icon.png", + "icon": "./features/core/ui/assets/images/icon.png", "scheme": "holidai", "userInterfaceStyle": "automatic", "splash": { - "image": "./ui/assets/images/logo_round.png", + "image": "./features/core/ui/assets/images/logo_round.png", "resizeMode": "contain", "backgroundColor": "#220059" }, @@ -21,14 +21,14 @@ "package": "com.app.travelplanner", "googleServicesFile": "./google-services.json", "adaptiveIcon": { - "foregroundImage": "./ui/assets/images/android-icon.png", + "foregroundImage": "./features/core/ui/assets/images/android-icon.png", "backgroundColor": "#220059" } }, "web": { "bundler": "metro", "output": "static", - "favicon": "./ui/assets/images/favicon.png" + "favicon": "./features/core/ui/assets/images/favicon.png" }, "plugins": [ "expo-router", @@ -53,13 +53,13 @@ "expo-splash-screen", { "backgroundColor": "#220059", - "image": "./ui/assets/images/logo_round.png", + "image": "./features/core/ui/assets/images/logo_round.png", "dark": { - "image": "./ui/assets/images/logo_round.png", + "image": "./features/core/ui/assets/images/logo_round.png", "backgroundColor": "#220059" }, "ios": { - "imageWidth": 150, + "imageWidth": 100, "resizeMode": "contain" }, "android": { diff --git a/app/(main)/(authenticated)/(tabs)/_layout.tsx b/app/(main)/(authenticated)/(tabs)/_layout.tsx index 611e2add..80bf69a7 100644 --- a/app/(main)/(authenticated)/(tabs)/_layout.tsx +++ b/app/(main)/(authenticated)/(tabs)/_layout.tsx @@ -1,11 +1,6 @@ import { navigationService } from '@/features/core/navigation'; +import { CustomTabButton, CustomTabButtonWithText, colors, icons, shadows, spacing } from '@/features/core/ui'; import { useStartNewTrip } from '@/features/trips'; -import { CustomTabButton } from '@/ui/components/composite/CustomTabButton/CustomTabButton'; -import { CustomTabButtonWithText } from '@/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; -import { shadows } from '@/ui/style/shadows'; import * as Haptics from 'expo-haptics'; import { TabList, TabSlot, TabTrigger, Tabs } from 'expo-router/ui'; import { useTranslation } from 'react-i18next'; diff --git a/app/(main)/(authenticated)/_layout.tsx b/app/(main)/(authenticated)/_layout.tsx index 0f00a2ac..03cd65c3 100644 --- a/app/(main)/(authenticated)/_layout.tsx +++ b/app/(main)/(authenticated)/_layout.tsx @@ -1,5 +1,5 @@ +import { GenericCrashView } from '@/features/core/error/pages'; import { Routes, Stacks, screenOptions } from '@/features/core/navigation'; -import { GenericCrashView } from '@/ui/components/errors/GenericCrashView/GenericCrashView'; import { useAuth } from '@clerk/clerk-expo'; import { type ErrorBoundaryProps, Redirect, Stack } from 'expo-router'; diff --git a/app/(main)/(authenticated)/create-trip/_layout.tsx b/app/(main)/(authenticated)/create-trip/_layout.tsx index c234c01a..3c155f78 100644 --- a/app/(main)/(authenticated)/create-trip/_layout.tsx +++ b/app/(main)/(authenticated)/create-trip/_layout.tsx @@ -1,6 +1,5 @@ import { Routes, navigationService } from '@/features/core/navigation'; -import { CustomHeader } from '@/ui/components/composite/CustomHeader/CustomHeader'; -import { icons } from '@/ui/style/icons'; +import { CustomHeader, icons } from '@/features/core/ui'; import { Stack } from 'expo-router'; export default function CreateTripLayout() { diff --git a/app/(main)/(authenticated)/home-page/_layout.tsx b/app/(main)/(authenticated)/home-page/_layout.tsx index 7c70ae33..703ed9fa 100644 --- a/app/(main)/(authenticated)/home-page/_layout.tsx +++ b/app/(main)/(authenticated)/home-page/_layout.tsx @@ -1,6 +1,5 @@ import { Routes, navigationService } from '@/features/core/navigation'; -import { CustomHeader } from '@/ui/components/composite/CustomHeader/CustomHeader'; -import { icons } from '@/ui/style/icons'; +import { CustomHeader, icons } from '@/features/core/ui'; import { Stack } from 'expo-router'; export default function HomePageLayout() { diff --git a/app/(main)/(authenticated)/profile/_layout.tsx b/app/(main)/(authenticated)/profile/_layout.tsx index 3d5eb4f3..8569a457 100644 --- a/app/(main)/(authenticated)/profile/_layout.tsx +++ b/app/(main)/(authenticated)/profile/_layout.tsx @@ -1,6 +1,5 @@ import { Routes, navigationService } from '@/features/core/navigation'; -import { CustomHeader } from '@/ui/components/composite/CustomHeader/CustomHeader'; -import { icons } from '@/ui/style/icons'; +import { CustomHeader, icons } from '@/features/core/ui'; import { Stack } from 'expo-router'; export default function ProfileLayout() { diff --git a/app/(main)/(login)/_layout.tsx b/app/(main)/(login)/_layout.tsx index c51ce35b..e1def8ad 100644 --- a/app/(main)/(login)/_layout.tsx +++ b/app/(main)/(login)/_layout.tsx @@ -1,5 +1,5 @@ import { Routes } from '@/features/core/navigation'; -import { CustomHeader } from '@/ui/components/composite/CustomHeader/CustomHeader'; +import { CustomHeader } from '@/features/core/ui'; import { Stack } from 'expo-router'; export default function LoginLayout() { diff --git a/app/_layout.tsx b/app/_layout.tsx index 73d21fc9..599e91b3 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -1,10 +1,9 @@ +import { RootAppCrashView } from '@/features/core/error/pages'; import { Stacks, screenOptions } from '@/features/core/navigation'; import { queryClient } from '@/features/core/query'; import { initSentry, registerNavigationContainer, wrap } from '@/features/core/sentry'; import { initI18n } from '@/features/core/translations'; -import { RootAppCrashView } from '@/ui/components/errors/RootAppCrashView/RootAppCrashView'; -import { ToastProvider } from '@/ui/components/providers/ToastProvider'; -import { fontsConfig } from '@/ui/style/fontFamily'; +import { ToastProvider, fontsConfig } from '@/features/core/ui'; import { ClerkLoaded, ClerkProvider, useAuth } from '@clerk/clerk-expo'; import { tokenCache } from '@clerk/clerk-expo/token-cache'; import { QueryClientProvider } from '@tanstack/react-query'; @@ -53,13 +52,13 @@ export default wrap(function RootLayout() { }); const [welcomeAssets, welcomeAssetsError] = useAssets([ - require('@/ui/assets/images/welcome_1.jpg'), - require('@/ui/assets/images/welcome_2.jpg'), - require('@/ui/assets/images/welcome_3.jpg'), - require('@/ui/assets/images/welcome_4.jpg'), - require('@/ui/assets/images/welcome_5.jpg'), - require('@/ui/assets/images/welcome_6.jpg'), - require('@/ui/assets/images/logo_round.png'), + require('@/features/core/ui/assets/images/welcome_1.jpg'), + require('@/features/core/ui/assets/images/welcome_2.jpg'), + require('@/features/core/ui/assets/images/welcome_3.jpg'), + require('@/features/core/ui/assets/images/welcome_4.jpg'), + require('@/features/core/ui/assets/images/welcome_5.jpg'), + require('@/features/core/ui/assets/images/welcome_6.jpg'), + require('@/features/core/ui/assets/images/logo_round.png'), ]); const appReady = fontsLoaded && (!!welcomeAssets || !!welcomeAssetsError); diff --git a/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.logic.ts b/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.logic.ts similarity index 95% rename from ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.logic.ts rename to features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.logic.ts index 0144238b..c7bdd9b2 100644 --- a/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.logic.ts +++ b/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.logic.ts @@ -1,4 +1,4 @@ -import { useResetPassword } from '@/features/auth'; +import { useResetPassword } from '@/features/auth/facades/useResetPassword'; import { useModalState } from '@/features/core/state'; import { useToast } from '@/features/core/toast'; import { useState } from 'react'; diff --git a/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.tsx b/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.tsx similarity index 79% rename from ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.tsx rename to features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.tsx index 4be3e10f..a625d4d7 100644 --- a/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.tsx +++ b/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.tsx @@ -1,7 +1,6 @@ -import { ModalTemplate } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate'; -import { useResetPasswordModalLogic } from '@/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal.logic'; -import { ResetPasswordModalBody } from '@/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody'; -import { components } from '@/ui/style/dimensions/components'; +import { useResetPasswordModalLogic } from '@/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.logic'; +import { ResetPasswordModalBody } from '@/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody'; +import { ModalTemplate, components } from '@/features/core/ui'; export const ResetPasswordModal = () => { const { diff --git a/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts b/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts similarity index 79% rename from ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts rename to features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts index df75d779..a8903505 100644 --- a/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts +++ b/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts @@ -1,4 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; +import { spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx b/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx similarity index 80% rename from ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx rename to features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx index 51da7c87..5577cc38 100644 --- a/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx +++ b/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx @@ -1,6 +1,5 @@ -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomTextInput } from '@/ui/components/basic/CustomTextInput/CustomTextInput'; -import { styles } from '@/ui/components/dialogs/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style'; +import { styles } from '@/features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style'; +import { CustomText, CustomTextInput } from '@/features/core/ui'; import { type FC, Fragment } from 'react'; import { View } from 'react-native'; diff --git a/features/auth/ui/components/WelcomeCard/WelcomeCard.logic.ts b/features/auth/ui/components/WelcomeCard/WelcomeCard.logic.ts index d21b7ed4..32111f19 100644 --- a/features/auth/ui/components/WelcomeCard/WelcomeCard.logic.ts +++ b/features/auth/ui/components/WelcomeCard/WelcomeCard.logic.ts @@ -1,5 +1,5 @@ import { styles } from '@/features/auth/ui/components/WelcomeCard/WelcomeCard.style'; -import { components } from '@/ui/style/dimensions/components'; +import { components } from '@/features/core/ui'; import { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated'; import { match } from 'ts-pattern'; diff --git a/features/auth/ui/components/WelcomeCard/WelcomeCard.style.ts b/features/auth/ui/components/WelcomeCard/WelcomeCard.style.ts index c8feee7f..9d2dcf64 100644 --- a/features/auth/ui/components/WelcomeCard/WelcomeCard.style.ts +++ b/features/auth/ui/components/WelcomeCard/WelcomeCard.style.ts @@ -1,5 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; -import { shadows } from '@/ui/style/shadows'; +import { shadows, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = ( diff --git a/features/auth/ui/components/WelcomeCard/WelcomeCard.tsx b/features/auth/ui/components/WelcomeCard/WelcomeCard.tsx index defc6477..c16c1a1c 100644 --- a/features/auth/ui/components/WelcomeCard/WelcomeCard.tsx +++ b/features/auth/ui/components/WelcomeCard/WelcomeCard.tsx @@ -1,5 +1,5 @@ import { useWelcomeCardLogic } from '@/features/auth/ui/components/WelcomeCard/WelcomeCard.logic'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; +import { CustomImage } from '@/features/core/ui'; import type { ImageProps } from 'expo-image'; import type { FC } from 'react'; import Animated from 'react-native-reanimated'; diff --git a/features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts b/features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts index f1603215..1bf099de 100644 --- a/features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts +++ b/features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts @@ -1,4 +1,4 @@ -import { SCREEN_HEIGHT, SCREEN_WIDTH } from '@/ui/style/dimensions/spacing'; +import { SCREEN_HEIGHT, SCREEN_WIDTH } from '@/features/core/ui'; import type { ImageProps } from 'expo-image'; export type CardConfig = { @@ -19,7 +19,7 @@ export type CardConfig = { const cards: CardConfig[] = [ { id: 'welcome-card-1', - image: require('@/ui/assets/images/welcome_1.jpg'), + image: require('@/features/core/ui/assets/images/welcome_1.jpg'), size: 'small', withPadding: false, withBorderRadius: true, @@ -30,7 +30,7 @@ const cards: CardConfig[] = [ }, { id: 'welcome-card-2', - image: require('@/ui/assets/images/welcome_2.jpg'), + image: require('@/features/core/ui/assets/images/welcome_2.jpg'), size: 'medium', withPadding: true, withBorderRadius: true, @@ -41,7 +41,7 @@ const cards: CardConfig[] = [ }, { id: 'welcome-card-3', - image: require('@/ui/assets/images/welcome_3.jpg'), + image: require('@/features/core/ui/assets/images/welcome_3.jpg'), size: 'large', withPadding: true, withBorderRadius: false, @@ -53,7 +53,7 @@ const cards: CardConfig[] = [ }, { id: 'welcome-card-4', - image: require('@/ui/assets/images/welcome_4.jpg'), + image: require('@/features/core/ui/assets/images/welcome_4.jpg'), size: 'medium', withPadding: false, withBorderRadius: true, @@ -64,7 +64,7 @@ const cards: CardConfig[] = [ }, { id: 'welcome-card-5', - image: require('@/ui/assets/images/welcome_5.jpg'), + image: require('@/features/core/ui/assets/images/welcome_5.jpg'), size: 'medium', withPadding: false, withBorderRadius: true, @@ -75,7 +75,7 @@ const cards: CardConfig[] = [ }, { id: 'welcome-card-6', - image: require('@/ui/assets/images/welcome_6.jpg'), + image: require('@/features/core/ui/assets/images/welcome_6.jpg'), size: 'medium', withPadding: false, withBorderRadius: false, diff --git a/features/auth/ui/pages/SignInPage/SignInPage.style.ts b/features/auth/ui/pages/SignInPage/SignInPage.style.ts index b2314d91..71cb0df8 100644 --- a/features/auth/ui/pages/SignInPage/SignInPage.style.ts +++ b/features/auth/ui/pages/SignInPage/SignInPage.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/auth/ui/pages/SignInPage/SignInPage.tsx b/features/auth/ui/pages/SignInPage/SignInPage.tsx index 04a5a5ff..353e57e5 100644 --- a/features/auth/ui/pages/SignInPage/SignInPage.tsx +++ b/features/auth/ui/pages/SignInPage/SignInPage.tsx @@ -1,16 +1,18 @@ +import { ResetPasswordModal } from '@/features/auth/ui/components/ResetPasswordModal/ResetPasswordModal'; import { useSignInPageLogic } from '@/features/auth/ui/pages/SignInPage/SignInPage.logic'; import { styles } from '@/features/auth/ui/pages/SignInPage/SignInPage.style'; import { Routes } from '@/features/core/navigation'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomTextButton } from '@/ui/components/basic/CustomTextButton/CustomTextButton'; -import { CustomTextInput } from '@/ui/components/basic/CustomTextInput/CustomTextInput'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { ActionModal } from '@/ui/components/dialogs/ActionModal/ActionModal'; -import { InfoModal } from '@/ui/components/dialogs/InfoModal/InfoModal'; -import { ResetPasswordModal } from '@/ui/components/dialogs/ResetPasswordModal/ResetPasswordModal'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; +import { + ActionModal, + BasicView, + ButtonType, + CustomButtonLarge, + CustomScrollView, + CustomText, + CustomTextButton, + CustomTextInput, + InfoModal, +} from '@/features/core/ui'; import { View } from 'react-native'; export const SignInPage = () => { diff --git a/features/auth/ui/pages/SignUpPage/SignUpPage.style.ts b/features/auth/ui/pages/SignUpPage/SignUpPage.style.ts index 81010313..dc39e15a 100644 --- a/features/auth/ui/pages/SignUpPage/SignUpPage.style.ts +++ b/features/auth/ui/pages/SignUpPage/SignUpPage.style.ts @@ -1,8 +1,4 @@ -import { PlatformOS } from '@/ui/PlatformOS'; -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { PlatformOS, colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { Platform, StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/auth/ui/pages/SignUpPage/SignUpPage.tsx b/features/auth/ui/pages/SignUpPage/SignUpPage.tsx index be5a8869..b86f8976 100644 --- a/features/auth/ui/pages/SignUpPage/SignUpPage.tsx +++ b/features/auth/ui/pages/SignUpPage/SignUpPage.tsx @@ -1,14 +1,16 @@ import { useSignUpPageLogic } from '@/features/auth/ui/pages/SignUpPage/SignUpPage.logic'; import { styles } from '@/features/auth/ui/pages/SignUpPage/SignUpPage.style'; import { Routes } from '@/features/core/navigation'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomTextButton } from '@/ui/components/basic/CustomTextButton/CustomTextButton'; -import { CustomTextInput } from '@/ui/components/basic/CustomTextInput/CustomTextInput'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { InfoModal } from '@/ui/components/dialogs/InfoModal/InfoModal'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; +import { + BasicView, + ButtonType, + CustomButtonLarge, + CustomScrollView, + CustomText, + CustomTextButton, + CustomTextInput, + InfoModal, +} from '@/features/core/ui'; import { View } from 'react-native'; export const SignUpPage = () => { diff --git a/features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts b/features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts index e5c055f6..5bee2fb1 100644 --- a/features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts +++ b/features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts @@ -1,8 +1,8 @@ import { navigationService } from '@/features/core/navigation'; -import { SCREEN_HEIGHT } from '@/ui/style/dimensions/spacing'; +import { SCREEN_HEIGHT } from '@/features/core/ui'; import { Easing, useAnimatedStyle, useSharedValue, withDelay, withTiming } from 'react-native-reanimated'; -const logoRound = require('@/ui/assets/images/logo_round.png'); +const logoRound = require('@/features/core/ui/assets/images/logo_round.png'); const SUBTITLE_ENTRANCE_DURATION = 600; const SUBTITLE_ENTRANCE_DELAY = 400; diff --git a/features/auth/ui/pages/WelcomePage/WelcomePage.style.ts b/features/auth/ui/pages/WelcomePage/WelcomePage.style.ts index 5e3519f7..4d2eac91 100644 --- a/features/auth/ui/pages/WelcomePage/WelcomePage.style.ts +++ b/features/auth/ui/pages/WelcomePage/WelcomePage.style.ts @@ -1,9 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { breakpoints } from '@/ui/style/dimensions/breakpoints'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { images } from '@/ui/style/dimensions/images'; -import { SCREEN_HEIGHT, spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { SCREEN_HEIGHT, breakpoints, colors, fontFamily, fontSize, images, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/auth/ui/pages/WelcomePage/WelcomePage.tsx b/features/auth/ui/pages/WelcomePage/WelcomePage.tsx index 5272012e..e3d558e6 100644 --- a/features/auth/ui/pages/WelcomePage/WelcomePage.tsx +++ b/features/auth/ui/pages/WelcomePage/WelcomePage.tsx @@ -2,12 +2,14 @@ import { WelcomeCards } from '@/features/auth/ui/components/WelcomeCards/Welcome import { useWelcomePageLogic } from '@/features/auth/ui/pages/WelcomePage/WelcomePage.logic'; import { styles } from '@/features/auth/ui/pages/WelcomePage/WelcomePage.style'; import { Routes } from '@/features/core/navigation'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; +import { + BasicView, + ButtonType, + CustomButtonLarge, + CustomImage, + CustomScrollView, + CustomText, +} from '@/features/core/ui'; import { View } from 'react-native'; import Animated from 'react-native-reanimated'; diff --git a/features/core/error/pages.ts b/features/core/error/pages.ts new file mode 100644 index 00000000..6a0e6a92 --- /dev/null +++ b/features/core/error/pages.ts @@ -0,0 +1,2 @@ +export { GenericCrashView } from '@/features/core/error/ui/components/GenericCrashView/GenericCrashView'; +export { RootAppCrashView } from '@/features/core/error/ui/components/RootAppCrashView/RootAppCrashView'; diff --git a/ui/components/errors/GenericCrashView/GenericCrashView.logic.ts b/features/core/error/ui/components/GenericCrashView/GenericCrashView.logic.ts similarity index 94% rename from ui/components/errors/GenericCrashView/GenericCrashView.logic.ts rename to features/core/error/ui/components/GenericCrashView/GenericCrashView.logic.ts index 2e471475..fa0600c8 100644 --- a/ui/components/errors/GenericCrashView/GenericCrashView.logic.ts +++ b/features/core/error/ui/components/GenericCrashView/GenericCrashView.logic.ts @@ -1,4 +1,4 @@ -import { logger } from '@/features/core/error'; +import { logger } from '@/features/core/error/di/resolve'; import { type NavigationHref, navigationService } from '@/features/core/navigation'; import type { ErrorBoundaryProps } from 'expo-router'; import { useTranslation } from 'react-i18next'; diff --git a/ui/components/errors/GenericCrashView/GenericCrashView.style.ts b/features/core/error/ui/components/GenericCrashView/GenericCrashView.style.ts similarity index 78% rename from ui/components/errors/GenericCrashView/GenericCrashView.style.ts rename to features/core/error/ui/components/GenericCrashView/GenericCrashView.style.ts index 39369267..c12736bb 100644 --- a/ui/components/errors/GenericCrashView/GenericCrashView.style.ts +++ b/features/core/error/ui/components/GenericCrashView/GenericCrashView.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/errors/GenericCrashView/GenericCrashView.tsx b/features/core/error/ui/components/GenericCrashView/GenericCrashView.tsx similarity index 75% rename from ui/components/errors/GenericCrashView/GenericCrashView.tsx rename to features/core/error/ui/components/GenericCrashView/GenericCrashView.tsx index b9061232..de62a730 100644 --- a/ui/components/errors/GenericCrashView/GenericCrashView.tsx +++ b/features/core/error/ui/components/GenericCrashView/GenericCrashView.tsx @@ -1,6 +1,6 @@ +import { useGenericCrashViewLogic } from '@/features/core/error/ui/components/GenericCrashView/GenericCrashView.logic'; +import { styles } from '@/features/core/error/ui/components/GenericCrashView/GenericCrashView.style'; import type { NavigationHref } from '@/features/core/navigation'; -import { useGenericCrashViewLogic } from '@/ui/components/errors/GenericCrashView/GenericCrashView.logic'; -import { styles } from '@/ui/components/errors/GenericCrashView/GenericCrashView.style'; import type { ErrorBoundaryProps } from 'expo-router'; import { Pressable, Text, View } from 'react-native'; diff --git a/ui/components/errors/RootAppCrashView/RootAppCrashView.logic.ts b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.logic.ts similarity index 91% rename from ui/components/errors/RootAppCrashView/RootAppCrashView.logic.ts rename to features/core/error/ui/components/RootAppCrashView/RootAppCrashView.logic.ts index 4dbde61f..b1e6fca4 100644 --- a/ui/components/errors/RootAppCrashView/RootAppCrashView.logic.ts +++ b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.logic.ts @@ -1,4 +1,4 @@ -import { logger } from '@/features/core/error'; +import { logger } from '@/features/core/error/di/resolve'; import type { ErrorBoundaryProps } from 'expo-router'; import { useTranslation } from 'react-i18next'; diff --git a/ui/components/errors/RootAppCrashView/RootAppCrashView.style.ts b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.style.ts similarity index 78% rename from ui/components/errors/RootAppCrashView/RootAppCrashView.style.ts rename to features/core/error/ui/components/RootAppCrashView/RootAppCrashView.style.ts index 39369267..c12736bb 100644 --- a/ui/components/errors/RootAppCrashView/RootAppCrashView.style.ts +++ b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/errors/RootAppCrashView/RootAppCrashView.tsx b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.tsx similarity index 69% rename from ui/components/errors/RootAppCrashView/RootAppCrashView.tsx rename to features/core/error/ui/components/RootAppCrashView/RootAppCrashView.tsx index c4b4ae20..2e1b331a 100644 --- a/ui/components/errors/RootAppCrashView/RootAppCrashView.tsx +++ b/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.tsx @@ -1,5 +1,5 @@ -import { useRootAppCrashViewLogic } from '@/ui/components/errors/RootAppCrashView/RootAppCrashView.logic'; -import { styles } from '@/ui/components/errors/RootAppCrashView/RootAppCrashView.style'; +import { useRootAppCrashViewLogic } from '@/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.logic'; +import { styles } from '@/features/core/error/ui/components/RootAppCrashView/RootAppCrashView.style'; import type { ErrorBoundaryProps } from 'expo-router'; import { Pressable, Text, View } from 'react-native'; diff --git a/features/core/images/facades/useGetGooglePlaceImage.ts b/features/core/images/facades/useGetGooglePlaceImage.ts index b9e81852..f39a621c 100644 --- a/features/core/images/facades/useGetGooglePlaceImage.ts +++ b/features/core/images/facades/useGetGooglePlaceImage.ts @@ -3,7 +3,7 @@ import { useQuery } from '@tanstack/react-query'; import { fetchGooglePlaceImageUseCase } from '@/features/core/images/di/resolve'; import type { ImageResult } from '@/features/core/images/domain/entities/ImageResult'; -const fallback: ImageResult = { url: require('@/ui/assets/images/no-image-placeholder.jpg') }; +const fallback: ImageResult = { url: require('@/features/core/ui/assets/images/no-image-placeholder.jpg') }; export const useGetGooglePlaceImage = (placeName: string, maxWidthPx = 500) => { const { data, isLoading, isError } = useQuery({ diff --git a/features/core/images/facades/useGetUnsplashImage.ts b/features/core/images/facades/useGetUnsplashImage.ts index 732e9d41..a7101e3d 100644 --- a/features/core/images/facades/useGetUnsplashImage.ts +++ b/features/core/images/facades/useGetUnsplashImage.ts @@ -4,7 +4,7 @@ import { fetchUnsplashImageUseCase } from '@/features/core/images/di/resolve'; import type { ImageResult } from '@/features/core/images/domain/entities/ImageResult'; import type { UrlType } from '@/features/core/images/domain/entities/UrlType'; -const fallback: ImageResult = { url: require('@/ui/assets/images/no-image-placeholder.jpg') }; +const fallback: ImageResult = { url: require('@/features/core/ui/assets/images/no-image-placeholder.jpg') }; export const useGetUnsplashImage = (placeName: string, urlType: UrlType) => { const { data, isLoading, isError } = useQuery({ diff --git a/features/core/navigation/libraries/screenOptions.ts b/features/core/navigation/libraries/screenOptions.ts index bd3006cb..92e6b640 100644 --- a/features/core/navigation/libraries/screenOptions.ts +++ b/features/core/navigation/libraries/screenOptions.ts @@ -1,5 +1,4 @@ -import { PlatformOS } from '@/ui/PlatformOS'; -import { colors } from '@/ui/style/colors'; +import { PlatformOS, colors } from '@/features/core/ui'; import type { NativeStackNavigationOptions } from '@react-navigation/native-stack'; import { Platform } from 'react-native'; @@ -7,4 +6,4 @@ export const screenOptions: NativeStackNavigationOptions = { headerShown: false, animation: Platform.OS === PlatformOS.android ? 'none' : 'default', contentStyle: { backgroundColor: colors.primaryWhite }, -}; +} as const; diff --git a/ui/PlatformOS.ts b/features/core/ui/PlatformOS.ts similarity index 100% rename from ui/PlatformOS.ts rename to features/core/ui/PlatformOS.ts diff --git a/ui/assets/fonts/Arima-Bold.ttf b/features/core/ui/assets/fonts/Arima-Bold.ttf similarity index 100% rename from ui/assets/fonts/Arima-Bold.ttf rename to features/core/ui/assets/fonts/Arima-Bold.ttf diff --git a/ui/assets/fonts/Arima-Medium.ttf b/features/core/ui/assets/fonts/Arima-Medium.ttf similarity index 100% rename from ui/assets/fonts/Arima-Medium.ttf rename to features/core/ui/assets/fonts/Arima-Medium.ttf diff --git a/ui/assets/fonts/Arima-Regular.ttf b/features/core/ui/assets/fonts/Arima-Regular.ttf similarity index 100% rename from ui/assets/fonts/Arima-Regular.ttf rename to features/core/ui/assets/fonts/Arima-Regular.ttf diff --git a/ui/assets/fonts/Arima-SemiBold.ttf b/features/core/ui/assets/fonts/Arima-SemiBold.ttf similarity index 100% rename from ui/assets/fonts/Arima-SemiBold.ttf rename to features/core/ui/assets/fonts/Arima-SemiBold.ttf diff --git a/ui/assets/fonts/Inter-Bold.ttf b/features/core/ui/assets/fonts/Inter-Bold.ttf similarity index 100% rename from ui/assets/fonts/Inter-Bold.ttf rename to features/core/ui/assets/fonts/Inter-Bold.ttf diff --git a/ui/assets/fonts/Inter-ExtraBold.ttf b/features/core/ui/assets/fonts/Inter-ExtraBold.ttf similarity index 100% rename from ui/assets/fonts/Inter-ExtraBold.ttf rename to features/core/ui/assets/fonts/Inter-ExtraBold.ttf diff --git a/ui/assets/fonts/Inter-Medium.ttf b/features/core/ui/assets/fonts/Inter-Medium.ttf similarity index 100% rename from ui/assets/fonts/Inter-Medium.ttf rename to features/core/ui/assets/fonts/Inter-Medium.ttf diff --git a/ui/assets/fonts/Inter-Regular.ttf b/features/core/ui/assets/fonts/Inter-Regular.ttf similarity index 100% rename from ui/assets/fonts/Inter-Regular.ttf rename to features/core/ui/assets/fonts/Inter-Regular.ttf diff --git a/ui/assets/images/adaptive-icon.png b/features/core/ui/assets/images/adaptive-icon.png similarity index 100% rename from ui/assets/images/adaptive-icon.png rename to features/core/ui/assets/images/adaptive-icon.png diff --git a/ui/assets/images/android-icon.png b/features/core/ui/assets/images/android-icon.png similarity index 100% rename from ui/assets/images/android-icon.png rename to features/core/ui/assets/images/android-icon.png diff --git a/ui/assets/images/favicon.png b/features/core/ui/assets/images/favicon.png similarity index 100% rename from ui/assets/images/favicon.png rename to features/core/ui/assets/images/favicon.png diff --git a/ui/assets/images/icon.png b/features/core/ui/assets/images/icon.png similarity index 100% rename from ui/assets/images/icon.png rename to features/core/ui/assets/images/icon.png diff --git a/ui/assets/images/logo_round.png b/features/core/ui/assets/images/logo_round.png similarity index 100% rename from ui/assets/images/logo_round.png rename to features/core/ui/assets/images/logo_round.png diff --git a/ui/assets/images/no-image-placeholder.jpg b/features/core/ui/assets/images/no-image-placeholder.jpg similarity index 100% rename from ui/assets/images/no-image-placeholder.jpg rename to features/core/ui/assets/images/no-image-placeholder.jpg diff --git a/ui/assets/images/welcome_1.jpg b/features/core/ui/assets/images/welcome_1.jpg similarity index 100% rename from ui/assets/images/welcome_1.jpg rename to features/core/ui/assets/images/welcome_1.jpg diff --git a/ui/assets/images/welcome_2.jpg b/features/core/ui/assets/images/welcome_2.jpg similarity index 100% rename from ui/assets/images/welcome_2.jpg rename to features/core/ui/assets/images/welcome_2.jpg diff --git a/ui/assets/images/welcome_3.jpg b/features/core/ui/assets/images/welcome_3.jpg similarity index 100% rename from ui/assets/images/welcome_3.jpg rename to features/core/ui/assets/images/welcome_3.jpg diff --git a/ui/assets/images/welcome_4.jpg b/features/core/ui/assets/images/welcome_4.jpg similarity index 100% rename from ui/assets/images/welcome_4.jpg rename to features/core/ui/assets/images/welcome_4.jpg diff --git a/ui/assets/images/welcome_5.jpg b/features/core/ui/assets/images/welcome_5.jpg similarity index 100% rename from ui/assets/images/welcome_5.jpg rename to features/core/ui/assets/images/welcome_5.jpg diff --git a/ui/assets/images/welcome_6.jpg b/features/core/ui/assets/images/welcome_6.jpg similarity index 100% rename from ui/assets/images/welcome_6.jpg rename to features/core/ui/assets/images/welcome_6.jpg diff --git a/ui/assets/lottie/loading_animation.json b/features/core/ui/assets/lottie/loading_animation.json similarity index 100% rename from ui/assets/lottie/loading_animation.json rename to features/core/ui/assets/lottie/loading_animation.json diff --git a/ui/assets/lottie/photo_animation.json b/features/core/ui/assets/lottie/photo_animation.json similarity index 100% rename from ui/assets/lottie/photo_animation.json rename to features/core/ui/assets/lottie/photo_animation.json diff --git a/ui/assets/lottie/search_animation.json b/features/core/ui/assets/lottie/search_animation.json similarity index 100% rename from ui/assets/lottie/search_animation.json rename to features/core/ui/assets/lottie/search_animation.json diff --git a/ui/assets/lottie/trip_animation.json b/features/core/ui/assets/lottie/trip_animation.json similarity index 100% rename from ui/assets/lottie/trip_animation.json rename to features/core/ui/assets/lottie/trip_animation.json diff --git a/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts b/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts new file mode 100644 index 00000000..95e3add8 --- /dev/null +++ b/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts @@ -0,0 +1,14 @@ +import { colors } from '@/features/core/ui/style/colors'; +import { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated'; + +export const useBaseSkeletonLogic = () => { + const opacity = useSharedValue(1); + opacity.value = withRepeat(withTiming(0.3, { duration: 1000, easing: Easing.linear }), -1, true); + + const animatedStyle = useAnimatedStyle(() => ({ + opacity: opacity.value, + backgroundColor: colors.primaryGrey, + })); + + return { animatedStyle }; +}; diff --git a/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx b/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx new file mode 100644 index 00000000..776e12ae --- /dev/null +++ b/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx @@ -0,0 +1,19 @@ +import { useBaseSkeletonLogic } from '@/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic'; +import type { ReactElement } from 'react'; +import type { StyleProp, ViewProps, ViewStyle } from 'react-native'; +import Animated from 'react-native-reanimated'; + +export type BaseSkeletonProps = ViewProps & { + children?: ReactElement; + style?: StyleProp; +}; + +export const BaseSkeleton = ({ children, style, ...props }: BaseSkeletonProps) => { + const { animatedStyle } = useBaseSkeletonLogic(); + + return ( + + {children} + + ); +}; diff --git a/ui/components/basic/Cheap/Cheap.style.ts b/features/core/ui/components/basic/Cheap/Cheap.style.ts similarity index 69% rename from ui/components/basic/Cheap/Cheap.style.ts rename to features/core/ui/components/basic/Cheap/Cheap.style.ts index 8a25913a..8afcd4d2 100644 --- a/ui/components/basic/Cheap/Cheap.style.ts +++ b/features/core/ui/components/basic/Cheap/Cheap.style.ts @@ -1,7 +1,7 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = (color: string) => diff --git a/ui/components/basic/Cheap/Cheap.tsx b/features/core/ui/components/basic/Cheap/Cheap.tsx similarity index 53% rename from ui/components/basic/Cheap/Cheap.tsx rename to features/core/ui/components/basic/Cheap/Cheap.tsx index d56f45bb..5920d657 100644 --- a/ui/components/basic/Cheap/Cheap.tsx +++ b/features/core/ui/components/basic/Cheap/Cheap.tsx @@ -1,8 +1,8 @@ -import { styles as cheapStyles } from '@/ui/components/basic/Cheap/Cheap.style'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { styles as cheapStyles } from '@/features/core/ui/components/basic/Cheap/Cheap.style'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/ui/components/basic/CustomButton/BaseButton.tsx b/features/core/ui/components/basic/CustomButton/BaseButton.tsx similarity index 77% rename from ui/components/basic/CustomButton/BaseButton.tsx rename to features/core/ui/components/basic/CustomButton/BaseButton.tsx index 88ee0bf2..f01a9b86 100644 --- a/ui/components/basic/CustomButton/BaseButton.tsx +++ b/features/core/ui/components/basic/CustomButton/BaseButton.tsx @@ -2,12 +2,16 @@ import { Fragment } from 'react'; import { ActivityIndicator, type StyleProp, type TextStyle, View, type ViewStyle } from 'react-native'; import { match } from 'ts-pattern'; -import { ButtonState, ButtonType, useCustomButtonLogic } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { styleButton } from '@/ui/components/basic/CustomButton/CustomButton.style'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomPressable } from '@/ui/components/basic/CustomPressable/CustomPressable'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { + ButtonState, + ButtonType, + useCustomButtonLogic, +} from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { styleButton } from '@/features/core/ui/components/basic/CustomButton/CustomButton.style'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { CustomPressable } from '@/features/core/ui/components/basic/CustomPressable/CustomPressable'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export type CustomButtonProps = { title: string; diff --git a/ui/components/basic/CustomButton/CustomButton.logic.ts b/features/core/ui/components/basic/CustomButton/CustomButton.logic.ts similarity index 98% rename from ui/components/basic/CustomButton/CustomButton.logic.ts rename to features/core/ui/components/basic/CustomButton/CustomButton.logic.ts index e0aaf36b..e36dde5e 100644 --- a/ui/components/basic/CustomButton/CustomButton.logic.ts +++ b/features/core/ui/components/basic/CustomButton/CustomButton.logic.ts @@ -1,6 +1,6 @@ import { match } from 'ts-pattern'; -import { colors } from '@/ui/style/colors'; +import { colors } from '@/features/core/ui/style/colors'; // Define button states export const ButtonState = { Active: 'active', Disabled: 'disabled' } as const; diff --git a/ui/components/basic/CustomButton/CustomButton.style.ts b/features/core/ui/components/basic/CustomButton/CustomButton.style.ts similarity index 74% rename from ui/components/basic/CustomButton/CustomButton.style.ts rename to features/core/ui/components/basic/CustomButton/CustomButton.style.ts index 8ed90706..81f3ca5f 100644 --- a/ui/components/basic/CustomButton/CustomButton.style.ts +++ b/features/core/ui/components/basic/CustomButton/CustomButton.style.ts @@ -1,11 +1,11 @@ import { StyleSheet } from 'react-native'; -import { type ButtonState, ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import type { IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { type ButtonState, ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import type { IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; export type ButtonStyles = { backgroundColor: string; diff --git a/features/core/ui/components/basic/CustomButton/CustomButtonLarge.tsx b/features/core/ui/components/basic/CustomButton/CustomButtonLarge.tsx new file mode 100644 index 00000000..01780ff5 --- /dev/null +++ b/features/core/ui/components/basic/CustomButton/CustomButtonLarge.tsx @@ -0,0 +1,6 @@ +import { BaseButton, type CustomButtonProps } from '@/features/core/ui/components/basic/CustomButton/BaseButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; + +export function CustomButtonLarge(props: CustomButtonProps) { + return ; +} diff --git a/features/core/ui/components/basic/CustomButton/CustomButtonMedium.tsx b/features/core/ui/components/basic/CustomButton/CustomButtonMedium.tsx new file mode 100644 index 00000000..1bf8946b --- /dev/null +++ b/features/core/ui/components/basic/CustomButton/CustomButtonMedium.tsx @@ -0,0 +1,6 @@ +import { BaseButton, type CustomButtonProps } from '@/features/core/ui/components/basic/CustomButton/BaseButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; + +export function CustomButtonMedium(props: CustomButtonProps) { + return ; +} diff --git a/features/core/ui/components/basic/CustomButton/CustomButtonSmall.tsx b/features/core/ui/components/basic/CustomButton/CustomButtonSmall.tsx new file mode 100644 index 00000000..e979c7f6 --- /dev/null +++ b/features/core/ui/components/basic/CustomButton/CustomButtonSmall.tsx @@ -0,0 +1,6 @@ +import { BaseButton, type CustomButtonProps } from '@/features/core/ui/components/basic/CustomButton/BaseButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; + +export function CustomButtonSmall(props: CustomButtonProps) { + return ; +} diff --git a/ui/components/basic/CustomCard/CustomCard.logic.ts b/features/core/ui/components/basic/CustomCard/CustomCard.logic.ts similarity index 78% rename from ui/components/basic/CustomCard/CustomCard.logic.ts rename to features/core/ui/components/basic/CustomCard/CustomCard.logic.ts index 73c87033..ca54cc0f 100644 --- a/ui/components/basic/CustomCard/CustomCard.logic.ts +++ b/features/core/ui/components/basic/CustomCard/CustomCard.logic.ts @@ -1,10 +1,10 @@ import { match } from 'ts-pattern'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; -import type { CustomCardStyle } from '@/ui/components/basic/CustomCard/CustomCard.style'; -import { styles } from '@/ui/components/basic/CustomCard/CustomCard.style'; +import type { CustomCardStyle } from '@/features/core/ui/components/basic/CustomCard/CustomCard.style'; +import { styles } from '@/features/core/ui/components/basic/CustomCard/CustomCard.style'; export const CardType = { Default: 'default', Secondary: 'secondary' } as const; export type CardType = (typeof CardType)[keyof typeof CardType]; diff --git a/ui/components/basic/CustomCard/CustomCard.style.ts b/features/core/ui/components/basic/CustomCard/CustomCard.style.ts similarity index 79% rename from ui/components/basic/CustomCard/CustomCard.style.ts rename to features/core/ui/components/basic/CustomCard/CustomCard.style.ts index 0e48cb04..759f01d4 100644 --- a/ui/components/basic/CustomCard/CustomCard.style.ts +++ b/features/core/ui/components/basic/CustomCard/CustomCard.style.ts @@ -1,7 +1,7 @@ import { StyleSheet, type ViewStyle } from 'react-native'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { opacity } from '@/ui/style/opacity'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { opacity } from '@/features/core/ui/style/opacity'; export type CustomCardStyle = { backgroundColor: ViewStyle['backgroundColor']; diff --git a/ui/components/basic/CustomCard/CustomCard.tsx b/features/core/ui/components/basic/CustomCard/CustomCard.tsx similarity index 91% rename from ui/components/basic/CustomCard/CustomCard.tsx rename to features/core/ui/components/basic/CustomCard/CustomCard.tsx index a0fd3e11..8ceda7d2 100644 --- a/ui/components/basic/CustomCard/CustomCard.tsx +++ b/features/core/ui/components/basic/CustomCard/CustomCard.tsx @@ -6,7 +6,7 @@ import { CardType, type CustomCardLogicProps, useCustomCardLogic, -} from '@/ui/components/basic/CustomCard/CustomCard.logic'; +} from '@/features/core/ui/components/basic/CustomCard/CustomCard.logic'; export type CustomCardProps = PressableProps & CustomCardLogicProps & { diff --git a/ui/components/basic/CustomIcon/CustomIcon.style.ts b/features/core/ui/components/basic/CustomIcon/CustomIcon.style.ts similarity index 78% rename from ui/components/basic/CustomIcon/CustomIcon.style.ts rename to features/core/ui/components/basic/CustomIcon/CustomIcon.style.ts index f0f78282..3a0560ff 100644 --- a/ui/components/basic/CustomIcon/CustomIcon.style.ts +++ b/features/core/ui/components/basic/CustomIcon/CustomIcon.style.ts @@ -1,7 +1,7 @@ import { StyleSheet } from 'react-native'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export const styles = (circleSize = spacing.separator40) => StyleSheet.create({ diff --git a/ui/components/basic/CustomIcon/CustomIcon.tsx b/features/core/ui/components/basic/CustomIcon/CustomIcon.tsx similarity index 92% rename from ui/components/basic/CustomIcon/CustomIcon.tsx rename to features/core/ui/components/basic/CustomIcon/CustomIcon.tsx index 395755f7..5e13ea05 100644 --- a/ui/components/basic/CustomIcon/CustomIcon.tsx +++ b/features/core/ui/components/basic/CustomIcon/CustomIcon.tsx @@ -1,4 +1,4 @@ -import { styles } from '@/ui/components/basic/CustomIcon/CustomIcon.style'; +import { styles } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon.style'; import { Ionicons } from '@expo/vector-icons'; import type { ViewProps } from 'react-native'; import { type GestureResponderEvent, type OpaqueColorValue, type StyleProp, View, type ViewStyle } from 'react-native'; diff --git a/ui/components/basic/CustomIconButton/BaseIconButton.tsx b/features/core/ui/components/basic/CustomIconButton/BaseIconButton.tsx similarity index 75% rename from ui/components/basic/CustomIconButton/BaseIconButton.tsx rename to features/core/ui/components/basic/CustomIconButton/BaseIconButton.tsx index 4b5140ce..0c876d82 100644 --- a/ui/components/basic/CustomIconButton/BaseIconButton.tsx +++ b/features/core/ui/components/basic/CustomIconButton/BaseIconButton.tsx @@ -1,11 +1,15 @@ import { ActivityIndicator, type StyleProp, type ViewProps, type ViewStyle } from 'react-native'; import Animated, { type AnimatedStyle } from 'react-native-reanimated'; -import { ButtonState, ButtonType, useCustomButtonLogic } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { styleButton } from '@/ui/components/basic/CustomIconButton/CustomIconButton.style'; -import { CustomPressable } from '@/ui/components/basic/CustomPressable/CustomPressable'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { + ButtonState, + ButtonType, + useCustomButtonLogic, +} from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { styleButton } from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButton.style'; +import { CustomPressable } from '@/features/core/ui/components/basic/CustomPressable/CustomPressable'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export type CustomIconButtonProps = { onPress: () => void; diff --git a/ui/components/basic/CustomIconButton/CustomIconButton.style.ts b/features/core/ui/components/basic/CustomIconButton/CustomIconButton.style.ts similarity index 72% rename from ui/components/basic/CustomIconButton/CustomIconButton.style.ts rename to features/core/ui/components/basic/CustomIconButton/CustomIconButton.style.ts index 142e9826..30cce963 100644 --- a/ui/components/basic/CustomIconButton/CustomIconButton.style.ts +++ b/features/core/ui/components/basic/CustomIconButton/CustomIconButton.style.ts @@ -1,9 +1,9 @@ import { StyleSheet } from 'react-native'; -import type { ButtonState, ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { opacity } from '@/ui/style/opacity'; +import type { ButtonState, ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { opacity } from '@/features/core/ui/style/opacity'; export type ButtonStyles = { backgroundColor: string; diff --git a/features/core/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx new file mode 100644 index 00000000..ce0776be --- /dev/null +++ b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx @@ -0,0 +1,12 @@ +import { + BaseIconButton, + type CustomIconButtonProps, +} from '@/features/core/ui/components/basic/CustomIconButton/BaseIconButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; + +export function CustomIconButtonLarge(props: CustomIconButtonProps) { + return ( + + ); +} diff --git a/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx new file mode 100644 index 00000000..32fb319a --- /dev/null +++ b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx @@ -0,0 +1,12 @@ +import { + BaseIconButton, + type CustomIconButtonProps, +} from '@/features/core/ui/components/basic/CustomIconButton/BaseIconButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; + +export function CustomIconButtonMedium(props: CustomIconButtonProps) { + return ( + + ); +} diff --git a/features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx new file mode 100644 index 00000000..7b866ff7 --- /dev/null +++ b/features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx @@ -0,0 +1,10 @@ +import { + BaseIconButton, + type CustomIconButtonProps, +} from '@/features/core/ui/components/basic/CustomIconButton/BaseIconButton'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; + +export function CustomIconButtonSmall(props: CustomIconButtonProps) { + return ; +} diff --git a/ui/components/basic/CustomImage/CustomImage.tsx b/features/core/ui/components/basic/CustomImage/CustomImage.tsx similarity index 87% rename from ui/components/basic/CustomImage/CustomImage.tsx rename to features/core/ui/components/basic/CustomImage/CustomImage.tsx index e82457b8..2e2566f3 100644 --- a/ui/components/basic/CustomImage/CustomImage.tsx +++ b/features/core/ui/components/basic/CustomImage/CustomImage.tsx @@ -1,4 +1,4 @@ -import { DEFAULT_BLURHASH } from '@/ui/style/blur'; +import { DEFAULT_BLURHASH } from '@/features/core/ui/style/blur'; import { Image, type ImageProps } from 'expo-image'; import type { FC } from 'react'; diff --git a/ui/components/basic/CustomPressable/CustomPressable.style.ts b/features/core/ui/components/basic/CustomPressable/CustomPressable.style.ts similarity index 100% rename from ui/components/basic/CustomPressable/CustomPressable.style.ts rename to features/core/ui/components/basic/CustomPressable/CustomPressable.style.ts diff --git a/ui/components/basic/CustomPressable/CustomPressable.tsx b/features/core/ui/components/basic/CustomPressable/CustomPressable.tsx similarity index 92% rename from ui/components/basic/CustomPressable/CustomPressable.tsx rename to features/core/ui/components/basic/CustomPressable/CustomPressable.tsx index 40629841..1fd2e718 100644 --- a/ui/components/basic/CustomPressable/CustomPressable.tsx +++ b/features/core/ui/components/basic/CustomPressable/CustomPressable.tsx @@ -2,7 +2,7 @@ import type { PropsWithChildren } from 'react'; import { Pressable, type PressableProps, type StyleProp, type ViewStyle } from 'react-native'; import Animated, { useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated'; -import { styles } from '@/ui/components/basic/CustomPressable/CustomPressable.style'; +import { styles } from '@/features/core/ui/components/basic/CustomPressable/CustomPressable.style'; const SPRING_CONFIG = { damping: 500, stiffness: 1000, mass: 1 }; diff --git a/ui/components/basic/CustomText/CustomText.style.ts b/features/core/ui/components/basic/CustomText/CustomText.style.ts similarity index 55% rename from ui/components/basic/CustomText/CustomText.style.ts rename to features/core/ui/components/basic/CustomText/CustomText.style.ts index f2f4d40a..8237f33a 100644 --- a/ui/components/basic/CustomText/CustomText.style.ts +++ b/features/core/ui/components/basic/CustomText/CustomText.style.ts @@ -1,5 +1,5 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/basic/CustomText/CustomText.tsx b/features/core/ui/components/basic/CustomText/CustomText.tsx similarity index 84% rename from ui/components/basic/CustomText/CustomText.tsx rename to features/core/ui/components/basic/CustomText/CustomText.tsx index ad6add66..afbe83b8 100644 --- a/ui/components/basic/CustomText/CustomText.tsx +++ b/features/core/ui/components/basic/CustomText/CustomText.tsx @@ -1,4 +1,4 @@ -import { styles } from '@/ui/components/basic/CustomText/CustomText.style'; +import { styles } from '@/features/core/ui/components/basic/CustomText/CustomText.style'; import type { FC } from 'react'; import { useTranslation } from 'react-i18next'; import { type StyleProp, Text, type TextProps, type TextStyle } from 'react-native'; diff --git a/ui/components/basic/CustomTextButton/CustomTextButton.style.ts b/features/core/ui/components/basic/CustomTextButton/CustomTextButton.style.ts similarity index 58% rename from ui/components/basic/CustomTextButton/CustomTextButton.style.ts rename to features/core/ui/components/basic/CustomTextButton/CustomTextButton.style.ts index f50c2265..76eb6bb2 100644 --- a/ui/components/basic/CustomTextButton/CustomTextButton.style.ts +++ b/features/core/ui/components/basic/CustomTextButton/CustomTextButton.style.ts @@ -1,5 +1,5 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; -import { opacity } from '@/ui/style/opacity'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { opacity } from '@/features/core/ui/style/opacity'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/basic/CustomTextButton/CustomTextButton.tsx b/features/core/ui/components/basic/CustomTextButton/CustomTextButton.tsx similarity index 74% rename from ui/components/basic/CustomTextButton/CustomTextButton.tsx rename to features/core/ui/components/basic/CustomTextButton/CustomTextButton.tsx index 52b8408f..1748d446 100644 --- a/ui/components/basic/CustomTextButton/CustomTextButton.tsx +++ b/features/core/ui/components/basic/CustomTextButton/CustomTextButton.tsx @@ -1,5 +1,5 @@ -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { styles } from '@/ui/components/basic/CustomTextButton/CustomTextButton.style'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { styles } from '@/features/core/ui/components/basic/CustomTextButton/CustomTextButton.style'; import type { FC } from 'react'; import { Pressable, type StyleProp, type TextStyle, type ViewStyle } from 'react-native'; diff --git a/ui/components/basic/CustomTextInput/CustomTextInput.logic.ts b/features/core/ui/components/basic/CustomTextInput/CustomTextInput.logic.ts similarity index 100% rename from ui/components/basic/CustomTextInput/CustomTextInput.logic.ts rename to features/core/ui/components/basic/CustomTextInput/CustomTextInput.logic.ts diff --git a/ui/components/basic/CustomTextInput/CustomTextInput.style.ts b/features/core/ui/components/basic/CustomTextInput/CustomTextInput.style.ts similarity index 67% rename from ui/components/basic/CustomTextInput/CustomTextInput.style.ts rename to features/core/ui/components/basic/CustomTextInput/CustomTextInput.style.ts index c99d87de..75d41ab8 100644 --- a/ui/components/basic/CustomTextInput/CustomTextInput.style.ts +++ b/features/core/ui/components/basic/CustomTextInput/CustomTextInput.style.ts @@ -1,8 +1,8 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = (isPassword: boolean) => diff --git a/ui/components/basic/CustomTextInput/CustomTextInput.tsx b/features/core/ui/components/basic/CustomTextInput/CustomTextInput.tsx similarity index 66% rename from ui/components/basic/CustomTextInput/CustomTextInput.tsx rename to features/core/ui/components/basic/CustomTextInput/CustomTextInput.tsx index 9227c58e..cd9579d0 100644 --- a/ui/components/basic/CustomTextInput/CustomTextInput.tsx +++ b/features/core/ui/components/basic/CustomTextInput/CustomTextInput.tsx @@ -1,9 +1,9 @@ -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIconButtonMedium } from '@/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; -import { useCustomTextInputLogic } from '@/ui/components/basic/CustomTextInput/CustomTextInput.logic'; -import { styles as inputStyles } from '@/ui/components/basic/CustomTextInput/CustomTextInput.style'; -import { colors } from '@/ui/style/colors'; -import { icons } from '@/ui/style/icons'; +import { ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { CustomIconButtonMedium } from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; +import { useCustomTextInputLogic } from '@/features/core/ui/components/basic/CustomTextInput/CustomTextInput.logic'; +import { styles as inputStyles } from '@/features/core/ui/components/basic/CustomTextInput/CustomTextInput.style'; +import { colors } from '@/features/core/ui/style/colors'; +import { icons } from '@/features/core/ui/style/icons'; import type { FC } from 'react'; import { TextInput, type TextInputProps, View } from 'react-native'; diff --git a/ui/components/basic/LinearGradientText/LinearGradientText.style.ts b/features/core/ui/components/basic/LinearGradientText/LinearGradientText.style.ts similarity index 75% rename from ui/components/basic/LinearGradientText/LinearGradientText.style.ts rename to features/core/ui/components/basic/LinearGradientText/LinearGradientText.style.ts index 614d77aa..6a210778 100644 --- a/ui/components/basic/LinearGradientText/LinearGradientText.style.ts +++ b/features/core/ui/components/basic/LinearGradientText/LinearGradientText.style.ts @@ -1,6 +1,6 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = (height: number) => diff --git a/ui/components/basic/LinearGradientText/LinearGradientText.tsx b/features/core/ui/components/basic/LinearGradientText/LinearGradientText.tsx similarity index 72% rename from ui/components/basic/LinearGradientText/LinearGradientText.tsx rename to features/core/ui/components/basic/LinearGradientText/LinearGradientText.tsx index bbd29374..c4811a1f 100644 --- a/ui/components/basic/LinearGradientText/LinearGradientText.tsx +++ b/features/core/ui/components/basic/LinearGradientText/LinearGradientText.tsx @@ -1,7 +1,7 @@ -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { styles as stylesFactory } from '@/ui/components/basic/LinearGradientText/LinearGradientText.style'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { CustomImage } from '@/features/core/ui/components/basic/CustomImage/CustomImage'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { styles as stylesFactory } from '@/features/core/ui/components/basic/LinearGradientText/LinearGradientText.style'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import MaskedView from '@react-native-masked-view/masked-view'; import type { FC } from 'react'; import type { ImageSourcePropType, StyleProp, TextStyle } from 'react-native'; diff --git a/ui/components/basic/LottieAnimation/LottieAnimation.tsx b/features/core/ui/components/basic/LottieAnimation/LottieAnimation.tsx similarity index 100% rename from ui/components/basic/LottieAnimation/LottieAnimation.tsx rename to features/core/ui/components/basic/LottieAnimation/LottieAnimation.tsx diff --git a/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts b/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts similarity index 87% rename from ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts rename to features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts index 12ebd846..2e37d37f 100644 --- a/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts +++ b/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts @@ -1,8 +1,8 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { images } from '@/ui/style/dimensions/images'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { images } from '@/features/core/ui/style/dimensions/images'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import type { Animated, ViewStyle } from 'react-native'; import { StyleSheet } from 'react-native'; diff --git a/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx b/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx similarity index 81% rename from ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx rename to features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx index 692975c2..c247eedb 100644 --- a/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx +++ b/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx @@ -1,12 +1,12 @@ -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; +import { CustomImage } from '@/features/core/ui/components/basic/CustomImage/CustomImage'; import type { FC, ReactElement } from 'react'; import { Animated, View, type ViewStyle } from 'react-native'; -import { images } from '@/ui/style/dimensions/images'; +import { images } from '@/features/core/ui/style/dimensions/images'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { style } from '@/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style'; +import { BaseSkeleton } from '@/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { style } from '@/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style'; interface AnimatedHeaderImageProps { value: Animated.Value; diff --git a/ui/components/composite/CardWithImage/CardWithImage.style.ts b/features/core/ui/components/composite/CardWithImage/CardWithImage.style.ts similarity index 66% rename from ui/components/composite/CardWithImage/CardWithImage.style.ts rename to features/core/ui/components/composite/CardWithImage/CardWithImage.style.ts index 23dea652..e14d218b 100644 --- a/ui/components/composite/CardWithImage/CardWithImage.style.ts +++ b/features/core/ui/components/composite/CardWithImage/CardWithImage.style.ts @@ -1,8 +1,8 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/ui/components/composite/CardWithImage/CardWithImage.tsx b/features/core/ui/components/composite/CardWithImage/CardWithImage.tsx similarity index 70% rename from ui/components/composite/CardWithImage/CardWithImage.tsx rename to features/core/ui/components/composite/CardWithImage/CardWithImage.tsx index 3103cc91..a193139b 100644 --- a/ui/components/composite/CardWithImage/CardWithImage.tsx +++ b/features/core/ui/components/composite/CardWithImage/CardWithImage.tsx @@ -1,6 +1,6 @@ -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { style } from '@/ui/components/composite/CardWithImage/CardWithImage.style'; +import { CustomImage } from '@/features/core/ui/components/basic/CustomImage/CustomImage'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { style } from '@/features/core/ui/components/composite/CardWithImage/CardWithImage.style'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/ui/components/composite/CustomHeader/CustomHeader.logic.ts b/features/core/ui/components/composite/CustomHeader/CustomHeader.logic.ts similarity index 76% rename from ui/components/composite/CustomHeader/CustomHeader.logic.ts rename to features/core/ui/components/composite/CustomHeader/CustomHeader.logic.ts index 84cbc8c9..4c66de72 100644 --- a/ui/components/composite/CustomHeader/CustomHeader.logic.ts +++ b/features/core/ui/components/composite/CustomHeader/CustomHeader.logic.ts @@ -1,6 +1,6 @@ -import { PlatformOS } from '@/ui/PlatformOS'; -import { style } from '@/ui/components/composite/CustomHeader/CustomHeader.style'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { PlatformOS } from '@/features/core/ui/PlatformOS'; +import { style } from '@/features/core/ui/components/composite/CustomHeader/CustomHeader.style'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import { Platform } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { match } from 'ts-pattern'; diff --git a/ui/components/composite/CustomHeader/CustomHeader.style.ts b/features/core/ui/components/composite/CustomHeader/CustomHeader.style.ts similarity index 69% rename from ui/components/composite/CustomHeader/CustomHeader.style.ts rename to features/core/ui/components/composite/CustomHeader/CustomHeader.style.ts index bbd8b835..06269a86 100644 --- a/ui/components/composite/CustomHeader/CustomHeader.style.ts +++ b/features/core/ui/components/composite/CustomHeader/CustomHeader.style.ts @@ -1,7 +1,7 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const style = (headerPaddingTop: number) => diff --git a/ui/components/composite/CustomHeader/CustomHeader.tsx b/features/core/ui/components/composite/CustomHeader/CustomHeader.tsx similarity index 61% rename from ui/components/composite/CustomHeader/CustomHeader.tsx rename to features/core/ui/components/composite/CustomHeader/CustomHeader.tsx index a25e63f5..fad83768 100644 --- a/ui/components/composite/CustomHeader/CustomHeader.tsx +++ b/features/core/ui/components/composite/CustomHeader/CustomHeader.tsx @@ -1,8 +1,8 @@ -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIconButtonMedium } from '@/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { useCustomHeaderLogic } from '@/ui/components/composite/CustomHeader/CustomHeader.logic'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { CustomIconButtonMedium } from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { useCustomHeaderLogic } from '@/features/core/ui/components/composite/CustomHeader/CustomHeader.logic'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import type { Ionicons } from '@expo/vector-icons'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts similarity index 72% rename from ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts rename to features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts index 8f7ed52f..0d2fbdab 100644 --- a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts +++ b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts @@ -1,5 +1,5 @@ -import { styles } from '@/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style'; -import { colors } from '@/ui/style/colors'; +import { styles } from '@/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style'; +import { colors } from '@/features/core/ui/style/colors'; export type CustomIconCardLogicProps = { iconBackground?: string; diff --git a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts similarity index 65% rename from ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts rename to features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts index 66540f1c..28000854 100644 --- a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts +++ b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts @@ -1,7 +1,7 @@ -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet, type TextStyle, type ViewStyle } from 'react-native'; export const styles = (labelColor: TextStyle['color'], iconBackgroundColor: ViewStyle['backgroundColor']) => diff --git a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx similarity index 63% rename from ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx rename to features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx index 8f89f2d8..24e259fd 100644 --- a/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx +++ b/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx @@ -1,11 +1,11 @@ -import { CustomCard, type CustomCardProps } from '@/ui/components/basic/CustomCard/CustomCard'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; +import { CustomCard, type CustomCardProps } from '@/features/core/ui/components/basic/CustomCard/CustomCard'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; import { type CustomIconCardLogicProps, useCustomIconTextCardLogic, -} from '@/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic'; -import { spacing } from '@/ui/style/dimensions/spacing'; +} from '@/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import type { StyleProp, ViewStyle } from 'react-native'; export type CustomIconTextCardProps = CustomIconCardLogicProps & diff --git a/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts similarity index 66% rename from ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts rename to features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts index 8ca2ac57..de23b067 100644 --- a/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts +++ b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts @@ -1,5 +1,5 @@ -import { styles } from '@/ui/components/composite/CustomNumberButton/CustomNumberButton.style'; -import { colors } from '@/ui/style/colors'; +import { styles } from '@/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.style'; +import { colors } from '@/features/core/ui/style/colors'; export type CustomNumberButtonLogicProps = { selected?: boolean; diff --git a/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts similarity index 66% rename from ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts rename to features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts index ebf4599d..ab03d4fa 100644 --- a/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts +++ b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts @@ -1,6 +1,6 @@ -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet, type TextStyle } from 'react-native'; export const styles = (labelColor: TextStyle['color']) => diff --git a/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx similarity index 68% rename from ui/components/composite/CustomNumberButton/CustomNumberButton.tsx rename to features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx index 6bdaea04..a883dad4 100644 --- a/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx +++ b/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx @@ -1,9 +1,9 @@ -import { CustomCard, type CustomCardProps } from '@/ui/components/basic/CustomCard/CustomCard'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; +import { CustomCard, type CustomCardProps } from '@/features/core/ui/components/basic/CustomCard/CustomCard'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; import { type CustomNumberButtonLogicProps, useCustomNumberButtonLogic, -} from '@/ui/components/composite/CustomNumberButton/CustomNumberButton.logic'; +} from '@/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.logic'; import type { StyleProp, ViewStyle } from 'react-native'; export type CustomNumberButtonProps = CustomNumberButtonLogicProps & diff --git a/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts similarity index 86% rename from ui/components/composite/CustomScrollView/CustomScrollView.logic.ts rename to features/core/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts index b2d582ed..f9cc6820 100644 --- a/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts +++ b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts @@ -1,7 +1,7 @@ import { useRef } from 'react'; import type { ScrollView } from 'react-native'; -import { useGradualKeyboardAnimation } from '@/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation'; +import { useGradualKeyboardAnimation } from '@/features/core/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation'; import { useAnimatedStyle } from 'react-native-reanimated'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; diff --git a/ui/components/composite/CustomScrollView/CustomScrollView.style.ts b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.style.ts similarity index 75% rename from ui/components/composite/CustomScrollView/CustomScrollView.style.ts rename to features/core/ui/components/composite/CustomScrollView/CustomScrollView.style.ts index 8a940d60..274b98a4 100644 --- a/ui/components/composite/CustomScrollView/CustomScrollView.style.ts +++ b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.style.ts @@ -1,7 +1,7 @@ import { StyleSheet } from 'react-native'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export const styles = StyleSheet.create({ container: { diff --git a/ui/components/composite/CustomScrollView/CustomScrollView.tsx b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.tsx similarity index 87% rename from ui/components/composite/CustomScrollView/CustomScrollView.tsx rename to features/core/ui/components/composite/CustomScrollView/CustomScrollView.tsx index 18d8a0a3..0e2b9fc6 100644 --- a/ui/components/composite/CustomScrollView/CustomScrollView.tsx +++ b/features/core/ui/components/composite/CustomScrollView/CustomScrollView.tsx @@ -3,8 +3,8 @@ import type { NativeScrollEvent, NativeSyntheticEvent, StyleProp, ViewStyle } fr import { ScrollView, View } from 'react-native'; import Animated from 'react-native-reanimated'; -import { useCustomScrollViewLogic } from '@/ui/components/composite/CustomScrollView/CustomScrollView.logic'; -import { styles } from '@/ui/components/composite/CustomScrollView/CustomScrollView.style'; +import { useCustomScrollViewLogic } from '@/features/core/ui/components/composite/CustomScrollView/CustomScrollView.logic'; +import { styles } from '@/features/core/ui/components/composite/CustomScrollView/CustomScrollView.style'; type CustomScrollViewProps = { isDarkThemed?: boolean; diff --git a/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation.ts b/features/core/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation.ts similarity index 100% rename from ui/components/composite/CustomScrollView/useGradualKeyboardAnimation.ts rename to features/core/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation.ts diff --git a/ui/components/composite/CustomTabButton/CustomTabButton.style.ts b/features/core/ui/components/composite/CustomTabButton/CustomTabButton.style.ts similarity index 60% rename from ui/components/composite/CustomTabButton/CustomTabButton.style.ts rename to features/core/ui/components/composite/CustomTabButton/CustomTabButton.style.ts index 72c180ca..c04f3874 100644 --- a/ui/components/composite/CustomTabButton/CustomTabButton.style.ts +++ b/features/core/ui/components/composite/CustomTabButton/CustomTabButton.style.ts @@ -1,9 +1,9 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; -import { opacity } from '@/ui/style/opacity'; -import { shadows } from '@/ui/style/shadows'; +import { colors } from '@/features/core/ui/style/colors'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; +import { opacity } from '@/features/core/ui/style/opacity'; +import { shadows } from '@/features/core/ui/style/shadows'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/composite/CustomTabButton/CustomTabButton.tsx b/features/core/ui/components/composite/CustomTabButton/CustomTabButton.tsx similarity index 68% rename from ui/components/composite/CustomTabButton/CustomTabButton.tsx rename to features/core/ui/components/composite/CustomTabButton/CustomTabButton.tsx index 61a1ce60..cc61347a 100644 --- a/ui/components/composite/CustomTabButton/CustomTabButton.tsx +++ b/features/core/ui/components/composite/CustomTabButton/CustomTabButton.tsx @@ -1,7 +1,7 @@ -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { styles } from '@/ui/components/composite/CustomTabButton/CustomTabButton.style'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { styles } from '@/features/core/ui/components/composite/CustomTabButton/CustomTabButton.style'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import type { TabTriggerSlotProps } from 'expo-router/ui'; import { type PropsWithChildren, forwardRef } from 'react'; import { Pressable, type View } from 'react-native'; diff --git a/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts b/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts similarity index 70% rename from ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts rename to features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts index 8e51e946..02b23cbc 100644 --- a/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts +++ b/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts @@ -1,7 +1,7 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors } from '@/features/core/ui/style/colors'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx b/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx similarity index 64% rename from ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx rename to features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx index a4fa1873..4553b5c3 100644 --- a/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx +++ b/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx @@ -1,8 +1,8 @@ -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { styles } from '@/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { CustomIcon, type IoniconsName } from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { styles } from '@/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import type { TabTriggerSlotProps } from 'expo-router/ui'; import { type PropsWithChildren, forwardRef } from 'react'; import { Pressable, type View } from 'react-native'; diff --git a/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts b/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts similarity index 78% rename from ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts rename to features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts index d5c49ec0..2c67b841 100644 --- a/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts +++ b/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts @@ -1,9 +1,14 @@ import { logger } from '@/features/core/error'; import { TranslationKeys } from '@/features/core/translations'; -import type { LocationInfo } from '@/features/trip-generation'; import { useTranslation } from 'react-i18next'; +import type { Point } from 'react-native-google-places-autocomplete'; -export type { LocationInfo }; +export interface LocationInfo { + name: string; + coordinates: Point | undefined; + photoRef: string | undefined; + url: string | undefined; +} export const usePlacesAutocompleteLogic = (placeholder: string) => { const { i18n, t } = useTranslation(); diff --git a/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx b/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx similarity index 86% rename from ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx rename to features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx index 40f25c37..2bc9cbf7 100644 --- a/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx +++ b/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx @@ -1,7 +1,7 @@ -import type { LocationInfo } from '@/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic'; -import { usePlacesAutocompleteLogic } from '@/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import type { LocationInfo } from '@/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic'; +import { usePlacesAutocompleteLogic } from '@/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import Constants from 'expo-constants'; import type { FC } from 'react'; import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete'; diff --git a/ui/components/dialogs/ActionModal/ActionModal.logic.ts b/features/core/ui/components/dialogs/ActionModal/ActionModal.logic.ts similarity index 100% rename from ui/components/dialogs/ActionModal/ActionModal.logic.ts rename to features/core/ui/components/dialogs/ActionModal/ActionModal.logic.ts diff --git a/ui/components/dialogs/ActionModal/ActionModal.tsx b/features/core/ui/components/dialogs/ActionModal/ActionModal.tsx similarity index 76% rename from ui/components/dialogs/ActionModal/ActionModal.tsx rename to features/core/ui/components/dialogs/ActionModal/ActionModal.tsx index aee92a99..57e97afd 100644 --- a/ui/components/dialogs/ActionModal/ActionModal.tsx +++ b/features/core/ui/components/dialogs/ActionModal/ActionModal.tsx @@ -1,6 +1,6 @@ -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { useActionModalLogic } from '@/ui/components/dialogs/ActionModal/ActionModal.logic'; -import { ModalTemplate } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { useActionModalLogic } from '@/features/core/ui/components/dialogs/ActionModal/ActionModal.logic'; +import { ModalTemplate } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate'; import { View } from 'react-native'; export const ActionModal = () => { diff --git a/ui/components/dialogs/InfoModal/InfoModal.logic.ts b/features/core/ui/components/dialogs/InfoModal/InfoModal.logic.ts similarity index 100% rename from ui/components/dialogs/InfoModal/InfoModal.logic.ts rename to features/core/ui/components/dialogs/InfoModal/InfoModal.logic.ts diff --git a/ui/components/dialogs/InfoModal/InfoModal.tsx b/features/core/ui/components/dialogs/InfoModal/InfoModal.tsx similarity index 71% rename from ui/components/dialogs/InfoModal/InfoModal.tsx rename to features/core/ui/components/dialogs/InfoModal/InfoModal.tsx index ad8b0daa..65f858cc 100644 --- a/ui/components/dialogs/InfoModal/InfoModal.tsx +++ b/features/core/ui/components/dialogs/InfoModal/InfoModal.tsx @@ -1,6 +1,6 @@ -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { useInfoModalLogic } from '@/ui/components/dialogs/InfoModal/InfoModal.logic'; -import { ModalTemplate } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { useInfoModalLogic } from '@/features/core/ui/components/dialogs/InfoModal/InfoModal.logic'; +import { ModalTemplate } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate'; import { View } from 'react-native'; export const InfoModal = () => { diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts similarity index 82% rename from ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts index 5682647b..e7431a35 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts @@ -1,6 +1,6 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { components } from '@/features/core/ui/style/dimensions/components'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx new file mode 100644 index 00000000..ec471c40 --- /dev/null +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx @@ -0,0 +1,38 @@ +import type { ReactElement } from 'react'; +import type { ModalProps } from 'react-native-modal'; +import Modal from 'react-native-modal'; + +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; +import { ModalBody } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody'; +import { ModalContainer } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer'; +import { ModalContent } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContent'; +import { ModalFixedFooter } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter'; +import { ModalFooter } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter'; +import { ModalHeader } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader'; +import { opacity } from '@/features/core/ui/style/opacity'; + +type ModalTemplateProps = Partial & { + isVisible: boolean; + children: ReactElement; +}; + +export const ModalTemplate = ({ isVisible = false, children, ...props }: ModalTemplateProps) => { + return ( + + {children} + + ); +}; + +ModalTemplate.Container = ModalContainer; +ModalTemplate.Header = ModalHeader; +ModalTemplate.Content = ModalContent; +ModalTemplate.Body = ModalBody; +ModalTemplate.Footer = ModalFooter; +ModalTemplate.FixedFooter = ModalFixedFooter; diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx similarity index 75% rename from ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx index 3394c601..9cee7dbc 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx @@ -2,7 +2,7 @@ import type { FC, PropsWithChildren } from 'react'; import type { ViewProps } from 'react-native'; import { View } from 'react-native'; -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; export const ModalBody: FC> = ({ children, ...props }) => ( diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts similarity index 78% rename from ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts index a114b6c4..77a66092 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts @@ -3,10 +3,10 @@ import { Animated, Platform } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { match } from 'ts-pattern'; -import { PlatformOS } from '@/ui/PlatformOS'; -import { useKeyboardEffect } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect'; -import { DefaultAnimationDurationMs } from '@/ui/components/dialogs/animations'; -import { SCREEN_HEIGHT } from '@/ui/style/dimensions/spacing'; +import { PlatformOS } from '@/features/core/ui/PlatformOS'; +import { useKeyboardEffect } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect'; +import { DefaultAnimationDurationMs } from '@/features/core/ui/components/dialogs/animations'; +import { SCREEN_HEIGHT } from '@/features/core/ui/style/dimensions/spacing'; export const useModalTemplateContainerLogic = (maxHeight?: number) => { const { paddingHeight, keyboardHeight, isKeyboardVisible } = useKeyboardEffect(true); diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts similarity index 64% rename from ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts index b3a4f2ee..9ed3154f 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts @@ -1,7 +1,7 @@ import { StyleSheet } from 'react-native'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export const styles = StyleSheet.create({ container: { diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx similarity index 65% rename from ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx index 0a921ead..f463a164 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx @@ -2,8 +2,8 @@ import type { FC, PropsWithChildren } from 'react'; import type { ViewProps } from 'react-native'; import { Animated } from 'react-native'; -import { useModalTemplateContainerLogic } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic'; -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style'; +import { useModalTemplateContainerLogic } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic'; +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style'; type ModalContainerProps = PropsWithChildren & { maxHeight?: number; diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts similarity index 94% rename from ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts index 8c181029..6969caeb 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts @@ -1,5 +1,5 @@ -import { PlatformOS } from '@/ui/PlatformOS'; -import { components } from '@/ui/style/dimensions/components'; +import { PlatformOS } from '@/features/core/ui/PlatformOS'; +import { components } from '@/features/core/ui/style/dimensions/components'; import { useEffect, useState } from 'react'; import { Keyboard, Platform } from 'react-native'; import { match } from 'ts-pattern'; diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateContent.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContent.tsx similarity index 100% rename from ui/components/dialogs/ModalTemplate/ModalTemplateContent.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContent.tsx diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx similarity index 79% rename from ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx index 4d7f09f8..980458dc 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx @@ -1,8 +1,8 @@ import { View } from 'react-native'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; +import { ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { CustomButtonLarge } from '@/features/core/ui/components/basic/CustomButton/CustomButtonLarge'; +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; export const ModalFixedFooter = ({ primaryAction, diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx similarity index 67% rename from ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx index 67213dcd..3d003af5 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx @@ -1,6 +1,6 @@ import type { FC, PropsWithChildren } from 'react'; import { View } from 'react-native'; -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; export const ModalFooter: FC = ({ children }) => {children}; diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts similarity index 69% rename from ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts index 11d1c003..bf0bc1c1 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts @@ -1,6 +1,6 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { fontSize } from '@/features/core/ui/style/dimensions/fontSize'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { fontFamily } from '@/features/core/ui/style/fontFamily'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx similarity index 60% rename from ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx rename to features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx index 34939dec..c0757a84 100644 --- a/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx +++ b/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx @@ -1,13 +1,13 @@ import type { StyleProp, TextStyle } from 'react-native'; import { View } from 'react-native'; -import { CustomIconButtonSmall } from '@/ui/components/basic/CustomIconButton/CustomIconButtonSmall'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; +import { CustomIconButtonSmall } from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall'; +import { CustomText } from '@/features/core/ui/components/basic/CustomText/CustomText'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; +import { icons } from '@/features/core/ui/style/icons'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style'; +import { ButtonType } from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +import { styles } from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style'; export const ModalHeader = ({ title = '', diff --git a/ui/components/dialogs/animations.ts b/features/core/ui/components/dialogs/animations.ts similarity index 100% rename from ui/components/dialogs/animations.ts rename to features/core/ui/components/dialogs/animations.ts diff --git a/ui/components/providers/ToastProvider.tsx b/features/core/ui/components/providers/ToastProvider.tsx similarity index 78% rename from ui/components/providers/ToastProvider.tsx rename to features/core/ui/components/providers/ToastProvider.tsx index 0fa845ae..6cb9ed34 100644 --- a/ui/components/providers/ToastProvider.tsx +++ b/features/core/ui/components/providers/ToastProvider.tsx @@ -1,4 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Toast from 'react-native-toast-message'; diff --git a/ui/components/view/BasicView/BasicView.logic.ts b/features/core/ui/components/view/BasicView/BasicView.logic.ts similarity index 87% rename from ui/components/view/BasicView/BasicView.logic.ts rename to features/core/ui/components/view/BasicView/BasicView.logic.ts index af44cda9..e75d213e 100644 --- a/ui/components/view/BasicView/BasicView.logic.ts +++ b/features/core/ui/components/view/BasicView/BasicView.logic.ts @@ -2,9 +2,9 @@ import { Platform, StatusBar, type StyleProp, type ViewStyle } from 'react-nativ import { match } from 'ts-pattern'; import { logger } from '@/features/core/error'; -import { PlatformOS } from '@/ui/PlatformOS'; -import { styles } from '@/ui/components/view/BasicView/BasicView.style'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { PlatformOS } from '@/features/core/ui/PlatformOS'; +import { styles } from '@/features/core/ui/components/view/BasicView/BasicView.style'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; export type BasicViewProps = { isFullScreen?: boolean; diff --git a/ui/components/view/BasicView/BasicView.style.ts b/features/core/ui/components/view/BasicView/BasicView.style.ts similarity index 84% rename from ui/components/view/BasicView/BasicView.style.ts rename to features/core/ui/components/view/BasicView/BasicView.style.ts index ea9ce792..14c9fa79 100644 --- a/ui/components/view/BasicView/BasicView.style.ts +++ b/features/core/ui/components/view/BasicView/BasicView.style.ts @@ -1,5 +1,5 @@ -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors } from '@/features/core/ui/style/colors'; +import { spacing } from '@/features/core/ui/style/dimensions/spacing'; import { StyleSheet } from 'react-native'; export const styles = (paddingTop: number, paddingBottom: number) => diff --git a/ui/components/view/BasicView/BasicView.tsx b/features/core/ui/components/view/BasicView/BasicView.tsx similarity index 84% rename from ui/components/view/BasicView/BasicView.tsx rename to features/core/ui/components/view/BasicView/BasicView.tsx index a3062e29..b92c82ad 100644 --- a/ui/components/view/BasicView/BasicView.tsx +++ b/features/core/ui/components/view/BasicView/BasicView.tsx @@ -2,9 +2,9 @@ import type { PropsWithChildren } from 'react'; import { View } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import type { BasicViewProps } from '@/ui/components/view/BasicView/BasicView.logic'; -import { useBasicViewLogic } from '@/ui/components/view/BasicView/BasicView.logic'; +import { CustomButtonLarge } from '@/features/core/ui/components/basic/CustomButton/CustomButtonLarge'; +import type { BasicViewProps } from '@/features/core/ui/components/view/BasicView/BasicView.logic'; +import { useBasicViewLogic } from '@/features/core/ui/components/view/BasicView/BasicView.logic'; import { LinearGradient } from 'expo-linear-gradient'; import { StatusBar } from 'expo-status-bar'; diff --git a/features/core/ui/index.ts b/features/core/ui/index.ts new file mode 100644 index 00000000..069ea520 --- /dev/null +++ b/features/core/ui/index.ts @@ -0,0 +1,69 @@ +import type { FeatureTier } from '@/features/core/featureTier'; + +export const FEATURE_TIER: FeatureTier = 0; + +// Style tokens +export * from '@/features/core/ui/style/animations'; +export * from '@/features/core/ui/style/blur'; +export * from '@/features/core/ui/style/colors'; +export * from '@/features/core/ui/style/dimensions/breakpoints'; +export * from '@/features/core/ui/style/dimensions/components'; +export * from '@/features/core/ui/style/dimensions/fontSize'; +export * from '@/features/core/ui/style/dimensions/images'; +export * from '@/features/core/ui/style/dimensions/spacing'; +export * from '@/features/core/ui/style/fontFamily'; +export * from '@/features/core/ui/style/icons'; +export * from '@/features/core/ui/style/opacity'; +export * from '@/features/core/ui/style/shadows'; + +// Platform +export * from '@/features/core/ui/PlatformOS'; + +// Basic components +export * from '@/features/core/ui/components/basic/BaseSkeleton/BaseSkeleton'; +export * from '@/features/core/ui/components/basic/Cheap/Cheap'; +export * from '@/features/core/ui/components/basic/CustomButton/CustomButton.logic'; +export * from '@/features/core/ui/components/basic/CustomButton/CustomButtonLarge'; +export * from '@/features/core/ui/components/basic/CustomButton/CustomButtonMedium'; +export * from '@/features/core/ui/components/basic/CustomButton/CustomButtonSmall'; +export * from '@/features/core/ui/components/basic/CustomCard/CustomCard'; +export * from '@/features/core/ui/components/basic/CustomCard/CustomCard.logic'; +export * from '@/features/core/ui/components/basic/CustomIcon/CustomIcon'; +export * from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonLarge'; +export * from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; +export * from '@/features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall'; +export * from '@/features/core/ui/components/basic/CustomImage/CustomImage'; +export * from '@/features/core/ui/components/basic/CustomPressable/CustomPressable'; +export * from '@/features/core/ui/components/basic/CustomText/CustomText'; +export * from '@/features/core/ui/components/basic/CustomTextButton/CustomTextButton'; +export * from '@/features/core/ui/components/basic/CustomTextInput/CustomTextInput'; +export * from '@/features/core/ui/components/basic/LinearGradientText/LinearGradientText'; +export * from '@/features/core/ui/components/basic/LottieAnimation/LottieAnimation'; + +// Composite components +export * from '@/features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage'; +export * from '@/features/core/ui/components/composite/CardWithImage/CardWithImage'; +export * from '@/features/core/ui/components/composite/CustomHeader/CustomHeader'; +export * from '@/features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard'; +export * from '@/features/core/ui/components/composite/CustomNumberButton/CustomNumberButton'; +export * from '@/features/core/ui/components/composite/CustomScrollView/CustomScrollView'; +export * from '@/features/core/ui/components/composite/CustomTabButton/CustomTabButton'; +export * from '@/features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText'; +export * from '@/features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete'; + +// Dialog components +export * from '@/features/core/ui/components/dialogs/ActionModal/ActionModal'; +export * from '@/features/core/ui/components/dialogs/InfoModal/InfoModal'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplate'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContent'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter'; +export * from '@/features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader'; + +// Providers +export * from '@/features/core/ui/components/providers/ToastProvider'; + +// View components +export * from '@/features/core/ui/components/view/BasicView/BasicView'; diff --git a/ui/style/animations.ts b/features/core/ui/style/animations.ts similarity index 97% rename from ui/style/animations.ts rename to features/core/ui/style/animations.ts index 4677d178..12ba23be 100644 --- a/ui/style/animations.ts +++ b/features/core/ui/style/animations.ts @@ -6,7 +6,7 @@ export const heartPulse: CSSAnimationKeyframes = { '50%': { transform: [{ scale: 1.4 }, { rotate: '0deg' }] }, '75%': { transform: [{ scale: 1.3 }, { rotate: '15deg' }] }, '100%': { transform: [{ scale: 1 }, { rotate: '0deg' }] }, -}; +} as const; // Each word covers ~12.5% of the cycle (100 / 8 words), loops forever export const wordKeyframes: CSSAnimationKeyframes[] = [ @@ -60,16 +60,16 @@ export const wordKeyframes: CSSAnimationKeyframes[] = [ '100%': { opacity: 0 }, }, { '0%': { opacity: 0 }, '87%': { opacity: 0 }, '88%': { opacity: 1 }, '99%': { opacity: 1 }, '100%': { opacity: 0 } }, -]; +] as const; // Each color layer pulses from faint to full opacity — staggered phases create the blended mix export const colorBgPulse: CSSAnimationKeyframes = { '0%': { opacity: 0.15 }, '50%': { opacity: 1 }, '100%': { opacity: 0.15 }, -}; +} as const; export const rotate: CSSAnimationKeyframes = { '0%': { transform: [{ rotateY: '0deg' }] }, '100%': { transform: [{ rotateY: '180deg' }] }, -}; +} as const; diff --git a/ui/style/blur.ts b/features/core/ui/style/blur.ts similarity index 100% rename from ui/style/blur.ts rename to features/core/ui/style/blur.ts diff --git a/ui/style/colors.ts b/features/core/ui/style/colors.ts similarity index 97% rename from ui/style/colors.ts rename to features/core/ui/style/colors.ts index 92eae034..cc226c48 100644 --- a/ui/style/colors.ts +++ b/features/core/ui/style/colors.ts @@ -19,4 +19,4 @@ export const colors = { tertiaryBlue: '#63b3ff', primaryRed: '#FFD9D9', secondaryGreen: '#8AFF8A', -}; +} as const; diff --git a/ui/style/dimensions/breakpoints.ts b/features/core/ui/style/dimensions/breakpoints.ts similarity index 82% rename from ui/style/dimensions/breakpoints.ts rename to features/core/ui/style/dimensions/breakpoints.ts index 915bcdc3..a71a37ac 100644 --- a/ui/style/dimensions/breakpoints.ts +++ b/features/core/ui/style/dimensions/breakpoints.ts @@ -1,3 +1,3 @@ export const breakpoints = { smallDevicesHeight: 700, -}; +} as const; diff --git a/ui/style/dimensions/components.ts b/features/core/ui/style/dimensions/components.ts similarity index 93% rename from ui/style/dimensions/components.ts rename to features/core/ui/style/dimensions/components.ts index c2b53506..f8dacc69 100644 --- a/ui/style/dimensions/components.ts +++ b/features/core/ui/style/dimensions/components.ts @@ -1,4 +1,4 @@ -import { PlatformOS } from '@/ui/PlatformOS'; +import { PlatformOS } from '@/features/core/ui/PlatformOS'; import { Platform } from 'react-native'; export const components = { @@ -34,4 +34,4 @@ export const components = { welcomeCardWidthSmall: 100, welcomeCardWidthMedium: 150, welcomeCardWidthLarge: 200, -}; +} as const; diff --git a/ui/style/dimensions/fontSize.ts b/features/core/ui/style/dimensions/fontSize.ts similarity index 100% rename from ui/style/dimensions/fontSize.ts rename to features/core/ui/style/dimensions/fontSize.ts diff --git a/ui/style/dimensions/images.ts b/features/core/ui/style/dimensions/images.ts similarity index 100% rename from ui/style/dimensions/images.ts rename to features/core/ui/style/dimensions/images.ts diff --git a/ui/style/dimensions/spacing.ts b/features/core/ui/style/dimensions/spacing.ts similarity index 100% rename from ui/style/dimensions/spacing.ts rename to features/core/ui/style/dimensions/spacing.ts diff --git a/features/core/ui/style/fontFamily.ts b/features/core/ui/style/fontFamily.ts new file mode 100644 index 00000000..8dc87a98 --- /dev/null +++ b/features/core/ui/style/fontFamily.ts @@ -0,0 +1,21 @@ +export const fontFamily = { + interRegular: 'inter-regular', + interMedium: 'inter-medium', + interBold: 'inter-bold', + interExtraBold: 'inter-extrabold', + arimaRegular: 'arima-regular', + arimaBold: 'arima-bold', + arimaSemiBold: 'arima-semibold', + arimaMedium: 'arima-medium', +} as const; + +export const fontsConfig = { + 'inter-regular': require('@/features/core/ui/assets/fonts/Inter-Regular.ttf'), + 'inter-medium': require('@/features/core/ui/assets/fonts/Inter-Medium.ttf'), + 'inter-bold': require('@/features/core/ui/assets/fonts/Inter-Bold.ttf'), + 'inter-extrabold': require('@/features/core/ui/assets/fonts/Inter-ExtraBold.ttf'), + 'arima-regular': require('@/features/core/ui/assets/fonts/Arima-Regular.ttf'), + 'arima-bold': require('@/features/core/ui/assets/fonts/Arima-Bold.ttf'), + 'arima-semibold': require('@/features/core/ui/assets/fonts/Arima-SemiBold.ttf'), + 'arima-medium': require('@/features/core/ui/assets/fonts/Arima-Medium.ttf'), +} as const; diff --git a/ui/style/icons.ts b/features/core/ui/style/icons.ts similarity index 99% rename from ui/style/icons.ts rename to features/core/ui/style/icons.ts index 05eb7f38..f49c2fc0 100644 --- a/ui/style/icons.ts +++ b/features/core/ui/style/icons.ts @@ -42,4 +42,4 @@ export const icons: Record = { cafe: 'cafe-outline', eye: 'eye-outline', eyeOff: 'eye-off-outline', -}; +} as const; diff --git a/ui/style/opacity.ts b/features/core/ui/style/opacity.ts similarity index 100% rename from ui/style/opacity.ts rename to features/core/ui/style/opacity.ts diff --git a/ui/style/shadows.ts b/features/core/ui/style/shadows.ts similarity index 100% rename from ui/style/shadows.ts rename to features/core/ui/style/shadows.ts diff --git a/features/profile/ui/components/ButtonsContainer/ButtonsContainer.style.ts b/features/profile/ui/components/ButtonsContainer/ButtonsContainer.style.ts index 54d7bdce..9bc6f298 100644 --- a/features/profile/ui/components/ButtonsContainer/ButtonsContainer.style.ts +++ b/features/profile/ui/components/ButtonsContainer/ButtonsContainer.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/profile/ui/components/ButtonsContainer/ButtonsContainer.tsx b/features/profile/ui/components/ButtonsContainer/ButtonsContainer.tsx index 75639208..42aa605e 100644 --- a/features/profile/ui/components/ButtonsContainer/ButtonsContainer.tsx +++ b/features/profile/ui/components/ButtonsContainer/ButtonsContainer.tsx @@ -1,9 +1,5 @@ +import { CustomIcon, CustomText, type IoniconsName, colors, icons, spacing } from '@/features/core/ui'; import { style } from '@/features/profile/ui/components/ButtonsContainer/ButtonsContainer.style'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { type FC, Fragment } from 'react'; import { ActivityIndicator, Pressable, View } from 'react-native'; diff --git a/features/profile/ui/components/LanguageItem/LanguageItem.style.ts b/features/profile/ui/components/LanguageItem/LanguageItem.style.ts index 57a59ba7..da1738e3 100644 --- a/features/profile/ui/components/LanguageItem/LanguageItem.style.ts +++ b/features/profile/ui/components/LanguageItem/LanguageItem.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; -import { opacity } from '@/ui/style/opacity'; +import { colors, fontFamily, fontSize, opacity, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = (isSelected: boolean) => diff --git a/features/profile/ui/components/LanguageItem/LanguageItem.tsx b/features/profile/ui/components/LanguageItem/LanguageItem.tsx index 0a174bc5..958562ea 100644 --- a/features/profile/ui/components/LanguageItem/LanguageItem.tsx +++ b/features/profile/ui/components/LanguageItem/LanguageItem.tsx @@ -1,8 +1,5 @@ +import { BaseSkeleton, CustomIcon, CustomText, icons } from '@/features/core/ui'; import { styles as stylesFactory } from '@/features/profile/ui/components/LanguageItem/LanguageItem.style'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { icons } from '@/ui/style/icons'; import type { FC } from 'react'; import { Pressable } from 'react-native'; diff --git a/features/profile/ui/components/UserDataBox/UserDataBox.style.ts b/features/profile/ui/components/UserDataBox/UserDataBox.style.ts index c92b61fc..4c916904 100644 --- a/features/profile/ui/components/UserDataBox/UserDataBox.style.ts +++ b/features/profile/ui/components/UserDataBox/UserDataBox.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; -import { opacity } from '@/ui/style/opacity'; +import { colors, fontFamily, fontSize, opacity, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/profile/ui/components/UserDataBox/UserDataBox.tsx b/features/profile/ui/components/UserDataBox/UserDataBox.tsx index 2bae9689..47b41025 100644 --- a/features/profile/ui/components/UserDataBox/UserDataBox.tsx +++ b/features/profile/ui/components/UserDataBox/UserDataBox.tsx @@ -1,6 +1,6 @@ +import { CustomText } from '@/features/core/ui'; import { styles } from '@/features/profile/ui/components/UserDataBox/UserDataBox.style'; import type { Trip } from '@/features/trips'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; import { type FC, Fragment } from 'react'; import { Pressable, View } from 'react-native'; diff --git a/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style.ts b/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style.ts index ffa3c8c1..54bb9b06 100644 --- a/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style.ts +++ b/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style.ts @@ -1,4 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; +import { spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.tsx b/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.tsx index a879eef9..56feaa2c 100644 --- a/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.tsx +++ b/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.tsx @@ -1,11 +1,11 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView } from '@/features/core/ui'; import { LanguageItem } from '@/features/profile/ui/components/LanguageItem/LanguageItem'; import { Languages, useChangeLanguagePageLogic, } from '@/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.logic'; import { styles } from '@/features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { View } from 'react-native'; export const ChangeLanguagePage = () => { diff --git a/features/profile/ui/pages/ProfilePage/ProfilePage.logic.ts b/features/profile/ui/pages/ProfilePage/ProfilePage.logic.ts index e46e0ad0..2ccdc5fa 100644 --- a/features/profile/ui/pages/ProfilePage/ProfilePage.logic.ts +++ b/features/profile/ui/pages/ProfilePage/ProfilePage.logic.ts @@ -1,8 +1,8 @@ import { navigationService } from '@/features/core/navigation'; +import { components } from '@/features/core/ui'; import { useDeleteAccount } from '@/features/profile/facades/useDeleteAccount'; import { useProfileData } from '@/features/profile/facades/useProfileData'; import { useLogout } from '@/features/user'; -import { components } from '@/ui/style/dimensions/components'; import { thumbs } from '@dicebear/collection'; import { createAvatar } from '@dicebear/core'; diff --git a/features/profile/ui/pages/ProfilePage/ProfilePage.style.ts b/features/profile/ui/pages/ProfilePage/ProfilePage.style.ts index 722d3923..d86f435b 100644 --- a/features/profile/ui/pages/ProfilePage/ProfilePage.style.ts +++ b/features/profile/ui/pages/ProfilePage/ProfilePage.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/profile/ui/pages/ProfilePage/ProfilePage.tsx b/features/profile/ui/pages/ProfilePage/ProfilePage.tsx index 94f9cf1a..64df89cb 100644 --- a/features/profile/ui/pages/ProfilePage/ProfilePage.tsx +++ b/features/profile/ui/pages/ProfilePage/ProfilePage.tsx @@ -1,14 +1,9 @@ import { Stacks } from '@/features/core/navigation'; +import { BaseSkeleton, BasicView, CustomScrollView, CustomText, components, icons } from '@/features/core/ui'; import { ButtonsContainer } from '@/features/profile/ui/components/ButtonsContainer/ButtonsContainer'; import { UserDataBox } from '@/features/profile/ui/components/UserDataBox/UserDataBox'; import { useProfilePageLogic } from '@/features/profile/ui/pages/ProfilePage/ProfilePage.logic'; import { styles } from '@/features/profile/ui/pages/ProfilePage/ProfilePage.style'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; -import { components } from '@/ui/style/dimensions/components'; -import { icons } from '@/ui/style/icons'; import { View } from 'react-native'; import { SvgXml } from 'react-native-svg'; diff --git a/features/trip-generation/hooks/useBudgetColorsMap.ts b/features/trip-generation/hooks/useBudgetColorsMap.ts index 35c50873..41781561 100644 --- a/features/trip-generation/hooks/useBudgetColorsMap.ts +++ b/features/trip-generation/hooks/useBudgetColorsMap.ts @@ -1,5 +1,5 @@ +import { colors } from '@/features/core/ui'; import { BudgetOptions } from '@/features/trips'; -import { colors } from '@/ui/style/colors'; import { useTranslation } from 'react-i18next'; export const useBudgetColorsMap = () => { diff --git a/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style.ts b/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style.ts index b93cc334..9c2f99a5 100644 --- a/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style.ts +++ b/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style.ts @@ -1,4 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; +import { spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.tsx b/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.tsx index 8a325137..1d95b7a2 100644 --- a/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.tsx +++ b/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.tsx @@ -1,5 +1,5 @@ +import { rotate } from '@/features/core/ui'; import { styles } from '@/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style'; -import { rotate } from '@/ui/style/animations'; import { View } from 'react-native'; import Animated from 'react-native-reanimated'; diff --git a/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.tsx b/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.tsx index 6075f7ad..8c2ca3d2 100644 --- a/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.tsx +++ b/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.tsx @@ -1,5 +1,5 @@ +import { colorBgPulse } from '@/features/core/ui'; import { styles } from '@/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.style'; -import { colorBgPulse } from '@/ui/style/animations'; import { Fragment } from 'react'; import Animated from 'react-native-reanimated'; diff --git a/features/trip-generation/ui/components/DateBox/DateBox.style.ts b/features/trip-generation/ui/components/DateBox/DateBox.style.ts index 50568e24..dfe2d071 100644 --- a/features/trip-generation/ui/components/DateBox/DateBox.style.ts +++ b/features/trip-generation/ui/components/DateBox/DateBox.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/components/DateBox/DateBox.tsx b/features/trip-generation/ui/components/DateBox/DateBox.tsx index 440909e4..cf3d7de7 100644 --- a/features/trip-generation/ui/components/DateBox/DateBox.tsx +++ b/features/trip-generation/ui/components/DateBox/DateBox.tsx @@ -1,11 +1,5 @@ +import { ButtonType, CustomIcon, CustomIconButtonMedium, CustomText, colors, icons, spacing } from '@/features/core/ui'; import { style } from '@/features/trip-generation/ui/components/DateBox/DateBox.style'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomIconButtonMedium } from '@/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import type { FC } from 'react'; import { useTranslation } from 'react-i18next'; import { View } from 'react-native'; diff --git a/features/trip-generation/ui/components/SummaryCard/SummaryCard.style.ts b/features/trip-generation/ui/components/SummaryCard/SummaryCard.style.ts index 9870ab17..5084a4ec 100644 --- a/features/trip-generation/ui/components/SummaryCard/SummaryCard.style.ts +++ b/features/trip-generation/ui/components/SummaryCard/SummaryCard.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/components/SummaryCard/SummaryCard.tsx b/features/trip-generation/ui/components/SummaryCard/SummaryCard.tsx index ca494994..192ee8c5 100644 --- a/features/trip-generation/ui/components/SummaryCard/SummaryCard.tsx +++ b/features/trip-generation/ui/components/SummaryCard/SummaryCard.tsx @@ -1,10 +1,6 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { TravelerInfo } from '@/features/trip-generation/domain/entities/TravelerInfo'; import { style } from '@/features/trip-generation/ui/components/SummaryCard/SummaryCard.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style.ts b/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style.ts index 39d98d17..2247d9c5 100644 --- a/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style.ts +++ b/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.tsx b/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.tsx index 234c4192..69aa7922 100644 --- a/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.tsx +++ b/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.tsx @@ -1,7 +1,6 @@ +import { CardType, CustomNumberButton } from '@/features/core/ui'; import { useTravelersNumberSelectorLogic } from '@/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.logic'; import { styles } from '@/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style'; -import { CardType } from '@/ui/components/basic/CustomCard/CustomCard.logic'; -import { CustomNumberButton } from '@/ui/components/composite/CustomNumberButton/CustomNumberButton'; import { FlatList, View } from 'react-native'; const Separator = () => ; diff --git a/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style.ts b/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style.ts index cd6e0f79..b158109b 100644 --- a/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style.ts +++ b/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style.ts @@ -1,7 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.tsx b/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.tsx index f5118f69..2dedc92c 100644 --- a/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.tsx +++ b/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.tsx @@ -1,5 +1,5 @@ +import { wordKeyframes } from '@/features/core/ui'; import { styles } from '@/features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style'; -import { wordKeyframes } from '@/ui/style/animations'; import { Text, View } from 'react-native'; import Animated from 'react-native-reanimated'; diff --git a/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style.ts b/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style.ts index 2558cd33..b603ecec 100644 --- a/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style.ts +++ b/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; const BORDER_SIZE = 15; diff --git a/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx b/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx index 9046edb6..a8436564 100644 --- a/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx +++ b/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx @@ -1,14 +1,13 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, LottieAnimation } from '@/features/core/ui'; import { AnimatedBlocks } from '@/features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks'; import { AnimatedColorsBackground } from '@/features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground'; import { WordsAnimation } from '@/features/trip-generation/ui/components/WordsAnimation/WordsAnimation'; import { useGenerateTripPageLogic } from '@/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.logic'; import { style } from '@/features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style'; -import { LottieAnimation } from '@/ui/components/basic/LottieAnimation/LottieAnimation'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { View } from 'react-native'; -const animation = require('@/ui/assets/lottie/loading_animation.json'); +const animation = require('@/features/core/ui/assets/lottie/loading_animation.json'); export const GenerateTripPage = () => { useGenerateTripPageLogic(); diff --git a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts index a56aa056..1c63aae2 100644 --- a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts +++ b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts @@ -9,7 +9,7 @@ export type TripRecap = { icon: string; }; -const animation = require('@/ui/assets/lottie/photo_animation.json'); +const animation = require('@/features/core/ui/assets/lottie/photo_animation.json'); export const useReviewTripPageLogic = () => { const { tripSelectors } = useTripGenerationState(); diff --git a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style.ts b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style.ts index ddddeb3c..966298fb 100644 --- a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style.ts +++ b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style.ts @@ -1,7 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.tsx b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.tsx index bb99faca..631398e0 100644 --- a/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.tsx +++ b/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.tsx @@ -1,11 +1,8 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CustomScrollView, CustomText, LottieAnimation } from '@/features/core/ui'; import { SummaryCard } from '@/features/trip-generation/ui/components/SummaryCard/SummaryCard'; import { useReviewTripPageLogic } from '@/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic'; import { style } from '@/features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { LottieAnimation } from '@/ui/components/basic/LottieAnimation/LottieAnimation'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { View } from 'react-native'; export const ReviewTripPage = () => { diff --git a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts index 89df86fc..a6f2e172 100644 --- a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts +++ b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts @@ -3,7 +3,7 @@ import type { LocationInfo } from '@/features/trip-generation/domain/entities/Lo import { useTripGenerationState } from '@/features/trip-generation/state/useTripGenerationState'; import { useState } from 'react'; -const animation = require('@/ui/assets/lottie/search_animation.json'); +const animation = require('@/features/core/ui/assets/lottie/search_animation.json'); export const useSearchPageLogic = () => { const { tripActions } = useTripGenerationState(); diff --git a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style.ts b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style.ts index 9b4bb83a..2535cc75 100644 --- a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style.ts +++ b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style.ts @@ -1,7 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.tsx b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.tsx index bd973f84..365fb804 100644 --- a/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.tsx +++ b/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.tsx @@ -1,10 +1,7 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CustomText, LottieAnimation, PlacesAutocomplete } from '@/features/core/ui'; import { useSearchPageLogic } from '@/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic'; import { styles } from '@/features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { LottieAnimation } from '@/ui/components/basic/LottieAnimation/LottieAnimation'; -import { PlacesAutocomplete } from '@/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { View } from 'react-native'; export const SearchPlacePage = () => { diff --git a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.data.ts b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.data.ts index 8e938f3a..d27c9917 100644 --- a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.data.ts +++ b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.data.ts @@ -1,5 +1,5 @@ +import { icons } from '@/features/core/ui'; import { BudgetOptions } from '@/features/trips'; -import { icons } from '@/ui/style/icons'; const budgetIcons = [icons.cash, icons.bag, icons.card, icons.diamond]; diff --git a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style.ts b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style.ts index 204b7ea2..240de372 100644 --- a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style.ts +++ b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style.ts @@ -1,6 +1,4 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { SCREEN_WIDTH, spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { SCREEN_WIDTH, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.tsx b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.tsx index 88197954..8f357701 100644 --- a/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.tsx +++ b/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.tsx @@ -1,14 +1,10 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CardType, CustomIconTextCard, CustomText, colors } from '@/features/core/ui'; import { BudgetData, useSelectBudgetPageLogic, } from '@/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.logic'; import { style } from '@/features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style'; -import { CardType } from '@/ui/components/basic/CustomCard/CustomCard.logic'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomIconTextCard } from '@/ui/components/composite/CustomIconTextCard/CustomIconTextCard'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; -import { colors } from '@/ui/style/colors'; import { FlatList, View } from 'react-native'; const SeparatorItem = () => ; diff --git a/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style.ts b/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style.ts index 77db98a3..aba58fc7 100644 --- a/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style.ts +++ b/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.tsx b/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.tsx index 2313f359..7998855c 100644 --- a/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.tsx +++ b/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.tsx @@ -1,11 +1,8 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CustomScrollView, CustomText, colors } from '@/features/core/ui'; import { DateBox } from '@/features/trip-generation/ui/components/DateBox/DateBox'; import { useSelectDatesPageLogic } from '@/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.logic'; import { style } from '@/features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; -import { colors } from '@/ui/style/colors'; import { View } from 'react-native'; import CalendarPicker from 'react-native-calendar-picker'; diff --git a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.data.ts b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.data.ts index 5e911045..62f8707a 100644 --- a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.data.ts +++ b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.data.ts @@ -1,5 +1,5 @@ +import { icons } from '@/features/core/ui'; import { TravelerOptions } from '@/features/trip-generation/domain/entities/TravelerOptions'; -import { icons } from '@/ui/style/icons'; const travelerIcons = [icons.airplane, icons.heartOutline, icons.home, icons.boat]; diff --git a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style.ts b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style.ts index 8fc62a91..aca6ab0a 100644 --- a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style.ts +++ b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style.ts @@ -1,6 +1,4 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { SCREEN_WIDTH, spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { SCREEN_WIDTH, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.tsx b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.tsx index 09de98b4..7cc4902f 100644 --- a/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.tsx +++ b/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.tsx @@ -1,12 +1,8 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CardType, CustomIconTextCard, CustomText, colors } from '@/features/core/ui'; import { TravelersNumberSelector } from '@/features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector'; import { useSelectTravelersPageLogic } from '@/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.logic'; import { style } from '@/features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style'; -import { CardType } from '@/ui/components/basic/CustomCard/CustomCard.logic'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { CustomIconTextCard } from '@/ui/components/composite/CustomIconTextCard/CustomIconTextCard'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; -import { colors } from '@/ui/style/colors'; import { FlatList, View } from 'react-native'; const SeparatorItem = () => ; diff --git a/features/trips/hooks/useBudgetColorsMap.ts b/features/trips/hooks/useBudgetColorsMap.ts index 37bef212..521f5d7a 100644 --- a/features/trips/hooks/useBudgetColorsMap.ts +++ b/features/trips/hooks/useBudgetColorsMap.ts @@ -1,5 +1,5 @@ +import { colors } from '@/features/core/ui'; import { BudgetOptions } from '@/features/trips/domain/entities/BudgetOptions'; -import { colors } from '@/ui/style/colors'; import { useTranslation } from 'react-i18next'; export const useBudgetColorsMap = () => { diff --git a/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style.ts b/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style.ts index 655894a9..0614bd4c 100644 --- a/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style.ts +++ b/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.tsx b/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.tsx index fdf5d933..1cfa1d29 100644 --- a/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.tsx +++ b/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.tsx @@ -1,10 +1,6 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import { styles } from '@/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style'; import { OpenMapButton } from '@/features/trips/ui/components/OpenMapButton/OpenMapButton'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { type FC, Fragment } from 'react'; import { View } from 'react-native'; import { showLocation } from 'react-native-map-link'; diff --git a/features/trips/ui/components/ActivityItem/ActivityItem.style.ts b/features/trips/ui/components/ActivityItem/ActivityItem.style.ts index 49f8966a..7c7bc013 100644 --- a/features/trips/ui/components/ActivityItem/ActivityItem.style.ts +++ b/features/trips/ui/components/ActivityItem/ActivityItem.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/ActivityItem/ActivityItem.tsx b/features/trips/ui/components/ActivityItem/ActivityItem.tsx index b89a93e5..ca658aff 100644 --- a/features/trips/ui/components/ActivityItem/ActivityItem.tsx +++ b/features/trips/ui/components/ActivityItem/ActivityItem.tsx @@ -1,14 +1,8 @@ +import { BaseSkeleton, CustomIcon, CustomImage, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { ScheduleItem } from '@/features/trips/domain/entities/ScheduleItem'; import { useActivityItemLogic } from '@/features/trips/ui/components/ActivityItem/ActivityItem.logic'; import { styles } from '@/features/trips/ui/components/ActivityItem/ActivityItem.style'; import { NumberedMarker } from '@/features/trips/ui/components/NumberedMarker/NumberedMarker'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { type FC, Fragment, memo } from 'react'; import { Pressable, View } from 'react-native'; diff --git a/features/trips/ui/components/DayItem/DayItem.style.ts b/features/trips/ui/components/DayItem/DayItem.style.ts index 28971aa1..7f4855ce 100644 --- a/features/trips/ui/components/DayItem/DayItem.style.ts +++ b/features/trips/ui/components/DayItem/DayItem.style.ts @@ -1,5 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/DetailsBox/DetailsBox.style.ts b/features/trips/ui/components/DetailsBox/DetailsBox.style.ts index 749d3f28..3e37a169 100644 --- a/features/trips/ui/components/DetailsBox/DetailsBox.style.ts +++ b/features/trips/ui/components/DetailsBox/DetailsBox.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/DetailsBox/DetailsBox.tsx b/features/trips/ui/components/DetailsBox/DetailsBox.tsx index b8fb7177..11e96094 100644 --- a/features/trips/ui/components/DetailsBox/DetailsBox.tsx +++ b/features/trips/ui/components/DetailsBox/DetailsBox.tsx @@ -1,11 +1,7 @@ +import { ButtonType, CustomButtonMedium, CustomText, PlatformOS, blur } from '@/features/core/ui'; import { useDetailsBoxLogic } from '@/features/trips/ui/components/DetailsBox/DetailsBox.logic'; import { styles } from '@/features/trips/ui/components/DetailsBox/DetailsBox.style'; import { MainPlacesList } from '@/features/trips/ui/components/MainPlacesList/MainPlacesList'; -import { PlatformOS } from '@/ui/PlatformOS'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomButtonMedium } from '@/ui/components/basic/CustomButton/CustomButtonMedium'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { blur } from '@/ui/style/blur'; import MaskedView from '@react-native-masked-view/masked-view'; import { BlurView } from 'expo-blur'; import type { FC, RefObject } from 'react'; diff --git a/features/trips/ui/components/EmptyListContainer/EmptyListContainer.style.ts b/features/trips/ui/components/EmptyListContainer/EmptyListContainer.style.ts index 1fba5225..4601828d 100644 --- a/features/trips/ui/components/EmptyListContainer/EmptyListContainer.style.ts +++ b/features/trips/ui/components/EmptyListContainer/EmptyListContainer.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx b/features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx index cbeca5dc..1c4d1f08 100644 --- a/features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx +++ b/features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx @@ -1,9 +1,9 @@ +import { LottieAnimation } from '@/features/core/ui'; import { styles } from '@/features/trips/ui/components/EmptyListContainer/EmptyListContainer.style'; import { StartNewTripCard } from '@/features/trips/ui/components/StartNewTripCard/StartNewTripCard'; -import { LottieAnimation } from '@/ui/components/basic/LottieAnimation/LottieAnimation'; import { View } from 'react-native'; -const animation = require('@/ui/assets/lottie/trip_animation.json'); +const animation = require('@/features/core/ui/assets/lottie/trip_animation.json'); export const EmptyListContainer = () => { return ( diff --git a/features/trips/ui/components/FoodCard/FoodCard.style.ts b/features/trips/ui/components/FoodCard/FoodCard.style.ts index b43637c5..aaaa9715 100644 --- a/features/trips/ui/components/FoodCard/FoodCard.style.ts +++ b/features/trips/ui/components/FoodCard/FoodCard.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { SCREEN_WIDTH, spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { SCREEN_WIDTH, colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/FoodCard/FoodCard.tsx b/features/trips/ui/components/FoodCard/FoodCard.tsx index 6f1b0113..94a63faf 100644 --- a/features/trips/ui/components/FoodCard/FoodCard.tsx +++ b/features/trips/ui/components/FoodCard/FoodCard.tsx @@ -1,10 +1,6 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { Food } from '@/features/trips/domain/entities/Food'; import { styles } from '@/features/trips/ui/components/FoodCard/FoodCard.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { LinearGradient } from 'expo-linear-gradient'; import type { FC } from 'react'; import { FlatList, View } from 'react-native'; diff --git a/features/trips/ui/components/HeaderChips/HeaderChips.tsx b/features/trips/ui/components/HeaderChips/HeaderChips.tsx index 64d71f34..092f027b 100644 --- a/features/trips/ui/components/HeaderChips/HeaderChips.tsx +++ b/features/trips/ui/components/HeaderChips/HeaderChips.tsx @@ -1,6 +1,4 @@ -import { Cheap } from '@/ui/components/basic/Cheap/Cheap'; -import { colors } from '@/ui/style/colors'; -import { icons } from '@/ui/style/icons'; +import { Cheap, colors, icons } from '@/features/core/ui'; import { type FC, Fragment } from 'react'; type HeaderChipsProps = { diff --git a/features/trips/ui/components/HeaderIcons/HeaderIcons.style.ts b/features/trips/ui/components/HeaderIcons/HeaderIcons.style.ts index 863ac4eb..4a22df2c 100644 --- a/features/trips/ui/components/HeaderIcons/HeaderIcons.style.ts +++ b/features/trips/ui/components/HeaderIcons/HeaderIcons.style.ts @@ -1,5 +1,4 @@ -import { heartPulse } from '@/ui/style/animations'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { heartPulse, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/HeaderIcons/HeaderIcons.tsx b/features/trips/ui/components/HeaderIcons/HeaderIcons.tsx index de9e3982..b3f62e5c 100644 --- a/features/trips/ui/components/HeaderIcons/HeaderIcons.tsx +++ b/features/trips/ui/components/HeaderIcons/HeaderIcons.tsx @@ -1,9 +1,6 @@ +import { ButtonType, CustomIconButtonMedium, icons, spacing } from '@/features/core/ui'; import { useHeaderIconsLogic } from '@/features/trips/ui/components/HeaderIcons/HeaderIcons.logic'; import { heartPulseStyle, styles } from '@/features/trips/ui/components/HeaderIcons/HeaderIcons.style'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIconButtonMedium } from '@/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { View } from 'react-native'; export const HeaderIcons = () => { diff --git a/features/trips/ui/components/HomeSkeleton/HomeSkeleton.style.ts b/features/trips/ui/components/HomeSkeleton/HomeSkeleton.style.ts index e6ce9e88..e73f6136 100644 --- a/features/trips/ui/components/HomeSkeleton/HomeSkeleton.style.ts +++ b/features/trips/ui/components/HomeSkeleton/HomeSkeleton.style.ts @@ -1,6 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors, components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/HomeSkeleton/HomeSkeleton.tsx b/features/trips/ui/components/HomeSkeleton/HomeSkeleton.tsx index 99a6bee0..f44bbd0d 100644 --- a/features/trips/ui/components/HomeSkeleton/HomeSkeleton.tsx +++ b/features/trips/ui/components/HomeSkeleton/HomeSkeleton.tsx @@ -1,5 +1,5 @@ +import { BaseSkeleton } from '@/features/core/ui'; import { styles } from '@/features/trips/ui/components/HomeSkeleton/HomeSkeleton.style'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; import { useTranslation } from 'react-i18next'; import { View } from 'react-native'; diff --git a/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.style.ts b/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.style.ts index cd70ca6b..621f7bfb 100644 --- a/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.style.ts +++ b/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.style.ts @@ -1,4 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; +import { spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.tsx b/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.tsx index 2b94e696..e343acde 100644 --- a/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.tsx +++ b/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.tsx @@ -1,3 +1,4 @@ +import { colors, icons } from '@/features/core/ui'; import type { Food } from '@/features/trips/domain/entities/Food'; import type { TripDetails } from '@/features/trips/domain/entities/TripDetails'; import type { Weather } from '@/features/trips/domain/entities/Weather'; @@ -8,8 +9,6 @@ import { NotesCard } from '@/features/trips/ui/components/NotesCard/NotesCard'; import { TripDetailsCard } from '@/features/trips/ui/components/TripDetailsCard/TripDetailsCard'; import { WeatherCard } from '@/features/trips/ui/components/WeatherCard/WeatherCard'; import type { AllCoordinates } from '@/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.logic'; -import { colors } from '@/ui/style/colors'; -import { icons } from '@/ui/style/icons'; import { type FC, memo } from 'react'; import { View } from 'react-native'; import type { Region } from 'react-native-maps'; diff --git a/features/trips/ui/components/MainPlacesList/MainPlacesList.style.ts b/features/trips/ui/components/MainPlacesList/MainPlacesList.style.ts index 7b585ae5..78703600 100644 --- a/features/trips/ui/components/MainPlacesList/MainPlacesList.style.ts +++ b/features/trips/ui/components/MainPlacesList/MainPlacesList.style.ts @@ -1,5 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/MainPlacesList/MainPlacesList.tsx b/features/trips/ui/components/MainPlacesList/MainPlacesList.tsx index 99182134..a067cff1 100644 --- a/features/trips/ui/components/MainPlacesList/MainPlacesList.tsx +++ b/features/trips/ui/components/MainPlacesList/MainPlacesList.tsx @@ -1,7 +1,7 @@ +import { BaseSkeleton } from '@/features/core/ui'; import { useMainPlacesListLogic } from '@/features/trips/ui/components/MainPlacesList/MainPlacesList.logic'; import { styles } from '@/features/trips/ui/components/MainPlacesList/MainPlacesList.style'; import { MainListItem } from '@/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; import { FlatList } from 'react-native'; export const MainPlacesList = () => { diff --git a/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style.ts b/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style.ts index d02e5334..619f632f 100644 --- a/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style.ts +++ b/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style.ts @@ -1,6 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { colors, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.tsx b/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.tsx index 51495264..16955153 100644 --- a/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.tsx +++ b/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.tsx @@ -1,10 +1,6 @@ +import { CustomIcon, CustomImage, colors, icons, spacing } from '@/features/core/ui'; import { useMainListItemLogic } from '@/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.logic'; import { styles } from '@/features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/features/trips/ui/components/MapCallout/MapCallout.style.ts b/features/trips/ui/components/MapCallout/MapCallout.style.ts index 83c82197..cde1cb85 100644 --- a/features/trips/ui/components/MapCallout/MapCallout.style.ts +++ b/features/trips/ui/components/MapCallout/MapCallout.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, components, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/MapCallout/MapCallout.tsx b/features/trips/ui/components/MapCallout/MapCallout.tsx index 037c2d64..66b04d93 100644 --- a/features/trips/ui/components/MapCallout/MapCallout.tsx +++ b/features/trips/ui/components/MapCallout/MapCallout.tsx @@ -1,6 +1,6 @@ +import { CustomText } from '@/features/core/ui'; import { useMapCalloutLogic } from '@/features/trips/ui/components/MapCallout/MapCallout.logic'; import { styles } from '@/features/trips/ui/components/MapCallout/MapCallout.style'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; import type { FC } from 'react'; import { View } from 'react-native'; import { Callout } from 'react-native-maps'; diff --git a/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style.ts b/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style.ts index d5c89b2a..e9c2e613 100644 --- a/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style.ts +++ b/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.tsx b/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.tsx index 36b0d82b..255ceef3 100644 --- a/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.tsx +++ b/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.tsx @@ -1,10 +1,8 @@ +import { PlatformOS, colors, spacing } from '@/features/core/ui'; import { MapCallout } from '@/features/trips/ui/components/MapCallout/MapCallout'; import { styles } from '@/features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style'; import { NumberedMarker } from '@/features/trips/ui/components/NumberedMarker/NumberedMarker'; import type { AllCoordinates } from '@/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.logic'; -import { PlatformOS } from '@/ui/PlatformOS'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; import { Platform, View } from 'react-native'; import MapView, { Marker, Polyline, PROVIDER_GOOGLE, type Region } from 'react-native-maps'; diff --git a/features/trips/ui/components/NotesCard/NotesCard.style.ts b/features/trips/ui/components/NotesCard/NotesCard.style.ts index 0bfae5ca..2698e001 100644 --- a/features/trips/ui/components/NotesCard/NotesCard.style.ts +++ b/features/trips/ui/components/NotesCard/NotesCard.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = (isTitleInverted: boolean) => diff --git a/features/trips/ui/components/NotesCard/NotesCard.tsx b/features/trips/ui/components/NotesCard/NotesCard.tsx index 95333629..a2b8ccc5 100644 --- a/features/trips/ui/components/NotesCard/NotesCard.tsx +++ b/features/trips/ui/components/NotesCard/NotesCard.tsx @@ -1,8 +1,5 @@ +import { CustomIcon, CustomText, type IoniconsName, colors, spacing } from '@/features/core/ui'; import { styles as stylesFactory } from '@/features/trips/ui/components/NotesCard/NotesCard.style'; -import { CustomIcon, type IoniconsName } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; import { type FC, Fragment } from 'react'; import { View } from 'react-native'; diff --git a/features/trips/ui/components/NumberedMarker/NumberedMarker.style.ts b/features/trips/ui/components/NumberedMarker/NumberedMarker.style.ts index e2516ca3..b04b91d4 100644 --- a/features/trips/ui/components/NumberedMarker/NumberedMarker.style.ts +++ b/features/trips/ui/components/NumberedMarker/NumberedMarker.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/NumberedMarker/NumberedMarker.tsx b/features/trips/ui/components/NumberedMarker/NumberedMarker.tsx index 7a727c90..ea101c6a 100644 --- a/features/trips/ui/components/NumberedMarker/NumberedMarker.tsx +++ b/features/trips/ui/components/NumberedMarker/NumberedMarker.tsx @@ -1,5 +1,5 @@ +import { CustomText } from '@/features/core/ui'; import { styles } from '@/features/trips/ui/components/NumberedMarker/NumberedMarker.style'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; import type { FC } from 'react'; import { type StyleProp, View, type ViewStyle } from 'react-native'; diff --git a/features/trips/ui/components/OpenMapButton/OpenMapButton.style.ts b/features/trips/ui/components/OpenMapButton/OpenMapButton.style.ts index 0d3d237e..7c3e18bf 100644 --- a/features/trips/ui/components/OpenMapButton/OpenMapButton.style.ts +++ b/features/trips/ui/components/OpenMapButton/OpenMapButton.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; -import { opacity } from '@/ui/style/opacity'; +import { colors, fontFamily, fontSize, opacity, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/OpenMapButton/OpenMapButton.tsx b/features/trips/ui/components/OpenMapButton/OpenMapButton.tsx index 51eef786..c7995df3 100644 --- a/features/trips/ui/components/OpenMapButton/OpenMapButton.tsx +++ b/features/trips/ui/components/OpenMapButton/OpenMapButton.tsx @@ -1,9 +1,5 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import { styles } from '@/features/trips/ui/components/OpenMapButton/OpenMapButton.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import type { FC } from 'react'; import { Pressable, type StyleProp, type ViewStyle } from 'react-native'; diff --git a/features/trips/ui/components/StartNewTripCard/StartNewTripCard.style.ts b/features/trips/ui/components/StartNewTripCard/StartNewTripCard.style.ts index 122923d8..ea4655c3 100644 --- a/features/trips/ui/components/StartNewTripCard/StartNewTripCard.style.ts +++ b/features/trips/ui/components/StartNewTripCard/StartNewTripCard.style.ts @@ -1,6 +1,4 @@ -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const style = StyleSheet.create({ diff --git a/features/trips/ui/components/StartNewTripCard/StartNewTripCard.tsx b/features/trips/ui/components/StartNewTripCard/StartNewTripCard.tsx index d77babed..4d0c6702 100644 --- a/features/trips/ui/components/StartNewTripCard/StartNewTripCard.tsx +++ b/features/trips/ui/components/StartNewTripCard/StartNewTripCard.tsx @@ -1,11 +1,6 @@ +import { CustomButtonLarge, CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import { useStartNewTripCardLogic } from '@/features/trips/ui/components/StartNewTripCard/StartNewTripCard.logic'; import { style } from '@/features/trips/ui/components/StartNewTripCard/StartNewTripCard.style'; -import { CustomButtonLarge } from '@/ui/components/basic/CustomButton/CustomButtonLarge'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { View } from 'react-native'; export const StartNewTripCard = () => { diff --git a/features/trips/ui/components/TripCard/TripCard.style.ts b/features/trips/ui/components/TripCard/TripCard.style.ts index ed2d791e..e8a88579 100644 --- a/features/trips/ui/components/TripCard/TripCard.style.ts +++ b/features/trips/ui/components/TripCard/TripCard.style.ts @@ -1,10 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { components } from '@/ui/style/dimensions/components'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; -import { opacity } from '@/ui/style/opacity'; -import { shadows } from '@/ui/style/shadows'; +import { colors, components, fontFamily, fontSize, opacity, shadows, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/TripCard/TripCard.tsx b/features/trips/ui/components/TripCard/TripCard.tsx index 3161d908..d19fe4db 100644 --- a/features/trips/ui/components/TripCard/TripCard.tsx +++ b/features/trips/ui/components/TripCard/TripCard.tsx @@ -1,12 +1,7 @@ +import { CustomIcon, CustomImage, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { Trip } from '@/features/trips/domain/entities/Trip'; import { useTripCardLogic } from '@/features/trips/ui/components/TripCard/TripCard.logic'; import { styles } from '@/features/trips/ui/components/TripCard/TripCard.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { Pressable, View } from 'react-native'; export const TripCard = ({ item }: { item: Trip }) => { diff --git a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic.ts b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic.ts index 40de2e75..337ee616 100644 --- a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic.ts +++ b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic.ts @@ -1,7 +1,7 @@ import type { TripDetails } from '@/features/trips/domain/entities/TripDetails'; +import { colors } from '@/features/core/ui'; import { useBudgetColorsMap } from '@/features/trips/hooks/useBudgetColorsMap'; -import { colors } from '@/ui/style/colors'; import { useTranslation } from 'react-i18next'; type UseTripDetailsCardParams = { diff --git a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.style.ts b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.style.ts index c152d091..617118fa 100644 --- a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.style.ts +++ b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.tsx b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.tsx index 8925c5a9..eeb92eab 100644 --- a/features/trips/ui/components/TripDetailsCard/TripDetailsCard.tsx +++ b/features/trips/ui/components/TripDetailsCard/TripDetailsCard.tsx @@ -1,11 +1,7 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { TripDetails } from '@/features/trips/domain/entities/TripDetails'; import { useTripDetailsCard } from '@/features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic'; import { styles } from '@/features/trips/ui/components/TripDetailsCard/TripDetailsCard.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { LinearGradient } from 'expo-linear-gradient'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/features/trips/ui/components/WeatherCard/WeatherCard.style.ts b/features/trips/ui/components/WeatherCard/WeatherCard.style.ts index b76be6e3..ae3d056b 100644 --- a/features/trips/ui/components/WeatherCard/WeatherCard.style.ts +++ b/features/trips/ui/components/WeatherCard/WeatherCard.style.ts @@ -1,7 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/components/WeatherCard/WeatherCard.tsx b/features/trips/ui/components/WeatherCard/WeatherCard.tsx index c9d35d5f..68e566ee 100644 --- a/features/trips/ui/components/WeatherCard/WeatherCard.tsx +++ b/features/trips/ui/components/WeatherCard/WeatherCard.tsx @@ -1,10 +1,6 @@ +import { CustomIcon, CustomText, colors, icons, spacing } from '@/features/core/ui'; import type { Weather } from '@/features/trips/domain/entities/Weather'; import { styles } from '@/features/trips/ui/components/WeatherCard/WeatherCard.style'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { LinearGradient } from 'expo-linear-gradient'; import type { FC } from 'react'; import { View } from 'react-native'; diff --git a/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style.ts b/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style.ts index 80b132bf..540bee2e 100644 --- a/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style.ts +++ b/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style.ts @@ -1,8 +1,4 @@ -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { images } from '@/ui/style/dimensions/images'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { colors, fontFamily, fontSize, images, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = (isImageLoading: boolean) => diff --git a/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.tsx b/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.tsx index b12e75f2..01abd208 100644 --- a/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.tsx +++ b/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.tsx @@ -1,18 +1,20 @@ import { Routes } from '@/features/core/navigation'; +import { + AnimatedHeaderImage, + BasicView, + ButtonType, + CustomIcon, + CustomIconButtonMedium, + CustomScrollView, + CustomText, + colors, + icons, + spacing, +} from '@/features/core/ui'; import { ActivityDetailsBox } from '@/features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox'; import { useActivityDetailsPageLogic } from '@/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.logic'; import { styles as stylesFactory } from '@/features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style'; import { ActivityImageCarousel } from '@/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel'; -import { ButtonType } from '@/ui/components/basic/CustomButton/CustomButton.logic'; -import { CustomIcon } from '@/ui/components/basic/CustomIcon/CustomIcon'; -import { CustomIconButtonMedium } from '@/ui/components/basic/CustomIconButton/CustomIconButtonMedium'; -import { CustomText } from '@/ui/components/basic/CustomText/CustomText'; -import { AnimatedHeaderImage } from '@/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage'; -import { CustomScrollView } from '@/ui/components/composite/CustomScrollView/CustomScrollView'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; -import { colors } from '@/ui/style/colors'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { icons } from '@/ui/style/icons'; import { Fragment } from 'react'; import { View } from 'react-native'; diff --git a/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style.ts b/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style.ts index e45e1696..6cc31f61 100644 --- a/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style.ts +++ b/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; +import { components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.tsx b/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.tsx index 5d8ccb98..dcf085e7 100644 --- a/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.tsx +++ b/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.tsx @@ -1,7 +1,6 @@ +import { BaseSkeleton, CustomImage } from '@/features/core/ui'; import type { ImageResult } from '@/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.logic'; import { styles } from '@/features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; import type { ListRenderItemInfo } from 'react-native'; import { FlatList } from 'react-native'; diff --git a/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style.ts b/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style.ts index 6dafc0b9..d53fe3b2 100644 --- a/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style.ts +++ b/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style.ts @@ -1,9 +1,4 @@ -import { PlatformOS } from '@/ui/PlatformOS'; -import { colors } from '@/ui/style/colors'; -import { fontSize } from '@/ui/style/dimensions/fontSize'; -import { images } from '@/ui/style/dimensions/images'; -import { spacing } from '@/ui/style/dimensions/spacing'; -import { fontFamily } from '@/ui/style/fontFamily'; +import { PlatformOS, colors, fontFamily, fontSize, images, spacing } from '@/features/core/ui'; import { Platform, StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.tsx b/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.tsx index 6b3d306d..27587162 100644 --- a/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.tsx +++ b/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.tsx @@ -1,12 +1,11 @@ import { Routes } from '@/features/core/navigation'; +import { AnimatedHeaderImage, BasicView } from '@/features/core/ui'; import type { DayPlan } from '@/features/trips/domain/entities/DayPlan'; import { DayItem } from '@/features/trips/ui/components/DayItem/DayItem'; import { HeaderIcons } from '@/features/trips/ui/components/HeaderIcons/HeaderIcons'; import { ListHeaderComponent } from '@/features/trips/ui/components/ListHeaderComponent/ListHeaderComponent'; import { useTripDetailsPageLogic } from '@/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.logic'; import { styles } from '@/features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style'; -import { AnimatedHeaderImage } from '@/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { Fragment } from 'react'; import { SectionList, type SectionListData, View } from 'react-native'; diff --git a/features/trips/ui/pages/TripListPage/TripListPage.style.ts b/features/trips/ui/pages/TripListPage/TripListPage.style.ts index f5d1b4cd..a4b85830 100644 --- a/features/trips/ui/pages/TripListPage/TripListPage.style.ts +++ b/features/trips/ui/pages/TripListPage/TripListPage.style.ts @@ -1,5 +1,4 @@ -import { components } from '@/ui/style/dimensions/components'; -import { SCREEN_WIDTH, spacing } from '@/ui/style/dimensions/spacing'; +import { SCREEN_WIDTH, components, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/pages/TripListPage/TripListPage.tsx b/features/trips/ui/pages/TripListPage/TripListPage.tsx index 8b0ad2a9..33750355 100644 --- a/features/trips/ui/pages/TripListPage/TripListPage.tsx +++ b/features/trips/ui/pages/TripListPage/TripListPage.tsx @@ -1,11 +1,10 @@ import { Routes } from '@/features/core/navigation'; +import { BaseSkeleton, BasicView } from '@/features/core/ui'; import type { Trip } from '@/features/trips/domain/entities/Trip'; import type { UniqueItem } from '@/features/trips/domain/entities/UniqueItem'; import { TripCard } from '@/features/trips/ui/components/TripCard/TripCard'; import { useTripListPageLogic } from '@/features/trips/ui/pages/TripListPage/TripListPage.logic'; import { styles } from '@/features/trips/ui/pages/TripListPage/TripListPage.style'; -import { BaseSkeleton } from '@/ui/components/basic/BaseSkeleton/BaseSkeleton'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { FlatList } from 'react-native'; const renderItem = (item: Trip | UniqueItem) => { diff --git a/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style.ts b/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style.ts index c69dd43f..134907a9 100644 --- a/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style.ts +++ b/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style.ts @@ -1,5 +1,4 @@ -import { spacing } from '@/ui/style/dimensions/spacing'; -import { shadows } from '@/ui/style/shadows'; +import { shadows, spacing } from '@/features/core/ui'; import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ diff --git a/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.tsx b/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.tsx index 6f51f14c..2421009d 100644 --- a/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.tsx +++ b/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.tsx @@ -1,12 +1,10 @@ import { Routes } from '@/features/core/navigation'; +import { BasicView, CustomImage, PlatformOS } from '@/features/core/ui'; import { DetailsBox } from '@/features/trips/ui/components/DetailsBox/DetailsBox'; import { EmptyListContainer } from '@/features/trips/ui/components/EmptyListContainer/EmptyListContainer'; import { HomeSkeleton } from '@/features/trips/ui/components/HomeSkeleton/HomeSkeleton'; import { useUpcomingTripPageLogic } from '@/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.logic'; import { styles } from '@/features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style'; -import { PlatformOS } from '@/ui/PlatformOS'; -import { CustomImage } from '@/ui/components/basic/CustomImage/CustomImage'; -import { BasicView } from '@/ui/components/view/BasicView/BasicView'; import { BlurTargetView } from 'expo-blur'; import { useRef } from 'react'; import { Platform, View } from 'react-native'; diff --git a/gemini_response.md b/gemini_response.md deleted file mode 100644 index e69de29b..00000000 diff --git a/package.json b/package.json index f62746d4..4b85ebde 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "format": "npx @biomejs/biome format --write", "lint": "npx @biomejs/biome check --no-errors-on-unmatched --files-ignore-unknown=true", "lint:compiler": "npx eslint \"**/*.{js,jsx,ts,tsx}\"", - "arch": "depcruise features ui convex app types --config .dependency-cruiser.js", - "arch:report": "depcruise features ui convex app types --config .dependency-cruiser.js --output-type err-html > arch-report.html; open arch-report.html" + "arch": "depcruise features convex app types --config .dependency-cruiser.js", + "arch:report": "depcruise features convex app types --config .dependency-cruiser.js --output-type err-html > arch-report.html; open arch-report.html" }, "jest": { "preset": "jest-expo" diff --git a/scripts/architecture/generateIndexBoundaryRules.js b/scripts/architecture/generateIndexBoundaryRules.js index 196f0012..8289aece 100644 --- a/scripts/architecture/generateIndexBoundaryRules.js +++ b/scripts/architecture/generateIndexBoundaryRules.js @@ -10,7 +10,7 @@ function generateIndexBoundaryRules(featureTiers) { }, to: { path: `^${featurePath}/`, - pathNot: `^${featurePath}/(index|pages)\\.ts$`, + pathNot: `^${featurePath}/(index|pages)\\.ts$|^${featurePath}/assets/`, }, }; }); diff --git a/scripts/architecture/staticLayerRules.js b/scripts/architecture/staticLayerRules.js index 129dd794..88c7a10f 100644 --- a/scripts/architecture/staticLayerRules.js +++ b/scripts/architecture/staticLayerRules.js @@ -23,12 +23,12 @@ const staticLayerRules = [ { name: 'tsx-no-cross-feature-public-api', comment: - '.tsx files must not import runtime values from a cross-feature public API (index.ts) — all cross-feature runtime values must flow through the ViewModel (.logic.ts). import type from any feature index.ts is allowed for prop annotations. Exceptions: features/core/navigation is allowed for Routes/Stacks constants used directly in BasicView; app/ route and layout files are thin entry points that are expected to import feature public APIs directly.', + '.tsx files must not import runtime values from a cross-feature public API (index.ts) — all cross-feature runtime values must flow through the ViewModel (.logic.ts). import type from any feature index.ts is allowed for prop annotations. Exceptions: features/core/navigation is allowed for Routes/Stacks constants used directly in BasicView; features/core/ui is allowed because UI components are the natural direct consumer of the component library; app/ route and layout files are thin entry points that are expected to import feature public APIs directly.', severity: 'error', from: { path: '\\.tsx$', pathNot: '^app/' }, to: { path: '^features/.*/index\\.ts$', - pathNot: '^features/core/navigation/', + pathNot: '^features/core/(navigation|ui)/', dependencyTypesNot: ['type-only'], }, }, diff --git a/tsconfig.json b/tsconfig.json index 5756bc2b..b287a9af 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,7 @@ "emitDecoratorMetadata": true, "verbatimModuleSyntax": true, "paths": { - "@/*": ["./*"], - "@ui/*": ["./ui/*"] + "@/*": ["./*"] } }, "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts"] diff --git a/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx b/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx deleted file mode 100644 index f29db18b..00000000 --- a/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { colors } from '@/ui/style/colors'; -import { type ReactElement, useEffect } from 'react'; -import type { StyleProp, ViewProps, ViewStyle } from 'react-native'; -import Animated, { - cancelAnimation, - Easing, - useAnimatedStyle, - useSharedValue, - withRepeat, - withTiming, -} from 'react-native-reanimated'; - -export type BaseSkeletonProps = ViewProps & { - children?: ReactElement; - style?: StyleProp; -}; - -export const BaseSkeleton = ({ children, style, ...props }: BaseSkeletonProps) => { - const opacity = useSharedValue(1); - - useEffect(() => { - opacity.value = withRepeat( - withTiming(0.3, { - duration: 1000, - easing: Easing.linear, - }), - -1, - true, - ); - - return () => cancelAnimation(opacity); - }, []); - - const animatedStyleParent = useAnimatedStyle(() => { - return { opacity: opacity.value, backgroundColor: colors.primaryGrey }; - }); - - return ( - - {children} - - ); -}; diff --git a/ui/components/basic/CustomButton/CustomButtonLarge.tsx b/ui/components/basic/CustomButton/CustomButtonLarge.tsx deleted file mode 100644 index 236427ac..00000000 --- a/ui/components/basic/CustomButton/CustomButtonLarge.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseButton, type CustomButtonProps } from '@/ui/components/basic/CustomButton/BaseButton'; -import { components } from '@/ui/style/dimensions/components'; - -export function CustomButtonLarge(props: CustomButtonProps) { - return ; -} diff --git a/ui/components/basic/CustomButton/CustomButtonMedium.tsx b/ui/components/basic/CustomButton/CustomButtonMedium.tsx deleted file mode 100644 index 06e8087f..00000000 --- a/ui/components/basic/CustomButton/CustomButtonMedium.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseButton, type CustomButtonProps } from '@/ui/components/basic/CustomButton/BaseButton'; -import { components } from '@/ui/style/dimensions/components'; - -export function CustomButtonMedium(props: CustomButtonProps) { - return ; -} diff --git a/ui/components/basic/CustomButton/CustomButtonSmall.tsx b/ui/components/basic/CustomButton/CustomButtonSmall.tsx deleted file mode 100644 index 98028c58..00000000 --- a/ui/components/basic/CustomButton/CustomButtonSmall.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseButton, type CustomButtonProps } from '@/ui/components/basic/CustomButton/BaseButton'; -import { components } from '@/ui/style/dimensions/components'; - -export function CustomButtonSmall(props: CustomButtonProps) { - return ; -} diff --git a/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx b/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx deleted file mode 100644 index f6608e5d..00000000 --- a/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseIconButton, type CustomIconButtonProps } from '@/ui/components/basic/CustomIconButton/BaseIconButton'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; - -export function CustomIconButtonLarge(props: CustomIconButtonProps) { - return ( - - ); -} diff --git a/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx b/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx deleted file mode 100644 index ac8e844c..00000000 --- a/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseIconButton, type CustomIconButtonProps } from '@/ui/components/basic/CustomIconButton/BaseIconButton'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; - -export function CustomIconButtonMedium(props: CustomIconButtonProps) { - return ( - - ); -} diff --git a/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx b/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx deleted file mode 100644 index ac7be2c3..00000000 --- a/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { BaseIconButton, type CustomIconButtonProps } from '@/ui/components/basic/CustomIconButton/BaseIconButton'; -import { components } from '@/ui/style/dimensions/components'; -import { spacing } from '@/ui/style/dimensions/spacing'; - -export function CustomIconButtonSmall(props: CustomIconButtonProps) { - return ; -} diff --git a/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx b/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx deleted file mode 100644 index 691f998f..00000000 --- a/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import type { ReactElement } from 'react'; -import type { ModalProps } from 'react-native-modal'; -import Modal from 'react-native-modal'; - -import { styles } from '@/ui/components/dialogs/ModalTemplate/ModalTemplate.style'; -import { ModalBody } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateBody'; -import { ModalContainer } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer'; -import { ModalContent } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateContent'; -import { ModalFixedFooter } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter'; -import { ModalFooter } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateFooter'; -import { ModalHeader } from '@/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader'; -import { opacity } from '@/ui/style/opacity'; - -type ModalTemplateProps = Partial & { - isVisible: boolean; - children: ReactElement; -}; - -export const ModalTemplate = ({ isVisible = false, children, ...props }: ModalTemplateProps) => { - return ( - - {children} - - ); -}; - -ModalTemplate.Container = ModalContainer; -ModalTemplate.Header = ModalHeader; -ModalTemplate.Content = ModalContent; -ModalTemplate.Body = ModalBody; -ModalTemplate.Footer = ModalFooter; -ModalTemplate.FixedFooter = ModalFixedFooter; diff --git a/ui/style/fontFamily.ts b/ui/style/fontFamily.ts deleted file mode 100644 index e6a2f25d..00000000 --- a/ui/style/fontFamily.ts +++ /dev/null @@ -1,21 +0,0 @@ -export const fontFamily = { - interRegular: 'inter-regular', - interMedium: 'inter-medium', - interBold: 'inter-bold', - interExtraBold: 'inter-extrabold', - arimaRegular: 'arima-regular', - arimaBold: 'arima-bold', - arimaSemiBold: 'arima-semibold', - arimaMedium: 'arima-medium', -} as const; - -export const fontsConfig = { - 'inter-regular': require('@/ui/assets/fonts/Inter-Regular.ttf'), - 'inter-medium': require('@/ui/assets/fonts/Inter-Medium.ttf'), - 'inter-bold': require('@/ui/assets/fonts/Inter-Bold.ttf'), - 'inter-extrabold': require('@/ui/assets/fonts/Inter-ExtraBold.ttf'), - 'arima-regular': require('@/ui/assets/fonts/Arima-Regular.ttf'), - 'arima-bold': require('@/ui/assets/fonts/Arima-Bold.ttf'), - 'arima-semibold': require('@/ui/assets/fonts/Arima-SemiBold.ttf'), - 'arima-medium': require('@/ui/assets/fonts/Arima-Medium.ttf'), -}; diff --git a/wiki/docs/ARCHITECTURE.md b/wiki/docs/ARCHITECTURE.md index 7aabd9c2..b5c650cb 100644 --- a/wiki/docs/ARCHITECTURE.md +++ b/wiki/docs/ARCHITECTURE.md @@ -144,7 +144,7 @@ Not every feature needs an `index.ts` — only create one when another feature a | `di/resolve.ts` exports | DI internals — IoC resolution is always local to the owning feature | | State stores | Internal UI state — other features have no business reading or writing another feature's state | | `libraries/` wrappers | Internal infrastructure — third-party library wrappers are an implementation detail | -| UI components | Promoted to global `ui/components/` when truly shared — never exported from a feature's public API | +| UI components | Promoted to `features/core/ui/components/` when truly shared — never exported from a feature's public API | | Repository interfaces (`IXxxRepository`) | Internal contracts — the consuming feature needs the facade, not the plumbing behind it | @@ -202,8 +202,8 @@ export { useGetImage } from './facades/useGetImage'; // facade | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Foundational infrastructure needed by many features (logging, storage, HTTP, error types) | Move to the relevant `features/core//` | | Logic or type needed by one specific feature | Expose via `index.ts` of the owning feature | -| UI component needed by many features | Promote to global `ui/components/` | -| UI component needed by one other feature | Before sharing, ask: does the other feature need the component itself, or just the data? If it just needs the data, it can build its own version. If the component is truly needed as-is, promote it to global `ui/components/` — never export UI components via `index.ts` | +| UI component needed by many features | Promote to `features/core/ui/components/` | +| UI component needed by one other feature | Before sharing, ask: does the other feature need the component itself, or just the data? If it just needs the data, it can build its own version. If the component is truly needed as-is, promote it to `features/core/ui/components/` — never export UI components via `index.ts` | > **When the consumer is a same-tier feature:** the table above does not apply — same-tier features cannot import from each other regardless of what is being shared. Extract the shared concept to a lower-tier feature, move it to `features/core/` if it is infrastructural, or introduce a Tier 3 orchestration feature. See [Feature Dependency Tiers](#feature-dependency-tiers). @@ -1254,7 +1254,7 @@ ComponentName/ └── ComponentName.style.ts → StyleSheet definitions ``` -Feature-specific React Native components. They follow a **promotion rule**: a component always starts in the feature that needs it. The moment a second feature needs the same component, it gets promoted to the global `ui/components/`. This prevents premature abstraction while keeping duplication visible — before building a new component, check `ui/components/` first, then the feature you're drawing inspiration from. +Feature-specific React Native components. They follow a **promotion rule**: a component always starts in the feature that needs it. The moment a second feature needs the same component, it gets promoted to `features/core/ui/components/`. This prevents premature abstraction while keeping duplication visible — before building a new component, check `features/core/ui/components/` first, then the feature you're drawing inspiration from. #### `ui/pages/` @@ -1498,12 +1498,12 @@ export class ConcreteService implements IService { --- -## Global UI (`/ui`) +## Global UI (`features/core/ui/`) -Reusable building blocks shared across multiple features. +Reusable building blocks shared across multiple features. Lives in `features/core/ui/` as a Tier 0 core sub-module. Its public API is `features/core/ui/index.ts` — import from `@/features/core/ui` everywhere. ``` -ui/ +features/core/ui/ ├── components/ │ ├── basic/ → Atomic: buttons, text, icons, inputs… │ ├── composite/ → Composed: headers, scroll views, autocomplete…