);
}
diff --git a/apps/web/app/(marketing)/docs/page.tsx b/apps/web/app/(marketing)/docs/page.tsx
index aaf4f01ff..a9630cecf 100644
--- a/apps/web/app/(marketing)/docs/page.tsx
+++ b/apps/web/app/(marketing)/docs/page.tsx
@@ -26,14 +26,16 @@ async function DocsPage() {
const cards = docs.filter((item) => !item.parentId);
return (
-
-
+
);
diff --git a/apps/web/app/not-found.tsx b/apps/web/app/not-found.tsx
index 5f29d906d..ab379f2e4 100644
--- a/apps/web/app/not-found.tsx
+++ b/apps/web/app/not-found.tsx
@@ -8,11 +8,16 @@ import { Heading } from '@kit/ui/heading';
import { Trans } from '@kit/ui/trans';
import { SiteHeader } from '~/(marketing)/_components/site-header';
-import appConfig from '~/config/app.config';
+import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import { withI18n } from '~/lib/i18n/with-i18n';
-export const metadata = {
- title: `Page not found - ${appConfig.name}`,
+export const generateMetadata = async () => {
+ const i18n = await createI18nServerInstance();
+ const title = i18n.t('common:notFound');
+
+ return {
+ title,
+ };
};
const NotFoundPage = async () => {
diff --git a/apps/web/public/locales/en/common.json b/apps/web/public/locales/en/common.json
index af9599120..0cf5c16e8 100644
--- a/apps/web/public/locales/en/common.json
+++ b/apps/web/public/locales/en/common.json
@@ -19,6 +19,7 @@
"imageInputLabel": "Click here to upload an image",
"cancel": "Cancel",
"clear": "Clear",
+ "notFound": "Not Found",
"backToHomePage": "Back to Home Page",
"genericServerError": "Sorry, something went wrong.",
"genericServerErrorHeading": "Sorry, something went wrong while processing your request. Please contact us if the issue persists.",
diff --git a/apps/web/public/locales/en/marketing.json b/apps/web/public/locales/en/marketing.json
index 3d69925c0..ec5fe0acc 100644
--- a/apps/web/public/locales/en/marketing.json
+++ b/apps/web/public/locales/en/marketing.json
@@ -6,5 +6,12 @@
"faq": "FAQ",
"faqSubtitle": "Frequently asked questions about the platform",
"pricing": "Pricing",
- "pricingSubtitle": "Pricing plans and payment options"
+ "pricingSubtitle": "Pricing plans and payment options",
+ "contact": "Contact",
+ "about": "About",
+ "product": "Product",
+ "legal": "Legal",
+ "tos": "Terms of Service",
+ "cookiePolicy": "Cookie Policy",
+ "privacyPolicy": "Privacy Policy"
}
diff --git a/packages/ui/src/utils/index.ts b/packages/ui/src/utils/index.ts
index 9ae36a532..6d5d4c266 100644
--- a/packages/ui/src/utils/index.ts
+++ b/packages/ui/src/utils/index.ts
@@ -1 +1,2 @@
export * from './cn';
+export * from './is-route-active';
diff --git a/packages/ui/src/makerkit/is-route-active.ts b/packages/ui/src/utils/is-route-active.ts
similarity index 97%
rename from packages/ui/src/makerkit/is-route-active.ts
rename to packages/ui/src/utils/is-route-active.ts
index 98898e618..06fb745bb 100644
--- a/packages/ui/src/makerkit/is-route-active.ts
+++ b/packages/ui/src/utils/is-route-active.ts
@@ -8,10 +8,10 @@ const ROOT_PATH = '/';
* @param currentRoute - the current route
* @param depth - how far down should segments be matched?
*/
-export default function isRouteActive(
+export function isRouteActive(
targetLink: string,
currentRoute: string,
- depth: number,
+ depth = 1,
) {
// we remove any eventual query param from the route's URL
const currentRoutePath = currentRoute.split('?')[0] ?? '';