92 lines
1.9 KiB
TypeScript
92 lines
1.9 KiB
TypeScript
export type TwitterCardType =
|
|
| "summary"
|
|
| "summary_large_image"
|
|
| "app"
|
|
| "player";
|
|
|
|
// Link interface matching astro-seo's Link (which extends HTMLLinkElement)
|
|
// href must be string (not URL) to match astro-seo's expectations
|
|
export interface Link {
|
|
rel?: string;
|
|
href?: string; // Only string, not URL
|
|
hreflang?: string;
|
|
media?: string;
|
|
type?: string;
|
|
sizes?: string;
|
|
prefetch?: boolean;
|
|
crossorigin?: string;
|
|
as?: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
export interface Meta {
|
|
property?: string;
|
|
name?: string;
|
|
content?: string;
|
|
httpEquiv?: string;
|
|
charset?: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
export interface SeoProperties {
|
|
title?: string;
|
|
titleTemplate?: string;
|
|
titleDefault?: string;
|
|
charset?: string;
|
|
description?: string;
|
|
canonical?: URL | string;
|
|
nofollow?: boolean;
|
|
noindex?: boolean;
|
|
languageAlternates?: {
|
|
href: URL | string;
|
|
hrefLang: string;
|
|
}[];
|
|
openGraph?: {
|
|
basic: {
|
|
title: string;
|
|
type: string;
|
|
image: string;
|
|
url?: URL | string;
|
|
};
|
|
optional?: {
|
|
audio?: string;
|
|
description?: string;
|
|
determiner?: string;
|
|
locale?: string;
|
|
localeAlternate?: string[];
|
|
siteName?: string;
|
|
video?: string;
|
|
};
|
|
image?: {
|
|
url?: URL | string;
|
|
secureUrl?: URL | string;
|
|
type?: string;
|
|
width?: number;
|
|
height?: number;
|
|
alt?: string;
|
|
};
|
|
article?: {
|
|
publishedTime?: string;
|
|
modifiedTime?: string;
|
|
expirationTime?: string;
|
|
authors?: string[];
|
|
section?: string;
|
|
tags?: string[];
|
|
};
|
|
};
|
|
twitter?: {
|
|
card?: TwitterCardType;
|
|
site?: string;
|
|
creator?: string;
|
|
title?: string;
|
|
description?: string;
|
|
image?: URL | string;
|
|
imageAlt?: string;
|
|
};
|
|
extend?: {
|
|
link?: Partial<Link>[];
|
|
meta?: Partial<Meta>[];
|
|
};
|
|
surpressWarnings?: boolean;
|
|
}
|