Skip to content

feat: mobile app: add high-contrast dark mode theme toggle (#695) - #875

Merged
ONEONUORA merged 1 commit into
Fracverse:masterfrom
Divine-designs:feat/695-theme-toggle-high-contrast
Sep 1, 2026
Merged

feat: mobile app: add high-contrast dark mode theme toggle (#695)#875
ONEONUORA merged 1 commit into
Fracverse:masterfrom
Divine-designs:feat/695-theme-toggle-high-contrast

Conversation

@Divine-designs

Copy link
Copy Markdown
Contributor

Closes #695

Summary

Adds a user-controlled theme system with a persisted high-contrast dark mode, selectable from the Settings tab.

  • ThemeProvider context (src/contexts/ThemeProvider.tsx): manages a persisted system | light | dark | high-contrast preference (AsyncStorage) and re-resolves the palette immediately on change.
  • Palettes (src/constants/theme.ts): added a WCAG-friendly highContrast dark palette (pure-black backgrounds, brightest text/borders).
  • useTheme hook: now consumes the provider context (falls back to the system colour scheme when no provider is mounted, keeping components/tests working).
  • Root layout: app wrapped in ThemeProvider; the Stack contentStyle, root View, and StatusBar now use dynamic theme variables, so switching applies across navigation.
  • Appearance screen (app/appearance.tsx): System / Light / Dark / High Contrast Dark options with radio selection, reachable from a new Appearance row in Settings.

Acceptance Criteria

  • Store preference in storage (AsyncStorage, rehydrated on cold start)
  • Pass dynamic theme variables to screen layouts (root view, stack background, status bar, ThemedText)
  • Context-aware dark/light/high-contrast styling options in the settings tab

Tests

  • Added __tests__/ThemeProvider.test.tsx (5 cases): system default, system-dark resolution, immediate theme switch + persistence, high-contrast palette flag, and preference rehydration on mount.

Files pass tsc (no new errors), eslint, and prettier. The failing suites reported by npm test (api, biometric, stellarWallet, BatchPayoutSummary etc.) fail identically on clean master — pre-existing, unrelated to this change.

@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@Divine-designs Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Divine-designs
Divine-designs force-pushed the feat/695-theme-toggle-high-contrast branch from b27a6c1 to dfc4097 Compare August 31, 2026 23:00

@ONEONUORA ONEONUORA 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.

Great job @Divine-designs

@ONEONUORA
ONEONUORA merged commit 7f7136f into Fracverse:master Sep 1, 2026
9 of 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.

mobile app: Implement theme toggle support for high-contrast dark mode across navigation

2 participants