diff --git a/job-tracker-ui/src/App.tsx b/job-tracker-ui/src/App.tsx
index 855155d..bb8e0cd 100644
--- a/job-tracker-ui/src/App.tsx
+++ b/job-tracker-ui/src/App.tsx
@@ -100,6 +100,16 @@ function titleFor(path: string, t: (k: any) => string): string {
return t("appTitle");
}
+function subtitleFor(path: string, t: (k: any) => string): string | undefined {
+ if (path === "/dashboard") return t("dashboardPageSubtitle");
+ if (path.startsWith("/jobs")) return t("jobsPageSubtitle");
+ if (path.startsWith("/kanban")) return t("kanbanPageSubtitle");
+ if (path.startsWith("/reminders")) return t("remindersPageSubtitle");
+ if (path.startsWith("/correspondence/review")) return t("gmailReviewPageSubtitle");
+ if (path.startsWith("/correspondence")) return t("correspondencePageSubtitle");
+ return undefined;
+}
+
function PageLoader() {
return Loading...;
}
@@ -123,6 +133,9 @@ function Shell({ jobPageSize, setJobPageSize, jobColumns, setJobColumns, themeMo
const path = location.pathname;
const isJobs = path.startsWith("/jobs");
+ const shortcutHint = useMemo(() => (
+ typeof navigator !== "undefined" && /Mac|iPhone|iPod|iPad/.test(navigator.platform) ? "⌘K" : "Ctrl+K"
+ ), []);
useEffect(() => {
api.get("/auth/config").then((r) => setRequireAuth(Boolean(r.data?.requireAuth))).catch(() => setRequireAuth(false));
@@ -206,6 +219,7 @@ function Shell({ jobPageSize, setJobPageSize, jobColumns, setJobColumns, themeMo
if (requireAuth && !me) return ;
const pageTitle = titleFor(path, t);
+ const pageSubtitle = subtitleFor(path, t);
const breadcrumbs = breadcrumbsFor(path, t);
const setAndPersistPageSize = (n: 15 | 20 | 25) => { setJobPageSize(n); window.localStorage.setItem("jobPageSize", String(n)); };
const setAndPersistColumns = (next: JobTableColumns) => { setJobColumns(next); window.localStorage.setItem("jobColumns", JSON.stringify(next)); };
@@ -246,14 +260,19 @@ function Shell({ jobPageSize, setJobPageSize, jobColumns, setJobColumns, themeMo
setQuickOpen(true)}
sx={{ border: "1px solid", borderColor: "divider", borderRadius: 2.5, width: 42, height: 42, flex: "0 0 auto" }}
>
) : (
- } onClick={() => setQuickOpen(true)}>{t("quickSearch")}
+ } onClick={() => setQuickOpen(true)} sx={{ gap: 0.5 }}>
+ {t("quickSearch")}
+
+ {shortcutHint}
+
+
)}
{isJobs ? (