Skip to content

feat(ui): add light theme toggle#19

Merged
TheAlexPG merged 5 commits into
TheAlexPG:mainfrom
SirEdvin:feat/light-theme-toggle
May 15, 2026
Merged

feat(ui): add light theme toggle#19
TheAlexPG merged 5 commits into
TheAlexPG:mainfrom
SirEdvin:feat/light-theme-toggle

Conversation

@SirEdvin
Copy link
Copy Markdown
Contributor

Status

Ready for maintainer review. This implementation was AI-assisted, then independently reviewed and verified with the project build and tests.

Summary

  • Add a persisted dark/light theme provider using data-theme on the document root, keeping dark mode as the default.
  • Add an accessible theme toggle to the shared top toolbar while preserving page-specific action slots.
  • Add light-theme design tokens for app surfaces, text, borders, scrollbars, canvas grid, React Flow controls/minimap, rich text previews, shadows, and accent foregrounds.

Verification

  • npm run build
  • npm test
  • npx eslint src/components/theme/ThemeProvider.tsx src/components/theme/ThemeToggle.tsx src/components/theme/theme-context.ts src/components/nav/PageToolbar.tsx

Note: full npm run lint still reports pre-existing lint errors elsewhere in the app; the files touched by this PR pass targeted ESLint.

@SirEdvin
Copy link
Copy Markdown
Contributor Author

Light theme cleanup update

Pushed a follow-up pass that fixes the remaining light-theme mismatches from the screenshots:

  • Agent settings tables/forms now use theme surfaces instead of hard-coded dark neutral panels.
  • Create diagram modal and shared modal shells now use semantic theme tokens.
  • Legacy dark card/table/form utility classes are remapped in light mode so older pages no longer render black islands on the light canvas.
  • Disabled primary buttons now stay readable in light mode instead of fading coral text into a peach background.
  • Docs/legal, Objects, and Connections surfaces were converted to theme tokens.

Verification:

  • Browser/Playwright visual smoke in light mode across /agents-settings, /diagrams + create modal, /objects, /connections, /members, /teams, /versions, /drafts, /activity, /invites, /docs, and /terms found no remaining dark surface islands in the inspected viewport.
  • Screenshot review confirmed the agent settings table, create diagram modal, members, connections, and legal pages are coherent/readable in light mode.
  • npm test passed: 23 files, 175 tests.
  • npm run build passed.
  • Targeted ESLint on changed files passed.

Updated private registry images:

  • registry.siredvin.home/archflow-backend:0.1.0-light-theme-04db637
  • registry.siredvin.home/archflow-frontend:0.1.0-light-theme-04db637
  • registry.siredvin.home/archflow-backend:light-theme-latest
  • registry.siredvin.home/archflow-frontend:light-theme-latest

Frontend image smoke: nginx served the SPA root and expected title.

@SirEdvin
Copy link
Copy Markdown
Contributor Author

Search modal light-theme fix

Pushed a follow-up for the search popup: SearchModal no longer uses hard-coded #171717/#333/#262626 inline styles. The modal, input, result rows, headings, hover/focus states, borders, and text now use the same semantic theme tokens as the rest of the app.

Verification:

  • Browser/Playwright opened the app in light mode, clicked Search, typed pay, and captured the modal.
  • Computed styles confirmed the modal background is light (rgb(255, 250, 242)), text is dark/readable, and no dark child surfaces were detected.
  • Screenshot review confirmed the popup is now coherent/readable in light mode.
  • npx eslint src/components/nav/SearchModal.tsx passed.
  • npm test passed: 25 files, 180 tests.
  • npm run build passed.

Updated private registry images:

  • registry.siredvin.home/archflow-backend:0.1.0-light-theme-867bae8
  • registry.siredvin.home/archflow-frontend:0.1.0-light-theme-867bae8
  • registry.siredvin.home/archflow-backend:light-theme-latest
  • registry.siredvin.home/archflow-frontend:light-theme-latest

@TheAlexPG TheAlexPG merged commit 1962f63 into TheAlexPG:main May 15, 2026
4 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.

2 participants