phase-2: add shared platform interfaces and type contracts

This commit is contained in:
sdarbinyan
2026-07-03 01:29:04 +04:00
parent b957112fc7
commit e0b73923f9
25 changed files with 334 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
export interface ButtonConfig {
id?: string;
label: string;
variant: 'primary' | 'secondary' | 'tertiary' | 'ghost' | 'danger';
size?: 'sm' | 'md' | 'lg';
icon?: string;
disabled?: boolean;
loading?: boolean;
action?: {
type: 'navigate' | 'submit' | 'emit' | 'custom';
target?: string;
};
}

View File

@@ -0,0 +1,11 @@
import { ButtonConfig } from './button.model';
export interface CategoryCardConfig {
id: string;
title: string;
description?: string;
imageUrl?: string;
icon?: string;
itemsCount?: number;
action?: ButtonConfig;
}

View File

@@ -0,0 +1,3 @@
export * from './button.model';
export * from './category-card.model';
export * from './product-card.model';

View File

@@ -0,0 +1,23 @@
import { ButtonConfig } from './button.model';
export interface ProductCardPrice {
amount: number;
currency: string;
originalAmount?: number;
}
export interface ProductCardConfig {
id: string;
sku: string;
title: string;
subtitle?: string;
imageUrl: string;
badges?: string[];
tags?: string[];
rating?: number;
reviewsCount?: number;
price: ProductCardPrice;
stockStatus?: 'in_stock' | 'low_stock' | 'out_of_stock';
primaryAction?: ButtonConfig;
secondaryAction?: ButtonConfig;
}