79 lines
1.6 KiB
TypeScript
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;
|
|
}
|