65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import type { DataSourceField, DataSourceRow } from "@/lib/content/types";
|
|
|
|
export interface TemplateDataSourceBlueprint {
|
|
key: string;
|
|
name: string;
|
|
description?: string;
|
|
fields: DataSourceField[];
|
|
rows?: Array<Omit<DataSourceRow, "id"> & { id?: string }>;
|
|
}
|
|
|
|
export interface TemplateBlockBlueprint {
|
|
type: string;
|
|
schemaVersion?: number;
|
|
config: Record<string, unknown>;
|
|
responsiveLayout?: Record<string, unknown>;
|
|
}
|
|
|
|
export interface TemplatePageBlueprint {
|
|
slug: string;
|
|
title: string;
|
|
publicNote?: string;
|
|
blocks: TemplateBlockBlueprint[];
|
|
}
|
|
|
|
export interface TemplateBlueprint {
|
|
slug: string;
|
|
name: string;
|
|
description: string;
|
|
category: string;
|
|
builtIn: boolean;
|
|
dataSources: TemplateDataSourceBlueprint[];
|
|
pages: TemplatePageBlueprint[];
|
|
}
|
|
|
|
export interface AppliedTemplate {
|
|
templateSlug: string;
|
|
characterId: string;
|
|
pages: Array<{
|
|
id: string;
|
|
characterId: string;
|
|
slug: string;
|
|
title: string;
|
|
publicNote: string | null;
|
|
navOrder: number;
|
|
visible: false;
|
|
version: 1;
|
|
blocks: Array<{
|
|
id: string;
|
|
type: string;
|
|
schemaVersion: number;
|
|
config: Record<string, unknown>;
|
|
responsiveLayout: Record<string, unknown>;
|
|
sortOrder: number;
|
|
}>;
|
|
}>;
|
|
dataSources: Array<{
|
|
id: string;
|
|
name: string;
|
|
description: string | null;
|
|
version: 1;
|
|
fields: DataSourceField[];
|
|
rows: DataSourceRow[];
|
|
}>;
|
|
}
|