Skip to content

fix: inconsistent dark mode rendering across UI components - #2661

Merged
biplab1 merged 3 commits into
openMF:developmentfrom
amanna13:fix/inconsistent-dark-mode-ui
Apr 4, 2026
Merged

fix: inconsistent dark mode rendering across UI components#2661
biplab1 merged 3 commits into
openMF:developmentfrom
amanna13:fix/inconsistent-dark-mode-ui

Conversation

@amanna13

@amanna13 amanna13 commented Apr 2, 2026

Copy link
Copy Markdown
Member

Fixes - Jira-#762

Screenshots

Before

image image | image

After

image image image image image image

Screen_recording_20260404_130922.mp4

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Run the static analysis check ./gradlew check or ci-prepush.sh to make sure you didn't break anything

  • If you have multiple commits please combine them into one commit by squashing them.

Summary by CodeRabbit

  • Style
    • Replaced hardcoded whites with theme-driven colors across the app.
    • Updated component backgrounds, cards, dialogs, navigation bars, buttons, listings, steppers, progress overlays, and text to use the design system color scheme.
    • Improves visual consistency and ensures components respect light/dark and other theme variations.

@coderabbitai

coderabbitai Bot commented Apr 2, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR replaces hardcoded whites and AppColors with theme tokens from KptTheme.colorScheme across multiple UI components to align backgrounds and text colors with the app design system.

Changes

Cohort / File(s) Summary
Navigation Components
cmp-navigation/src/.../MifosBottomBar.kt, cmp-navigation/src/.../MifosNavigationRail.kt, cmp-navigation/src/.../MifosScaffold.kt, cmp-navigation/src/.../SplashScreen.kt
Replaced AppColors.customWhite / Color.White with KptTheme.colorScheme.surface or background for component backgrounds; imports updated.
Core Design System
core/designsystem/src/.../MifosScaffold.kt
Switched scaffold/container and top bar container colors from AppColors.customWhite to KptTheme.colorScheme.background / surface.
Core UI Components
core/ui/src/.../MifosListingComponent.kt, core/ui/src/.../MifosProgressIndicator.kt, core/ui/src/.../MifosStepper.kt
Replaced AppColors usages with KptTheme.colorScheme tokens for listing, progress, and stepper visuals and labels.
Feature: About
feature/about/src/.../AboutScreen.kt
Applied KptTheme colors to headers, link, cards, icon tint, and text colors (onBackground, primary, surface, onSurface, onSurfaceVariant).
Feature: Client
feature/client/src/.../ClientProfileGeneralScreen.kt, feature/client/src/.../ProfileCard.kt, feature/client/src/.../SyncClientsDialogScreen.kt
Updated text and card content colors to KptTheme tokens (onPrimary, surface) and removed hardcoded Color/AppColors.
Feature: Collection Sheet
feature/collectionSheet/src/.../PaymentDetailsScreen.kt, feature/collectionSheet/src/.../SavedIndividualCollectionSheetCompose.kt
Replaced hardcoded Color.White with KptTheme.colorScheme.surface / background for card and scaffold backgrounds.
Feature: Data Table
feature/data-table/src/.../DataTableScreen.kt, feature/data-table/src/.../DataTableListScreen.kt, feature/data-table/src/.../DataTableRowDialogScreen.kt
Switched card and menu backgrounds and button/text colors from hardcoded colors to KptTheme.colorScheme tokens.
Feature: Groups
feature/groups/src/.../SyncGroupDialogScreen.kt
Changed dialog background from Color.White to KptTheme.colorScheme.surface.
Feature: Loan
feature/loan/src/.../RepaymentPeriodCard.kt, feature/loan/src/.../LoanAccountProfileScreen.kt
Updated card backgrounds and multiple text colors to KptTheme tokens (e.g., surface, onPrimary, onSurface).
Feature: Report
feature/report/src/.../RunReportScreen.kt
Removed hardcoded white background modifier; added containerColor = KptTheme.colorScheme.surface to DropdownMenu.
Feature: Savings
feature/savings/src/.../SavingsAccountSummaryScreen.kt
Replaced Color.White with KptTheme.colorScheme.surface for action button container and transaction card backgrounds.
Feature: Settings
feature/settings/src/.../SyncSurveysDialog.kt
Updated dialog background to KptTheme.colorScheme.surface instead of Color.White.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Suggested reviewers

  • biplab1
  • revanthkumarJ
  • niyajali

