diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-11-09 11:50:58 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-09 11:50:58 +0000 |
| commit | 3083be0c9dc9ec0ded58eda937b83fbdf511f386 (patch) | |
| tree | 43fd298af4ae45c5f7802e95af0a94cfd9745bc2 /apps/web/app/admin/users | |
| parent | 1b8129a28191c7093818060e39e968fc16bf24b4 (diff) | |
| download | karakeep-3083be0c9dc9ec0ded58eda937b83fbdf511f386.tar.zst | |
feat: Add page titles (#2109)
* feat: add Next.js metadata titles to dynamic and settings pages
Add page titles using Next.js metadata API for better SEO and user experience:
- List pages: Show list name in format "<name> | Karakeep"
- Tag pages: Show tag name in format "<name> | Karakeep"
- Admin pages: Add titles for overview, users, and background jobs pages
- Settings pages: Add titles for all settings pages (API keys, AI, feeds, import, info, webhooks, subscription, rules, stats, assets, broken links)
For client components (rules, stats, assets, broken-links), created layout.tsx files to export metadata since metadata can only be exported from server components.
* feat: add Next.js metadata titles to dashboard pages
Add page titles using Next.js metadata API to archive, favourites, highlights, and all tags pages:
- Archive page: Show "Archive | Karakeep"
- Favourites page: Show "Favourites | Karakeep"
- Highlights page: Show "Highlights | Karakeep"
- All Tags page: Show "All Tags | Karakeep"
Improves SEO and user experience across all dashboard browsing pages.
* refactor: use i18n translations for dashboard page titles
Convert hardcoded page titles to use translations via generateMetadata:
- Archive page: Uses common.archive translation
- Favourites page: Uses lists.favourites translation
- Highlights page: Uses common.highlights translation
- All Tags page: Uses tags.all_tags translation
Improves localization support across dashboard pages.
* feat: add i18n translations to admin and settings page titles
Convert hardcoded page titles to use translations via generateMetadata:
- Admin Overview: Uses admin.admin_settings translation
- AI Settings: Uses settings.ai.ai_settings translation
- API Keys: Uses settings.api_keys.api_keys translation
- Feed Settings: Uses settings.feeds.rss_subscriptions translation
- Import/Export: Uses settings.import.import_export translation
- Account Info: Uses settings.info.user_info translation
- Subscription: Uses settings.subscription.subscription translation
- Webhooks: Uses settings.webhooks.webhooks translation
Improves localization support across admin and settings pages.
* revert accidental commit
* more translations
* more fixes
---------
Co-authored-by: Claude <noreply@anthropic.com>
Diffstat (limited to 'apps/web/app/admin/users')
| -rw-r--r-- | apps/web/app/admin/users/page.tsx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/apps/web/app/admin/users/page.tsx b/apps/web/app/admin/users/page.tsx index be5cfe81..5af899a4 100644 --- a/apps/web/app/admin/users/page.tsx +++ b/apps/web/app/admin/users/page.tsx @@ -1,4 +1,14 @@ +import type { Metadata } from "next"; import UserList from "@/components/admin/UserList"; +import { useTranslation } from "@/lib/i18n/server"; + +export async function generateMetadata(): Promise<Metadata> { + // oxlint-disable-next-line rules-of-hooks + const { t } = await useTranslation(); + return { + title: `${t("admin.users_list.users_list")} | Karakeep`, + }; +} export default function AdminUsersPage() { return <UserList />; |
