Skip to content

Conversation

@ironAiken2
Copy link
Contributor

@ironAiken2 ironAiken2 commented Nov 14, 2025

resolves #4422 FR-1573

Add theme customization feature to user settings

This PR adds a new theme customization section to the user settings page, allowing users to personalize the UI colors for both light and dark modes. Users can customize:

  • Primary color (used for buttons, key actions, and logo background)
  • Header background color
  • Link color
  • Info color
  • Error color
  • Success color
  • Text color

The implementation includes:

  • New theme customization UI with color pickers for both light/dark modes
  • Reset functionality at both group and individual setting levels
  • Storage of custom theme configurations in user settings
  • Improved layout for settings components with proper alignment and spacing
  • Added translations for all theme customization options

Next Steps

  • Provides preview functionality using session storage via a dedicated preview mode browser
  • Transfers and applies config stored in local storage to the preview browser

Checklist:

  • Documentation
  • Minium required manager version
  • Specific setting for review (User Settings page > Theme section)
  • Minimum requirements to check during review
  • Test case(s) to demonstrate the difference of before/after

@github-actions github-actions bot added area:ux UI / UX issue. area:i18n Localization labels Nov 14, 2025
@github-actions github-actions bot added the size:XL 500~ LoC label Nov 14, 2025
Copy link
Contributor Author

ironAiken2 commented Nov 14, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link

github-actions bot commented Nov 14, 2025

Coverage report for ./react

St.
Category Percentage Covered / Total
🔴 Statements 4.45% 517/11628
🔴 Branches 3.6% 297/8246
🔴 Functions 2.58% 92/3560
🔴 Lines 4.42% 503/11375

Test suite run success

118 tests passing in 13 suites.

Report generated by 🧪jest coverage report action from eacf860

@ironAiken2 ironAiken2 marked this pull request as ready for review November 14, 2025 05:29
Copilot AI review requested due to automatic review settings November 14, 2025 05:29
Copilot finished reviewing on behalf of ironAiken2 November 14, 2025 05:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds a comprehensive theme customization feature to the user settings page, enabling users to personalize UI colors for both light and dark modes. The implementation includes color customization for 7 theme aspects (primary, header background, link, info, error, success, and text colors), with reset functionality at both individual setting and group levels, and full internationalization support across 18 languages.

Key Changes

  • New theme customization UI with dual color pickers (light/dark mode) for 7 different theme tokens
  • Group-level and individual-level reset functionality with confirmation modal
  • Storage of custom theme configurations in user settings via custom_theme_config field
  • Complete i18n translations for theme customization options across all supported languages

Reviewed Changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
react/src/pages/UserSettingsPage.tsx Adds theme customization section with 7 color settings and implements ThemeColorPickerSettingItem component for dual-mode color selection
react/src/components/SettingList.tsx Enhances with group-level reset functionality, hover-based reset button visibility, and improved layout with align="stretch"
react/src/components/SettingItem.tsx Updates alignment from start to stretch for better layout consistency and adds max-width constraint to select components
react/src/hooks/useBAISetting.tsx Adds custom_theme_config field to UserSettings interface for theme persistence
react/src/helper/customThemeConfig.ts Exports CustomThemeConfig type and updates useCustomThemeConfig return type annotation
resources/i18n/*.json Adds translations for "Theme" and nested theme color descriptions across 18 language files

@ironAiken2 ironAiken2 marked this pull request as draft November 14, 2025 06:52
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch 2 times, most recently from 8172d3e to d1a9094 Compare November 14, 2025 07:32
@ironAiken2 ironAiken2 marked this pull request as ready for review November 14, 2025 07:34
@ironAiken2 ironAiken2 changed the title feat(FR-1573): Add theme setting section in user settings page feat(FR-1573): Add theme setting section in main page Nov 17, 2025
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from d1a9094 to 39cb448 Compare November 17, 2025 01:37
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch 4 times, most recently from c9b1606 to 23bb3ca Compare November 17, 2025 06:34
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

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

CleanShot 2025-11-18 at 11.26.08.gif

There's a duplicate reset button over there.

@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from 23bb3ca to 983d66d Compare November 18, 2025 07:24
Copy link
Contributor Author

CleanShot 2025-11-18 at 11.26.08.gif

There's a duplicate reset button over there.

I added it for section resetting, However, there are many changes needed for the initialization UI and logic, so I will exclude them from this PR and work on them in a separate stack.

Copy link
Member

@yomybaby yomybaby left a comment

Choose a reason for hiding this comment

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

Please move the Branding tab under the /settings page.

@ironAiken2 ironAiken2 changed the title feat(FR-1573): Add theme setting section in main page feat(FR-1573): Add theme setting section in maintenance page Nov 19, 2025
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from 983d66d to ebff6b8 Compare November 19, 2025 01:45
@ironAiken2 ironAiken2 requested a review from yomybaby November 19, 2025 01:45
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from ebff6b8 to d3de3b8 Compare November 19, 2025 01:52
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

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

please resolve the merge conflicts

@ironAiken2 ironAiken2 requested a review from agatha197 November 19, 2025 04:01
@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from d3de3b8 to 1510583 Compare November 19, 2025 04:01
Copy link
Contributor

@agatha197 agatha197 left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@yomybaby yomybaby left a comment

Choose a reason for hiding this comment

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

LGTM

@ironAiken2 ironAiken2 force-pushed the feat/theme-customization-in-user-settings branch from 1510583 to 39ad54d Compare November 19, 2025 06:46
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

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

LGTM

@graphite-app
Copy link

graphite-app bot commented Nov 19, 2025

Merge activity

resolves #4422 [FR-1573](https://lablup.atlassian.net/browse/FR-1573)

### Add theme customization feature to user settings

This PR adds a new theme customization section to the user settings page, allowing users to personalize the UI colors for both light and dark modes. Users can customize:

- Primary color (used for buttons, key actions, and logo background)
- Header background color
- Link color
- Info color
- Error color
- Success color
- Text color

The implementation includes:
- New theme customization UI with color pickers for both light/dark modes
- Reset functionality at both group and individual setting levels
- Storage of custom theme configurations in user settings
- Improved layout for settings components with proper alignment and spacing
- Added translations for all theme customization options

### Next Steps
- Provides preview functionality using session storage via a dedicated preview mode browser
- Transfers and applies config stored in local storage to the preview browser

**Checklist:**
- [x] Documentation
- [ ] Minium required manager version
- [x] Specific setting for review (User Settings page > Theme section)
- [x] Minimum requirements to check during review
- [ ] Test case(s) to demonstrate the difference of before/after

[FR-1573]: https://lablup.atlassian.net/browse/FR-1573?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
@graphite-app graphite-app bot force-pushed the feat/theme-customization-in-user-settings branch from 39ad54d to eacf860 Compare November 19, 2025 06:54
@graphite-app graphite-app bot merged commit eacf860 into main Nov 19, 2025
11 checks passed
@graphite-app graphite-app bot deleted the feat/theme-customization-in-user-settings branch November 19, 2025 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:XL 500~ LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Theme Setting Section to User Setting Page

5 participants