Poem

🐰 I hopped through code at break of day,
Swapped stubborn whites for theme’s array,
Surfaces now hum in tuned delight,
Buttons and cards wear colors right,
A rabbit cheers—designs hop light! 🎨✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately captures the main objective of the PR: replacing hardcoded colors with theme-driven KptTheme colors to fix inconsistent dark mode rendering across multiple UI components.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@amanna13
amanna13 marked this pull request as ready for review April 2, 2026 18:00
@amanna13
amanna13 requested a review from a team April 2, 2026 18:00

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt (1)

226-229: ⚠️ Potential issue | 🟠 Major

Hardcoded text color breaks dark mode contrast.

The Color.DarkGray.copy(alpha = .7f) will render as dark gray in both light and dark modes. In dark mode, this creates insufficient contrast against the dark card background, making the product name and account ID difficult to read.

🎨 Proposed fix using theme color
                     Text(
                         text = "${loanCollectionSheetItem?.productShortName} (#${loanCollectionSheetItem?.accountId})",
-                        color = Color.DarkGray.copy(alpha = .7f),
+                        color = KptTheme.colorScheme.onSurfaceVariant,
                         style = KptTheme.typography.titleMedium.copy(fontWeight = FontWeight.Bold),
                     )
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt`
around lines 226 - 229, The Text composable in PaymentDetailsScreen is using a
hardcoded Color.DarkGray.copy(alpha = .7f) which breaks dark-mode contrast;
update the color parameter to use a theme-aware color (e.g.,
LocalContentColor.current.copy(alpha = 0.7f) or
KptTheme.colorScheme.onSurface.copy(alpha = 0.7f)) so the product/account text
respects light/dark themes and accessibility; locate the Text call that sets
text = "${loanCollectionSheetItem?.productShortName}
(#${loanCollectionSheetItem?.accountId})" and replace the
Color.DarkGray.copy(...) expression with a theme color as described.
🧹 Nitpick comments (7)
feature/report/src/commonMain/kotlin/com/mifos/feature/report/runReport/RunReportScreen.kt (1)

281-286: Consider replacing hardcoded Blue with a theme color for consistency.

While this PR correctly replaces hardcoded White with KptTheme.colorScheme.surface for the dropdown, the icon background still uses a hardcoded Blue color which won't adapt to dark mode.

♻️ Suggested fix
             Box(
                 contentAlignment = Alignment.Center,
                 modifier = Modifier
                     .size(DesignToken.sizes.dp42)
-                    .background(Blue, CircleShape),
+                    .background(KptTheme.colorScheme.primary, CircleShape),
             ) {

Also remove the unused import at line 56:

-import androidx.compose.ui.graphics.Color.Companion.Blue
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/report/src/commonMain/kotlin/com/mifos/feature/report/runReport/RunReportScreen.kt`
around lines 281 - 286, Replace the hardcoded Blue used in the Box background
inside RunReportScreen (the Box with modifier.size(DesignToken.sizes.dp42) and
CircleShape) with a theme-aware color (e.g., KptTheme.colorScheme.primary or
another appropriate KptTheme.colorScheme.* value) so the icon background adapts
to dark mode; then remove the now-unused import referenced near the top of
RunReportScreen.kt (the import that became unused after replacing Blue). Ensure
you update only the Box background color reference and delete the unused import
statement.
feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/component/RepaymentPeriodCard.kt (1)

141-149: Consider migrating remaining hardcoded color for full dark mode consistency.

AppColors.customEnable is still used for the "paid" status styling. For complete dark mode support consistent with this PR's objective, consider replacing it with a theme-aware color (e.g., a semantic token from KptTheme.colorScheme or a custom theme extension for success/positive states).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/component/RepaymentPeriodCard.kt`
around lines 141 - 149, Replace hardcoded AppColors.customEnable usage in
RepaymentPeriodCard's Text composables with a theme-aware color: identify the
two occurrences where AppColors.customEnable is used for the "paid" state (the
label Text using MifosTypography.labelSmall and the amount Text using
MifosTypography.titleSmallEmphasized) and substitute them with an appropriate
KptTheme.colorScheme semantic token (or a custom theme extension for
success/positive states) so the colors follow dark mode; ensure both conditional
expressions (color = if (isPaid) ...) use the chosen theme token and update any
imports if you add a custom theme extension.
feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/loanAccountProfile/LoanAccountProfileScreen.kt (1)

