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

79 lines
1.6 KiB
TypeScript

export type Visibility = "hidden" | "visible";
export interface CharacterIdentity {
id: string;
slug: string;
nameTh: string;
nameEn: string | null;
description: string | null;
portraitMediaId: string | null;
element: string | null;
role: string | null;
rarity: number | null;
sortOrder: number;
visible: boolean;
}
export interface PageIdentity {
id: string;
characterId: string;
slug: string;
title: string;
navOrder: number;
visible: boolean;
publicNote: string | null;
version: number;
}
export interface DataSourceField {
key: string;
label: string;
type: "text" | "number" | "badge" | "media";
formula?: string | null;
displayPrecision?: number;
}
export interface DataSourceRow {
id: string;
values: Record<string, string | null>;
hidden?: boolean;
}
export interface DataSourceSnapshot {
id: string;
name: string;
version: number;
fields: DataSourceField[];
rows: DataSourceRow[];
}
export interface PageBlockSnapshot {
id: string;
type: string;
schemaVersion: number;
config: unknown;
responsiveLayout?: unknown;
sortOrder: number;
}
export interface PageSnapshot {
character: CharacterIdentity;
page: PageIdentity;
pages: PageIdentity[];
blocks: PageBlockSnapshot[];
dataSources: Record<string, DataSourceSnapshot>;
versionVector: Record<string, number>;
}
export interface PublicCharacterCard {
id: string;
slug: string;
nameTh: string;
nameEn: string | null;
portraitMediaId: string | null;
element: string | null;
role: string | null;
rarity: number | null;
firstPageSlug: string;
}