68 lines
1.3 KiB
TypeScript
68 lines
1.3 KiB
TypeScript
export interface Product {
|
||
id: string;
|
||
/** Real catalog product id when available (for cart / checkout) */
|
||
product_id?: string;
|
||
/** First sellable variant id when available */
|
||
first_variant_id?: string;
|
||
name: string;
|
||
price: number;
|
||
/** Highest variant price — enables "$min – $max" range display */
|
||
priceMax?: number;
|
||
oldPrice?: number;
|
||
rating: number;
|
||
reviewsCount?: number;
|
||
image: string;
|
||
imageHover?: string;
|
||
discount?: number;
|
||
category: string;
|
||
hasTimer?: boolean;
|
||
timeRemaining?: {
|
||
days: number;
|
||
hours: number;
|
||
minutes: number;
|
||
seconds: number;
|
||
};
|
||
features?: string[];
|
||
description?: string;
|
||
isHot?: boolean;
|
||
isFeatured?: boolean;
|
||
isNewArrival?: boolean;
|
||
isRecentlyLaunched?: boolean;
|
||
isTechGadget?: boolean;
|
||
soldCount?: number;
|
||
totalStock?: number;
|
||
color?: string;
|
||
brand?: string;
|
||
slug?: string;
|
||
}
|
||
|
||
export interface Category {
|
||
id: string;
|
||
name: string;
|
||
slug: string;
|
||
iconName: string;
|
||
productCount: number;
|
||
image: string;
|
||
}
|
||
|
||
export interface BlogArticle {
|
||
id: string;
|
||
title: string;
|
||
excerpt: string;
|
||
date: string;
|
||
author: string;
|
||
image: string;
|
||
readTime: string;
|
||
}
|
||
|
||
export interface PromoCardData {
|
||
id: string;
|
||
badge: string;
|
||
title: string;
|
||
subtitle: string;
|
||
priceText: string;
|
||
image: string;
|
||
bgColor: string;
|
||
textColor: string;
|
||
badgeBg: string;
|
||
}
|