diff --git a/web/Dockerfile b/web/Dockerfile index 2fc3b063b..3b9002d24 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -49,8 +49,7 @@ ENV NEXT_TELEMETRY_DISABLED=1 RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs -# TEMP: bypass build error due to empty public directory -# COPY --from=builder /app/public ./public +COPY --from=builder /app/public ./public # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing diff --git a/web/public/logo-filterlists.png b/web/public/logo-filterlists.png new file mode 100644 index 000000000..9df6e74d8 Binary files /dev/null and b/web/public/logo-filterlists.png differ diff --git a/web/src/app/layout.tsx b/web/src/app/layout.tsx index c880c2c2c..b0eb9be14 100644 --- a/web/src/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -1,9 +1,9 @@ -import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; import { ThemeProvider } from "@/components/theme-provider"; import { Header } from "@/components/header"; import { Footer } from "@/components/footer"; +export { metadata } from "./metadata"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -15,12 +15,6 @@ const geistMono = Geist_Mono({ subsets: ["latin"], }); -export const metadata: Metadata = { - title: "FilterLists", - description: - "FilterLists is the independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. By Collin M. Barrett.", -}; - export default function RootLayout({ children, }: Readonly<{ diff --git a/web/src/app/metadata.ts b/web/src/app/metadata.ts new file mode 100644 index 000000000..53af0fae5 --- /dev/null +++ b/web/src/app/metadata.ts @@ -0,0 +1,75 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "FilterLists", + description: + "FilterLists is the independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. By Collin M. Barrett.", + keywords: [ + "adblock", + "filter lists", + "blocklists", + "host lists", + "privacy", + "malware", + "tracker", + "adblock plus", + "ublock origin", + "adguard", + "internet explorer tpl", + "dns", + "content blocking", + "open source", + "collin barrett", + ], + authors: [{ name: "Collin M. Barrett", url: "https://collinmbarrett.com" }], + creator: "Collin M. Barrett", + publisher: "Collin M. Barrett", + metadataBase: new URL("https://filterlists.com"), + alternates: { + canonical: "https://filterlists.com/", + }, + openGraph: { + title: "FilterLists", + description: + "The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.", + url: "https://filterlists.com/", + siteName: "FilterLists", + images: [ + { + url: "/logo-filterlists.png", + width: 1200, + height: 280, + alt: "FilterLists logo", + }, + ], + locale: "en_US", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "FilterLists", + description: + "The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.", + images: [ + { + url: "/logo-filterlists.png", + alt: "FilterLists logo", + }, + ], + }, + icons: { + icon: "/icon.svg", + }, + applicationName: "FilterLists", + generator: "Next.js", + referrer: "no-referrer", + appleWebApp: { + capable: true, + title: "FilterLists", + statusBarStyle: "default", + }, + abstract: + "FilterLists is a directory of filter and host lists for adblockers and privacy tools.", + category: "Internet", + classification: "Web Directory", +}; diff --git a/web/src/components/header.tsx b/web/src/components/header.tsx deleted file mode 100644 index f3ba092f4..000000000 --- a/web/src/components/header.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { ThemeToggle } from "./theme-toggle"; - -export function Header() { - return ( -
-
-
- -
-
-
- ); -} diff --git a/web/src/components/header/index.tsx b/web/src/components/header/index.tsx new file mode 100644 index 000000000..9086cac56 --- /dev/null +++ b/web/src/components/header/index.tsx @@ -0,0 +1,32 @@ +import { ImageThemed } from "@/components/image-themed"; +import { ThemeToggle } from "../theme-toggle"; +import LogoLight from "./logo-filterlists-light.png"; +import logoDark from "./logo-filterlists-dark.png"; +import styles from "./logoHeader.module.css"; + +export function Header() { + return ( +
+
+
+
+ +
+
+ +
+
+
+
+ ); +} diff --git a/web/src/components/header/logo-filterlists-dark.png b/web/src/components/header/logo-filterlists-dark.png new file mode 100644 index 000000000..599307dfd Binary files /dev/null and b/web/src/components/header/logo-filterlists-dark.png differ diff --git a/web/src/components/header/logo-filterlists-light.png b/web/src/components/header/logo-filterlists-light.png new file mode 100644 index 000000000..9df6e74d8 Binary files /dev/null and b/web/src/components/header/logo-filterlists-light.png differ diff --git a/web/src/components/header/logoHeader.module.css b/web/src/components/header/logoHeader.module.css new file mode 100644 index 000000000..dc98a0ddd --- /dev/null +++ b/web/src/components/header/logoHeader.module.css @@ -0,0 +1,6 @@ +@media (max-width: 640px) { + .logoHeader { + max-width: 222px; + max-height: 52px; + } +}