import type { MouseEvent } from 'react'; /** * Estado de disponibilidad de la ubicación POS * - available: Disponible (verde/lime) * - occupied: Ocupada (naranja/yellow) * - reserved: Reservada (morado/purple) * - outOfService: Fuera de servicio (gris/zinc) */ export type POSLocationStatus = 'available' | 'occupied' | 'reserved' | 'outOfService'; /** * Estado visual del botón * - enabled: Estado normal (fondo blanco/dark-bg-primary) * - actived: Estado activo/seleccionado (fondo con color del badge) */ export type POSLocationState = 'enabled' | 'actived'; /** * Información de capacidad de la ubicación */ export interface POSLocationCapacity { /** * Número actual de mesas/espacios ocupados */ current: number; /** * Total de mesas/espacios disponibles */ total: number; } /** * Props del componente POSLocationButton */ export interface POSLocationButtonProps { /** * Nombre de la ubicación (ej: "Antejardín", "Terraza", "Salón Principal") */ locationName: string; /** * Estado de disponibilidad de la ubicación * @default 'available' */ status?: POSLocationStatus; /** * Estado visual del botón (enabled o actived) * @default 'enabled' */ state?: POSLocationState; /** * Información de capacidad (mesas ocupadas/total) * Ejemplo: { current: 1, total: 8 } → "1/8 mesas" */ capacity?: POSLocationCapacity; /** * Función a ejecutar al hacer clic en el botón */ onClick?: (event: MouseEvent) => void; /** * Si el botón está deshabilitado * @default false */ disabled?: boolean; /** * Clases CSS adicionales */ className?: string; /** * Label para accesibilidad (ARIA) */ ariaLabel?: string; /** * Si el botón ocupa todo el ancho disponible del contenedor padre * @default true */ fullWidth?: boolean; } //# sourceMappingURL=POSLocationButton.types.d.ts.map