import type { BannerHoverEffect } from '../sections/bannerEffects';

export type ProductDetailSection = {
	title: string;
	type: 'text' | 'specs';
	content?: string;
	rows?: {
		label: string;
		value: string;
	}[];
};

export type ProductReview = {
	id: string;
	author: string;
	rating: number;
	comment: string;
	date: string;
};

export type CategoryTreeNode = {
	id: string;
	name: string;
	count: number;
	image?: string | null;
	children: CategoryTreeNode[];
};

export type Product = {
	id: string;
	slug?: string;
	sku: string;
	name: string;
	brand: string;
	category: string;
	categoryPath?: string[];
	price: number;
	oldPrice?: number;
	stock: number;
	image: string;
	gallery: string[];
	description: string;
	specifications: {
		label: string;
		value: string;
	}[];
	detailsJson?: {
		mainDescription: string;
		sections: ProductDetailSection[];
	};
	reviews?: ProductReview[];
	badges: string[];
	/** Promedio de reseñas reales; 0 si no tiene. Se muestra sólo con reviewCount > 0. */
	rating: number;
	reviewCount?: number;
	installments?: InstallmentPlan[];
	/** Resumen que traen las tarjetas del catálogo (sin el detalle de cada plan). */
	installmentSummary?: {
		maxInstallments: number;
		minInstallmentAmount: number;
		bestDiscountPercent: number;
		plansCount: number;
	};
	/**
	 * Producto padre de variantes: en el catálogo se muestra con precio "desde" y
	 * no se agrega al carrito tal cual — hay que elegir la combinación en la ficha.
	 */
	hasVariants?: boolean;
	/** Atributos que definen las variantes (Color, Talle…). Solo en la ficha. */
	variantAttributes?: ProductVariantAttribute[];
	/** Variantes concretas (productos hijo reales del ERP). Solo en la ficha. */
	variants?: ProductVariant[];
};

export type ProductVariantAttribute = {
	id: string;
	name: string;
	values: {
		id: string;
		value: string;
		colorHex: string | null;
	}[];
};

export type ProductVariant = {
	id: string;
	sku: string;
	name: string;
	price: number;
	oldPrice?: number;
	stock: number;
	image: string;
	/** Un valor de atributo por cada `ProductVariantAttribute`. */
	optionValueIds: string[];
};

export type InstallmentPlan = {
	planId: string;
	label: string;
	installmentsCount: number;
	installmentAmount: number;
	totalAmount: number;
	downPayment?: number;
	/** % de descuento propio del plan sobre el total financiado. */
	discountPercent: number;
	/** Precio de contado ya bonificado, si el plan trae descuento. */
	discountedCashPrice?: number;
	/** Diferencia contra el precio de contado (puede ser <= 0). */
	interestAmount: number;
	interestFree: boolean;
	currency: string;
};

export type FeaturedCategory = {
	name: string;
	image: string;
};

export type EcommerceNews = {
	id: number;
	type: 'producto_nuevo' | 'anuncio' | 'campana' | 'combo' | 'b2b';
	title: string;
	description: string;
	tag: string;
	image: string;
	ctaLabel: string;
	targetCategory?: string;
	priority: number;
};

export type ThemeConfig = {
	primary: string;
	secondary: string;
	accent: string;
	background: string;
	surface: string;
	text: string;
	muted: string;
	success: string;
	danger: string;
	priceColor?: string;
};

export type HeroSlide = {
	id: string;
	badge?: string;
	title: string;
	description?: string;
	ctaLabel?: string;
	/** Categoría destino del botón (vacío = ver todo el catálogo). */
	category?: string;
	image?: string;
	enabled?: boolean;
};

export type PromotionConfig = {
	topBar: string;
	heroTitle: string;
	heroSubtitle: string;
	heroImage: string;
	heroBadge: string;
	heroDealTitle: string;
	heroDealSubtitle: string;
	/** Diapositivas personalizadas del carrusel. Si hay al menos una habilitada,
	 * reemplazan al carrusel automático (promo + categorías destacadas). */
	heroSlides?: HeroSlide[];
	catalogInlineEveryNProducts: number;
	checkoutUpsell: boolean;
	popupEnabled: boolean;
	popupBadge: string;
	popupTitle: string;
	popupDescription: string;
	popupImage: string;
	popupCtaLabel: string;
	popupTargetCategory: string;
	popupFrequency: 'oncePerSession' | 'oncePerDay' | 'always';
	popupStartDate: string;
	popupEndDate: string;
};

