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 (
@@ -440,23 +446,44 @@ export default function App() {
v0.1
-
{t("appName")}
-
{tenant?.name ?? t("tenantFallback")}
+
+ {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" && (
-
- setShowAdmin((prev) => !prev)}
- >
- {showAdmin ? t("userWorkspace") : t("adminConsole")}
-
- {t("admin")}
-
- )}
-
{user?.role === "ADMIN" && showAdmin ? (
@@ -604,7 +624,13 @@ export default function App() {
-
+
{t("start")}
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 {