Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Comments

Add ChoreoTheme #484

Merged
yomalip merged 4 commits intowso2:mainfrom
yomalip:new-branch
Feb 1, 2026
Merged

Add ChoreoTheme #484
yomalip merged 4 commits intowso2:mainfrom
yomalip:new-branch

Conversation

@yomalip
Copy link
Contributor

@yomalip yomalip commented Jan 28, 2026

Purpose

This PR introduces ChoreoTheme, a new product-specific theme for Choreo with indigo-violet gradient styling and clean professional design. The theme features Choreo's brand color (#5567d5) with complementary violet accents and comprehensive light/dark mode support.

Key additions:

  • New ChoreoTheme with indigo-violet gradient primary buttons
  • Clean professional styling with 8px border radius
  • Enhanced component overrides for Paper, AppBar, TextField, and TableRow
  • Syntax highlighting color scheme for code blocks
  • Full dark mode support with adjusted color palettes

Integration:

  • Exported from @wso2/oxygen-ui theme collection
  • Added to Storybook theme switcher
  • Integrated into oxygen-ui-test-app demo
  • Documentation updated with ChoreoTheme references

Related Issues

  • N/A

Related PRs

  • N/A

Checklist

  • Followed the CONTRIBUTING guidelines.
  • Manual test round performed and verified.
  • Documentation provided. (AI development docs, theming guide, CLAUDE.md updated)
  • Unit tests provided. (Theme configuration doesn't require unit tests)
  • Storybook stories updated/added (Theme added to Storybook theme switcher)

Security checks

Summary by CodeRabbit

  • New Features
    • Added the Choreo theme to the Oxygen UI design system, featuring an indigo-violet gradient aesthetic with custom component styling and syntax highlighting.
    • Integrated Choreo theme into Storybook with selectable theme toolbar option.
    • Updated test app and documentation with Choreo theme support and branded login page visuals.

✏️ Tip: You can customize this high-level summary in your review settings.

- Add ChoreoTheme extending AcrylicBaseTheme with Choreo brand colors
- Include primary indigo (#5567d5), violet accents, and optimized dark mode
- Add button gradient, focus states, and branded syntax highlighting
- Register theme in Storybook for visual testing
- Add ChoreoTheme to available themes list in AGENTS.md
- Update theming.md with ChoreoTheme in table, imports, and examples
- Keep .ai and .claude theming docs in sync
- Switch base theme from AcrylicBaseTheme to OxygenThemeBase
- Update light/dark mode background colors for cleaner appearance
- Add border radius and component overrides for Paper, AppBar, TextField, OutlinedInput
- Add MuiButton root overrides for text transform and font weight
- Remove radial gradient background effects from MuiCssBaseline
- Import ChoreoTheme and add to available themes list
- Add Choreo logo support in Logo component with shared reference
- Add Choreo-specific content for login page logo, slogan, and background
@coderabbitai
Copy link

coderabbitai bot commented Jan 28, 2026

Walkthrough

This PR introduces a new Choreo theme to the Oxygen UI package. The implementation includes a comprehensive theme definition with color palettes, component overrides, gradients, and syntax highlighting, integrated into the package exports, Storybook documentation, and test application with corresponding UI assets.

Changes

Cohort / File(s) Summary
Core Theme Definition
packages/oxygen-ui/src/styles/Themes/ChoreoTheme.ts, packages/oxygen-ui/src/styles/Themes/index.ts
New Choreo theme with MUI palette customization for light/dark modes, border radius, component overrides (Button, Paper, AppBar, TextField, etc.), custom gradient property, and syntax highlighting scheme. Exported as public API.
Package Integration
packages/oxygen-ui-docs/.storybook/preview.js, samples/oxygen-ui-test-app/src/main.tsx
ChoreoTheme imported and registered in Storybook theme toolbar and test app theme provider with key 'choreo'.
Documentation
packages/oxygen-ui/.ai/AGENTS.md, packages/oxygen-ui/.ai/theming.md, packages/oxygen-ui/.claude/theming.md
Updated theme catalogs and examples to include ChoreoTheme in available themes list and import/export patterns.
Test App UI Components
samples/oxygen-ui-test-app/src/components/Logo.tsx, samples/oxygen-ui-test-app/src/pages/LoginPage.tsx
Added Choreo-specific logo assets (choreo-logo.svg) and login page variants (heading, subtitle, list items, background images with idevp-login assets). Consolidated duplicate image definitions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A theme of violet, indigo bright,
Choreo arrives in dark and light!
Buttons and palettes, gradients divine,
New logos dance and colors align,
The Oxygen UI shines even finer! ✨

🚥 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 'Add ChoreoTheme' accurately describes the main change—introducing a new Choreo-branded theme to the Oxygen UI package.
Description check ✅ Passed The description covers most required sections including Purpose, Related Issues, Related PRs, comprehensive Checklist, and Security checks. All sections are present and complete.

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

✨ Finishing touches
  • 📝 Generate docstrings

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.

@yomalip yomalip changed the title New branch feat(oxygen-ui): add ChoreoTheme with indigo-violet gradient styling Jan 28, 2026
@yomalip yomalip changed the title feat(oxygen-ui): add ChoreoTheme with indigo-violet gradient styling Add ChoreoTheme Jan 28, 2026
@yomalip yomalip marked this pull request as ready for review January 28, 2026 05:25
@yomalip
Copy link
Contributor Author

yomalip commented Jan 28, 2026

image image image image

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

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

⚠️ Outside diff range comments (2)
packages/oxygen-ui/.claude/theming.md (1)

59-75: Add ChoreoTheme to the multi-theme import list.

The snippet now references ChoreoTheme in themes[], but it isn’t imported, so the example won’t compile when copied.

🛠️ Suggested fix
 import {
   OxygenUIThemeProvider,
   OxygenTheme,
   AcrylicOrangeTheme,
   AcrylicPurpleTheme,
+  ChoreoTheme,
   ClassicTheme,
   HighContrastTheme
 } from '@wso2/oxygen-ui';
packages/oxygen-ui/.ai/theming.md (1)

59-75: Add ChoreoTheme to the multi-theme import list.

The snippet references ChoreoTheme in themes[], but it isn’t imported, so the example won’t compile when copied.

🛠️ Suggested fix
 import {
   OxygenUIThemeProvider,
   OxygenTheme,
   AcrylicOrangeTheme,
   AcrylicPurpleTheme,
+  ChoreoTheme,
   ClassicTheme,
   HighContrastTheme
 } from '@wso2/oxygen-ui';
🧹 Nitpick comments (3)
samples/oxygen-ui-test-app/src/pages/LoginPage.tsx (3)

81-99: Extract shared Choreo logo to reduce duplication.

The acrylicPurple and choreo variants for Logo are identical. Consider extracting to a shared constant, similar to how Logo.tsx handles this.

♻️ Suggested refactor
+  const choreoLogo = (
+    <ColorSchemeImage
+      src={{
+        light: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
+        dark: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
+      }}
+      alt={{light: 'Choreo Logo (Light)', dark: 'Choreo Logo (Dark)'}}
+      height={40}
+      width="auto"
+    />
+  );
+
   const Logo = useThemeContent({
     default: (
       <ColorSchemeImage
         src={{
           light: `${import.meta.env.BASE_URL}assets/images/logo.svg`,
           dark: `${import.meta.env.BASE_URL}assets/images/logo-inverted.svg`,
         }}
         alt={{light: 'Asgardeo Logo (Light)', dark: 'Asgardeo Logo (Dark)'}}
         height={30}
         width="auto"
       />),
-    acrylicPurple: (
-      <ColorSchemeImage
-        src={{
-          light: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
-          dark: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
-        }}
-        alt={{light: 'Choreo Logo (Light)', dark: 'Choreo Logo (Dark)'}}
-        height={40}
-        width="auto"
-      />),
-    choreo: (
-      <ColorSchemeImage
-        src={{
-          light: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
-          dark: `${import.meta.env.BASE_URL}assets/images/choreo-logo.svg`,
-        }}
-        alt={{light: 'Choreo Logo (Light)', dark: 'Choreo Logo (Dark)'}}
-        height={40}
-        width="auto"
-      />)
+    acrylicPurple: choreoLogo,
+    choreo: choreoLogo
   });

125-165: Extract shared Choreo slogan to reduce duplication.

The acrylicPurple and choreo Slogan variants are identical. Extract to a shared constant for maintainability.

♻️ Suggested refactor
+  const choreoSlogan = (
+    <>
+      <Typography variant="h3" sx={{ fontWeight: 'bold', mb: 0 }}>
+        Get Started with Choreo Internal Developer Platform
+      </Typography>
+      <Typography variant="body1" sx={{ color: 'text.secondary' }}>
+        A full-fledged platform for cloud native application development
+      </Typography>
+      <Stack sx={{gap: 2}}>
+        {sloganListItemsChoreo.map((item) => (
+          <Stack key={item.title} direction="row" sx={{gap: 2}}>
+            {item.icon}
+            <div>
+              <Typography gutterBottom sx={{fontWeight: 'medium'}}>
+                {item.title}
+              </Typography>
+            </div>
+          </Stack>
+        ))}
+      </Stack>
+    </>
+  );
+
   const Slogan = useThemeContent({
     default: (
       // ... existing default content
     ),
-    acrylicPurple: (
-      <>
-        // ... duplicated JSX
-      </>),
-    choreo: (
-      <>
-        // ... duplicated JSX
-      </>)
+    acrylicPurple: choreoSlogan,
+    choreo: choreoSlogan
   });

181-201: Extract shared Choreo background image to reduce duplication.

The acrylicPurple and choreo BackgroundImage variants are identical. Extract to a shared constant for consistency with the suggested refactors above.

♻️ Suggested refactor
+  const choreoBackgroundImage = (
+    <ColorSchemeImage
+      src={{
+        light: `${import.meta.env.BASE_URL}assets/images/idevp-login.svg`,
+        dark: `${import.meta.env.BASE_URL}assets/images/idevp-login-inverted.svg`,
+      }}
+      alt={{light: 'Login Screen Image (Light)', dark: 'Login Screen Image (Dark)'}}
+      height={450}
+      width="auto"
+      sx={{ position: 'absolute', bottom: 50, right: -100 }}
+    />
+  );
+
   const BackgroundImage = useThemeContent({
     default: (
       // ... existing default content
     ),
-    acrylicPurple: (
-      <ColorSchemeImage
-        // ... duplicated JSX
-      />),
-    choreo: (
-      <ColorSchemeImage
-        // ... duplicated JSX
-      />)
+    acrylicPurple: choreoBackgroundImage,
+    choreo: choreoBackgroundImage
   });

@yomalip yomalip merged commit 42ef550 into wso2:main Feb 1, 2026
7 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