aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/components/ThemeProvider.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/renderer/src/components/ThemeProvider.tsx')
-rw-r--r--packages/renderer/src/components/ThemeProvider.tsx103
1 files changed, 88 insertions, 15 deletions
diff --git a/packages/renderer/src/components/ThemeProvider.tsx b/packages/renderer/src/components/ThemeProvider.tsx
index 3943371..50cc1c9 100644
--- a/packages/renderer/src/components/ThemeProvider.tsx
+++ b/packages/renderer/src/components/ThemeProvider.tsx
@@ -23,22 +23,95 @@ import {
23 ThemeProvider as MuiThemeProvider, 23 ThemeProvider as MuiThemeProvider,
24} from '@mui/material/styles'; 24} from '@mui/material/styles';
25import { observer } from 'mobx-react-lite'; 25import { observer } from 'mobx-react-lite';
26import React from 'react'; 26import React, { type ReactNode } from 'react';
27 27
28import { useStore } from './StoreProvider'; 28import type RendererStore from '../stores/RendererStore.js';
29 29
30export default observer( 30function ThemeProvider({
31 ({ children }: { children: JSX.Element | JSX.Element[] }) => { 31 children,
32 const { 32 store: {
33 shared: { shouldUseDarkColors }, 33 shared: { shouldUseDarkColors, writingDirection },
34 } = useStore(); 34 },
35 35}: {
36 const theme = createTheme({ 36 children?: ReactNode;
37 palette: { 37 store: RendererStore;
38 mode: shouldUseDarkColors ? 'dark' : 'light', 38}) {
39 const theme = createTheme({
40 direction: writingDirection,
41 palette: shouldUseDarkColors
42 ? {
43 mode: 'dark',
44 divider: 'rgba(255, 255, 255, 0.22)',
45 }
46 : {
47 mode: 'light',
48 divider: 'rgba(0, 0, 0, 0.24)',
49 },
50 typography: {
51 fontFamily: 'system-ui',
52 body1: {
53 letterSpacing: 0,
54 },
55 body2: {
56 letterSpacing: 0,
57 },
58 subtitle1: {
59 letterSpacing: 0,
60 },
61 subtitle2: {
62 letterSpacing: 0,
63 },
64 button: {
65 fontSize: '1rem',
66 textTransform: 'none',
67 letterSpacing: 0,
68 lineHeight: 1.5,
69 fontWeight: 700,
70 },
71 },
72 components: {
73 MuiBadge: {
74 styleOverrides: {
75 standard: {
76 // Reduce badge with to make the unread message badge with "99+" unread messages
77 // fit within the sidebar. Applied for all badges for consistency.
78 paddingLeft: 4,
79 paddingRight: 4,
80 },
81 },
39 }, 82 },
40 }); 83 MuiIconButton: {
84 styleOverrides: {
85 sizeMedium: {
86 padding: 6,
87 },
88 },
89 },
90 MuiButton: {
91 styleOverrides: {
92 sizeSmall: {
93 fontSize: '0.875rem',
94 },
95 sizeLarge: {
96 fontSize: '1rem',
97 },
98 },
99 },
100 MuiTab: {
101 styleOverrides: {
102 root: {
103 fontWeight: 500,
104 },
105 },
106 },
107 },
108 });
41 109
42 return <MuiThemeProvider theme={theme}>{children}</MuiThemeProvider>; 110 return <MuiThemeProvider theme={theme}>{children}</MuiThemeProvider>;
43 }, 111}
44); 112
113ThemeProvider.defaultProps = {
114 children: undefined,
115};
116
117export default observer(ThemeProvider);