`
+ for (const feature of releaseNote.features) {
+ content += `
${feature}
`
+ }
+ content += `
`
+ }
+
+ if (releaseNote.fixes) {
+ content += `
✓ Fixes
`
+ content += `
`
+ for (const fix of releaseNote.fixes) {
+ content += `
${fix.description}
`
+ }
+ content += `
`
+ }
+
+ return content;
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 3de6cf4..fd2a59b 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,7 +1,8 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
-import { ThemeProvider } from "@/components/theme-provider"
+import { ThemeProvider } from "@/components/theme-provider";
+import StyledComponentsRegistry from "@/lib/styled-components-registry";
const inter = Inter({ subsets: ["latin"] });
@@ -18,6 +19,10 @@ export default function RootLayout({
}>) {
return (
+
+
+
+
- {children}
+ {children}
diff --git a/src/app/privacy-policy/page.tsx b/src/app/privacy-policy/page.tsx
index 7a9af0a..5408dea 100644
--- a/src/app/privacy-policy/page.tsx
+++ b/src/app/privacy-policy/page.tsx
@@ -52,7 +52,7 @@ Zen Browser offers a "Sync" feature, this is implemented using Mozilla Firefox's
# 4. Data Security
Although Zen Browser does not collect your data, we are committed to protecting the information that is stored locally on your device and, if you use the Sync feature, the encrypted data stored on Mozilla's servers. We recommend that you use secure passwords, enable device encryption, and regularly update your software to ensure your data remains safe.
-* Note that most of the security measures are taken care by mozilla firefox.
+* Note that most of the security measures are taken care by Mozilla Firefox.
# 5. Your Control
## 5.1. Data Deletion
diff --git a/src/app/themes/[theme]/page.tsx b/src/app/themes/[theme]/page.tsx
index bb2d5c2..ab32280 100644
--- a/src/app/themes/[theme]/page.tsx
+++ b/src/app/themes/[theme]/page.tsx
@@ -1,22 +1,45 @@
-"use client";
+
import Footer from "@/components/footer";
import { Navigation } from "@/components/navigation";
import ThemePage from "@/components/theme-page";
import { getThemeFromId } from "@/lib/themes";
-import { useParams } from "next/navigation";
+import { Metadata, ResolvingMetadata } from "next";
+
+export async function generateMetadata(
+ { params, searchParams }: any,
+ parent: ResolvingMetadata
+): Promise {
+ const theme = params.theme
+ const themeData = await getThemeFromId(theme);
+ if (!themeData) {
+ return {
+ title: "Theme not found",
+ description: "Theme not found",
+ };
+ }
+ return {
+ title: themeData.name,
+ description: themeData.description,
+ keywords: [themeData.name, themeData.description],
+ openGraph: {
+ title: themeData.name,
+ description: themeData.description,
+ images: [
+ {
+ url: themeData.image,
+ width: 500,
+ height: 500,
+ alt: themeData.name,
+ },
+ ],
+ },
+ };
+}
export default async function ThemeInfoPage() {
- const params = useParams<{ theme: string }>();
- const { theme: themeID } = params;
-
- const theme = await getThemeFromId(themeID);
- if (!theme) {
- return
Theme not found
;
- }
-
return (
-
+ {/* At the bottom of the page */}
diff --git a/src/components/branding-assets.tsx b/src/components/branding-assets.tsx
index fb14914..5100b07 100644
--- a/src/components/branding-assets.tsx
+++ b/src/components/branding-assets.tsx
@@ -1,3 +1,4 @@
+
import { LOGO_COLORS } from "@/lib/logos";
export function BrandingAssets() {
@@ -19,6 +20,7 @@ export function BrandingAssets() {
@@ -102,7 +102,7 @@ export default function Features() {
Secure by default
- We are always using the latest security features from firefox to
+ We are always using the latest security features from Firefox to
keep you safe. Learn more
@@ -118,8 +118,6 @@ export default function Features() {
-
-
@@ -149,8 +147,6 @@ export default function Features() {