286-296: Derive status-chip text color from chip background for contrast safety.

At Line 295, text color is fixed to onPrimary, but the chip background is ui.color (Line 289), which is not guaranteed to be primary. This can produce low contrast for some status colors/themes.

♻️ Proposed contrast-safe adjustment
+import androidx.compose.ui.graphics.luminance
...
             statusUi?.let { ui ->
+                val statusTextColor = if (ui.color.luminance() > 0.5f) Color.Black else Color.White
                 Box(
                     modifier = Modifier
                         .clip(KptTheme.shapes.large)
                         .background(ui.color)
                         .padding(horizontal = DesignToken.padding.medium, vertical = KptTheme.spacing.xs),
                     contentAlignment = Alignment.Center,
                 ) {
                     Text(
                         text = stringResource(ui.labelRes).uppercase(),
-                        color = KptTheme.colorScheme.onPrimary,
+                        color = statusTextColor,
                         style = MifosTypography.labelSmallEmphasized,
                         fontWeight = FontWeight.Bold,
                     )
                 }
             }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/loanAccountProfile/LoanAccountProfileScreen.kt`
around lines 286 - 296, The status chip uses ui.color for background but
hardcodes text color to KptTheme.colorScheme.onPrimary in the Text inside the
Box (LoanAccountProfileScreen.kt), which can yield poor contrast; instead
compute a contrast-safe foreground: derive a textColor from ui.color (e.g.,
check ui.color luminance or use a contentColorFor-like helper) and pass that
into the Text color parameter so the label
(stringResource(ui.labelRes).uppercase()) will always use a high-contrast color
against ui.color.
feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt (1)

277-284: Consider using theme color for placeholder text.

The hardcoded Color.Gray won't adapt to the theme. For consistent dark mode rendering, use a theme token that adjusts contrast appropriately.

🎨 Proposed fix using theme color
         if (noPaymentVisibility) {
             Text(
                 text = stringResource(Res.string.feature_collection_sheet_no_payment_added),
                 style = KptTheme.typography.bodyMedium,
                 modifier = Modifier
                     .align(Alignment.CenterHorizontally)
                     .padding(vertical = KptTheme.spacing.md),
-                color = Color.Gray,
+                color = KptTheme.colorScheme.onSurfaceVariant,
             )
         }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt`
around lines 277 - 284, The placeholder Text in PaymentDetailsScreen (the Text
composable showing feature_collection_sheet_no_payment_added) uses hardcoded
Color.Gray; change it to use the theme color token (e.g.,
KptTheme.colors.onSurface or KptTheme.colors.onBackground) with an appropriate
alpha for a placeholder (e.g., copy(alpha = 0.6f)) so the color adapts to
light/dark themes and matches KptTheme styling.
feature/savings/src/commonMain/kotlin/com/mifos/feature/savings/savingsAccountSummary/SavingsAccountSummaryScreen.kt (2)

432-444: Consider migrating transaction amount colors to theme tokens.

The hardcoded Color.Black (line 442) won't be visible in dark mode. Additionally, Color.Green and Color.Red (lines 434, 438) could use semantic theme colors for better consistency.

Suggested replacements:

  • Color.BlackKptTheme.colorScheme.onSurface
  • Color.GreenKptTheme.colorScheme.primary or custom semantic token
  • Color.RedKptTheme.colorScheme.error
