@salla.sa/twilight-components
Version:
Salla Web Component
120 lines (119 loc) • 3 kB
TypeScript
export declare enum PageType {
ProductDetail = "product.single",
Cart = "cart"
}
export declare enum OfferType {
Conditional = "conditional",
PercentageOrFixed = "fixed",
DiscountsTable = "discounts_table",
Bank = "bank",
BuyXGetY = "buy_x_get_y"
}
export interface DiscountDetailFixed {
discount_type: "fixed";
min_spend: number;
discount_value: number;
}
export interface DiscountDetailFreeProduct {
discount_type: "free_product";
min_spend: number;
discount_value: number;
}
export interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {
}
export interface DiscountDetailPercentageFixed {
apply_to: "all" | "products" | "categories" | "payment_methods";
targets: Array<string | number>;
ends_at: number;
min_spend: number;
discount_value: number;
}
export interface Discount {
discounted_amount: any;
quantity: number;
percentage: number;
}
export interface DiscountDetailTable {
apply_to: "all" | "products" | "categories" | "payment_methods" | "order";
discount_value: number;
ends_at: string;
min_items: number;
min_spend: number;
show_price_after_discount: boolean;
discounts: Discount[];
}
export interface BankOffer {
logo: string;
discount_value: number;
discount_type: string;
minimum_spend: number;
payments: string[];
}
export interface BuyXGetYDetail {
ends_at: number;
buy: {
source: "product" | "category";
source_value: number[];
quantity: number;
};
get: {
source: "products" | "category";
source_value: number[];
type: "free_product" | "percentage" | "fixed";
value: number;
products?: Product[];
categories?: Category[];
};
}
export interface Offer {
id: number;
title: string;
description: string;
type: OfferType | "conditional" | "fixed" | "discounts_table" | "bank" | "buy_x_get_y";
details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;
}
export interface Product {
id: number;
type: string;
status: string;
is_available: boolean;
sku: string;
name: string;
price: {
amount: number;
currency: string;
};
promotion: {
title: string;
sub_title: string;
};
sale_price: {
amount: number;
currency: string;
};
regular_price: {
amount: number;
currency: string;
};
currency: string;
url: string;
thumbnail: string;
has_special_price: boolean;
favorite?: any;
}
export interface Category {
id?: string;
id_?: number;
name?: string;
url?: string;
icon?: string;
sub_categories?: Category[];
items?: any[] | null;
}
export interface Currency {
code: string | 'SAR';
name: string;
symbol: string;
amount?: number;
country_code?: string;
}