export type FooterConfig = {
	description: string;
	labels: {
		leadEyebrow: string;
		paymentTrustTitle: string;
		deliveryTrustTitle: string;
		supportTrustTitle: string;
		whatsappAction: string;
		contactAction: string;
		contactColumnTitle: string;
		socialTitle: string;
		paymentsTitle: string;
		deliveryAndPickup: string;
		deliveryOnly: string;
		pickupOnly: string;
		copyrightTemplate: string;
	};
	contact: {
		phone: string;
		whatsapp: string;
		email: string;
		address: string;
		hours: string;
		description?: string;
		map?: {
			title: string;
			subtitle: string;
			embedUrl: string;
			directionsUrl: string;
		};
	};
	linkGroups: {
		id?: string;
		title: string;
		enabled?: boolean;
		links: {
			id?: string;
			label: string;
			href?: string;
			pageKey?: string;
			enabled?: boolean;
		}[];
	}[];
	paymentMethods: string[];
	socialLinks: {
		label: string;
		href: string;
		enabled?: boolean;
	}[];
};

export type StoreTextsConfig = {
	/** Panel B2B del catálogo (sidebar). */
	b2bPanelTitle: string;
	b2bPanelSubtitle: string;
	/** Encabezado del bloque de Novedades (sidebar). */
	novedadesTitle: string;
	novedadesSubtitle: string;
	/** Sufijo destacado del título del banner de categoría de una sola palabra ("Bebidas store"). */
	categoryBannerTitleSuffix: string;
	/** Descripción del banner de categoría. Usa {categoria} como placeholder. */
	categoryBannerDescription: string;
	/** Etiqueta de la lista de productos más vistos por categoría. */
	mostViewedLabel: string;
	/** Texto de atribución en el pie de la tienda. */
	poweredByLabel: string;
};

export type StoreContentPage = {
	key: string;
	title: string;
	subtitle?: string;
	blocks: {
		title?: string;
		content: string;
	}[];
};

export type SeasonalTemplate = {
	id: string;
	name: string;
	enabled: boolean;
	startDate: string;
	endDate: string;
	priority: number;
	themeOverrides?: Partial<ThemeConfig>;
	promotions?: Partial<PromotionConfig>;
	decoration: {
		type: 'none' | 'snow' | 'summer' | 'spring' | 'autumn';
		intensity: 'low' | 'medium' | 'high';
	};
};

export type DeliveryMethod = {
	id: string;
	type: 'delivery' | 'pickup';
	name: string;
	cost: number;
	enabled: boolean;
};

export type PaymentMethod = {
	id: string;
	type: 'online' | 'manual';
	name: string;
	enabled: boolean;
	discountPercent: number;
};

