diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index f11a6d3a..9ddf93a6 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -372,27 +372,33 @@ export default function App() { return t("providerHintWebde"); }; + const cleanupDisabled = true; + if (!isAuthenticated) { return (

v0.1

-

{t("appName")}

+

+ {t("appName")} +

{t("tagline")}

- {languages.map((lang) => ( - - ))} +
@@ -440,23 +446,44 @@ export default function App() {

v0.1

-

{t("appName")}

-

{tenant?.name ?? t("tenantFallback")}

+

+ setShowAdmin(false)} + > + {t("appName")} + +

+ {user?.role === "ADMIN" && ( +

{tenant?.name ?? t("tenantFallback")}

+ )}
{user?.email ?? ""}
- {languages.map((lang) => ( + {user?.role === "ADMIN" && ( - ))} - + )} + +
@@ -467,7 +494,13 @@ export default function App() {

{t("welcome")}

{t("description")}

-
@@ -498,19 +531,6 @@ export default function App() {
- {user?.role === "ADMIN" && ( -
- - {t("admin")} -
- )} - {user?.role === "ADMIN" && showAdmin ? (
@@ -604,7 +624,13 @@ export default function App() {
-
diff --git a/frontend/src/locales/de/translation.json b/frontend/src/locales/de/translation.json index d27678e3..1f0cd9a3 100644 --- a/frontend/src/locales/de/translation.json +++ b/frontend/src/locales/de/translation.json @@ -70,6 +70,7 @@ "cleanupDryRun": "Dry run (keine Änderungen)", "cleanupUnsubscribe": "Unsubscribe aktiv", "cleanupRouting": "Routing aktiv", + "cleanupDisabled": "Bereinigung ist noch nicht verfügbar.", "rulesTitle": "Regeln", "rulesName": "Rule Name", "rulesEnabled": "Rule aktiv", diff --git a/frontend/src/locales/en/translation.json b/frontend/src/locales/en/translation.json index f4fa1415..6768e698 100644 --- a/frontend/src/locales/en/translation.json +++ b/frontend/src/locales/en/translation.json @@ -70,6 +70,7 @@ "cleanupDryRun": "Dry run (no changes)", "cleanupUnsubscribe": "Unsubscribe enabled", "cleanupRouting": "Routing enabled", + "cleanupDisabled": "Cleanup is not available yet.", "rulesTitle": "Rules", "rulesName": "Rule name", "rulesEnabled": "Rule enabled", diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 15bfb7e2..a4158987 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -115,6 +115,40 @@ h1 { margin-bottom: 6px; } +.brand-link { + color: inherit; + text-decoration: none; + user-select: none; + display: inline-flex; + align-items: center; + gap: 10px; + letter-spacing: 0.01em; + position: relative; +} + +.brand-link:hover { + text-decoration: none; + color: var(--primary-strong); +} + +.brand-link::after { + content: ""; + position: absolute; + left: 0; + bottom: -6px; + width: 42%; + height: 2px; + background: linear-gradient(90deg, rgba(37, 99, 235, 0.45), rgba(37, 99, 235, 0)); + border-radius: 999px; + opacity: 0.6; + transition: width 0.2s ease, opacity 0.2s ease; +} + +.brand-link:hover::after { + width: 60%; + opacity: 1; +} + .tagline { color: var(--muted); font-size: 16px; @@ -135,23 +169,30 @@ h1 { .lang-buttons { display: flex; gap: 6px; - flex-wrap: wrap; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-end; } -.lang-compact button { - border: 1px solid var(--border); - background: #fff; - padding: 4px 8px; - border-radius: 999px; +.lang-select { + border: 1px solid rgba(37, 99, 235, 0.25); + background: transparent; + padding: 2px 16px 2px 8px; + border-radius: 10px; cursor: pointer; font-size: 12px; font-weight: 600; + height: 22px; + width: 48px; + appearance: none; } -.lang-compact button.active { - background: var(--primary); - color: #fff; - border-color: var(--primary); +.admin-toggle { + border-style: dashed; +} + +.logout-button { + margin-left: auto; } .hero {