diff --git a/locales/en/translation.json b/locales/en/translation.json index 4f686787..269b2bef 100644 --- a/locales/en/translation.json +++ b/locales/en/translation.json @@ -167,6 +167,9 @@ "title": "Settings", "language": "Language", "font_size": "Font size", + "mode": "Color mode", + "dark_mode": "Dark mode", + "light_mode": "Light mode", "theme": "Color theme" }, "thirdparty": { diff --git a/renderer/app.scss b/renderer/app.scss index d5a5867d..ffef9ba5 100644 --- a/renderer/app.scss +++ b/renderer/app.scss @@ -97,6 +97,19 @@ background-color: rgb(241 245 249); } +.dark { + .timeline-scrollable::-webkit-scrollbar-thumb { + background-color: #616161; + border-radius: 4px !important; + opacity: 0; + } + + .timeline-scrollable::-webkit-scrollbar-track { + border-radius: 4px !important; + background-color: #424242; + } +} + .timeline-scrollable:hover::-webkit-scrollbar-thumb { opacity: 1; } @@ -329,3 +342,9 @@ a { @apply text-blue-gray-600; } } + +.dark { + a { + @apply text-blue-400; + } +} diff --git a/renderer/components/Jump.tsx b/renderer/components/Jump.tsx index ba012ca9..a2f59ced 100644 --- a/renderer/components/Jump.tsx +++ b/renderer/components/Jump.tsx @@ -80,6 +80,7 @@ export default function Jump(props: Props) { value={keyword} onChange={e => setKeyword(e.target.value)} size="lg" + color="blue-gray" label={formatMessage({ id: 'search.placeholder' })} ref={inputRef} /> diff --git a/renderer/components/Media.tsx b/renderer/components/Media.tsx index 3ee54ed4..46663fe0 100644 --- a/renderer/components/Media.tsx +++ b/renderer/components/Media.tsx @@ -56,8 +56,8 @@ export default function Media(props: Props) {
- {props.media[index] && ( )} -
diff --git a/renderer/components/Settings.tsx b/renderer/components/Settings.tsx index 69190110..b098fdc5 100644 --- a/renderer/components/Settings.tsx +++ b/renderer/components/Settings.tsx @@ -1,5 +1,5 @@ import { localeType } from '@/provider/i18n' -import { Dialog, DialogBody, DialogHeader, Input, Option, Select, Typography } from '@material-tailwind/react' +import { Dialog, DialogBody, DialogHeader, Input, Option, Radio, Select, Typography } from '@material-tailwind/react' import { ChangeEvent, useEffect, useState } from 'react' import { FormattedMessage } from 'react-intl' @@ -55,6 +55,7 @@ export default function Settings(props: Props) { const [language, setLanguage] = useState('en') const [fontSize, setFontSize] = useState(16) const [theme, setTheme] = useState('theme-blue') + const [isDark, setIsDark] = useState(false) useEffect(() => { if (typeof localStorage !== 'undefined') { @@ -64,6 +65,12 @@ export default function Settings(props: Props) { } else { setLanguage('en') } + const dark = localStorage.getItem('color-mode') + if (dark === 'dark') { + setIsDark(true) + } else { + setIsDark(false) + } } }, []) @@ -91,6 +98,18 @@ export default function Settings(props: Props) { props.reloadSettings() } + const modeChanged = (isDark: boolean) => { + setIsDark(isDark) + if (typeof localStorage !== 'undefined') { + if (isDark) { + localStorage.setItem('color-mode', 'dark') + } else { + localStorage.setItem('color-mode', 'light') + } + } + props.reloadSettings() + } + return ( @@ -105,7 +124,7 @@ export default function Settings(props: Props) {
- +
@@ -115,7 +134,7 @@ export default function Settings(props: Props) {
- {languages.map(lang => (
+
+
+ + + +
+
+ } + onClick={() => modeChanged(true)} + defaultChecked={isDark} + /> + } + onClick={() => modeChanged(false)} + defaultChecked={!isDark} + /> +
+
@@ -131,7 +173,7 @@ export default function Settings(props: Props) {
- {themes.map(t => (
- + @@ -185,7 +185,7 @@ export default function New(props: NewProps) {
- + )} diff --git a/renderer/components/compose/Compose.tsx b/renderer/components/compose/Compose.tsx index 70c35f73..0f5b936c 100644 --- a/renderer/components/compose/Compose.tsx +++ b/renderer/components/compose/Compose.tsx @@ -236,7 +236,7 @@ export default function Compose(props: Props) { setSpoiler(ev.target.value)} @@ -246,7 +246,7 @@ export default function Compose(props: Props) {