export type StoreConfig = {
	version: number;
	/** `closed`: pausada o sin publicar; sólo trae la marca (ver StoreClosedPage). */
	status: 'default' | 'draft' | 'published' | 'closed';
	closedReason?: 'pausada' | 'sin_publicar' | 'no_encontrada';
	source: 'fallback' | 'tenant';
	identity: {
		name: string;
		slogan: string;
		subdomain: string;
		logoText: string;
		logoUrl?: string | null;
		faviconUrl?: string | null;
	};
	theme: ThemeConfig;
	typography: {
		scale: 'compact' | 'normal' | 'wide';
		fontFamily?: string;
		fontWeight?: 'suave' | 'medio' | 'intenso';
		priceFontSize?: number;
	};
	catalog: {
		cardSize: 'compact' | 'normal' | 'large';
		displayMode: 'categoryCarousels' | 'allWithPagination';
		imageRatio: string;
		columnsDesktop: number;
		columnsTablet: number;
		columnsMobile: number;
		maxCategoriesOnHome: number;
		/** Categorías de la portada en orden, elegidas en el panel. Vacío = las más surtidas. */
		homeCategories?: string[];
		maxProductsPerCategory: number;
		pageSize: number;
		showStock: boolean;
		showBrand: boolean;
		showCategory: boolean;
		showPromotionBadge: boolean;
	};
	search: {
		position: 'header' | 'hero' | 'sidebar' | 'sticky';
		showSuggestions: boolean;
		showRecentSearches: boolean;
	};
	promotions: PromotionConfig;
	texts: StoreTextsConfig;
	footer: FooterConfig;
	contentPages: StoreContentPage[];
	checkout: {
		layout: 'singlePage' | 'steps';
		allowGuestB2C: boolean;
		paymentRequired: boolean;
		paymentProviderLabel: string;
		allowDelivery: boolean;
		allowPickup: boolean;
		deliveryCost: number;
		deliveryMethods: DeliveryMethod[];
		paymentMethods?: PaymentMethod[];
		requireTermsAcceptance: boolean;
	};
	layout: {
		homeSections: string[];
		bannerHoverEffect: BannerHoverEffect;
		motionPreset: 'none' | 'subtle' | 'dynamic';
		transitionSpeed: 'fast' | 'normal' | 'relaxed';
		heroVariant: 'immersive' | 'split';
		sectionBackgroundMode: 'plain' | 'alternating';
		cardHoverEffect: 'none' | 'lift' | 'zoom' | 'glow';
		headerVariant: 'compact' | 'standard';
		stickyHeader: boolean;
		showScrollAnimations: boolean;
		showCarouselProgress: boolean;
	};
	seasons: SeasonalTemplate[];
	novedades?: EcommerceNews[];
};

