37 lines
1020 B
TypeScript
37 lines
1020 B
TypeScript
/**
|
|
* Per-language translation content for a category or subcategory.
|
|
* Stored under `translations['ru']`, `translations['en']`, etc.
|
|
*/
|
|
export interface CategoryTranslation {
|
|
name?: string;
|
|
}
|
|
|
|
export interface Category {
|
|
id: string;
|
|
name: string;
|
|
visible: boolean;
|
|
priority: number;
|
|
img?: string;
|
|
projectId: string;
|
|
subcategories?: Subcategory[];
|
|
/** Optional translations keyed by language code: { ru: { name: '...' } } */
|
|
translations?: { [lang: string]: CategoryTranslation };
|
|
}
|
|
|
|
export interface Subcategory {
|
|
id: string;
|
|
name: string;
|
|
visible: boolean;
|
|
priority: number;
|
|
img?: string;
|
|
/** Root-level category this subcategory belongs to */
|
|
categoryId: string;
|
|
/** Direct parent ID — could be a category ID or a parent subcategory ID */
|
|
parentId?: string;
|
|
itemCount?: number;
|
|
subcategories?: Subcategory[];
|
|
hasItems?: boolean;
|
|
/** Optional translations keyed by language code: { ru: { name: '...' } } */
|
|
translations?: { [lang: string]: CategoryTranslation };
|
|
}
|