From e667843b593d0b5d1aa32aa55a87abb734e2dabd Mon Sep 17 00:00:00 2001 From: Lucas Rayan Date: Thu, 22 Oct 2026 22:33:15 -0300 Subject: [PATCH] feat(webmail): the new interface - logo, dark and light themes, command menu A mark (a lambda on an ultramarine tile with the flap of an envelope), the favicon, home-screen icons and an install manifest. Every colour is a variable defined once per theme, and the Tailwind scales the screens already use read them, so dark (the default) and light are a change of values and not of classes. Geist is served by the app itself. Ctrl+K opens a command menu for folders, actions, accounts and appearance, and typing something that matches no command searches the mail; c writes a message and / goes to the search field. Co-Authored-By: Claude Sonnet 5.5 --- services/webmail/messages/en.json | 22 ++ services/webmail/messages/es.json | 22 ++ services/webmail/messages/pt-BR.json | 22 ++ services/webmail/package-lock.json | 10 + services/webmail/package.json | 1 + services/webmail/public/icons/icon-192.png | Bin 0 -> 8417 bytes services/webmail/public/icons/icon-512.png | Bin 0 -> 26817 bytes .../webmail/public/icons/maskable-512.png | Bin 0 -> 19364 bytes .../webmail/src/app/(admin)/admin/layout.tsx | 27 +- .../src/app/(admin)/admin/mailboxes/page.tsx | 8 +- .../src/app/(admin)/admin/queue/page.tsx | 4 +- .../src/app/(admin)/admin/tests/page.tsx | 4 +- .../src/app/(auth)/admin/login/page.tsx | 9 +- .../src/app/(auth)/admin/step-up/page.tsx | 2 +- .../src/app/(auth)/user/login/page.tsx | 9 +- .../webmail/src/app/(user)/user/layout.tsx | 44 ++- .../app/(user)/user/mail/[folder]/page.tsx | 15 +- .../src/app/(user)/user/settings/page.tsx | 18 +- services/webmail/src/app/apple-icon.png | Bin 0 -> 6210 bytes services/webmail/src/app/favicon.ico | Bin 0 -> 4177 bytes services/webmail/src/app/globals.css | 337 ++++++++++++------ services/webmail/src/app/icon.svg | 14 + services/webmail/src/app/layout.tsx | 31 +- services/webmail/src/app/manifest.ts | 23 ++ .../src/components/AccountSwitcher.tsx | 15 +- .../webmail/src/components/CommandPalette.tsx | 310 ++++++++++++++++ services/webmail/src/components/Composer.tsx | 16 +- services/webmail/src/components/Logo.tsx | 36 ++ .../webmail/src/components/MessageFrame.tsx | 2 +- .../webmail/src/components/MessageReader.tsx | 28 +- .../webmail/src/components/RecipientInput.tsx | 4 +- .../webmail/src/components/ThemeToggle.tsx | 37 ++ .../webmail/src/components/ThreadReader.tsx | 22 +- .../webmail/src/components/TotpEnrolment.tsx | 6 +- services/webmail/src/components/ui/Button.tsx | 6 +- services/webmail/src/lib/theme.ts | 94 +++++ services/webmail/src/theme-integrity.test.ts | 146 ++++++++ services/webmail/tailwind.config.js | 133 +++---- 38 files changed, 1161 insertions(+), 316 deletions(-) create mode 100644 services/webmail/public/icons/icon-192.png create mode 100644 services/webmail/public/icons/icon-512.png create mode 100644 services/webmail/public/icons/maskable-512.png create mode 100644 services/webmail/src/app/apple-icon.png create mode 100644 services/webmail/src/app/favicon.ico create mode 100644 services/webmail/src/app/icon.svg create mode 100644 services/webmail/src/app/manifest.ts create mode 100644 services/webmail/src/components/CommandPalette.tsx create mode 100644 services/webmail/src/components/Logo.tsx create mode 100644 services/webmail/src/components/ThemeToggle.tsx create mode 100644 services/webmail/src/lib/theme.ts create mode 100644 services/webmail/src/theme-integrity.test.ts diff --git a/services/webmail/messages/en.json b/services/webmail/messages/en.json index ebf1590..aabb645 100644 --- a/services/webmail/messages/en.json +++ b/services/webmail/messages/en.json @@ -564,5 +564,27 @@ "draftDiscarded": "Reply discarded", "sentReply": "Reply sent", "moreMessages": "Show {count} earlier messages" + }, + "appearance": { + "title": "Appearance", + "dark": "Dark", + "light": "Light", + "system": "System" + }, + "palette": { + "placeholder": "Type a command, a folder or something to search for", + "empty": "Nothing matches. Press Enter to search your mail for this.", + "searchFor": "Search mail for \"{query}\"", + "goTo": "Go to {name}", + "actions": "Actions", + "navigate": "Go to", + "theme": "Appearance", + "accounts": "Accounts", + "switchTo": "Switch to {email}", + "hintMove": "move", + "hintOpen": "open", + "hintClose": "close", + "open": "Command menu", + "signOut": "Sign out" } } diff --git a/services/webmail/messages/es.json b/services/webmail/messages/es.json index 3adcd61..db81fb9 100644 --- a/services/webmail/messages/es.json +++ b/services/webmail/messages/es.json @@ -564,5 +564,27 @@ "draftDiscarded": "Respuesta descartada", "sentReply": "Respuesta enviada", "moreMessages": "Mostrar {count} mensajes anteriores" + }, + "appearance": { + "title": "Apariencia", + "dark": "Oscuro", + "light": "Claro", + "system": "Sistema" + }, + "palette": { + "placeholder": "Escribe un comando, una carpeta o algo que buscar", + "empty": "Sin resultados. Pulsa Enter para buscar esto en tu correo.", + "searchFor": "Buscar \"{query}\" en el correo", + "goTo": "Ir a {name}", + "actions": "Acciones", + "navigate": "Ir a", + "theme": "Apariencia", + "accounts": "Cuentas", + "switchTo": "Cambiar a {email}", + "hintMove": "mover", + "hintOpen": "abrir", + "hintClose": "cerrar", + "open": "Menú de comandos", + "signOut": "Cerrar sesión" } } diff --git a/services/webmail/messages/pt-BR.json b/services/webmail/messages/pt-BR.json index 9b35718..6c9ecd6 100644 --- a/services/webmail/messages/pt-BR.json +++ b/services/webmail/messages/pt-BR.json @@ -564,5 +564,27 @@ "draftDiscarded": "Resposta descartada", "sentReply": "Resposta enviada", "moreMessages": "Mostrar {count} mensagens anteriores" + }, + "appearance": { + "title": "Aparência", + "dark": "Escuro", + "light": "Claro", + "system": "Sistema" + }, + "palette": { + "placeholder": "Digite um comando, uma pasta ou algo para buscar", + "empty": "Nada encontrado. Pressione Enter para buscar este texto nos seus e-mails.", + "searchFor": "Buscar \"{query}\" nos e-mails", + "goTo": "Ir para {name}", + "actions": "Ações", + "navigate": "Ir para", + "theme": "Aparência", + "accounts": "Contas", + "switchTo": "Trocar para {email}", + "hintMove": "mover", + "hintOpen": "abrir", + "hintClose": "fechar", + "open": "Menu de comandos", + "signOut": "Sair" } } diff --git a/services/webmail/package-lock.json b/services/webmail/package-lock.json index 188b692..53f0856 100644 --- a/services/webmail/package-lock.json +++ b/services/webmail/package-lock.json @@ -8,6 +8,7 @@ "name": "@lambdamail/webmail", "version": "0.1.0", "dependencies": { + "@fontsource-variable/geist": "^5.3.0", "clsx": "^2.1.1", "dompurify": "^3.4.14", "framer-motion": "^11.18.2", @@ -718,6 +719,15 @@ } } }, + "node_modules/@fontsource-variable/geist": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource-variable/geist/-/geist-5.3.0.tgz", + "integrity": "sha512-j0m+vLQuG5XAYoHtGCVu0spvlGreR3EzpECUVzkFmI1mTVnAO38l/NEPDCFgZ177JxzYJCLSmTQibIiYPilGrA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", diff --git a/services/webmail/package.json b/services/webmail/package.json index 6768627..ab4be0a 100644 --- a/services/webmail/package.json +++ b/services/webmail/package.json @@ -10,6 +10,7 @@ "lint": "tsc --noEmit" }, "dependencies": { + "@fontsource-variable/geist": "^5.3.0", "clsx": "^2.1.1", "dompurify": "^3.4.14", "framer-motion": "^11.18.2", diff --git a/services/webmail/public/icons/icon-192.png b/services/webmail/public/icons/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb73b0adc2e23f336c700c9451561cfe233a9d4 GIT binary patch literal 8417 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 Dl6u8& literal 0 HcmV?d00001 diff --git a/services/webmail/public/icons/icon-512.png b/services/webmail/public/icons/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..dbfbea36cf92b4a08bd2354caf3c7306bc4f2650 GIT binary patch literal 26817 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