export const DEFAULT_STORE_CONFIG: StoreConfig = {
	version: 1,
	status: 'default',
	source: 'fallback',
	identity: {
		name: 'Mercado Aurora',
		slogan: 'Frescos, despensa y ofertas para tu semana',
		subdomain: 'aurora.novasis.store',
		logoText: 'A'
	},
	theme: {
		primary: '#0f766e',
		secondary: '#1d4ed8',
		accent: '#f97316',
		background: '#ffffff',
		surface: '#ffffff',
		text: '#14211f',
		muted: '#66736f',
		success: '#15803d',
		danger: '#dc2626'
	},
	typography: {
		scale: 'normal'
	},
	catalog: {
		cardSize: 'normal',
		displayMode: 'categoryCarousels',
		imageRatio: '4 / 3',
		columnsDesktop: 4,
		columnsTablet: 3,
		columnsMobile: 2,
		maxCategoriesOnHome: 6,
		maxProductsPerCategory: 10,
		pageSize: 12,
		showStock: true,
		showBrand: true,
		showCategory: true,
		showPromotionBadge: true
	},
	search: {
		position: 'header',
		showSuggestions: true,
		showRecentSearches: true
	},
	promotions: {
		topBar: 'Envío gratis desde Gs. 250.000 en Asunción y Gran Asunción',
		heroTitle: 'Combo saludable de la semana',
		heroSubtitle: 'Frutas, lacteos y panificados seleccionados con precio especial hasta agotar stock.',
		heroImage: '',
		heroBadge: 'Semana saludable',
		heroDealTitle: 'Hasta 25%',
		heroDealSubtitle: 'en seleccionados',
		catalogInlineEveryNProducts: 6,
		checkoutUpsell: true,
		popupEnabled: false,
		popupBadge: 'Oferta especial',
		popupTitle: 'Una oportunidad para vos',
		popupDescription: 'Descubri la selección promocional vigente antes de que termine.',
		popupImage: '',
		popupCtaLabel: 'Comprar ahora',
		popupTargetCategory: 'Todos',
		popupFrequency: 'oncePerSession',
		popupStartDate: '',
		popupEndDate: ''
	},
	texts: {
		b2bPanelTitle: 'Compra recurrente B2B',
		b2bPanelSubtitle: 'Inicia sesión para repetir pedidos y ver precio mayorista.',
		novedadesTitle: 'Novedades',
		novedadesSubtitle: 'Anuncios, nuevos ingresos y campanas activas',
		categoryBannerTitleSuffix: '',
		categoryBannerDescription:
			'Selección especializada de {categoria} con disponibilidad actualizada, ofertas activas y opciones para compra recurrente.',
		mostViewedLabel: 'Más de esta categoría',
		poweredByLabel: 'Powered by Novasis Store'
	},
	footer: {
		description:
			'Tienda online multi tenant para compras rápidas, pagos seguros y seguimiento de pedidos desde Novasis.',
		labels: {
			leadEyebrow: 'Compra con confianza',
			paymentTrustTitle: 'Pago protegido',
			deliveryTrustTitle: 'Entrega flexible',
			supportTrustTitle: 'Atención directa',
			whatsappAction: 'WhatsApp',
			contactAction: 'Contactar',
			contactColumnTitle: 'Contacto',
			socialTitle: 'Seguinos',
			paymentsTitle: 'Pagos aceptados',
			deliveryAndPickup: 'Delivery o retiro en local',
			deliveryOnly: 'Delivery disponible',
			pickupOnly: 'Retiro en local',
			copyrightTemplate: '© {year} {store}. Todos los derechos reservados.'
		},
		contact: {
			phone: '021 555 010',
			whatsapp: '595982124618',
			email: 'ventas@aurora.novasis.store',
			address: 'Asunción, Paraguay',
			hours: 'Lunes a sábado, 08:00 a 19:00',
			description:
				'Nuestro equipo de atención acompana consultas sobre productos, pagos, facturación, delivery y seguimiento de pedidos ecommerce. Estos textos y canales se podrán editar desde el panel Ecommerce.',
			map: {
				title: 'Mercado Aurora',
				subtitle: 'Asunción, Paraguay',
				embedUrl:
					'https://www.openstreetmap.org/export/embed.html?bbox=-57.6530%2C-25.3100%2C-57.5000%2C-25.2100&layer=mapnik&marker=-25.2637%2C-57.5759',
				directionsUrl: 'https://www.openstreetmap.org/?mlat=-25.2637&mlon=-57.5759#map=14/-25.2637/-57.5759'
			}
		},
		linkGroups: [
			{
				title: 'Comprar',
				links: [
					{ label: 'Catálogo', href: '#catalogo' },
					{ label: 'Ofertas', href: '#ofertas' },
					{ label: 'Novedades', href: '#novedades' },
					{ label: 'Mayoristas', href: '#mayoristas' }
				]
			},
			{
				title: 'Soporte',
				links: [
					{ label: 'Seguimiento de pedido', pageKey: 'seguimiento' },
					{ label: 'Cambios y devoluciones', pageKey: 'devoluciones' },
					{ label: 'Preguntas frecuentes', pageKey: 'faq' },
					{ label: 'Contacto', pageKey: 'contacto' }
				]
			},
			{
				title: 'Legal',
				links: [
					{ label: 'Términos y condiciones', pageKey: 'terminos' },
					{ label: 'Política de privacidad', pageKey: 'privacidad' },
					{ label: 'Facturación', pageKey: 'facturacion' }
				]
			}
		],
		paymentMethods: ['Novasis Pay', 'Tarjetas', 'Transferencia', 'Contra entrega'],
		socialLinks: [
			{ label: 'Instagram', href: '#instagram' },
			{ label: 'Facebook', href: '#facebook' },
			{ label: 'TikTok', href: '#tiktok' }
		]
	},
	contentPages: [
		{
			key: 'terminos',
			title: 'Términos y condiciones',
			subtitle: 'Condiciones comerciales configurables por el comercio.',
			blocks: [
				{
					title: 'Uso de la tienda',
					content:
						'El comercio define desde el panel las condiciones de uso, disponibilidad de productos, precios publicados y politicas aplicables al canal online.'
				},
				{
					title: 'Pedidos y confirmacion',
					content:
						'Los pedidos se confirman luego de validar pago, stock y datos de entrega. Las condiciones pueden variar por sucursal, deposito o zona de cobertura.'
				}
			]
		},
		{
			key: 'privacidad',
			title: 'Política de privacidad',
			subtitle: 'Tratamiento de datos personales del ecommerce.',
			blocks: [
				{
					title: 'Datos recolectados',
					content:
						'El comercio puede configurar que datos solicita durante el checkout, incluyendo nombre, contacto, documento, dirección y preferencias de entrega.'
				},
				{
					title: 'Uso de datos',
					content:
						'Los datos se utilizan para procesar pedidos, pagos, facturación, entregas y comunicacion operativa con el cliente.'
				}
			]
		},
		{
			key: 'faq',
			title: 'Preguntas frecuentes',
			subtitle: 'Respuestas editables desde el panel Ecommerce.',
			blocks: [
				{
					title: 'Como hago seguimiento de mi pedido?',
					content:
						'Luego de comprar, el cliente recibe un enlace de seguimiento cuando el pedido entra al flujo operativo de ecommerce.'
				},
				{
					title: 'Puedo comprar como invitado?',
					content:
						'Si el comercio lo permite, los clientes B2C pueden comprar como invitados. Los clientes B2B pueden acceder con login para ver condiciones comerciales.'
				}
			]
		},
		{
			key: 'devoluciones',
			title: 'Cambios y devoluciones',
			subtitle: 'Política editable de cambios, devoluciones e incidencias.',
			blocks: [
				{
					title: 'Solicitud de cambio',
					content:
						'El comercio define plazos, condiciones y canales para solicitar cambios o devoluciones desde el panel.'
				},
				{
					title: 'Productos con incidencia',
					content:
						'Las incidencias pueden registrarse sobre el pedido ecommerce y quedar visibles para atención o supervisor.'
				}
			]
		},
		{
			key: 'facturacion',
			title: 'Facturación',
			subtitle: 'Información fiscal y reglas de emision configurables.',
			blocks: [
				{
					title: 'Datos fiscales',
					content:
						'El cliente puede cargar datos fiscales durante el checkout cuando el comercio habilita facturación para ecommerce.'
				},
				{
					title: 'Emision',
					content:
						'La factura se emite desde el flujo de facturación integrado del ERP segun la política configurada.'
				}
			]
		},
		{
			key: 'contacto',
			title: 'Contacto',
			subtitle: 'Canales de contacto configurados por el comercio.',
			blocks: [
				{
					title: 'Atención al cliente',
					content:
						'El comercio configura teléfono, WhatsApp, email, horarios y dirección visible en la tienda online.'
				}
			]
		},
		{
			key: 'seguimiento',
			title: 'Seguimiento de pedido',
			subtitle: 'Consulta del estado posterior a la compra.',
			blocks: [
				{
					title: 'Estado del pedido',
					content:
						'El cliente puede consultar estados como recibido, verificado, preparando, despachado, en reparto o entregado cuando el flujo operativo este activo.'
				}
			]
		}
	],
	checkout: {
		layout: 'singlePage',
		allowGuestB2C: true,
		paymentRequired: true,
		paymentProviderLabel: 'Novasis Pay',
		paymentMethods: [
			{ id: 'novasis-pay', type: 'online', name: 'Novasis Pay (tarjetas)', enabled: true, discountPercent: 0 },
			{ id: 'transferencia', type: 'manual', name: 'Transferencia bancaria', enabled: true, discountPercent: 0 },
			{ id: 'contra-entrega', type: 'manual', name: 'Efectivo contra entrega', enabled: true, discountPercent: 0 }
		],
		allowDelivery: true,
		allowPickup: true,
		deliveryCost: 18000,
		deliveryMethods: [
			{
				id: 'delivery-programado',
				type: 'delivery',
				name: 'Delivery programado',
				cost: 18000,
				enabled: true
			},
			{
				id: 'retiro-local',
				type: 'pickup',
				name: 'Retiro en local',
				cost: 0,
				enabled: true
			}
		],
		requireTermsAcceptance: true
	},
	layout: {
		homeSections: ['hero', 'featuredCategories', 'catalog', 'promotions', 'b2b'],
		bannerHoverEffect: 'effect-5',
		motionPreset: 'dynamic',
		transitionSpeed: 'normal',
		heroVariant: 'immersive',
		sectionBackgroundMode: 'alternating',
		cardHoverEffect: 'lift',
		headerVariant: 'compact',
		stickyHeader: true,
		showScrollAnimations: true,
		showCarouselProgress: true
	},
	seasons: [
		{
			id: 'otono-2026',
			name: 'Otoño',
			enabled: true,
			startDate: '2026-03-01',
			endDate: '2026-05-31',
			priority: 20,
			themeOverrides: {
				primary: '#92400e',
				secondary: '#166534',
				accent: '#d97706',
				background: '#ffffff',
				text: '#2f2419',
				muted: '#7c6a58'
			},
			promotions: {
				topBar: 'Temporada otoño: productos de despensa y combos para tardes frescas',
				heroTitle: 'Otoño para renovar tu despensa',
				heroSubtitle: 'Infusiones, panificados y seleccionados para acompanar el cambio de clima.',
				heroImage: '',
				heroBadge: 'Temporada otoño',
				heroDealTitle: 'Combos otoño',
				heroDealSubtitle: 'despensa seleccionada'
			},
			decoration: {
				type: 'autumn',
				intensity: 'low'
			}
		},
		{
			id: 'invierno-2026',
			name: 'Invierno',
			enabled: true,
			startDate: '2026-06-01',
			endDate: '2026-08-31',
			priority: 20,
			themeOverrides: {
				primary: '#1d4ed8',
				secondary: '#0f766e',
				accent: '#38bdf8',
				background: '#ffffff',
				text: '#10243f',
				muted: '#5f7285'
			},
			promotions: {
				topBar: 'Temporada invierno: combos para días frios con envío programado',
				heroTitle: 'Invierno con despensa completa',
				heroSubtitle: 'Bebidas calientes, panificados y productos seleccionados para la temporada.',
				heroImage: '',
				heroBadge: 'Temporada invierno',
				heroDealTitle: 'Abrigate con ofertas',
				heroDealSubtitle: 'combos de temporada'
			},
			decoration: {
				type: 'snow',
				intensity: 'medium'
			}
		},
		{
			id: 'primavera-2026',
			name: 'Primavera',
			enabled: true,
			startDate: '2026-09-01',
			endDate: '2026-11-30',
			priority: 20,
			themeOverrides: {
				primary: '#15803d',
				secondary: '#7c3aed',
				accent: '#ec4899',
				background: '#ffffff',
				text: '#18351f',
				muted: '#64745f'
			},
			promotions: {
				topBar: 'Primavera activa: frescos, bebidas livianas y ofertas de temporada',
				heroTitle: 'Primavera fresca en tu tienda',
				heroSubtitle: 'Frutas, ensaladas, bebidas y productos livianos para todos los días.',
				heroImage: '',
				heroBadge: 'Temporada primavera',
				heroDealTitle: 'Frescos destacados',
				heroDealSubtitle: 'selección primavera'
			},
			decoration: {
				type: 'spring',
				intensity: 'low'
			}
		},
		{
			id: 'verano-2026',
			name: 'Verano',
			enabled: true,
			startDate: '2026-12-01',
			endDate: '2027-02-28',
			priority: 20,
			themeOverrides: {
				primary: '#0f766e',
				secondary: '#2563eb',
				accent: '#f97316',
				background: '#ffffff',
				text: '#26331f',
				muted: '#73705f'
			},
			promotions: {
				topBar: 'Verano activo: bebidas frias, frescos y combos para compartir',
				heroTitle: 'Verano fresco en tu carrito',
				heroSubtitle: 'Promociones en bebidas, frutas y productos livianos para todos los días.',
				heroImage: '',
				heroBadge: 'Temporada verano',
				heroDealTitle: '2x1 verano',
				heroDealSubtitle: 'en bebidas seleccionadas'
			},
			decoration: {
				type: 'summer',
				intensity: 'low'
			}
		}
	]
};

