11import React from 'react'
22import { RootState } from 'src/redux/Store'
3- import _isEmpty from 'lodash/isEmpty'
43import { useSelector } from 'react-redux'
54
65import { Theme , ThemeProvider } from '@mui/material'
76import { deepmerge } from '@mui/utils'
87
9- import { createMXTheme , Icon , IconWeight } from '@kyper/mui '
8+ import { createMXTheme , Icon , IconWeight } from '@mxenabled/mxui '
109import { TokenProvider , THEMES } from '@kyper/tokenprovider'
1110
12- import { getTokenProviderValues } from 'src/redux/selectors/ClientColorScheme'
11+ import { getPrimarySeedColor } from 'src/redux/selectors/ClientColorScheme'
1312
1413declare module '@mui/material/styles' {
1514 interface PaletteColor {
@@ -23,30 +22,6 @@ declare module '@mui/material/styles' {
2322 }
2423}
2524
26- interface ColorScheme {
27- Brand100 ?: string
28- Brand200 ?: string
29- Brand300 ?: string
30- Brand400 ?: string
31- Brand500 ?: string
32- }
33-
34- export const clientThemeOverrides = ( colorScheme : ColorScheme ) => {
35- if ( ! _isEmpty ( colorScheme ) ) {
36- return {
37- palette : {
38- primary : {
39- lighter : colorScheme . Brand100 ,
40- light : colorScheme . Brand200 ,
41- main : colorScheme . Brand300 ,
42- dark : colorScheme . Brand400 ,
43- darker : colorScheme . Brand500 ,
44- } ,
45- } ,
46- }
47- }
48- return { }
49- }
5025const connectThemeOverrides = ( palette : Theme [ 'palette' ] ) => ( {
5126 components : {
5227 MuiTypography : {
@@ -55,11 +30,6 @@ const connectThemeOverrides = (palette: Theme['palette']) => ({
5530 // Sets the default color of text. Can override singluar usage with color prop.
5631 color : palette ?. text ?. primary ,
5732 } ,
58- // TODO: Remove once we fully migrate to @mxenabled /mxui as it would apply the right theme styles automatically.
59- subtitle2 : {
60- fontSize : '13px' ,
61- lineHeight : '20px' ,
62- } ,
6333 } ,
6434 } ,
6535 MuiAccordion : {
@@ -111,12 +81,6 @@ const connectThemeOverrides = (palette: Theme['palette']) => ({
11181 } ,
11282 MuiFormLabel : {
11383 styleOverrides : {
114- root : {
115- '&.MuiFormLabel-root' : {
116- fontSize : '13px' ,
117- lineHeight : '20px' ,
118- } ,
119- } ,
12084 asterisk : {
12185 color : '#E32727' ,
12286 '&$error' : {
@@ -149,6 +113,20 @@ const connectThemeOverrides = (palette: Theme['palette']) => ({
149113 } ,
150114 } ,
151115 } ,
116+ MuiLink : {
117+ defaultProps : {
118+ sx : {
119+ display : 'inline-flex' ,
120+ alignItems : 'center' ,
121+ '&:hover' : {
122+ textDecoration : 'underline' ,
123+ } ,
124+ '&:focus' : {
125+ textDecoration : 'underline' ,
126+ } ,
127+ } ,
128+ } ,
129+ } ,
152130 } ,
153131} )
154132
@@ -157,27 +135,45 @@ interface Props {
157135}
158136
159137export const ConnectedTokenProvider = ( { children } : Props ) : React . ReactNode => {
160- // Client custom tokens from batcave
161- const clientCustomTokens = useSelector ( getTokenProviderValues )
138+ // Client primary seed color from batcave
139+ const clientPrimarySeedColor = useSelector ( getPrimarySeedColor )
162140 // "Light" or "Dark"
163141 const colorScheme = useSelector ( ( state : RootState ) => state . config . color_scheme )
164142 // Dark mode: true or false
165143 const isDarkModeEnabled : boolean = colorScheme === THEMES . DARK
166144 // Theme object with MX overrides
167- const mxTheme = createMXTheme ( isDarkModeEnabled ? 'dark' : 'light' )
145+ const mxTheme = createMXTheme ( isDarkModeEnabled ? 'dark' : 'light' , {
146+ paletteOptions : {
147+ // Override primary color with widget_brand_color from batcave if it exists or use primary_300 from batcave and
148+ // let the rest of the palette colors be generated by MXUI.
149+ primary : clientPrimarySeedColor ,
150+ } ,
151+ } )
168152
169153 const combinedTheme = deepmerge (
170154 mxTheme ,
171- deepmerge (
172- clientThemeOverrides ( clientCustomTokens . tokenOverrides . Color ) , // Theme object with client custom overrides
173- connectThemeOverrides ( mxTheme . palette as Theme [ 'palette' ] ) , // Theme object with connect overrides
174- ) ,
155+ connectThemeOverrides ( mxTheme . palette as Theme [ 'palette' ] ) , // Theme object with connect overrides
175156 )
176157
158+ const kyperTokenOverrides = {
159+ Color : {
160+ Brand100 : isDarkModeEnabled ? mxTheme . palette . primary [ 800 ] : mxTheme . palette . primary [ 100 ] ,
161+ Brand200 : mxTheme . palette . primary . light ,
162+ Brand300 : mxTheme . palette . primary . main ,
163+ Brand400 : mxTheme . palette . primary . dark ,
164+ Brand500 : isDarkModeEnabled ? mxTheme . palette . primary [ 50 ] : mxTheme . palette . primary [ 900 ] ,
165+ Primary100 : isDarkModeEnabled ? mxTheme . palette . primary [ 800 ] : mxTheme . palette . primary [ 100 ] ,
166+ Primary200 : mxTheme . palette . primary . light ,
167+ Primary300 : mxTheme . palette . primary . main ,
168+ Primary400 : mxTheme . palette . primary . dark ,
169+ Primary500 : isDarkModeEnabled ? mxTheme . palette . primary [ 50 ] : mxTheme . palette . primary [ 900 ] ,
170+ } ,
171+ }
172+
177173 return (
178174 < TokenProvider
179175 theme = { isDarkModeEnabled ? THEMES . DARK : colorScheme }
180- tokenOverrides = { clientCustomTokens . tokenOverrides }
176+ tokenOverrides = { kyperTokenOverrides }
181177 >
182178 < ThemeProvider theme = { combinedTheme } > { children } </ ThemeProvider >
183179 </ TokenProvider >
0 commit comments