Y~s_SXtsP9Jf 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 ah1_k;i?jQ!`vLq7L`zNgLD~H$A^#5yH!zw2 literal 0 HcmV?d00001 diff --git a/services/webmail/public/icons/maskable-512.png b/services/webmail/public/icons/maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..afe85536736b246e3c819e35432d88907cab1da9 GIT binary patch literal 19364 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%0A0NS#H`YXI_k)x9mMe^JtLSY>FXS z?}DYl_V9x^cnD&CugXlIST8;;6Xz}>eH(Vx&h{&9H`yCt=8l=98q??Vo{+QB)^2Fu zdL6CUVJbh^=7qWzu7R`5oZFxLfO|?Z%H_UbAm&6-*R=*O>%i^OK(z2pyU-(-3EqZW ztYpA0f3darHN1TZyL-WH#>2--_VIBZG$59;8LMoJ{m|R z&*c6Q6H7Y|_T1kHW&$UN8jy-uy_(@529-QhGp4QmqsK)UdEL<9s5cGa_uxu_%|##~ z+5{6X&9-gOAaJmYrrcNu(vmIG=o4g{M*TSd222;8Ov6vcs5gJ(kx}QEbm&04y`c4Z zGb-jn4g219pi!`KlhSA6X-pnJHib@2Mlrf{k$mZt^dNXW|t1Z#Qr9NL6mp$v9HH2Y0^>X`0v&clg0r4HSlV5Fgg?N?TJ-jDbQPIbY zvexXw*=w~z<1@)+Z0zD?6z%EhzP+N|j@5}o7tuiEFh4ge>tWTDbgrZn{q3}bBrd!8 zIc_Dyr|4ph8u=3^pgwIkbq5?TAGQkaGakRUOtNa@1SGCF3+|v3;;YhJCHZQfj~9_~ zvPe_QmHObzlZTMj9M`*u@j)2mhcO%iw?O~TwoCuBIn`!5Sb?{;Tu+(7&$N)0<)aw^ X1zD@FD@%nbpal9NFqGDMBChB^b(4T- literal 0 HcmV?d00001 diff --git a/services/webmail/src/app/(admin)/admin/layout.tsx b/services/webmail/src/app/(admin)/admin/layout.tsx index fdb40bf..55fd12e 100644 --- a/services/webmail/src/app/(admin)/admin/layout.tsx +++ b/services/webmail/src/app/(admin)/admin/layout.tsx @@ -22,6 +22,8 @@ import { useTranslations } from "../../../i18n/provider"; import { LanguageSwitcher } from "../../../i18n/LanguageSwitcher"; import { useAccount } from "../../../lib/useAccount"; import { initialsFor } from "../../../lib/initials"; +import { Logo } from "../../../components/Logo"; +import { ThemeToggle } from "../../../components/ThemeToggle"; export default function AdminLayout({ children }: { children: React.ReactNode }) { const t = useTranslations(); @@ -52,12 +54,10 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) const SidebarContent = (

-
- {"\u03bb"} -
+
LambdaMail
-
+
{t("common.adminPortal")}
@@ -91,7 +91,7 @@ export default function AdminLayout({ children }: { children: React.ReactNode })
{t("admin.backToWebmail")} @@ -103,7 +103,7 @@ export default function AdminLayout({ children }: { children: React.ReactNode })
- + {initialsFor(account?.email)} @@ -122,12 +122,13 @@ export default function AdminLayout({ children }: { children: React.ReactNode })
+ @@ -139,11 +140,9 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) return (
{/* Mobile Top Header */} -
+
-
- {"\u03bb"} -
+ {t("common.appName")} {t("common.adminPortal")} @@ -152,14 +151,14 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) onClick={() => setMobileOpen(!mobileOpen)} aria-label={t("ui.toggleMenu")} aria-expanded={mobileOpen} - className="flex h-9 w-9 flex-none items-center justify-center rounded-[10px] text-slate-300 transition-colors hover:bg-white/[0.07] hover:text-slate-100" + className="flex h-9 w-9 flex-none items-center justify-center rounded-[10px] text-slate-300 transition-colors hover:bg-ink/[0.07] hover:text-slate-100" > {mobileOpen ? : }
{/* Desktop rail */} -