♻️ Proposed refactor
 color = when {
     transaction.transactionType?.deposit == true -> {
-        Color.Green
+        KptTheme.colorScheme.primary
     }
 
     transaction.transactionType?.withdrawal == true -> {
-        Color.Red
+        KptTheme.colorScheme.error
     }
 
     else -> {
-        Color.Black
+        KptTheme.colorScheme.onSurface
     }
 },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/savings/src/commonMain/kotlin/com/mifos/feature/savings/savingsAccountSummary/SavingsAccountSummaryScreen.kt`
around lines 432 - 444, Replace the hardcoded colors used for transaction
amounts in SavingsAccountSummaryScreen (the when block that checks
transaction.transactionType?.deposit/withdrawal) with theme tokens: use
KptTheme.colorScheme.primary for deposits, KptTheme.colorScheme.error for
withdrawals, and KptTheme.colorScheme.onSurface for the default/else case so
colors respect light/dark modes and app semantics.

255-255: Consider completing the dark mode migration for dividers and text colors.

The file still uses hardcoded DarkGray for dividers (lines 255, 263, 291) and text coloring (line 561). These won't adapt to dark mode and are inconsistent with the PR's theme color migration.

Consider replacing with theme tokens:

  • Dividers: KptTheme.colorScheme.outline or KptTheme.colorScheme.outlineVariant
  • Text colors: KptTheme.colorScheme.onSurfaceVariant
♻️ Example refactor for dividers
-HorizontalDivider(color = DarkGray)
+HorizontalDivider(color = KptTheme.colorScheme.outline)

Also applies to: 263-263, 291-291, 561-561

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/savings/src/commonMain/kotlin/com/mifos/feature/savings/savingsAccountSummary/SavingsAccountSummaryScreen.kt`
at line 255, Replace hardcoded DarkGray uses with theme tokens: update all
HorizontalDivider(...) instances that pass color = DarkGray to use
KptTheme.colorScheme.outline (or outlineVariant if a subtler divider is desired)
and update any Text composable(s) or color assignments that use DarkGray (e.g.,
the text at the SavingsAccountSummaryScreen color usage) to use
KptTheme.colorScheme.onSurfaceVariant so dividers and text follow the app's dark
mode theme.
core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosProgressIndicator.kt (1)

86-86: Consider using scrim for overlay tint semantics.

For modal/loading overlays, scrim usually provides more consistent dimming than surface across themes.

🎨 Suggested tweak
-            .background(KptTheme.colorScheme.surface.copy(alpha = 0.7f))
+            .background(KptTheme.colorScheme.scrim.copy(alpha = 0.45f))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosProgressIndicator.kt`
at line 86, In MifosProgressIndicator replace the background tint that uses
KptTheme.colorScheme.surface.copy(alpha = 0.7f) with the theme scrim color to
get proper overlay semantics (e.g., KptTheme.colorScheme.scrim or
KptTheme.colorScheme.scrim.copy(alpha = 0.7f)); update the Modifier.background
call inside the MifosProgressIndicator composable so it uses the scrim color
instead of surface.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt`:
- Around line 53-54: The rail is using the foreground token
KptTheme.colorScheme.onSurface as its background; update the MifosNavigationRail
(the parameters setting color and contentColor) to use
KptTheme.colorScheme.surface for the color (rail background) and set
contentColor to KptTheme.colorScheme.onSurface (instead of Color.Unspecified) so
the container uses the correct surface token and its content uses the foreground
token.

---

