interface AssetProp {
    filename: string;
    thumbnail?: string;
    category: string;
    description?: string;
    tags: string;
    url?: string;
    uploadDate?: number;
    isArchieve?: boolean;
    animated?: boolean;
    price?: number;
    CreatedBy?: string;
    AssetID?: string;
    type?: string;
    subType?: string;
}

interface DecalProp {
    id: string;
    decalName: string;
    decalImage: string;
    category: string;
    type?: string;
}

interface CategoryListProp {
    categoryImage: string;
    category: string;
}

interface ListAsset {
    id: string;
    name: string;
}

interface AssetItemProps {
    asset: ListAsset;
    isActive: boolean;
    remove?: boolean;
    onClick: (asset: ListAsset) => void;
    onRename: (newName: string) => void;
}

interface ZoneItem {
    id: string;
    name: string;
    assets?: ListAsset[];
}

interface ZoneItemProps {
    item: ZoneItem;
    isActive: boolean;
    expanded: boolean;
    remove?: boolean;
    activeAssetId?: string;
    onSelect: (id: string) => void;
    onRename: (newName: string) => void;
    onToggleExpand: (id: string) => void;
    onAssetClick: (asset: ListAsset) => void;
    onAssetRename: (newName: string) => void;
}

interface ZoneItem {
    id: string;
    name: string;
    assets?: ListAsset[];
}

interface ListProps {
    items?: ZoneItem[];
    remove?: boolean;
}

interface Tutorial {
    _id: string;
    name: string;
    thumbnail?: string;
    updatedAt: string;
}
