1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-20 00:08:02 +01:00
unleash.unleash/frontend/src/themes/dark-theme.ts

853 lines
28 KiB
TypeScript
Raw Normal View History

import { createTheme } from '@mui/material/styles';
import { colors } from './colors';
export default createTheme({
breakpoints: {
values: {
xs: 0,
sm: 600,
md: 960,
lg: 1260,
xl: 1536,
},
},
boxShadows: {
main: '0px 2px 4px rgba(129, 122, 254, 0.2)',
card: '0px 2px 10px rgba(28, 25, 78, 0.12)',
elevated: '0px 1px 20px rgba(45, 42, 89, 0.1)',
popup: '0px 2px 6px rgba(0, 0, 0, 0.25)',
primaryHeader: '0px 8px 24px rgba(97, 91, 194, 0.2)',
separator: '0px 2px 3px hsl(0deg 0% 78% / 50%)',
},
typography: {
fontFamily: 'Sen, Roboto, sans-serif',
fontWeightBold: '700',
fontWeightMedium: '700',
allVariants: { lineHeight: 1.4 },
button: { lineHeight: 1.75 },
h1: {
fontSize: '1.5rem',
lineHeight: 1.875,
},
h2: {
fontSize: `${20 / 16}rem`,
fontWeight: '700',
},
h3: {
fontSize: '1rem',
fontWeight: '700',
},
caption: {
fontSize: `${12 / 16}rem`,
},
},
fontSizes: {
largeHeader: '2rem',
mainHeader: '1.25rem',
bodySize: '1rem',
smallBody: `${14 / 16}rem`,
smallerBody: `${12 / 16}rem`,
},
fontWeight: {
thin: 300,
medium: 400,
semi: 700,
bold: 700,
},
shape: {
borderRadius: 4,
borderRadiusMedium: 8,
borderRadiusLarge: 12,
borderRadiusExtraLarge: 20,
tableRowHeight: 64,
tableRowHeightCompact: 56,
tableRowHeightDense: 48,
},
palette: {
common: {
// Used for text color
white: colors.grey[50],
},
text: {
primary: colors.grey[900],
secondary: colors.grey[800],
disabled: colors.grey[600],
},
primary: {
main: colors.purple[800],
light: colors.purple[700],
dark: colors.purple[900],
contrastText: colors.grey[50], // Color used for content when primary.main is used as a background
},
secondary: {
// Used for purple badges and puple light elements
light: colors.purple[50],
main: colors.purple[800],
dark: colors.purple[900],
border: colors.purple[300],
},
info: {
light: colors.blue[50],
main: colors.blue[500],
dark: colors.blue[700],
contrastText: colors.grey[50], // Color used for content when info.main is used as a background
border: colors.blue[200],
},
success: {
light: colors.green[50],
main: colors.green[600],
dark: colors.green[800],
contrastText: colors.grey[50], // Color used for content when success.main is used as a background
border: colors.green[300],
},
warning: {
light: colors.orange[100],
main: colors.orange[800],
dark: colors.orange[900],
contrastText: colors.grey[50], // Color used for content when warning.main is used as a background
border: colors.orange[500],
},
error: {
light: colors.red[50],
main: colors.red[700],
dark: colors.red[800],
contrastText: colors.grey[50], // Color used for content when error.main is used as a background
border: colors.red[300],
},
/**
* Used for grey badges, hover elements, and grey light elements
*/
neutral: {
light: colors.grey[100],
main: colors.grey[700],
dark: colors.grey[800],
border: colors.grey[400],
},
background: {
paper: colors.grey[50],
default: colors.grey[50],
application: colors.grey[300],
sidebar: colors.purple[800],
elevation1: colors.grey[100],
elevation2: colors.grey[200],
},
action: {
// Colors used for Icons and Buttons -> this comes from MUI and we overwriting it with our colors
active: colors.action[0.54],
hover: colors.action[0.05],
hoverOpacity: 0.05,
selected: colors.action[0.08],
selectedOpacity: 0.08,
disabled: colors.action[0.32],
disabledBackground: colors.action[0.12],
disabledOpacity: 0.38,
focus: colors.action[0.12],
focusOpacity: 0.12,
activatedOpacity: 0.12,
},
/**
* General divider
*/
divider: colors.grey[400],
/**
* Table colors.
*/
table: {
headerColor: colors.grey[900], //New - Is needed? ###CHECK
headerBackground: colors.grey[200],
headerHover: colors.grey[300],
divider: colors.grey[300],
rowHover: colors.grey[100],
},
/**
* Text highlight effect color. Used when filtering/searching over content.
*/
highlight: colors.orange[200],
/**
* Background color used for the API command in the sidebar
*/
codebox: colors.action[0.12],
/**
* Gradient for the login page
*/
loginGradient: {
from: colors.purple[800],
to: colors.purple[950],
},
/**
* Colors for event log output.
*/
eventLog: {
diffAdd: colors.green[800],
diffSub: colors.red[800],
edited: colors.grey[900],
},
/**
* For 'Seen' column on feature toggles list and other.
*/
seen: {
unknown: colors.grey[100],
recent: colors.green[100],
inactive: colors.orange[200],
abandoned: colors.red[200],
primary: colors.purple[100],
},
},
components: {
// Links
MuiLink: {
styleOverrides: {
root: ({ theme }) => ({
color: theme.palette.primary.dark,
'&:hover': {
textDecoration: 'none',
},
}),
},
},
// Breadcrumb
MuiBreadcrumbs: {
styleOverrides: {
root: ({ theme }) => ({
color: theme.palette.text.primary,
fontSize: '0.875rem',
'& a': {
color: theme.palette.primary.dark,
textDecoration: 'none',
'&:hover': {
textDecoration: 'underline',
},
},
}),
},
},
// Tables
MuiTableHead: {
styleOverrides: {
root: ({ theme }) => ({
// background: 'transparent',
'& th': {
height: theme.shape.tableRowHeightCompact,
backgroundColor: theme.palette.table.headerBackground,
border: 0,
'&:first-of-type': {
borderTopLeftRadius: theme.shape.borderRadiusMedium,
borderBottomLeftRadius:
theme.shape.borderRadiusMedium,
},
'&:last-of-type': {
borderTopRightRadius:
theme.shape.borderRadiusMedium,
borderBottomRightRadius:
theme.shape.borderRadiusMedium,
},
},
}),
},
},
MuiTableRow: {
styleOverrides: {
root: ({ theme }) => ({
'&.MuiTableRow-root:hover': {
//Not all the tables have row hover background. This will add background color on row hover for all the tables
background: theme.palette.table.rowHover, //overwrite action.hover
},
}),
},
},
MuiTableCell: {
styleOverrides: {
root: ({ theme }) => ({
borderBottomColor: theme.palette.table.divider,
}),
},
},
// Alerts
MuiAlert: {
styleOverrides: {
root: ({ theme }) => ({
borderRadius: theme.shape.borderRadiusMedium,
a: {
color: 'inherit',
},
'&.MuiAlert-standardInfo': {
backgroundColor: theme.palette.info.light,
color: theme.palette.info.dark,
border: `1px solid ${theme.palette.info.border}`,
'& .MuiAlert-icon': {
color: theme.palette.info.main,
},
},
'&.MuiAlert-standardSuccess': {
backgroundColor: theme.palette.success.light,
color: theme.palette.success.dark,
border: `1px solid ${theme.palette.success.border}`,
'& .MuiAlert-icon': {
color: theme.palette.success.main,
},
},
'&.MuiAlert-standardWarning': {
backgroundColor: theme.palette.warning.light,
color: theme.palette.warning.dark,
border: `1px solid ${theme.palette.warning.border}`,
'& .MuiAlert-icon': {
color: theme.palette.warning.main,
},
},
'&.MuiAlert-standardError': {
backgroundColor: theme.palette.error.light,
color: theme.palette.error.dark,
border: `1px solid ${theme.palette.error.border}`,
'& .MuiAlert-icon': {
color: theme.palette.error.main,
},
},
}),
},
},
// Horizontal menu tabs
MuiTabs: {
styleOverrides: {
root: ({ theme }) => ({
'& .MuiTabs-indicator': {
height: '4px',
},
'& .MuiTabs-flexContainer': {
minHeight: '70px',
maxHeight: '70px',
},
}),
},
},
MuiTab: {
styleOverrides: {
root: ({ theme }) => ({
color: theme.palette.text.primary,
fontSize: '1rem',
textTransform: 'none',
fontWeight: 400,
lineHeight: '1',
minHeight: '62px',
'&:hover': {
backgroundColor: theme.palette.background.elevation2,
},
'&.Mui-selected': {
color: theme.palette.text.primary,
fontWeight: 700,
},
'& > span': {
color: theme.palette.primary.main, //Based on this color is created the focus color/effect
},
[theme.breakpoints.down('md')]: {
padding: '12px 0px',
},
}),
},
},
// Constraint accordion / cards
MuiAccordion: {
styleOverrides: {
root: ({ theme }) => ({
'&:first-of-type, &:last-of-type': {
borderRadius: theme.shape.borderRadiusMedium,
},
}),
},
},
MuiAccordionSummary: {
styleOverrides: {
root: {
'& > .MuiAccordionSummary-content.Mui-expanded': {
margin: '12px 0',
},
'&.Mui-expanded': {
minHeight: '0',
},
},
},
},
// Project overview, improve toggle/switch disabled focus effect color
MuiSwitch: {
styleOverrides: {
root: ({ theme }) => ({
zIndex: 1,
'&:not(.Mui-checked) .MuiTouchRipple-child': {
color: theme.palette.neutral.border,
},
}),
},
},
// Overwiteing the action.disabledOpacity from MU
MuiMenuItem: {
styleOverrides: {
root: {
'&.Mui-disabled': {
opacity: 0.66,
},
},
},
},
// Inputs background - This is used when we have inputs on a grey background (e.g. edit contstraints, playground)
MuiInputBase: {
styleOverrides: {
root: ({ theme }) => ({
backgroundColor: theme.palette.background.paper,
}),
},
},
// Top menu text color
MuiAppBar: {
styleOverrides: {
root: ({ theme }) => ({
color: theme.palette.text.primary,
}),
},
},
},
});
// Old dark theme below:
// import { createTheme } from '@mui/material/styles';
// import { colors } from './colors';
// const themeColors = {
// main: colors.darkblue[900],
// secondary: colors.darkblue[800],
// textColor: '#ffffffe6',
// hover: 'rgb(255, 255, 255, 0.7)',
// };
// export default createTheme({
// breakpoints: {
// values: {
// xs: 0,
// sm: 600,
// md: 960,
// lg: 1260,
// xl: 1536,
// },
// },
// boxShadows: {
// main: '0px 2px 4px rgba(129, 122, 254, 0.2)',
// card: '0px 2px 10px rgba(28, 25, 78, 0.12)',
// elevated: '0px 1px 20px rgba(45, 42, 89, 0.1)',
// popup: '0px 2px 6px rgba(0, 0, 0, 0.25)',
// primaryHeader: '0px 8px 24px rgba(97, 91, 194, 0.2)',
// separator: '0px 2px 3px hsl(0deg 0% 78% / 50%)',
// },
// typography: {
// fontFamily: 'Sen, Roboto, sans-serif',
// fontWeightBold: '700',
// fontWeightMedium: '700',
// allVariants: { lineHeight: 1.4 },
// button: { lineHeight: 1.75 },
// h1: {
// fontSize: '1.5rem',
// lineHeight: 1.875,
// },
// h3: {
// fontSize: '1rem',
// fontWeight: '700',
// },
// caption: {
// fontSize: `${12 / 16}rem`,
// },
// },
// fontSizes: {
// largeHeader: '2.25rem',
// mainHeader: '1.25rem',
// bodySize: '1rem',
// smallBody: `${14 / 16}rem`,
// smallerBody: `${12 / 16}rem`,
// },
// fontWeight: {
// thin: 300,
// medium: 400,
// semi: 700,
// bold: 700,
// },
// shape: {
// borderRadius: 4,
// borderRadiusMedium: 8,
// borderRadiusLarge: 12,
// borderRadiusExtraLarge: 20,
// tableRowHeight: 64,
// tableRowHeightCompact: 56,
// tableRowHeightDense: 48,
// },
// palette: {
// primary: {
// main: themeColors.textColor,
// light: colors.purple[700],
// dark: colors.purple[900],
// },
// secondary: {
// main: colors.purple[800],
// light: colors.purple[700],
// dark: colors.purple[900],
// },
// info: {
// light: colors.blue[50],
// main: colors.blue[500],
// dark: colors.blue[700],
// border: colors.blue[200],
// },
// success: {
// light: colors.green[50],
// main: colors.green[600],
// dark: themeColors.main,
// border: colors.green[300],
// },
// warning: {
// light: colors.orange[100],
// main: colors.orange[800],
// dark: colors.orange[900],
// border: colors.orange[500],
// },
// error: {
// light: colors.red[50],
// main: colors.red[700],
// dark: colors.red[800],
// border: colors.red[300],
// },
// background: {
// paper: themeColors.main,
// },
// divider: themeColors.secondary,
// // dividerAlternative: colors.grey[400],
// tableHeaderHover: colors.darkblue[700],
// tableHeaderBackground: themeColors.secondary,
// tableHeaderColor: themeColors.textColor,
// highlight: '#FFEACC',
// secondaryContainer: themeColors.secondary,
// contentWrapper: colors.darkblue[800],
// formBackground: themeColors.main,
// formSidebar: colors.darkblue[1000],
// headerBackground: themeColors.main,
// footerBackground: themeColors.main,
// sidebarContainer: 'rgba(32,32,33, 0.2)',
// codebox: colors.darkblue[600],
// featureMetaData: colors.darkblue[1000],
// playgroundBackground: colors.darkblue[600],
// playgroundFormBackground: themeColors.secondary,
// standaloneBackground: colors.black,
// featureStrategySegmentChipBackground: themeColors.secondary,
// featureSegmentSearchBackground: themeColors.secondary,
// dialogHeaderBackground: themeColors.secondary,
// dialogHeaderText: themeColors.textColor,
// lightBorder: colors.darkblue[500],
// constraintAccordion: {
// editBackground: colors.darkblue[600],
// background: themeColors.secondary,
// operatorBackground: themeColors.main,
// },
// standaloneBannerGradient: {
// from: colors.darkblue[1000],
// to: colors.black,
// },
// projectCard: {
// hover: themeColors.secondary,
// textColor: themeColors.textColor,
// },
// formSidebarTextColor: themeColors.textColor,
// checkmarkBadge: themeColors.secondary,
// inputLabelBackground: 'transparent',
// grey: colors.grey,
// text: {
// primary: themeColors.textColor,
// secondary: colors.grey[800],
// disabled: colors.grey[600],
// },
// code: {
// main: '#0b8c8f',
// diffAdd: 'green',
// diffSub: 'red',
// diffNeutral: 'black',
// edited: 'blue',
// },
// neutral: {
// light: colors.darkblue[500],
// main: colors.grey[700],
// dark: colors.grey[800],
// border: colors.grey[500],
// },
// activityIndicators: {
// primary: themeColors.secondary,
// unknown: themeColors.secondary,
// recent: themeColors.secondary,
// inactive: themeColors.secondary,
// abandoned: themeColors.secondary,
// },
// // tertiary: {
// // light: themeColors.secondary,
// // main: colors.grey[400],
// // dark: colors.grey[600],
// // background: 'white',
// // contrast: colors.grey[300],
// // },
// inactiveIcon: colors.grey[600],
// },
// components: {
// MuiAppBar: {
// styleOverrides: {
// root: {
// color: themeColors.textColor,
// },
// },
// },
// MuiInputLabel: {
// styleOverrides: {
// root: {
// color: themeColors.textColor,
// },
// },
// },
// MuiIconButton: {
// styleOverrides: {
// root: {
// color: colors.grey[50],
// '&:hover': {
// backgroundColor: themeColors.hover,
// },
// '&.Mui-disabled': {
// '& .MuiSvgIcon-root': {
// color: colors.grey[700],
// },
// },
// },
// },
// },
// MuiLink: {
// styleOverrides: {
// root: {
// color: colors.grey[50],
// '&:hover': {
// textDecoration: 'none',
// },
// },
// },
// },
// MuiBreadcrumbs: {
// styleOverrides: {
// root: {
// color: themeColors.textColor,
// fontSize: '0.875rem',
// '& a': {
// color: themeColors.textColor,
// textDecoration: 'underline',
// '&:hover': {
// textDecoration: 'none',
// },
// },
// },
// },
// },
// MuiTableHead: {
// styleOverrides: {
// root: {
// background: 'transparent',
// '& th': {
// background: colors.grey[200],
// },
// },
// },
// },
// MuiTableRow: {
// styleOverrides: {
// root: {
// '&.MuiTableRow-hover:hover': {
// background: themeColors.secondary,
// },
// },
// },
// },
// MuiTableCell: {
// styleOverrides: {
// root: {
// borderBottomColor: themeColors.main,
// },
// },
// },
// MuiAlert: {
// styleOverrides: {
// root: {
// borderRadius: '8px',
// a: {
// color: 'inherit',
// },
// '&.MuiAlert-standardInfo': {
// backgroundColor: colors.blue[50],
// color: colors.blue[700],
// border: `1px solid ${colors.blue[200]}`,
// '& .MuiAlert-icon .MuiSvgIcon-root': {
// color: colors.blue[500],
// },
// },
// '&.MuiAlert-standardSuccess': {
// backgroundColor: colors.green[50],
// color: colors.green[800],
// border: `1px solid ${colors.green[300]}`,
// '& .MuiAlert-icon .MuiSvgIcon-root': {
// color: colors.green[500],
// },
// },
// '&.MuiAlert-standardWarning': {
// backgroundColor: colors.orange[100],
// color: colors.orange[900],
// border: `1px solid ${colors.orange[500]}`,
// '& .MuiAlert-icon .MuiSvgIcon-root': {
// color: colors.orange[800],
// },
// },
// '&.MuiAlert-standardError': {
// backgroundColor: colors.red[50],
// color: colors.red[800],
// border: `1px solid ${colors.red[300]}`,
// '& .MuiAlert-icon .MuiSvgIcon-root': {
// color: colors.red[700],
// },
// },
// },
// },
// },
// MuiButton: {
// styleOverrides: {
// root: {
// '&.Mui-disabled': {
// backgroundColor: colors.grey[400],
// },
// },
// },
// },
// MuiSvgIcon: {
// styleOverrides: {
// root: {
// color: themeColors.textColor,
// },
// },
// },
// MuiTabs: {
// styleOverrides: {
// root: {
// backgroundColor: themeColors.main,
// color: themeColors.textColor,
// '& .MuiTabs-indicator': {
// height: '4px',
// },
// },
// },
// },
// MuiTab: {
// styleOverrides: {
// root: {
// color: themeColors.textColor,
// fontSize: '1rem',
// textTransform: 'none',
// fontWeight: 400,
// minHeight: '62px',
// '&:hover': {
// backgroundColor: themeColors.secondary,
// },
// '&.Mui-selected': {
// color: themeColors.textColor,
// fontWeight: 700,
// },
// '& > span': {
// color: colors.purple[900],
// },
// },
// },
// },
// MuiAccordionSummary: {
// styleOverrides: {
// root: {
// '& > .MuiAccordionSummary-content.Mui-expanded': {
// margin: '12px 0',
// },
// },
// },
// },
// MuiSwitch: {
// styleOverrides: {
// switchBase: {
// zIndex: 1,
// '&:not(.Mui-checked) .MuiTouchRipple-child': {
// color: colors.grey['500'],
// },
// },
// },
// },
// MuiIcon: {
// styleOverrides: {
// root: {
// color: colors.grey[50],
// },
// colorDisabled: {
// color: colors.grey[50],
// },
// },
// },
// MuiMenu: {
// styleOverrides: {
// root: {
// '.MuiMenu-list': {
// backgroundColor: colors.darkblue[600],
// },
// },
// },
// },
// MuiMenuItem: {
// styleOverrides: {
// root: {
// '&.Mui-disabled': {
// opacity: 0.66,
// },
// '&:hover': {
// backgroundColor: themeColors.secondary,
// },
// },
// },
// },
// MuiInputBase: {
// styleOverrides: {
// root: {
// backgroundColor: colors.darkblue[1000],
// '.MuiSvgIcon-root': {
// color: '#fff',
// },
// },
// },
// },
// MuiPaper: {
// styleOverrides: {
// root: {
// backgroundColor: themeColors.main,
// color: themeColors.textColor,
// },
// },
// },
// },
// });