export const DEFAULT_CATEGORIES = ['Todos', 'Frescos', 'Despensa', 'Bebidas', 'Limpieza', 'Mascotas'];

export const DEFAULT_PRODUCTS: Product[] = [
	{
		id: '1',
		sku: 'FRU-0001',
		name: 'Canasta frutas de estacion',
		brand: 'Aurora Fresh',
		category: 'Frescos',
		price: 87500,
		oldPrice: 105000,
		stock: 18,
		image: '',
		gallery: ['', '', ''],
		description:
			'Selección de frutas frescas de temporada para consumo familiar, preparada con productos del dia y control visual de calidad.',
		specifications: [
			{ label: 'Contenido', value: 'Mix de frutas seleccionadas' },
			{ label: 'Conservacion', value: 'Mantener en lugar fresco' },
			{ label: 'Entrega', value: 'Disponible para envío programado' }
		],
		detailsJson: {
			mainDescription:
				'Canasta preparada con frutas frescas de estacion, ideal para desayunos, meriendas y reposicion semanal de hogar u oficina.',
			sections: [
				{
					title: 'Detalles',
					type: 'text',
					content:
						'La canasta combina frutas seleccionadas segun disponibilidad del dia. El armado prioriza frescura, variedad y buena presentacion para consumo inmediato o reposicion semanal. Puede incluir citricos, bananas, manzanas, frutas tropicales y opciones de temporada segun stock.'
				},
				{
					title: 'Más información',
					type: 'specs',
					rows: [
						{ label: 'Tipo de producto', value: 'Canasta de frescos' },
						{ label: 'Conservacion', value: 'Lugar fresco o refrigerado' },
						{ label: 'Preparacion', value: 'Selección manual' },
						{ label: 'Entrega', value: 'Envío programado' },
						{ label: 'Uso recomendado', value: 'Hogar, oficina y B2B' }
					]
				}
			]
		},
		reviews: [
			{
				id: '101',
				author: 'Mariana R.',
				rating: 4.9,
				comment: 'Llego fresca y bien presentada. Muy practica para la compra semanal.',
				date: 'Junio 2026'
			},
			{
				id: '102',
				author: 'Oficina Centro',
				rating: 4.8,
				comment: 'La usamos para reposicion de oficina. Buena variedad y entrega puntual.',
				date: 'Mayo 2026'
			}
		],
		badges: ['Oferta', 'Nuevo'],
		rating: 4.8
	},
	{
		id: '2',
		sku: 'DES-0500',
		name: 'Cafe molido premium 500 g',
		brand: 'Sierra',
		category: 'Despensa',
		price: 54500,
		stock: 42,
		image: '',
		gallery: ['', '', ''],
		description:
			'Cafe molido de perfil intenso, ideal para cafeteras domesticas, oficinas y consumo recurrente B2B.',
		specifications: [
			{ label: 'Peso', value: '500 g' },
			{ label: 'Molienda', value: 'Media' },
			{ label: 'Perfil', value: 'Aroma intenso' }
		],
		badges: ['Más vendido'],
		rating: 4.9
	},
	{
		id: '3',
		sku: 'DES-OLI1',
		name: 'Aceite de oliva extra virgen',
		brand: 'Olivares',
		category: 'Despensa',
		price: 69800,
		oldPrice: 79500,
		stock: 9,
		image: '',
		gallery: ['', '', ''],
		description:
			'Aceite de oliva extra virgen para cocina diaria, ensaladas y preparaciones gourmet con bajo nivel de acidez.',
		specifications: [
			{ label: 'Tipo', value: 'Extra virgen' },
			{ label: 'Uso', value: 'Cocina y ensaladas' },
			{ label: 'Origen', value: 'Importado' }
		],
		badges: ['Bajo stock'],
		rating: 4.7
	},
	{
		id: '4',
		sku: 'BEB-12500',
		name: 'Pack agua mineral 12 x 500 ml',
		brand: 'Ykua',
		category: 'Bebidas',
		price: 39500,
		stock: 75,
		image: '',
		gallery: ['', '', ''],
		description:
			'Pack de agua mineral practico para hogares, oficinas, eventos y compras mayoristas con entrega programada.',
		specifications: [
			{ label: 'Presentacion', value: '12 unidades' },
			{ label: 'Volumen', value: '500 ml por botella' },
			{ label: 'Ideal para', value: 'Hogar, oficina y eventos' }
		],
		badges: ['Precio mayorista'],
		rating: 4.6
	},
	{
		id: '5',
		sku: 'LIM-CIT1',
		name: 'Detergente concentrado citrus',
		brand: 'Casa Limpia',
		category: 'Limpieza',
		price: 22500,
		stock: 31,
		image: '',
		gallery: ['', '', ''],
		description:
			'Detergente concentrado con aroma citrus, formulado para limpieza cotidiana con rendimiento prolongado.',
		specifications: [
			{ label: 'Aroma', value: 'Citrus' },
			{ label: 'Formula', value: 'Concentrada' },
			{ label: 'Uso', value: 'Limpieza multiuso' }
		],
		badges: ['Oferta'],
		rating: 4.5
	},
	{
		id: '6',
		sku: 'PET-ADULM',
		name: 'Alimento adulto raza mediana',
		brand: 'Pet Norte',
		category: 'Mascotas',
		price: 148000,
		oldPrice: 169000,
		stock: 16,
		image: '',
		gallery: ['', '', ''],
		description: 'Alimento balanceado para perros adultos de raza mediana, pensado para compra recurrente mensual.',
		specifications: [
			{ label: 'Etapa', value: 'Adulto' },
			{ label: 'Raza', value: 'Mediana' },
			{ label: 'Compra', value: 'Apto para reposicion recurrente' }
		],
		badges: ['Combo'],
		rating: 4.8
	},
	{
		id: '7',
		sku: 'FRE-YOGF',
		name: 'Yogurt natural familiar',
		brand: 'Campo Sur',
		category: 'Frescos',
		price: 18900,
		stock: 24,
		image: '',
		gallery: ['', '', ''],
		description:
			'Yogurt natural en presentacion familiar, ideal para desayunos, meriendas y preparaciones livianas.',
		specifications: [
			{ label: 'Tipo', value: 'Natural' },
			{ label: 'Conservacion', value: 'Refrigerado' },
			{ label: 'Formato', value: 'Familiar' }
		],
		badges: ['Nuevo'],
		rating: 4.6
	},
	{
		id: '8',
		sku: 'DES-MIX350',
		name: 'Mix frutos secos 350 g',
		brand: 'Nativo',
		category: 'Despensa',
		price: 49800,
		stock: 13,
		image: '',
		gallery: ['', '', ''],
		description: 'Mix de frutos secos para snack saludable, reuniones, oficinas o reposicion semanal de despensa.',
		specifications: [
			{ label: 'Peso', value: '350 g' },
			{ label: 'Tipo', value: 'Mix seleccionado' },
			{ label: 'Uso', value: 'Snack y despensa' }
		],
		badges: ['Más vendido'],
		rating: 4.9
	}
];

