export type StatusColor = 'warning' | 'success' | 'info' | 'error' export type StatusIconName = | 'banknote' | 'check-circle' | 'package-search' | 'package' | 'package-check' | 'store' | 'x-circle' export interface OrderStatusData { code: string label: string iconName: StatusIconName color: StatusColor description: string } export const ORDER_STATUS_DATA: ReadonlyArray = [ { code: 'PENDING_PAYMENT', label: 'Ожидает оплаты', iconName: 'banknote', color: 'warning', description: 'Заказ оформлен и подтверждён администратором. Оплатите онлайн через ЮKassa или дождитесь получения (для самовывоза с оплатой при получении).', }, { code: 'PAID', label: 'Оплачен', iconName: 'check-circle', color: 'success', description: 'Оплата получена. Админ скоро возьмёт заказ в работу.', }, { code: 'IN_PROGRESS', label: 'Подготовка к отправке', iconName: 'package-search', color: 'info', description: 'Админ готовит заказ к отправке или выдаче. Скоро статус обновится.', }, { code: 'SHIPPED', label: 'Отправлен', iconName: 'package', color: 'info', description: 'Заказ передан в службу доставки. Трек-номер для отслеживания(при наличии) будет указан в сообщении админа.', }, { code: 'READY_FOR_PICKUP', label: 'Готов к получению', iconName: 'store', color: 'success', description: 'Заказ готов к самовывозу. Приезжайте в согласованное время.', }, { code: 'DONE', label: 'Завершён', iconName: 'package-check', color: 'success', description: 'Заказ получен. Вы можете оставить отзыв в личном кабинете.', }, { code: 'CANCELLED', label: 'Отменён', iconName: 'x-circle', color: 'error', description: 'Заказ отменён. Если оплата была произведена, средства вернутся на карту.', }, ] export function getOrderStatusData(code: string): OrderStatusData | undefined { return ORDER_STATUS_DATA.find((s) => s.code === code) } export const ORDER_STATUS_MAP: Record = Object.fromEntries( ORDER_STATUS_DATA.map((s) => [s.code, s.label]), )