feat: status selectors update
This commit is contained in:
@@ -147,3 +147,86 @@ export const canEditPostStatus = (currentStatus: PlacementPostStatus): boolean =
|
||||
export const isAutomaticPostStatus = (status: PlacementPostStatus): boolean => {
|
||||
return AUTOMATIC_POST_STATUSES.has(status);
|
||||
};
|
||||
|
||||
// Status icon and color helpers
|
||||
import {
|
||||
CircleHelp,
|
||||
FileText,
|
||||
Clock,
|
||||
DollarSign,
|
||||
CheckCircle2,
|
||||
XCircle,
|
||||
AlertTriangle,
|
||||
Send,
|
||||
Calendar,
|
||||
} from "lucide-react";
|
||||
|
||||
const StatusIconMap: Record<PlacementStatus, any> = {
|
||||
"Без статуса": CircleHelp,
|
||||
"Написать": FileText,
|
||||
"Ждём ответа": Clock,
|
||||
"Согласование условий": FileText,
|
||||
"Оплатить": DollarSign,
|
||||
"Оплачено": CheckCircle2,
|
||||
"Отмена": XCircle,
|
||||
"Не подходит цена": AlertTriangle,
|
||||
"Неактуально": XCircle,
|
||||
"Не отвечает": AlertTriangle,
|
||||
};
|
||||
|
||||
const PostStatusIconMap: Record<PlacementPostStatus, any> = {
|
||||
"Без статуса": CircleHelp,
|
||||
"Отправить пост": Send,
|
||||
"Согласование поста": FileText,
|
||||
"Ожидание отложки": Clock,
|
||||
"Запланирован": Calendar,
|
||||
"Пост вышел": CheckCircle2,
|
||||
"Размещение отработало - пост удалён": CheckCircle2,
|
||||
"Размещение отработало - пост не удалён": CheckCircle2,
|
||||
"Проверить - пост удалён раньше срока": AlertTriangle,
|
||||
"Проверить - пост не вышел": Clock,
|
||||
"Размещение отработало": CheckCircle2,
|
||||
};
|
||||
|
||||
const StatusColorMap: Record<PlacementStatus, string> = {
|
||||
"Без статуса": "bg-gray-100 text-gray-700 border-gray-200 dark:bg-gray-900/30 dark:text-gray-400 dark:border-gray-800",
|
||||
"Написать": "bg-blue-100 text-blue-700 border-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:border-blue-800",
|
||||
"Ждём ответа": "bg-amber-100 text-amber-700 border-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:border-amber-800",
|
||||
"Согласование условий": "bg-purple-100 text-purple-700 border-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:border-purple-800",
|
||||
"Оплатить": "bg-green-100 text-green-700 border-green-200 dark:bg-green-900/30 dark:text-green-400 dark:border-green-800",
|
||||
"Оплачено": "bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800",
|
||||
"Отмена": "bg-red-100 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800",
|
||||
"Не подходит цена": "bg-orange-100 text-orange-700 border-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:border-orange-800",
|
||||
"Неактуально": "bg-gray-100 text-gray-700 border-gray-200 dark:bg-gray-900/30 dark:text-gray-400 dark:border-gray-800",
|
||||
"Не отвечает": "bg-red-100 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800",
|
||||
};
|
||||
|
||||
const PostStatusColorMap: Record<PlacementPostStatus, string> = {
|
||||
"Без статуса": "bg-gray-100 text-gray-700 border-gray-200 dark:bg-gray-900/30 dark:text-gray-400 dark:border-gray-800",
|
||||
"Отправить пост": "bg-blue-100 text-blue-700 border-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:border-blue-800",
|
||||
"Согласование поста": "bg-purple-100 text-purple-700 border-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:border-purple-800",
|
||||
"Ожидание отложки": "bg-amber-100 text-amber-700 border-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:border-amber-800",
|
||||
"Запланирован": "bg-cyan-100 text-cyan-700 border-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:border-cyan-800",
|
||||
"Пост вышел": "bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800",
|
||||
"Размещение отработало - пост удалён": "bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800",
|
||||
"Размещение отработало - пост не удалён": "bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800",
|
||||
"Проверить - пост удалён раньше срока": "bg-orange-100 text-orange-700 border-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:border-orange-800",
|
||||
"Проверить - пост не вышел": "bg-red-100 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-400 dark:border-red-800",
|
||||
"Размещение отработало": "bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800",
|
||||
};
|
||||
|
||||
export const getPlacementStatusIcon = (status: PlacementStatus): any => {
|
||||
return StatusIconMap[status] || CircleHelp;
|
||||
};
|
||||
|
||||
export const getPlacementStatusColor = (status: PlacementStatus): string => {
|
||||
return StatusColorMap[status] || StatusColorMap["Без статуса"];
|
||||
};
|
||||
|
||||
export const getPlacementPostStatusIcon = (status: PlacementPostStatus): any => {
|
||||
return PostStatusIconMap[status] || CircleHelp;
|
||||
};
|
||||
|
||||
export const getPlacementPostStatusColor = (status: PlacementPostStatus): string => {
|
||||
return PostStatusColorMap[status] || PostStatusColorMap["Без статуса"];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user