mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
fix: improve Toast visibility and allow tariff deletion with subscriptions
- Toast: use solid bg-dark-800 background instead of transparent gradient - Toast: increase border opacity for better visibility - Tariffs: allow deletion even with active subscriptions (shows warning) - Add confirmDeleteWithSubscriptions translation to all locales
This commit is contained in:
@@ -97,28 +97,32 @@ function ToastItem({ toast, onClose }: { toast: Toast; onClose: () => void }) {
|
||||
|
||||
const typeStyles = {
|
||||
success: {
|
||||
bg: 'bg-gradient-to-r from-success-500/20 to-success-600/10',
|
||||
border: 'border-success-500/30',
|
||||
bg: 'bg-dark-800',
|
||||
accent: 'bg-gradient-to-r from-success-500/30 to-transparent',
|
||||
border: 'border-success-500/50',
|
||||
icon: 'text-success-400',
|
||||
iconBg: 'bg-success-500/20',
|
||||
iconBg: 'bg-success-500/30',
|
||||
},
|
||||
error: {
|
||||
bg: 'bg-gradient-to-r from-error-500/20 to-error-600/10',
|
||||
border: 'border-error-500/30',
|
||||
bg: 'bg-dark-800',
|
||||
accent: 'bg-gradient-to-r from-error-500/30 to-transparent',
|
||||
border: 'border-error-500/50',
|
||||
icon: 'text-error-400',
|
||||
iconBg: 'bg-error-500/20',
|
||||
iconBg: 'bg-error-500/30',
|
||||
},
|
||||
warning: {
|
||||
bg: 'bg-gradient-to-r from-warning-500/20 to-warning-600/10',
|
||||
border: 'border-warning-500/30',
|
||||
bg: 'bg-dark-800',
|
||||
accent: 'bg-gradient-to-r from-warning-500/30 to-transparent',
|
||||
border: 'border-warning-500/50',
|
||||
icon: 'text-warning-400',
|
||||
iconBg: 'bg-warning-500/20',
|
||||
iconBg: 'bg-warning-500/30',
|
||||
},
|
||||
info: {
|
||||
bg: 'bg-gradient-to-r from-accent-500/20 to-accent-600/10',
|
||||
border: 'border-accent-500/30',
|
||||
bg: 'bg-dark-800',
|
||||
accent: 'bg-gradient-to-r from-accent-500/30 to-transparent',
|
||||
border: 'border-accent-500/50',
|
||||
icon: 'text-accent-400',
|
||||
iconBg: 'bg-accent-500/20',
|
||||
iconBg: 'bg-accent-500/30',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -181,11 +185,11 @@ function ToastItem({ toast, onClose }: { toast: Toast; onClose: () => void }) {
|
||||
|
||||
return (
|
||||
<div
|
||||
className={`pointer-events-auto w-80 sm:w-96 ${style.bg} border backdrop-blur-xl ${style.border} animate-slide-in-right overflow-hidden rounded-2xl shadow-2xl shadow-black/20 ${toast.onClick ? 'cursor-pointer hover:scale-[1.02] active:scale-[0.98]' : ''} transition-transform duration-200`}
|
||||
className={`pointer-events-auto w-80 sm:w-96 ${style.bg} border ${style.border} animate-slide-in-right overflow-hidden rounded-2xl shadow-2xl shadow-black/40 ${toast.onClick ? 'cursor-pointer hover:scale-[1.02] active:scale-[0.98]' : ''} transition-transform duration-200`}
|
||||
onClick={handleClick}
|
||||
>
|
||||
{/* Glow effect */}
|
||||
<div className={`absolute inset-0 ${style.bg} opacity-50 blur-xl`} />
|
||||
{/* Color accent */}
|
||||
<div className={`absolute inset-0 ${style.accent}`} />
|
||||
|
||||
<div className="relative p-4">
|
||||
<div className="flex gap-3">
|
||||
|
||||
@@ -1215,9 +1215,9 @@
|
||||
"deactivate": "Deactivate",
|
||||
"toggleTrial": "Toggle Trial",
|
||||
"delete": "Delete",
|
||||
"cannotDeleteHasSubscriptions": "Cannot delete: has active subscriptions",
|
||||
"confirmDelete": "Delete tariff?",
|
||||
"confirmDeleteText": "This action cannot be undone. The tariff will be permanently deleted.",
|
||||
"confirmDeleteWithSubscriptions": "This tariff has {{count}} active subscriptions. After deletion, users will need to select a new tariff when renewing.",
|
||||
"deleteSuccess": "Tariff deleted successfully",
|
||||
"days": "days",
|
||||
"days_one": "{{count}} day",
|
||||
|
||||
@@ -989,9 +989,9 @@
|
||||
"deactivate": "غیرفعالسازی",
|
||||
"toggleTrial": "تغییر آزمایشی",
|
||||
"delete": "حذف",
|
||||
"cannotDeleteHasSubscriptions": "حذف ممکن نیست: اشتراکهای فعال وجود دارد",
|
||||
"confirmDelete": "تعرفه حذف شود؟",
|
||||
"confirmDeleteText": "این عمل قابل بازگشت نیست. تعرفه برای همیشه حذف میشود.",
|
||||
"confirmDeleteWithSubscriptions": "این تعرفه {{count}} اشتراک فعال دارد. پس از حذف، کاربران هنگام تمدید باید تعرفه جدید انتخاب کنند.",
|
||||
"deleteSuccess": "تعرفه با موفقیت حذف شد",
|
||||
"days": "روز",
|
||||
"days_other": "{{count}} روز",
|
||||
|
||||
@@ -1725,9 +1725,9 @@
|
||||
"deactivate": "Деактивировать",
|
||||
"toggleTrial": "Переключить триал",
|
||||
"delete": "Удалить",
|
||||
"cannotDeleteHasSubscriptions": "Нельзя удалить: есть активные подписки",
|
||||
"confirmDelete": "Удалить тариф?",
|
||||
"confirmDeleteText": "Это действие нельзя отменить. Тариф будет удален навсегда.",
|
||||
"confirmDeleteText": "Это действие нельзя отменить. Тариф будет удалён навсегда.",
|
||||
"confirmDeleteWithSubscriptions": "У этого тарифа {{count}} активных подписок. При удалении пользователям потребуется выбрать новый тариф при продлении.",
|
||||
"deleteSuccess": "Тариф успешно удален",
|
||||
"days": "дней",
|
||||
"days_one": "{{count}} день",
|
||||
|
||||
@@ -1027,9 +1027,9 @@
|
||||
"deactivate": "停用",
|
||||
"toggleTrial": "切换试用",
|
||||
"delete": "删除",
|
||||
"cannotDeleteHasSubscriptions": "无法删除:有活跃订阅",
|
||||
"confirmDelete": "删除套餐?",
|
||||
"confirmDeleteText": "此操作不可撤销。套餐将被永久删除。",
|
||||
"confirmDeleteWithSubscriptions": "此套餐有 {{count}} 个活跃订阅。删除后,用户续订时需要选择新套餐。",
|
||||
"deleteSuccess": "套餐删除成功",
|
||||
"days": "天",
|
||||
"days_other": "{{count}} 天",
|
||||
|
||||
@@ -67,13 +67,16 @@ export default function AdminTariffs() {
|
||||
});
|
||||
|
||||
const handleDelete = async (tariff: TariffListItem) => {
|
||||
if (tariff.subscriptions_count > 0) {
|
||||
notify.warning(t('admin.tariffs.cannotDeleteHasSubscriptions'));
|
||||
return;
|
||||
}
|
||||
// If tariff has active subscriptions, show warning but still allow deletion
|
||||
const confirmText =
|
||||
tariff.subscriptions_count > 0
|
||||
? t('admin.tariffs.confirmDeleteWithSubscriptions', {
|
||||
count: tariff.subscriptions_count,
|
||||
})
|
||||
: t('admin.tariffs.confirmDeleteText');
|
||||
|
||||
const confirmed = await confirmDelete(
|
||||
t('admin.tariffs.confirmDeleteText'),
|
||||
confirmText,
|
||||
t('common.delete'),
|
||||
t('admin.tariffs.confirmDelete'),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user