Skip to content

[APP] remove ui folder#343

Merged
timothyrusso merged 5 commits into
mainfrom
feature/342
May 17, 2026
Merged

[APP] remove ui folder#343
timothyrusso merged 5 commits into
mainfrom
feature/342

Conversation

@timothyrusso
Copy link
Copy Markdown
Owner

@timothyrusso timothyrusso commented May 16, 2026

Fixes #342

@sourcery-ai
Copy link
Copy Markdown

sourcery-ai Bot commented May 16, 2026

Reviewer's Guide

Refactors the shared UI library into the new features/core/ui module, updates all consumers and asset paths to use it, tightens type safety on style tokens, and relocates auth reset-password modal and core error pages into feature-scoped locations while adjusting architecture rules and tooling accordingly.

File-Level Changes

Change Details Files
Introduce features/core/ui as the central shared UI module and update consumers to import from it instead of the old ui tree.
  • Add features/core/ui/index.ts that re-exports style tokens, platform helpers, basic/composite/dialog/view components, and providers as the public UI surface.
  • Move or re-point basic UI components (buttons, cards, icons, text, inputs, images, skeletons, Lottie, etc.) from ui/components/... to features/core/ui/components/... and update all imports across auth, trips, trip-generation, profile, and app layouts.
  • Update composite and dialog components (headers, scroll views, tab buttons, places autocomplete, modal template pieces) and BasicView to live under features/core/ui and be exported via the new index.
  • Remove the old @ui/* path alias from tsconfig and adjust all consumers to use the new '@/features/core/ui' entrypoint.
features/core/ui/index.ts
features/core/ui/components/**
features/core/ui/style/**
features/core/ui/PlatformOS.ts
tsconfig.json
features/auth/ui/**
features/trips/ui/**
features/trip-generation/ui/**
features/profile/ui/**
app/**
Relocate shared style tokens, assets, and animations into the core UI feature and update asset consumers.
  • Move colors, spacing, components, fontSize, breakpoints, icons, shadows, opacity, images, blur, and animations into features/core/ui/style and export them via the UI index.
  • Add fontFamily and fontsConfig under features/core/ui/style/fontFamily and update font loading to use the new asset paths.
  • Update all image and Lottie require paths (welcome images, logo, placeholders, loading/search/photo/trip animations) to point at features/core/ui/assets instead of ui/assets.
  • Adjust Expo app.json icon, splash, favicon, and splash plugin paths to the new asset locations and tweak iOS splash imageWidth from 150 to 100.
features/core/ui/style/**
features/core/ui/assets/**
app/_layout.tsx
app.json
features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts
features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx
features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx
features/core/images/facades/useGetGooglePlaceImage.ts
features/core/images/facades/useGetUnsplashImage.ts
features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts
features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts
features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts
Feature-scope auth reset password modal and core error pages while wiring them to the new UI module.
  • Move ResetPasswordModal and its logic/body components from ui/components/dialogs into features/auth/ui/components/ResetPasswordModal and update SignInPage to import it from the auth feature and other dependencies from features/core/ui.
  • Move GenericCrashView and RootAppCrashView components and styles into features/core/error/ui/components and re-export them via a new features/core/error/pages.ts facade.
  • Update any remaining references to these components to use the new feature paths and core UI index.
features/auth/ui/components/ResetPasswordModal/**
features/auth/ui/pages/SignInPage/SignInPage.tsx
features/core/error/ui/components/**
features/core/error/pages.ts
Tighten typing for style/config objects and animation keyframes to improve immutability and type safety.
  • Annotate colors, components, breakpoints, icons, and style animation objects/arrays with as const to make them readonly and preserve literal types.
  • Ensure dependent code still compiles against the narrowed types.
  • Apply the same readonly typing to navigation screenOptions and related config objects.
features/core/ui/style/colors.ts
features/core/ui/style/dimensions/components.ts
features/core/ui/style/dimensions/breakpoints.ts
features/core/ui/style/icons.ts
features/core/ui/style/animations.ts
features/core/navigation/libraries/screenOptions.ts
Align architecture and tooling with the new features/core/ui module and simplified top-level layout.
  • Allow .tsx files to import runtime values directly from features/core/ui in staticLayerRules and update exceptions comment accordingly.
  • Adjust generateIndexBoundaryRules to exempt feature assets directories from the index-boundary rule so asset imports are allowed.
  • Update dependency-cruiser collapsePattern and npm arch scripts to drop the legacy ui layer from the architecture graph and depcruise inputs.
  • Remove the @ui path alias from tsconfig and corresponding references in tooling configs.
scripts/architecture/staticLayerRules.js
scripts/architecture/generateIndexBoundaryRules.js
.dependency-cruiser.js
package.json
tsconfig.json

Possibly linked issues

  • #APP: PR introduces features/core/ui, FEATURE_TIER, and updated depcruise rules, directly addressing the issue’s architecture-tier enforcement

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 16, 2026

Important

Review skipped

Too many files!

This PR contains 240 files, which is 90 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5fa3c9ae-ebc2-4c38-93af-020767e2c7d0

📥 Commits

Reviewing files that changed from the base of the PR and between 03d5e36 and 697f754.

⛔ Files ignored due to path filters (20)
  • features/core/ui/assets/fonts/Arima-Bold.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Arima-Medium.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Arima-Regular.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Arima-SemiBold.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Inter-Bold.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Inter-ExtraBold.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Inter-Medium.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/fonts/Inter-Regular.ttf is excluded by !**/*.ttf
  • features/core/ui/assets/images/adaptive-icon.png is excluded by !**/*.png
  • features/core/ui/assets/images/android-icon.png is excluded by !**/*.png
  • features/core/ui/assets/images/favicon.png is excluded by !**/*.png
  • features/core/ui/assets/images/icon.png is excluded by !**/*.png
  • features/core/ui/assets/images/logo_round.png is excluded by !**/*.png
  • features/core/ui/assets/images/no-image-placeholder.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_1.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_2.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_3.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_4.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_5.jpg is excluded by !**/*.jpg
  • features/core/ui/assets/images/welcome_6.jpg is excluded by !**/*.jpg
📒 Files selected for processing (240)
  • .cursor/settings.json
  • .dependency-cruiser.js
  • .env.local.sample
  • .gitignore
  • .vscode/settings.json
  • README.md
  • app.json
  • app/(main)/(authenticated)/(tabs)/_layout.tsx
  • app/(main)/(authenticated)/_layout.tsx
  • app/(main)/(authenticated)/create-trip/_layout.tsx
  • app/(main)/(authenticated)/home-page/_layout.tsx
  • app/(main)/(authenticated)/profile/_layout.tsx
  • app/(main)/(login)/_layout.tsx
  • app/_layout.tsx
  • features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.logic.ts
  • features/auth/ui/components/ResetPasswordModal/ResetPasswordModal.tsx
  • features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.style.ts
  • features/auth/ui/components/ResetPasswordModal/components/ResetPasswordModalBody/ResetPasswordModalBody.tsx
  • features/auth/ui/components/WelcomeCard/WelcomeCard.logic.ts
  • features/auth/ui/components/WelcomeCard/WelcomeCard.style.ts
  • features/auth/ui/components/WelcomeCard/WelcomeCard.tsx
  • features/auth/ui/components/WelcomeCards/WelcomeCards.logic.ts
  • features/auth/ui/pages/SignInPage/SignInPage.style.ts
  • features/auth/ui/pages/SignInPage/SignInPage.tsx
  • features/auth/ui/pages/SignUpPage/SignUpPage.style.ts
  • features/auth/ui/pages/SignUpPage/SignUpPage.tsx
  • features/auth/ui/pages/WelcomePage/WelcomePage.logic.ts
  • features/auth/ui/pages/WelcomePage/WelcomePage.style.ts
  • features/auth/ui/pages/WelcomePage/WelcomePage.tsx
  • features/core/error/pages.ts
  • features/core/error/ui/components/GenericCrashView/GenericCrashView.logic.ts
  • features/core/error/ui/components/GenericCrashView/GenericCrashView.style.ts
  • features/core/error/ui/components/GenericCrashView/GenericCrashView.tsx
  • features/core/error/ui/components/RootAppCrashView/RootAppCrashView.logic.ts
  • features/core/error/ui/components/RootAppCrashView/RootAppCrashView.style.ts
  • features/core/error/ui/components/RootAppCrashView/RootAppCrashView.tsx
  • features/core/images/facades/useGetGooglePlaceImage.ts
  • features/core/images/facades/useGetUnsplashImage.ts
  • features/core/navigation/libraries/screenOptions.ts
  • features/core/ui/PlatformOS.ts
  • features/core/ui/assets/lottie/loading_animation.json
  • features/core/ui/assets/lottie/photo_animation.json
  • features/core/ui/assets/lottie/search_animation.json
  • features/core/ui/assets/lottie/trip_animation.json
  • features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts
  • features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx
  • features/core/ui/components/basic/Cheap/Cheap.style.ts
  • features/core/ui/components/basic/Cheap/Cheap.tsx
  • features/core/ui/components/basic/CustomButton/BaseButton.tsx
  • features/core/ui/components/basic/CustomButton/CustomButton.logic.ts
  • features/core/ui/components/basic/CustomButton/CustomButton.style.ts
  • features/core/ui/components/basic/CustomButton/CustomButtonLarge.tsx
  • features/core/ui/components/basic/CustomButton/CustomButtonMedium.tsx
  • features/core/ui/components/basic/CustomButton/CustomButtonSmall.tsx
  • features/core/ui/components/basic/CustomCard/CustomCard.logic.ts
  • features/core/ui/components/basic/CustomCard/CustomCard.style.ts
  • features/core/ui/components/basic/CustomCard/CustomCard.tsx
  • features/core/ui/components/basic/CustomIcon/CustomIcon.style.ts
  • features/core/ui/components/basic/CustomIcon/CustomIcon.tsx
  • features/core/ui/components/basic/CustomIconButton/BaseIconButton.tsx
  • features/core/ui/components/basic/CustomIconButton/CustomIconButton.style.ts
  • features/core/ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx
  • features/core/ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx
  • features/core/ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx
  • features/core/ui/components/basic/CustomImage/CustomImage.tsx
  • features/core/ui/components/basic/CustomPressable/CustomPressable.style.ts
  • features/core/ui/components/basic/CustomPressable/CustomPressable.tsx
  • features/core/ui/components/basic/CustomText/CustomText.style.ts
  • features/core/ui/components/basic/CustomText/CustomText.tsx
  • features/core/ui/components/basic/CustomTextButton/CustomTextButton.style.ts
  • features/core/ui/components/basic/CustomTextButton/CustomTextButton.tsx
  • features/core/ui/components/basic/CustomTextInput/CustomTextInput.logic.ts
  • features/core/ui/components/basic/CustomTextInput/CustomTextInput.style.ts
  • features/core/ui/components/basic/CustomTextInput/CustomTextInput.tsx
  • features/core/ui/components/basic/LinearGradientText/LinearGradientText.style.ts
  • features/core/ui/components/basic/LinearGradientText/LinearGradientText.tsx
  • features/core/ui/components/basic/LottieAnimation/LottieAnimation.tsx
  • features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.style.ts
  • features/core/ui/components/composite/AnimatedHeaderImage/AnimatedHeaderImage.tsx
  • features/core/ui/components/composite/CardWithImage/CardWithImage.style.ts
  • features/core/ui/components/composite/CardWithImage/CardWithImage.tsx
  • features/core/ui/components/composite/CustomHeader/CustomHeader.logic.ts
  • features/core/ui/components/composite/CustomHeader/CustomHeader.style.ts
  • features/core/ui/components/composite/CustomHeader/CustomHeader.tsx
  • features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.logic.ts
  • features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.style.ts
  • features/core/ui/components/composite/CustomIconTextCard/CustomIconTextCard.tsx
  • features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.logic.ts
  • features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.style.ts
  • features/core/ui/components/composite/CustomNumberButton/CustomNumberButton.tsx
  • features/core/ui/components/composite/CustomScrollView/CustomScrollView.logic.ts
  • features/core/ui/components/composite/CustomScrollView/CustomScrollView.style.ts
  • features/core/ui/components/composite/CustomScrollView/CustomScrollView.tsx
  • features/core/ui/components/composite/CustomScrollView/useGradualKeyboardAnimation.ts
  • features/core/ui/components/composite/CustomTabButton/CustomTabButton.style.ts
  • features/core/ui/components/composite/CustomTabButton/CustomTabButton.tsx
  • features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.style.ts
  • features/core/ui/components/composite/CustomTabButtonWithText/CustomTabButtonWithText.tsx
  • features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.logic.ts
  • features/core/ui/components/composite/PlacesAutocomplete/PlacesAutocomplete.tsx
  • features/core/ui/components/dialogs/ActionModal/ActionModal.logic.ts
  • features/core/ui/components/dialogs/ActionModal/ActionModal.tsx
  • features/core/ui/components/dialogs/InfoModal/InfoModal.logic.ts
  • features/core/ui/components/dialogs/InfoModal/InfoModal.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.style.ts
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplate.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateBody.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.logic.ts
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.style.ts
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/ModalTemplateContainer.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContainer/useKeyboardEffect.ts
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateContent.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFixedFooter.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateFooter.tsx
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.style.ts
  • features/core/ui/components/dialogs/ModalTemplate/ModalTemplateHeader/ModalTemplateHeader.tsx
  • features/core/ui/components/dialogs/animations.ts
  • features/core/ui/components/providers/ToastProvider.tsx
  • features/core/ui/components/view/BasicView/BasicView.logic.ts
  • features/core/ui/components/view/BasicView/BasicView.style.ts
  • features/core/ui/components/view/BasicView/BasicView.tsx
  • features/core/ui/index.ts
  • features/core/ui/style/animations.ts
  • features/core/ui/style/blur.ts
  • features/core/ui/style/colors.ts
  • features/core/ui/style/dimensions/breakpoints.ts
  • features/core/ui/style/dimensions/components.ts
  • features/core/ui/style/dimensions/fontSize.ts
  • features/core/ui/style/dimensions/images.ts
  • features/core/ui/style/dimensions/spacing.ts
  • features/core/ui/style/fontFamily.ts
  • features/core/ui/style/icons.ts
  • features/core/ui/style/opacity.ts
  • features/core/ui/style/shadows.ts
  • features/profile/ui/components/ButtonsContainer/ButtonsContainer.style.ts
  • features/profile/ui/components/ButtonsContainer/ButtonsContainer.tsx
  • features/profile/ui/components/LanguageItem/LanguageItem.style.ts
  • features/profile/ui/components/LanguageItem/LanguageItem.tsx
  • features/profile/ui/components/UserDataBox/UserDataBox.style.ts
  • features/profile/ui/components/UserDataBox/UserDataBox.tsx
  • features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.style.ts
  • features/profile/ui/pages/ChangeLanguagePage/ChangeLanguagePage.tsx
  • features/profile/ui/pages/ProfilePage/ProfilePage.logic.ts
  • features/profile/ui/pages/ProfilePage/ProfilePage.style.ts
  • features/profile/ui/pages/ProfilePage/ProfilePage.tsx
  • features/trip-generation/hooks/useBudgetColorsMap.ts
  • features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.style.ts
  • features/trip-generation/ui/components/AnimatedBlocks/AnimatedBlocks.tsx
  • features/trip-generation/ui/components/AnimatedColorsBackground/AnimatedColorsBackground.tsx
  • features/trip-generation/ui/components/DateBox/DateBox.style.ts
  • features/trip-generation/ui/components/DateBox/DateBox.tsx
  • features/trip-generation/ui/components/SummaryCard/SummaryCard.style.ts
  • features/trip-generation/ui/components/SummaryCard/SummaryCard.tsx
  • features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.style.ts
  • features/trip-generation/ui/components/TravelersNumberSelector/TravelersNumberSelector.tsx
  • features/trip-generation/ui/components/WordsAnimation/WordsAnimation.style.ts
  • features/trip-generation/ui/components/WordsAnimation/WordsAnimation.tsx
  • features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.style.ts
  • features/trip-generation/ui/pages/GenerateTripPage/GenerateTripPage.tsx
  • features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.logic.ts
  • features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.style.ts
  • features/trip-generation/ui/pages/ReviewTripPage/ReviewTripPage.tsx
  • features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.logic.ts
  • features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.style.ts
  • features/trip-generation/ui/pages/SearchPlacePage/SearchPlacePage.tsx
  • features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.data.ts
  • features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.style.ts
  • features/trip-generation/ui/pages/SelectBudgetPage/SelectBudgetPage.tsx
  • features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.style.ts
  • features/trip-generation/ui/pages/SelectDatesPage/SelectDatesPage.tsx
  • features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.data.ts
  • features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.style.ts
  • features/trip-generation/ui/pages/SelectTravelersPage/SelectTravelersPage.tsx
  • features/trips/hooks/useBudgetColorsMap.ts
  • features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.style.ts
  • features/trips/ui/components/ActivityDetailsBox/ActivityDetailsBox.tsx
  • features/trips/ui/components/ActivityItem/ActivityItem.style.ts
  • features/trips/ui/components/ActivityItem/ActivityItem.tsx
  • features/trips/ui/components/DayItem/DayItem.style.ts
  • features/trips/ui/components/DetailsBox/DetailsBox.style.ts
  • features/trips/ui/components/DetailsBox/DetailsBox.tsx
  • features/trips/ui/components/EmptyListContainer/EmptyListContainer.style.ts
  • features/trips/ui/components/EmptyListContainer/EmptyListContainer.tsx
  • features/trips/ui/components/FoodCard/FoodCard.style.ts
  • features/trips/ui/components/FoodCard/FoodCard.tsx
  • features/trips/ui/components/HeaderChips/HeaderChips.tsx
  • features/trips/ui/components/HeaderIcons/HeaderIcons.style.ts
  • features/trips/ui/components/HeaderIcons/HeaderIcons.tsx
  • features/trips/ui/components/HomeSkeleton/HomeSkeleton.style.ts
  • features/trips/ui/components/HomeSkeleton/HomeSkeleton.tsx
  • features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.style.ts
  • features/trips/ui/components/ListHeaderComponent/ListHeaderComponent.tsx
  • features/trips/ui/components/MainPlacesList/MainPlacesList.style.ts
  • features/trips/ui/components/MainPlacesList/MainPlacesList.tsx
  • features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.style.ts
  • features/trips/ui/components/MainPlacesList/components/MainListItem/MainListItem.tsx
  • features/trips/ui/components/MapCallout/MapCallout.style.ts
  • features/trips/ui/components/MapCallout/MapCallout.tsx
  • features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.style.ts
  • features/trips/ui/components/MapListHeaderComponent/MapListHeaderComponent.tsx
  • features/trips/ui/components/NotesCard/NotesCard.style.ts
  • features/trips/ui/components/NotesCard/NotesCard.tsx
  • features/trips/ui/components/NumberedMarker/NumberedMarker.style.ts
  • features/trips/ui/components/NumberedMarker/NumberedMarker.tsx
  • features/trips/ui/components/OpenMapButton/OpenMapButton.style.ts
  • features/trips/ui/components/OpenMapButton/OpenMapButton.tsx
  • features/trips/ui/components/StartNewTripCard/StartNewTripCard.style.ts
  • features/trips/ui/components/StartNewTripCard/StartNewTripCard.tsx
  • features/trips/ui/components/TripCard/TripCard.style.ts
  • features/trips/ui/components/TripCard/TripCard.tsx
  • features/trips/ui/components/TripDetailsCard/TripDetailsCard.logic.ts
  • features/trips/ui/components/TripDetailsCard/TripDetailsCard.style.ts
  • features/trips/ui/components/TripDetailsCard/TripDetailsCard.tsx
  • features/trips/ui/components/WeatherCard/WeatherCard.style.ts
  • features/trips/ui/components/WeatherCard/WeatherCard.tsx
  • features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.style.ts
  • features/trips/ui/pages/ActivityDetailsPage/ActivityDetailsPage.tsx
  • features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.style.ts
  • features/trips/ui/pages/ActivityDetailsPage/components/ActivityImageCarousel/ActivityImageCarousel.tsx
  • features/trips/ui/pages/TripDetailsPage/TripDetailsPage.style.ts
  • features/trips/ui/pages/TripDetailsPage/TripDetailsPage.tsx
  • features/trips/ui/pages/TripListPage/TripListPage.style.ts
  • features/trips/ui/pages/TripListPage/TripListPage.tsx
  • features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.style.ts
  • features/trips/ui/pages/UpcomingTripPage/UpcomingTripPage.tsx
  • gemini_response.md
  • package.json
  • scripts/architecture/generateIndexBoundaryRules.js
  • scripts/architecture/staticLayerRules.js
  • tsconfig.json
  • ui/components/basic/BaseSkeleton/BaseSkeleton.tsx
  • ui/components/basic/CustomButton/CustomButtonLarge.tsx
  • ui/components/basic/CustomButton/CustomButtonMedium.tsx
  • ui/components/basic/CustomButton/CustomButtonSmall.tsx
  • ui/components/basic/CustomIconButton/CustomIconButtonLarge.tsx
  • ui/components/basic/CustomIconButton/CustomIconButtonMedium.tsx
  • ui/components/basic/CustomIconButton/CustomIconButtonSmall.tsx
  • ui/components/dialogs/ModalTemplate/ModalTemplate.tsx
  • ui/style/fontFamily.ts
  • wiki/docs/ARCHITECTURE.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/342

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot changed the title Feature/342 [APP] remove ui folder May 16, 2026
Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • In BaseSkeleton.logic.ts, opacity.value = withRepeat(...) runs on every render; consider moving this side effect into a useEffect to avoid repeatedly restarting the animation.
  • In PlacesAutocomplete.logic.ts, LocationInfo is redefined instead of imported from the shared trip-generation entities, which risks the types diverging over time; consider centralizing this interface in a shared domain module.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `BaseSkeleton.logic.ts`, `opacity.value = withRepeat(...)` runs on every render; consider moving this side effect into a `useEffect` to avoid repeatedly restarting the animation.
- In `PlacesAutocomplete.logic.ts`, `LocationInfo` is redefined instead of imported from the shared trip-generation entities, which risks the types diverging over time; consider centralizing this interface in a shared domain module.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 258 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts">

<violation number="1" location="features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.logic.ts:6">
P2: Starting the repeating Reanimated animation in the hook body causes it to be re-triggered on each render; for this non-memoized component, parent/prop updates can reset the pulse animation and create unnecessary work.

(Based on your team's feedback about only flagging shared-value assignments when re-renders are possible.) [FEEDBACK_USED]</violation>
</file>

<file name="features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx">

<violation number="1" location="features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx:7">
P2: `children` is typed too narrowly as `ReactElement`, which can reject valid `View` child patterns. Use a `ReactNode`-compatible type instead.</violation>
</file>

Note: This PR contains a large number of files. cubic only reviews up to 100 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.
On a pro plan you can use ultrareview for larger PRs.
Tip: cubic used a learning from your PR history. Let your coding agent read cubic learnings directly with the cubic MCP.
Re-trigger cubic

Comment thread features/core/ui/components/basic/BaseSkeleton/BaseSkeleton.tsx
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request executes a major architectural refactoring by migrating the global ui/ directory into a centralized features/core/ui/ module. The changes include updating asset paths in app.json, adjusting architecture and dependency rules, and refactoring imports across the entire project to utilize the new UI feature entry point. Feedback highlights a duplication of the LocationInfo interface, recommending its relocation to a shared domain or core directory to ensure a single source of truth.

@timothyrusso timothyrusso merged commit cc43a57 into main May 17, 2026
4 checks passed
@timothyrusso timothyrusso deleted the feature/342 branch May 17, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[APP] remove ui folder

1 participant