70 lines
1.7 KiB
TypeScript
70 lines
1.7 KiB
TypeScript
import type { GameIconName } from '$lib/game-icons';
|
|
import type { GameDataTargetType } from '$lib/game-data-targets';
|
|
|
|
export type DatabaseBadge = { label: string; tone?: string };
|
|
export type DatabaseMeter = { label: string; value: number };
|
|
export type DatabaseWeaponModSlot = {
|
|
slot: string;
|
|
unlockedAtTierOne: boolean;
|
|
iconUrl?: string;
|
|
};
|
|
export type DatabaseFact = {
|
|
label: string;
|
|
value: string;
|
|
emphasis?: 'primary';
|
|
gameIcon?: GameIconName;
|
|
note?: string;
|
|
meters?: DatabaseMeter[];
|
|
};
|
|
|
|
export type DatabaseItem = {
|
|
id: string;
|
|
targetType?: GameDataTargetType;
|
|
correctionHref?: string;
|
|
discussionHref?: string;
|
|
discussionCount?: number;
|
|
pinnedCommunityNoteHtml?: string;
|
|
name: string;
|
|
kicker: string;
|
|
variant?: 'talent';
|
|
iconUrl?: string;
|
|
renderUrl?: string;
|
|
gameIcon?: GameIconName;
|
|
headerBadge?: string;
|
|
headerBadgeTone?: string;
|
|
headerBadges?: string[];
|
|
headerMetaIcon?: GameIconName;
|
|
topBorderTone?: string;
|
|
badges?: DatabaseBadge[];
|
|
facts: DatabaseFact[];
|
|
factLayout?: 'grid' | 'stack';
|
|
actions?: Array<{ label: string; href: string }>;
|
|
lines?: DatabaseFact[];
|
|
afterLines?: DatabaseFact[];
|
|
iconGroups?: DatabaseIconGroup[];
|
|
weaponModSlots?: DatabaseWeaponModSlot[];
|
|
description?: string;
|
|
secondaryDescription?: string;
|
|
descriptionStyle?: 'prose' | 'data';
|
|
protocolPreview?: {
|
|
primaryStat: string;
|
|
primaryUnit: string;
|
|
primaryBaseValue: number;
|
|
talentDescription?: string;
|
|
talentEffects: Array<{ baseValue: number; unit: string }>;
|
|
};
|
|
};
|
|
|
|
export type DatabaseRelatedItem = {
|
|
id: string;
|
|
name: string;
|
|
iconUrl?: string;
|
|
preview?: DatabaseItem;
|
|
};
|
|
|
|
export type DatabaseIconGroup = {
|
|
label: string;
|
|
items: DatabaseRelatedItem[];
|
|
emptyLabel?: string;
|
|
};
|