feat: enhance product and tenant interfaces to support event dates, update product detail page to display event date selection

This commit is contained in:
2026-08-03 14:24:42 -03:00
parent ec18aaf0c5
commit ffb586c348
7 changed files with 277 additions and 46 deletions

View File

@@ -35,6 +35,7 @@ export type InventoryPolicy = 'tracked' | 'unlimited';
export interface CatalogItemVariant {
id: number;
event_date_id?: number | null;
stock_tecnico: number | null;
minimum_use_date?: string | null;
maximum_use_date?: string | null;
@@ -43,12 +44,23 @@ export interface CatalogItemVariant {
values: Record<string, string>;
}
export interface CatalogItemEventDate {
id: number;
variant_id: number;
date: string;
starts_at: string;
ends_at: string;
label: string;
stock_tecnico: number | null;
}
export interface SelectedCatalogItemVariant extends CatalogItemVariant {
images: string[];
}
export interface CatalogItemDetail {
id: number;
purpose?: 'product' | 'entry';
category_id: number | null;
brand_id: number | null;
slug: string;
@@ -63,6 +75,7 @@ export interface CatalogItemDetail {
maximum_use_date: string | null;
attributes: ProductAttribute[];
variants: CatalogItemVariant[];
event_dates?: CatalogItemEventDate[];
selected_variant?: SelectedCatalogItemVariant;
stock_tecnico?: number | null;
images?: string[];

View File

@@ -28,22 +28,38 @@ export interface HeroConfig {
}
export interface EventDate {
id?: number;
date: string;
start_time: string;
end_time: string;
}
export interface EventConfig {
id?: number;
title?: string | null;
location?: string | null;
dates_text?: string | null;
dates?: EventDate[] | null;
contact?: SocialMedia[];
}
export interface ActiveEventDate {
id: number;
date: string;
time_start: string;
time_end: string;
}
export interface ActiveEvent {
id: number;
name: string;
address: string;
dates: ActiveEventDate[];
}
export interface WebsiteExtras {
carousel?: string[];
heroConfig?: HeroConfig | null;
eventConfig?: EventConfig | null;
[extraName: string]: unknown;
}
@@ -87,6 +103,8 @@ export interface Tenant {
website_type_code?: string | null;
website_type?: WebsiteType | null;
extras?: WebsiteExtras;
active_event_id?: number | null;
active_event?: ActiveEvent | null;
selected_bank_account_id?: number | null;
selected_bank_account?: BankAccount | null;
search_product_layout?: 'row' | 'column_with_image' | 'column_with_cart';