website: add transparent PNG favicons, typed meta/links exports, OG image
- Replace favicon.ico with transparent PNG favicons (32px, 16px) generated from the gray extension icon, preserving alpha channel - Move favicon links from hardcoded JSX to typed LinksFunction export in root.tsx, rendered via <Links /> component - Type liveline meta export as MetaFunction - Add properly sized OG image (1200x630) for X/Slack/Discord previews, update meta tags to reference it
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 771 B |
Binary file not shown.
|
After Width: | Height: | Size: 1023 B |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 277 KiB |
@@ -1,4 +1,5 @@
|
||||
import "website/src/styles/globals.css";
|
||||
import type { LinksFunction } from "react-router";
|
||||
import { Route } from "./+types/root";
|
||||
import {
|
||||
isRouteErrorResponse,
|
||||
@@ -9,6 +10,11 @@ import {
|
||||
ScrollRestoration,
|
||||
} from "react-router";
|
||||
|
||||
export const links: LinksFunction = () => [
|
||||
{ rel: "icon", type: "image/png", href: "/favicon-32.png", sizes: "32x32" },
|
||||
{ rel: "icon", type: "image/png", href: "/favicon-16.png", sizes: "16x16" },
|
||||
];
|
||||
|
||||
export function Layout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
* Styles from liveline.css and liveline-prism.css.
|
||||
*/
|
||||
|
||||
import type { MetaFunction } from "react-router";
|
||||
import dedent from "string-dedent";
|
||||
import "website/src/styles/liveline.css";
|
||||
import "website/src/styles/liveline-prism.css";
|
||||
@@ -21,19 +22,19 @@ import {
|
||||
Li,
|
||||
} from "website/src/components/markdown";
|
||||
|
||||
export function meta() {
|
||||
export const meta: MetaFunction = () => {
|
||||
const title = "Playwriter - Control your Chrome with Playwright API";
|
||||
const description =
|
||||
"Chrome extension + CLI for browser automation. Full Playwright API on your existing browser. No new windows, no flags, no context bloat.";
|
||||
const image = "https://playwriter.dev/screenshot@2x.png";
|
||||
const image = "https://playwriter.dev/og-image.png";
|
||||
return [
|
||||
{ title },
|
||||
{ name: "description", content: description },
|
||||
{ property: "og:title", content: title },
|
||||
{ property: "og:description", content: description },
|
||||
{ property: "og:image", content: image },
|
||||
{ property: "og:image:width", content: "1280" },
|
||||
{ property: "og:image:height", content: "800" },
|
||||
{ property: "og:image:width", content: "1200" },
|
||||
{ property: "og:image:height", content: "630" },
|
||||
{ property: "og:type", content: "website" },
|
||||
{ property: "og:url", content: "https://playwriter.dev/liveline" },
|
||||
{ name: "twitter:card", content: "summary_large_image" },
|
||||
@@ -41,7 +42,7 @@ export function meta() {
|
||||
{ name: "twitter:description", content: description },
|
||||
{ name: "twitter:image", content: image },
|
||||
];
|
||||
}
|
||||
};
|
||||
|
||||
const tocItems = [
|
||||
{ label: "Getting started", href: "#getting-started" },
|
||||
|
||||
Reference in New Issue
Block a user