export const DEFAULT_FEATURED_CATEGORIES: FeaturedCategory[] = [
	{
		name: 'Frescos',
		image: ''
	},
	{
		name: 'Despensa',
		image: ''
	},
	{
		name: 'Bebidas',
		image: ''
	}
];

export const DEFAULT_ECOMMERCE_NEWS: EcommerceNews[] = [
	{
		id: 1,
		type: 'producto_nuevo',
		title: 'Nuevos frescos de temporada',
		description: 'Frutas seleccionadas, lacteos y panificados listos para envío programado.',
		tag: 'Nuevo ingreso',
		image: '',
		ctaLabel: 'Ver frescos',
		targetCategory: 'Frescos',
		priority: 30
	},
	{
		id: 2,
		type: 'campana',
		title: 'Invierno con despensa completa',
		description: 'Combos para días frios con bebidas calientes, cafe y productos esenciales.',
		tag: 'Temporada',
		image: '',
		ctaLabel: 'Comprar despensa',
		targetCategory: 'Despensa',
		priority: 20
	},
	{
		id: 3,
		type: 'b2b',
		title: 'Repeti compras mayoristas',
		description: 'Accede a precios por lista, pedidos recurrentes y condiciones comerciales B2B.',
		tag: 'Mayorista',
		image: '',
		ctaLabel: 'Ver mayorista',
		targetCategory: 'Despensa',
		priority: 10
	}
];
