diff --git a/src/components/settings-modal/settings-modal.module.css b/src/components/settings-modal/settings-modal.module.css index 97815432..8d189221 100644 --- a/src/components/settings-modal/settings-modal.module.css +++ b/src/components/settings-modal/settings-modal.module.css @@ -1,3 +1,13 @@ +.overlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 900; +} + .settingsModal { top: 60px; width: 400px; @@ -6,10 +16,16 @@ left: calc(50% - 25px); overflow-y: auto; margin-left: -178px; - position: absolute; + position: fixed; + z-index: 1000; padding: 2px 5px 5px; font-size: 14px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); + background-color: var(--settings-modal-background-color); +} + +.settingsModal select { + filter: var(--filter80); } .header { @@ -20,6 +36,11 @@ padding-bottom: 5px; text-align: center; line-height: 14px; + border-bottom: var(--settings-modal-header-border-bottom); +} + +.title { + text-transform: capitalize; } .version { @@ -29,6 +50,15 @@ margin-left: 5px; } +.version a { + color: inherit; + text-decoration: none; +} + +.version a:hover { + text-decoration: underline; +} + .closeButton { right: 5px; width: 18px; @@ -39,6 +69,7 @@ position: absolute; top: 5px; image-rendering: pixelated; + background-image: var(--settings-modal-close-button-background-image); } @media (max-width: 640px) { diff --git a/src/components/settings-modal/settings-modal.tsx b/src/components/settings-modal/settings-modal.tsx index 6694996a..f63f1c4b 100644 --- a/src/components/settings-modal/settings-modal.tsx +++ b/src/components/settings-modal/settings-modal.tsx @@ -1,18 +1,81 @@ import styles from './settings-modal.module.css'; import { useNavigate } from 'react-router-dom'; +import useTheme from '../../hooks/use-theme'; +import { useTranslation } from 'react-i18next'; +import packageJson from '../../../package.json'; +const commitRef = process.env.REACT_APP_COMMIT_REF; -const SettingsModal = () => { - const navigate = useNavigate(); +// TODO: remove theme and languages selectors for debugging +const ThemeSettings = () => { + const [theme, setTheme] = useTheme(); return ( -
-
- v0.2.0 - Settings - navigate(-1)} /> -
+ + ); +}; + +// prettier-ignore +const availableLanguages = ['ar', 'bn', 'cs', 'da', 'de', 'el', 'en', 'es', 'fa', 'fi', 'fil', 'fr', 'he', 'hi', 'hu', 'id', 'it', 'ja', 'ko', 'mr', 'nl', 'no', 'pl', 'pt', 'ro', 'ru', 'sq', 'sv', 'te', 'th', 'tr', 'uk', 'ur', 'vi', 'zh']; + +const LanguageSettings = () => { + const { i18n } = useTranslation(); + const { changeLanguage, language } = i18n; + + const onSelectLanguage = (e: React.ChangeEvent) => { + changeLanguage(e.target.value); + }; + + return ( +
+
); }; +const SettingsModal = () => { + const { t } = useTranslation(); + const navigate = useNavigate(); + + const closeModal = () => { + navigate(-1); + }; + + return ( + <> +
+
+
+ + + v{packageJson.version} + + {commitRef && ( + + #{commitRef.slice(0, 7)} + + )} + + {t('settings')} + +
+ + +
+ + ); +}; + export default SettingsModal; diff --git a/src/themes.css b/src/themes.css index 9c412a21..2ce2ac2d 100644 --- a/src/themes.css +++ b/src/themes.css @@ -149,6 +149,11 @@ --reply-modal-field-input-border: 1px solid #aaa; --reply-modal-field-input-border-focus: 1px solid #ea8; + /* settings modal */ + --settings-modal-background-color: #f0e0d6; + --settings-modal-header-border-bottom: 1px solid #d9bfb7; + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-red.png"); + /* stats */ --stats-font-size: 11px; } @@ -304,6 +309,11 @@ --reply-modal-field-input-border: 1px solid #aaa; --reply-modal-field-input-border-focus: 1px solid #98e; + /* settings modal */ + --settings-modal-background-color: #d6daf0; + --settings-modal-header-border-bottom: 1px solid #b7c5d9; + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-blue.png"); + /* stats */ --stats-font-size: 11px; } @@ -426,6 +436,11 @@ --reply-desktop-background-color: #f0e0d6; --reply-desktop-border: 1px solid #d9bfb7; + /* settings modal */ + --settings-modal-background-color: #f0e0d6; + --settings-modal-header-border-bottom: 1px solid rgba(0,0,0,.2); + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-red.png"); + /* stats */ --stats-font-size: 10pt; } @@ -562,6 +577,11 @@ --reply-desktop-background-color: #d6daf0; --reply-desktop-border: 1px solid #b7c5d9; + /* settings modal */ + --settings-modal-background-color: #d6daf0; + --settings-modal-header-border-bottom: 1px solid rgba(0,0,0,.2); + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-blue.png"); + /* stats */ --stats-font-size: 10pt; } @@ -720,6 +740,11 @@ --select-background-color: #282a2e; --select-color: #c5c8c6; + /* settings modal */ + --settings-modal-background-color: #282a2e; + --settings-modal-header-border-bottom: 1px solid #111; + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-dark.png"); + /* stats */ --stats-font-size: 11px; } @@ -857,6 +882,11 @@ --reply-modal-field-input-border: 1px solid #aaa; --reply-modal-field-input-border-focus: 1px solid #ea8; + /* settings modal */ + --settings-modal-background-color: #ddd; + --settings-modal-header-border-bottom: 1px solid rgba(0, 0, 0, 0.20); + --settings-modal-close-button-background-image: url("/public/assets/buttons/cross-photon.png"); + /* stats */ --stats-font-size: 11px; }