Outside diff comments:
In
`@feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt`:
- Around line 226-229: The Text composable in PaymentDetailsScreen is using a
hardcoded Color.DarkGray.copy(alpha = .7f) which breaks dark-mode contrast;
update the color parameter to use a theme-aware color (e.g.,
LocalContentColor.current.copy(alpha = 0.7f) or
KptTheme.colorScheme.onSurface.copy(alpha = 0.7f)) so the product/account text
respects light/dark themes and accessibility; locate the Text call that sets
text = "${loanCollectionSheetItem?.productShortName}
(#${loanCollectionSheetItem?.accountId})" and replace the
Color.DarkGray.copy(...) expression with a theme color as described.

---

Nitpick comments:
In
`@core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosProgressIndicator.kt`:
- Line 86: In MifosProgressIndicator replace the background tint that uses
KptTheme.colorScheme.surface.copy(alpha = 0.7f) with the theme scrim color to
get proper overlay semantics (e.g., KptTheme.colorScheme.scrim or
KptTheme.colorScheme.scrim.copy(alpha = 0.7f)); update the Modifier.background
call inside the MifosProgressIndicator composable so it uses the scrim color
instead of surface.

In
`@feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt`:
- Around line 277-284: The placeholder Text in PaymentDetailsScreen (the Text
composable showing feature_collection_sheet_no_payment_added) uses hardcoded
Color.Gray; change it to use the theme color token (e.g.,
KptTheme.colors.onSurface or KptTheme.colors.onBackground) with an appropriate
alpha for a placeholder (e.g., copy(alpha = 0.6f)) so the color adapts to
light/dark themes and matches KptTheme styling.

In
`@feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/component/RepaymentPeriodCard.kt`:
- Around line 141-149: Replace hardcoded AppColors.customEnable usage in
RepaymentPeriodCard's Text composables with a theme-aware color: identify the
two occurrences where AppColors.customEnable is used for the "paid" state (the
label Text using MifosTypography.labelSmall and the amount Text using
MifosTypography.titleSmallEmphasized) and substitute them with an appropriate
KptTheme.colorScheme semantic token (or a custom theme extension for
success/positive states) so the colors follow dark mode; ensure both conditional
expressions (color = if (isPaid) ...) use the chosen theme token and update any
imports if you add a custom theme extension.

In
`@feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/loanAccountProfile/LoanAccountProfileScreen.kt`:
- Around line 286-296: The status chip uses ui.color for background but
hardcodes text color to KptTheme.colorScheme.onPrimary in the Text inside the
Box (LoanAccountProfileScreen.kt), which can yield poor contrast; instead
compute a contrast-safe foreground: derive a textColor from ui.color (e.g.,
check ui.color luminance or use a contentColorFor-like helper) and pass that
into the Text color parameter so the label
(stringResource(ui.labelRes).uppercase()) will always use a high-contrast color
against ui.color.

In
`@feature/report/src/commonMain/kotlin/com/mifos/feature/report/runReport/RunReportScreen.kt`:
- Around line 281-286: Replace the hardcoded Blue used in the Box background
inside RunReportScreen (the Box with modifier.size(DesignToken.sizes.dp42) and
CircleShape) with a theme-aware color (e.g., KptTheme.colorScheme.primary or
another appropriate KptTheme.colorScheme.* value) so the icon background adapts
to dark mode; then remove the now-unused import referenced near the top of
RunReportScreen.kt (the import that became unused after replacing Blue). Ensure
you update only the Box background color reference and delete the unused import
statement.

In
`@feature/savings/src/commonMain/kotlin/com/mifos/feature/savings/savingsAccountSummary/SavingsAccountSummaryScreen.kt`:
- Around line 432-444: Replace the hardcoded colors used for transaction amounts
in SavingsAccountSummaryScreen (the when block that checks
transaction.transactionType?.deposit/withdrawal) with theme tokens: use
KptTheme.colorScheme.primary for deposits, KptTheme.colorScheme.error for
withdrawals, and KptTheme.colorScheme.onSurface for the default/else case so
colors respect light/dark modes and app semantics.
- Line 255: Replace hardcoded DarkGray uses with theme tokens: update all
HorizontalDivider(...) instances that pass color = DarkGray to use
KptTheme.colorScheme.outline (or outlineVariant if a subtler divider is desired)
and update any Text composable(s) or color assignments that use DarkGray (e.g.,
the text at the SavingsAccountSummaryScreen color usage) to use
KptTheme.colorScheme.onSurfaceVariant so dividers and text follow the app's dark
mode theme.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 54ebe44c-717c-4f88-b464-50a3a58b00b3

📥 Commits

Reviewing files that changed from the base of the PR and between 8c7d2bf and f0ba75a.

📒 Files selected for processing (23)
  • cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosBottomBar.kt
  • cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt
  • cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosScaffold.kt
  • cmp-navigation/src/commonMain/kotlin/cmp/navigation/splash/SplashScreen.kt
  • core/designsystem/src/commonMain/kotlin/com/mifos/core/designsystem/component/MifosScaffold.kt
  • core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosListingComponent.kt
  • core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosProgressIndicator.kt
  • core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosStepper.kt
  • feature/about/src/commonMain/kotlin/com/mifos/feature/about/AboutScreen.kt
  • feature/client/src/commonMain/kotlin/com/mifos/feature/client/clientGeneral/ClientProfileGeneralScreen.kt
  • feature/client/src/commonMain/kotlin/com/mifos/feature/client/clientProfile/components/ProfileCard.kt
  • feature/client/src/commonMain/kotlin/com/mifos/feature/client/syncClientDialog/SyncClientsDialogScreen.kt
  • feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/paymentDetails/PaymentDetailsScreen.kt
  • feature/collectionSheet/src/commonMain/kotlin/com/mifos/feature/individualCollectionSheet/savedIndividualCollectionSheet/SavedIndividualCollectionSheetCompose.kt
  • feature/data-table/src/commonMain/kotlin/com/mifos/feature/dataTable/dataTable/DataTableScreen.kt
  • feature/data-table/src/commonMain/kotlin/com/mifos/feature/dataTable/dataTableList/DataTableListScreen.kt
  • feature/data-table/src/commonMain/kotlin/com/mifos/feature/dataTable/dataTableRowDialog/DataTableRowDialogScreen.kt
  • feature/groups/src/commonMain/kotlin/com/mifos/feature/groups/syncGroupDialog/SyncGroupDialogScreen.kt
  • feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/component/RepaymentPeriodCard.kt
  • feature/loan/src/commonMain/kotlin/com/mifos/feature/loan/loanAccountProfile/LoanAccountProfileScreen.kt
  • feature/report/src/commonMain/kotlin/com/mifos/feature/report/runReport/RunReportScreen.kt
  • feature/savings/src/commonMain/kotlin/com/mifos/feature/savings/savingsAccountSummary/SavingsAccountSummaryScreen.kt
  • feature/settings/src/commonMain/kotlin/com/mifos/feature/settings/syncSurvey/SyncSurveysDialog.kt

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt (1)

109-109: Consider using KptTheme tokens consistently throughout the component.

The label color (line 109) and icon colors (lines 116-117) use MaterialTheme.colorScheme while the Surface background uses KptTheme.colorScheme. For full consistency with the design system, consider migrating these to KptTheme tokens as well in a follow-up.

Also applies to: 115-118

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt`
at line 109, The component mixes MaterialTheme and KptTheme tokens: replace uses
of MaterialTheme.colorScheme (e.g., the explicit "color =
MaterialTheme.colorScheme.secondary" and the icon/label color uses around the
NavigationRailItem icons/labels in MifosNavigationRail.kt) with the equivalent
KptTheme color tokens to match the Surface which already uses
KptTheme.colorScheme; update the color parameters for label and icon tint to use
KptTheme (and adjust imports) so all colors in MifosNavigationRail are sourced
from KptTheme consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt`:
- Line 109: The component mixes MaterialTheme and KptTheme tokens: replace uses
of MaterialTheme.colorScheme (e.g., the explicit "color =
MaterialTheme.colorScheme.secondary" and the icon/label color uses around the
NavigationRailItem icons/labels in MifosNavigationRail.kt) with the equivalent
KptTheme color tokens to match the Surface which already uses
KptTheme.colorScheme; update the color parameters for label and icon tint to use
KptTheme (and adjust imports) so all colors in MifosNavigationRail are sourced
from KptTheme consistently.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 02c9d5bc-1c66-4204-9896-7cd0b2052319

📥 Commits

Reviewing files that changed from the base of the PR and between f0ba75a and b0c6bae.

📒 Files selected for processing (1)
  • cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosNavigationRail.kt

@biplab1

biplab1 commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

@amanna13 Have you tested the light mode to ensure the UI components are consistent after the changes?

@amanna13

amanna13 commented Apr 3, 2026

Copy link
Copy Markdown
Member Author

@biplab1 Yes I have done that. Light mode is working as expected.

@biplab1 biplab1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good to me. This can be merged.

@biplab1

biplab1 commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

@niyajali If everything looks good, please feel free to go ahead and merge this.

@sonarqubecloud

sonarqubecloud Bot commented Apr 3, 2026

Copy link
Copy Markdown

@niyajali niyajali left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@amanna13 Could you please provide screenshots or a video to show that the light mode UI remains consistent with previous versions? @biplab1 I'm approving this, please review the screenshots and proceed with merging as appropriate.

@amanna13

amanna13 commented Apr 4, 2026

Copy link
Copy Markdown
Member Author

@biplab1 @niyajali Updated the Readme with the screenrecording. please have a look.

@biplab1
biplab1 merged commit 68a8040 into openMF:development Apr 4, 2026
10 checks passed
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.

3 participants