diff --git a/README.md b/README.md
index 907466e..dc05298 100644
--- a/README.md
+++ b/README.md
@@ -172,6 +172,16 @@ docker compose up -d
---
+## Dark Mode
+
+ConvertX-CN 支援亮色與暗色主題。
+
+- 可手動切換主題(點擊導覽列的太陽/月亮圖示)
+- 偏好設定自動儲存於瀏覽器
+- 預設跟隨系統色彩偏好
+
+---
+
## MinerU
ConvertX 內建文件轉換引擎。
diff --git a/public/theme.js b/public/theme.js
new file mode 100644
index 0000000..41f277d
--- /dev/null
+++ b/public/theme.js
@@ -0,0 +1,102 @@
+// ===== Theme Toggle Script =====
+// Handles dark/light mode switching with localStorage persistence
+// and system preference detection
+
+(function () {
+ const THEME_KEY = "theme";
+
+ // Get stored theme or detect system preference
+ function getPreferredTheme() {
+ const storedTheme = localStorage.getItem(THEME_KEY);
+ if (storedTheme) {
+ return storedTheme;
+ }
+ // Return null to let CSS handle system preference
+ return null;
+ }
+
+ // Get current effective theme (what's actually being displayed)
+ function getEffectiveTheme() {
+ const storedTheme = localStorage.getItem(THEME_KEY);
+ if (storedTheme) {
+ return storedTheme;
+ }
+ // Check system preference
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
+ }
+
+ // Apply theme to document
+ function applyTheme(theme) {
+ const root = document.documentElement;
+ if (theme === "dark") {
+ root.setAttribute("data-theme", "dark");
+ } else if (theme === "light") {
+ root.setAttribute("data-theme", "light");
+ } else {
+ // Remove attribute to follow system preference
+ root.removeAttribute("data-theme");
+ }
+ updateThemeIcons();
+ }
+
+ // Update theme toggle icons visibility
+ function updateThemeIcons() {
+ const effectiveTheme = getEffectiveTheme();
+ const lightIcon = document.getElementById("theme-icon-light");
+ const darkIcon = document.getElementById("theme-icon-dark");
+
+ if (lightIcon && darkIcon) {
+ if (effectiveTheme === "dark") {
+ // In dark mode, show sun icon (to switch to light)
+ lightIcon.classList.remove("hidden");
+ darkIcon.classList.add("hidden");
+ } else {
+ // In light mode, show moon icon (to switch to dark)
+ lightIcon.classList.add("hidden");
+ darkIcon.classList.remove("hidden");
+ }
+ }
+ }
+
+ // Toggle theme
+ function toggleTheme() {
+ const currentTheme = getEffectiveTheme();
+ const newTheme = currentTheme === "dark" ? "light" : "dark";
+ localStorage.setItem(THEME_KEY, newTheme);
+ applyTheme(newTheme);
+ }
+
+ // Initialize theme on page load
+ function initTheme() {
+ const preferredTheme = getPreferredTheme();
+ applyTheme(preferredTheme);
+
+ // Listen for system preference changes
+ window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (e) => {
+ // Only update if no manual preference is set
+ if (!localStorage.getItem(THEME_KEY)) {
+ applyTheme(null);
+ }
+ });
+ }
+
+ // Apply theme immediately to prevent flash
+ const preferredTheme = getPreferredTheme();
+ if (preferredTheme) {
+ document.documentElement.setAttribute("data-theme", preferredTheme);
+ }
+
+ // Set up event listener when DOM is ready
+ document.addEventListener("DOMContentLoaded", function () {
+ initTheme();
+
+ const themeToggle = document.getElementById("theme-toggle");
+ if (themeToggle) {
+ themeToggle.addEventListener("click", toggleTheme);
+ }
+ });
+
+ // Expose toggle function globally for programmatic access
+ window.toggleTheme = toggleTheme;
+ window.getEffectiveTheme = getEffectiveTheme;
+})();
diff --git a/src/components/base.tsx b/src/components/base.tsx
index 561c4e2..8862bc3 100644
--- a/src/components/base.tsx
+++ b/src/components/base.tsx
@@ -26,6 +26,7 @@ export const BaseHtml = ({
+
{children}
diff --git a/src/components/header.tsx b/src/components/header.tsx
index b0b8868..5ef2fea 100644
--- a/src/components/header.tsx
+++ b/src/components/header.tsx
@@ -5,6 +5,7 @@ import {
defaultLocale,
} from "../i18n/index";
import { LanguageSelector } from "./languageSelector";
+import { ThemeToggle } from "./themeToggle";
export const Header = ({
loggedIn,
@@ -66,6 +67,9 @@ export const Header = ({
) : null}
+
+
+
@@ -98,6 +102,9 @@ export const Header = ({
) : null}
+
+
+
diff --git a/src/components/themeToggle.tsx b/src/components/themeToggle.tsx
new file mode 100644
index 0000000..569694a
--- /dev/null
+++ b/src/components/themeToggle.tsx
@@ -0,0 +1,55 @@
+import { type SupportedLocale, type Translator, createTranslator, defaultLocale } from "../i18n/index";
+
+export const ThemeToggle = ({
+ locale = defaultLocale,
+ t = createTranslator(defaultLocale),
+}: {
+ locale?: SupportedLocale;
+ t?: Translator;
+}) => {
+ return (
+
+ );
+};
diff --git a/src/locales/af.json b/src/locales/af.json
index 6705f4b..9f003de 100644
--- a/src/locales/af.json
+++ b/src/locales/af.json
@@ -26,7 +26,8 @@
"logout": "Teken uit",
"login": "Teken in",
"register": "Registreer",
- "language": "Taal"
+ "language": "Taal",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Omskakel",
diff --git a/src/locales/am.json b/src/locales/am.json
index b2579fe..dc1f944 100644
--- a/src/locales/am.json
+++ b/src/locales/am.json
@@ -26,7 +26,8 @@
"logout": "ውጣ",
"login": "ግባ",
"register": "ተመዝገብ",
- "language": "ቋንቋ"
+ "language": "ቋንቋ",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "ቀይር",
diff --git a/src/locales/ar.json b/src/locales/ar.json
index 04e9313..0e614bc 100644
--- a/src/locales/ar.json
+++ b/src/locales/ar.json
@@ -26,7 +26,8 @@
"logout": "تسجيل الخروج",
"login": "تسجيل الدخول",
"register": "التسجيل",
- "language": "اللغة"
+ "language": "اللغة",
+ "toggleTheme": "تبديل المظهر"
},
"convert": {
"title": "تحويل",
diff --git a/src/locales/bg.json b/src/locales/bg.json
index 2f16037..dacd20e 100644
--- a/src/locales/bg.json
+++ b/src/locales/bg.json
@@ -26,7 +26,8 @@
"logout": "Изход",
"login": "Вход",
"register": "Регистрация",
- "language": "Език"
+ "language": "Език",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Конвертиране",
diff --git a/src/locales/bn.json b/src/locales/bn.json
index 418e8ea..273adf3 100644
--- a/src/locales/bn.json
+++ b/src/locales/bn.json
@@ -26,7 +26,8 @@
"logout": "লগআউট",
"login": "লগইন",
"register": "নিবন্ধন",
- "language": "ভাষা"
+ "language": "ভাষা",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "রূপান্তর করুন",
diff --git a/src/locales/ca.json b/src/locales/ca.json
index 67333e3..d861fef 100644
--- a/src/locales/ca.json
+++ b/src/locales/ca.json
@@ -26,7 +26,8 @@
"logout": "Tancar sessió",
"login": "Iniciar sessió",
"register": "Registrar-se",
- "language": "Idioma"
+ "language": "Idioma",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Convertir",
diff --git a/src/locales/cs.json b/src/locales/cs.json
index 4021053..3843d64 100644
--- a/src/locales/cs.json
+++ b/src/locales/cs.json
@@ -26,7 +26,8 @@
"logout": "Odhlásit",
"login": "Přihlásit",
"register": "Registrovat",
- "language": "Jazyk"
+ "language": "Jazyk",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Převést",
diff --git a/src/locales/cy.json b/src/locales/cy.json
index 65fba61..fa19484 100644
--- a/src/locales/cy.json
+++ b/src/locales/cy.json
@@ -26,7 +26,8 @@
"logout": "Allgofnodi",
"login": "Mewngofnodi",
"register": "Cofrestru",
- "language": "Iaith"
+ "language": "Iaith",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Trosi",
diff --git a/src/locales/da.json b/src/locales/da.json
index 7d4a74a..35d4c0c 100644
--- a/src/locales/da.json
+++ b/src/locales/da.json
@@ -26,7 +26,8 @@
"logout": "Log ud",
"login": "Log ind",
"register": "Registrer",
- "language": "Sprog"
+ "language": "Sprog",
+ "toggleTheme": "Skift tema"
},
"convert": {
"title": "Konverter",
diff --git a/src/locales/de.json b/src/locales/de.json
index c861ade..19598bd 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -26,7 +26,8 @@
"logout": "Abmelden",
"login": "Anmelden",
"register": "Registrieren",
- "language": "Sprache"
+ "language": "Sprache",
+ "toggleTheme": "Thema wechseln"
},
"convert": {
"title": "Konvertieren",
diff --git a/src/locales/el.json b/src/locales/el.json
index 4200c3b..7d92518 100644
--- a/src/locales/el.json
+++ b/src/locales/el.json
@@ -26,7 +26,8 @@
"logout": "Αποσύνδεση",
"login": "Σύνδεση",
"register": "Εγγραφή",
- "language": "Γλώσσα"
+ "language": "Γλώσσα",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Μετατροπή",
diff --git a/src/locales/en.json b/src/locales/en.json
index 62dcd82..8cdacd1 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -26,7 +26,8 @@
"logout": "Logout",
"login": "Login",
"register": "Register",
- "language": "Language"
+ "language": "Language",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Convert",
diff --git a/src/locales/es.json b/src/locales/es.json
index 71f12f0..62becaf 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -26,7 +26,8 @@
"logout": "Cerrar sesión",
"login": "Iniciar sesión",
"register": "Registrarse",
- "language": "Idioma"
+ "language": "Idioma",
+ "toggleTheme": "Cambiar tema"
},
"convert": {
"title": "Convertir",
diff --git a/src/locales/et.json b/src/locales/et.json
index f1296cd..cde9e0a 100644
--- a/src/locales/et.json
+++ b/src/locales/et.json
@@ -26,7 +26,8 @@
"logout": "Logi välja",
"login": "Logi sisse",
"register": "Registreeru",
- "language": "Keel"
+ "language": "Keel",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Teisenda",
diff --git a/src/locales/eu.json b/src/locales/eu.json
index d0155fe..503ed17 100644
--- a/src/locales/eu.json
+++ b/src/locales/eu.json
@@ -26,7 +26,8 @@
"logout": "Saioa itxi",
"login": "Saioa hasi",
"register": "Erregistratu",
- "language": "Hizkuntza"
+ "language": "Hizkuntza",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Bihurtu",
diff --git a/src/locales/fa.json b/src/locales/fa.json
index 354bc8d..204efd5 100644
--- a/src/locales/fa.json
+++ b/src/locales/fa.json
@@ -26,7 +26,8 @@
"logout": "خروج",
"login": "ورود",
"register": "ثبت نام",
- "language": "زبان"
+ "language": "زبان",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "تبدیل",
diff --git a/src/locales/fi.json b/src/locales/fi.json
index 03eb072..507b155 100644
--- a/src/locales/fi.json
+++ b/src/locales/fi.json
@@ -26,7 +26,8 @@
"logout": "Kirjaudu ulos",
"login": "Kirjaudu sisään",
"register": "Rekisteröidy",
- "language": "Kieli"
+ "language": "Kieli",
+ "toggleTheme": "Vaihda teemaa"
},
"convert": {
"title": "Muunna",
diff --git a/src/locales/fil.json b/src/locales/fil.json
index 7243e7f..070e936 100644
--- a/src/locales/fil.json
+++ b/src/locales/fil.json
@@ -26,7 +26,8 @@
"logout": "Mag-logout",
"login": "Mag-login",
"register": "Magrehistro",
- "language": "Wika"
+ "language": "Wika",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "I-convert",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 1107561..9c4182a 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -26,7 +26,8 @@
"logout": "Déconnexion",
"login": "Connexion",
"register": "S'inscrire",
- "language": "Langue"
+ "language": "Langue",
+ "toggleTheme": "Changer le thème"
},
"convert": {
"title": "Convertir",
diff --git a/src/locales/ga.json b/src/locales/ga.json
index 3f1f7f1..6cb080b 100644
--- a/src/locales/ga.json
+++ b/src/locales/ga.json
@@ -26,7 +26,8 @@
"logout": "Logáil amach",
"login": "Logáil isteach",
"register": "Cláraigh",
- "language": "Teanga"
+ "language": "Teanga",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Tiontaigh",
diff --git a/src/locales/gl.json b/src/locales/gl.json
index 527b6c3..a45ad73 100644
--- a/src/locales/gl.json
+++ b/src/locales/gl.json
@@ -26,7 +26,8 @@
"logout": "Pechar sesión",
"login": "Iniciar sesión",
"register": "Rexistrarse",
- "language": "Idioma"
+ "language": "Idioma",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Converter",
diff --git a/src/locales/gu.json b/src/locales/gu.json
index 07e3245..e6dafab 100644
--- a/src/locales/gu.json
+++ b/src/locales/gu.json
@@ -26,7 +26,8 @@
"logout": "લૉગઆઉટ",
"login": "લૉગિન",
"register": "નોંધણી કરો",
- "language": "ભાષા"
+ "language": "ભાષા",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "રૂપાંતર કરો",
diff --git a/src/locales/he.json b/src/locales/he.json
index 422376f..ad66f1c 100644
--- a/src/locales/he.json
+++ b/src/locales/he.json
@@ -26,7 +26,8 @@
"logout": "התנתק",
"login": "התחבר",
"register": "הירשם",
- "language": "שפה"
+ "language": "שפה",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "המר",
diff --git a/src/locales/hi.json b/src/locales/hi.json
index 8ce7b99..a63ae2b 100644
--- a/src/locales/hi.json
+++ b/src/locales/hi.json
@@ -26,7 +26,8 @@
"logout": "लॉग आउट",
"login": "लॉग इन",
"register": "पंजीकरण",
- "language": "भाषा"
+ "language": "भाषा",
+ "toggleTheme": "थीम बदलें"
},
"convert": {
"title": "कन्वर्ट करें",
diff --git a/src/locales/hr.json b/src/locales/hr.json
index 69b6759..4bc949f 100644
--- a/src/locales/hr.json
+++ b/src/locales/hr.json
@@ -26,7 +26,8 @@
"logout": "Odjava",
"login": "Prijava",
"register": "Registracija",
- "language": "Jezik"
+ "language": "Jezik",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Pretvori",
diff --git a/src/locales/hu.json b/src/locales/hu.json
index 2644196..002a892 100644
--- a/src/locales/hu.json
+++ b/src/locales/hu.json
@@ -26,7 +26,8 @@
"logout": "Kijelentkezés",
"login": "Bejelentkezés",
"register": "Regisztráció",
- "language": "Nyelv"
+ "language": "Nyelv",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konvertálás",
diff --git a/src/locales/id.json b/src/locales/id.json
index b503e2f..ca0a0cf 100644
--- a/src/locales/id.json
+++ b/src/locales/id.json
@@ -26,7 +26,8 @@
"logout": "Keluar",
"login": "Masuk",
"register": "Daftar",
- "language": "Bahasa"
+ "language": "Bahasa",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konversi",
diff --git a/src/locales/is.json b/src/locales/is.json
index b6bcce7..17bcc7b 100644
--- a/src/locales/is.json
+++ b/src/locales/is.json
@@ -26,7 +26,8 @@
"logout": "Útskrá",
"login": "Innskrá",
"register": "Nýskrá",
- "language": "Tungumál"
+ "language": "Tungumál",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Umbreyta",
diff --git a/src/locales/it.json b/src/locales/it.json
index 94621a3..f33677b 100644
--- a/src/locales/it.json
+++ b/src/locales/it.json
@@ -26,7 +26,8 @@
"logout": "Esci",
"login": "Accedi",
"register": "Registrati",
- "language": "Lingua"
+ "language": "Lingua",
+ "toggleTheme": "Cambia tema"
},
"convert": {
"title": "Converti",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index cc6ce69..62cf8af 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -26,7 +26,8 @@
"logout": "ログアウト",
"login": "ログイン",
"register": "登録",
- "language": "言語"
+ "language": "言語",
+ "toggleTheme": "テーマ切替"
},
"convert": {
"title": "変換",
diff --git a/src/locales/km.json b/src/locales/km.json
index a27c145..0320ab8 100644
--- a/src/locales/km.json
+++ b/src/locales/km.json
@@ -26,7 +26,8 @@
"logout": "ចាកចេញ",
"login": "ចូល",
"register": "ចុះឈ្មោះ",
- "language": "ភាសា"
+ "language": "ភាសា",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "បម្លែង",
diff --git a/src/locales/kn.json b/src/locales/kn.json
index 374a828..f1d7837 100644
--- a/src/locales/kn.json
+++ b/src/locales/kn.json
@@ -26,7 +26,8 @@
"logout": "ಲಾಗ್ ಔಟ್",
"login": "ಲಾಗಿನ್",
"register": "ನೋಂದಣಿ",
- "language": "ಭಾಷೆ"
+ "language": "ಭಾಷೆ",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "ಪರಿವರ್ತಿಸಿ",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index 042f1f8..9d5ea9b 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -26,7 +26,8 @@
"logout": "로그아웃",
"login": "로그인",
"register": "회원가입",
- "language": "언어"
+ "language": "언어",
+ "toggleTheme": "테마 전환"
},
"convert": {
"title": "변환",
diff --git a/src/locales/lo.json b/src/locales/lo.json
index 7cc986b..928042b 100644
--- a/src/locales/lo.json
+++ b/src/locales/lo.json
@@ -26,7 +26,8 @@
"logout": "ອອກຈາກລະບົບ",
"login": "ເຂົ້າສູ່ລະບົບ",
"register": "ລົງທະບຽນ",
- "language": "ພາສາ"
+ "language": "ພາສາ",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "ແປງ",
diff --git a/src/locales/lt.json b/src/locales/lt.json
index 91265b6..6944eb6 100644
--- a/src/locales/lt.json
+++ b/src/locales/lt.json
@@ -26,7 +26,8 @@
"logout": "Atsijungti",
"login": "Prisijungti",
"register": "Registruotis",
- "language": "Kalba"
+ "language": "Kalba",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konvertuoti",
diff --git a/src/locales/lv.json b/src/locales/lv.json
index 73a2c6b..106bf58 100644
--- a/src/locales/lv.json
+++ b/src/locales/lv.json
@@ -26,7 +26,8 @@
"logout": "Izrakstīties",
"login": "Ierakstīties",
"register": "Reģistrēties",
- "language": "Valoda"
+ "language": "Valoda",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konvertēt",
diff --git a/src/locales/mk.json b/src/locales/mk.json
index f200888..abf09d8 100644
--- a/src/locales/mk.json
+++ b/src/locales/mk.json
@@ -26,7 +26,8 @@
"logout": "Одјава",
"login": "Најава",
"register": "Регистрација",
- "language": "Јазик"
+ "language": "Јазик",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Конвертирај",
diff --git a/src/locales/ml.json b/src/locales/ml.json
index 6188cd6..eef5119 100644
--- a/src/locales/ml.json
+++ b/src/locales/ml.json
@@ -26,7 +26,8 @@
"logout": "ലോഗൗട്ട്",
"login": "ലോഗിൻ",
"register": "രജിസ്റ്റർ",
- "language": "ഭാഷ"
+ "language": "ഭാഷ",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "പരിവർത്തനം ചെയ്യുക",
diff --git a/src/locales/mr.json b/src/locales/mr.json
index 1d162cb..f33aebe 100644
--- a/src/locales/mr.json
+++ b/src/locales/mr.json
@@ -26,7 +26,8 @@
"logout": "लॉगआउट",
"login": "लॉगिन",
"register": "नोंदणी करा",
- "language": "भाषा"
+ "language": "भाषा",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "रूपांतर करा",
diff --git a/src/locales/ms.json b/src/locales/ms.json
index 4b1afcf..6ba7c0f 100644
--- a/src/locales/ms.json
+++ b/src/locales/ms.json
@@ -26,7 +26,8 @@
"logout": "Log keluar",
"login": "Log masuk",
"register": "Daftar",
- "language": "Bahasa"
+ "language": "Bahasa",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Tukar",
diff --git a/src/locales/mt.json b/src/locales/mt.json
index 8f679fc..dfd3a0c 100644
--- a/src/locales/mt.json
+++ b/src/locales/mt.json
@@ -26,7 +26,8 @@
"logout": "Oħroġ",
"login": "Idħol",
"register": "Irreġistra",
- "language": "Lingwa"
+ "language": "Lingwa",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Ikkonverti",
diff --git a/src/locales/my.json b/src/locales/my.json
index f8ae925..4b61165 100644
--- a/src/locales/my.json
+++ b/src/locales/my.json
@@ -26,7 +26,8 @@
"logout": "ထွက်",
"login": "ဝင်",
"register": "စာရင်းသွင်း",
- "language": "ဘာသာစကား"
+ "language": "ဘာသာစကား",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "ပြောင်း",
diff --git a/src/locales/ne.json b/src/locales/ne.json
index 75fcd12..16b6eba 100644
--- a/src/locales/ne.json
+++ b/src/locales/ne.json
@@ -26,7 +26,8 @@
"logout": "लग आउट",
"login": "लग इन",
"register": "दर्ता गर्नुहोस्",
- "language": "भाषा"
+ "language": "भाषा",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "रूपान्तरण गर्नुहोस्",
diff --git a/src/locales/nl.json b/src/locales/nl.json
index 8b3af15..13ebd11 100644
--- a/src/locales/nl.json
+++ b/src/locales/nl.json
@@ -26,7 +26,8 @@
"logout": "Uitloggen",
"login": "Inloggen",
"register": "Registreren",
- "language": "Taal"
+ "language": "Taal",
+ "toggleTheme": "Thema wisselen"
},
"convert": {
"title": "Converteren",
diff --git a/src/locales/no.json b/src/locales/no.json
index 26e3982..8cfa8f9 100644
--- a/src/locales/no.json
+++ b/src/locales/no.json
@@ -26,7 +26,8 @@
"logout": "Logg ut",
"login": "Logg inn",
"register": "Registrer",
- "language": "Språk"
+ "language": "Språk",
+ "toggleTheme": "Bytt tema"
},
"convert": {
"title": "Konverter",
diff --git a/src/locales/pl.json b/src/locales/pl.json
index 51f191b..af8a520 100644
--- a/src/locales/pl.json
+++ b/src/locales/pl.json
@@ -26,7 +26,8 @@
"logout": "Wyloguj",
"login": "Zaloguj",
"register": "Zarejestruj",
- "language": "Język"
+ "language": "Język",
+ "toggleTheme": "Zmień motyw"
},
"convert": {
"title": "Konwertuj",
diff --git a/src/locales/pt.json b/src/locales/pt.json
index 289fc36..dc83bfb 100644
--- a/src/locales/pt.json
+++ b/src/locales/pt.json
@@ -26,7 +26,8 @@
"logout": "Sair",
"login": "Entrar",
"register": "Registrar",
- "language": "Idioma"
+ "language": "Idioma",
+ "toggleTheme": "Alternar tema"
},
"convert": {
"title": "Converter",
diff --git a/src/locales/ro.json b/src/locales/ro.json
index 8a782f6..0148a0c 100644
--- a/src/locales/ro.json
+++ b/src/locales/ro.json
@@ -26,7 +26,8 @@
"logout": "Deconectare",
"login": "Autentificare",
"register": "Înregistrare",
- "language": "Limbă"
+ "language": "Limbă",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Convertire",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index c730f99..b1fafb8 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -26,7 +26,8 @@
"logout": "Выйти",
"login": "Войти",
"register": "Регистрация",
- "language": "Язык"
+ "language": "Язык",
+ "toggleTheme": "Сменить тему"
},
"convert": {
"title": "Конвертировать",
diff --git a/src/locales/si.json b/src/locales/si.json
index 78ea4ea..fbdca2e 100644
--- a/src/locales/si.json
+++ b/src/locales/si.json
@@ -26,7 +26,8 @@
"logout": "පිටවන්න",
"login": "පිවිසෙන්න",
"register": "ලියාපදිංචි වන්න",
- "language": "භාෂාව"
+ "language": "භාෂාව",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "පරිවර්තනය",
diff --git a/src/locales/sk.json b/src/locales/sk.json
index 5ee8494..4eca31c 100644
--- a/src/locales/sk.json
+++ b/src/locales/sk.json
@@ -26,7 +26,8 @@
"logout": "Odhlásiť sa",
"login": "Prihlásiť sa",
"register": "Registrovať",
- "language": "Jazyk"
+ "language": "Jazyk",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konvertovať",
diff --git a/src/locales/sl.json b/src/locales/sl.json
index cb817b7..d160870 100644
--- a/src/locales/sl.json
+++ b/src/locales/sl.json
@@ -26,7 +26,8 @@
"logout": "Odjava",
"login": "Prijava",
"register": "Registracija",
- "language": "Jezik"
+ "language": "Jezik",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Pretvori",
diff --git a/src/locales/sq.json b/src/locales/sq.json
index 226e7d2..1512e71 100644
--- a/src/locales/sq.json
+++ b/src/locales/sq.json
@@ -26,7 +26,8 @@
"logout": "Dilni",
"login": "Hyni",
"register": "Regjistrohu",
- "language": "Gjuha"
+ "language": "Gjuha",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Konverto",
diff --git a/src/locales/sr.json b/src/locales/sr.json
index facb64c..d2207f3 100644
--- a/src/locales/sr.json
+++ b/src/locales/sr.json
@@ -26,7 +26,8 @@
"logout": "Одјава",
"login": "Пријава",
"register": "Регистрација",
- "language": "Језик"
+ "language": "Језик",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Конвертуј",
diff --git a/src/locales/sv.json b/src/locales/sv.json
index 370ef1d..aeada67 100644
--- a/src/locales/sv.json
+++ b/src/locales/sv.json
@@ -26,7 +26,8 @@
"logout": "Logga ut",
"login": "Logga in",
"register": "Registrera",
- "language": "Språk"
+ "language": "Språk",
+ "toggleTheme": "Byt tema"
},
"convert": {
"title": "Konvertera",
diff --git a/src/locales/sw.json b/src/locales/sw.json
index 1d4d4eb..c1e93ad 100644
--- a/src/locales/sw.json
+++ b/src/locales/sw.json
@@ -26,7 +26,8 @@
"logout": "Toka",
"login": "Ingia",
"register": "Jisajili",
- "language": "Lugha"
+ "language": "Lugha",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Badilisha",
diff --git a/src/locales/ta.json b/src/locales/ta.json
index b383056..8a16a69 100644
--- a/src/locales/ta.json
+++ b/src/locales/ta.json
@@ -26,7 +26,8 @@
"logout": "வெளியேறு",
"login": "உள்நுழை",
"register": "பதிவு செய்",
- "language": "மொழி"
+ "language": "மொழி",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "மாற்று",
diff --git a/src/locales/te.json b/src/locales/te.json
index 1ab7f4b..7b6a192 100644
--- a/src/locales/te.json
+++ b/src/locales/te.json
@@ -26,7 +26,8 @@
"logout": "లాగ్ అవుట్",
"login": "లాగిన్",
"register": "నమోదు",
- "language": "భాష"
+ "language": "భాష",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "మార్చు",
diff --git a/src/locales/th.json b/src/locales/th.json
index ff15f6a..e6719e8 100644
--- a/src/locales/th.json
+++ b/src/locales/th.json
@@ -26,7 +26,8 @@
"logout": "ออกจากระบบ",
"login": "เข้าสู่ระบบ",
"register": "ลงทะเบียน",
- "language": "ภาษา"
+ "language": "ภาษา",
+ "toggleTheme": "เปลี่ยนธีม"
},
"convert": {
"title": "แปลงไฟล์",
diff --git a/src/locales/tr.json b/src/locales/tr.json
index 24e620a..bff5bec 100644
--- a/src/locales/tr.json
+++ b/src/locales/tr.json
@@ -26,7 +26,8 @@
"logout": "Çıkış",
"login": "Giriş",
"register": "Kayıt Ol",
- "language": "Dil"
+ "language": "Dil",
+ "toggleTheme": "Tema değiştir"
},
"convert": {
"title": "Dönüştür",
diff --git a/src/locales/uk.json b/src/locales/uk.json
index a2f6e45..f04cfec 100644
--- a/src/locales/uk.json
+++ b/src/locales/uk.json
@@ -26,7 +26,8 @@
"logout": "Вийти",
"login": "Увійти",
"register": "Реєстрація",
- "language": "Мова"
+ "language": "Мова",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Конвертувати",
diff --git a/src/locales/vi.json b/src/locales/vi.json
index 023bf35..d04fe12 100644
--- a/src/locales/vi.json
+++ b/src/locales/vi.json
@@ -26,7 +26,8 @@
"logout": "Đăng xuất",
"login": "Đăng nhập",
"register": "Đăng ký",
- "language": "Ngôn ngữ"
+ "language": "Ngôn ngữ",
+ "toggleTheme": "Đổi giao diện"
},
"convert": {
"title": "Chuyển đổi",
diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json
index cd2d7f6..c1b6181 100644
--- a/src/locales/zh-CN.json
+++ b/src/locales/zh-CN.json
@@ -26,7 +26,8 @@
"logout": "登出",
"login": "登录",
"register": "注册",
- "language": "语言"
+ "language": "语言",
+ "toggleTheme": "切换主题"
},
"convert": {
"title": "转换",
diff --git a/src/locales/zh-TW.json b/src/locales/zh-TW.json
index 6dceb85..6e0127a 100644
--- a/src/locales/zh-TW.json
+++ b/src/locales/zh-TW.json
@@ -26,7 +26,8 @@
"logout": "登出",
"login": "登入",
"register": "註冊",
- "language": "語言"
+ "language": "語言",
+ "toggleTheme": "切換主題"
},
"convert": {
"title": "轉換",
diff --git a/src/locales/zu.json b/src/locales/zu.json
index a96181f..a979841 100644
--- a/src/locales/zu.json
+++ b/src/locales/zu.json
@@ -26,7 +26,8 @@
"logout": "Phuma",
"login": "Ngena",
"register": "Bhalisa",
- "language": "Ulimi"
+ "language": "Ulimi",
+ "toggleTheme": "Toggle theme"
},
"convert": {
"title": "Guqula",
diff --git a/src/pages/user.tsx b/src/pages/user.tsx
index 835ed0f..5567c78 100644
--- a/src/pages/user.tsx
+++ b/src/pages/user.tsx
@@ -4,6 +4,7 @@ import { Elysia, t } from "elysia";
import { BaseHtml } from "../components/base";
import { Header } from "../components/header";
import { LanguageSelector } from "../components/languageSelector";
+import { ThemeToggle } from "../components/themeToggle";
import db from "../db/db";
import { User } from "../db/types";
import {
@@ -102,7 +103,10 @@ export const user = new Elysia()
`}
>
ConvertX-CN
-
+
+
+
+