Files
buzz-sheet/lib/templates/types.ts
T

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[];
}>;
}