alinea
Version:
Headless git-based CMS
35 lines (34 loc) • 1.12 kB
TypeScript
import type { FieldOptions, WithoutLabel } from 'alinea/core';
import { RecordField } from 'alinea/core/field/RecordField';
import { type Type } from 'alinea/core/Type';
import { type ImageField, type ImageLink } from 'alinea/field/link';
import { type ObjectField } from 'alinea/field/object';
import { type TextField } from 'alinea/field/text';
export interface MetadataOptions extends FieldOptions<Metadata> {
inferTitleFrom?: string;
inferDescriptionFrom?: string;
inferImageFrom?: string;
}
export interface MetadataFields {
title: TextField;
description: TextField;
openGraph: ObjectField<{
image: ImageField;
title: TextField;
description: TextField;
}>;
}
export interface Metadata {
title: string;
description: string;
openGraph: {
image: ImageLink;
title: string;
description: string;
};
}
export declare class MetadataField extends RecordField<Metadata, MetadataOptions & {
fields: Type<MetadataFields>;
}> {
}
export declare function metadata(label?: string, options?: WithoutLabel<MetadataOptions>): MetadataField;