diff --git a/src/api/menuLayout.ts b/src/api/menuLayout.ts index 148367f..7e45e85 100644 --- a/src/api/menuLayout.ts +++ b/src/api/menuLayout.ts @@ -43,7 +43,7 @@ export const STYLE_OPTIONS = [ { value: 'default' as const, colorClass: 'bg-dark-500' }, { value: 'primary' as const, colorClass: 'bg-blue-500' }, { value: 'success' as const, colorClass: 'bg-success-500' }, - { value: 'danger' as const, colorClass: 'bg-red-500' }, + { value: 'danger' as const, colorClass: 'bg-error-500' }, ]; const DEFAULT_CONFIG: MenuConfig = { rows: [] }; diff --git a/src/components/PromoOffersSection.tsx b/src/components/PromoOffersSection.tsx index a38cd03..8aee2d2 100644 --- a/src/components/PromoOffersSection.tsx +++ b/src/components/PromoOffersSection.tsx @@ -235,7 +235,7 @@ export default function PromoOffersSection({ className = '' }: PromoOffersSectio - {oidcError &&

{oidcError}

} + {oidcError &&

{oidcError}

} ) : (
diff --git a/src/components/admin/AnalyticsTab.tsx b/src/components/admin/AnalyticsTab.tsx index c592ffd..a1a7090 100644 --- a/src/components/admin/AnalyticsTab.tsx +++ b/src/components/admin/AnalyticsTab.tsx @@ -73,7 +73,7 @@ export function AnalyticsTab() {
-
+
diff --git a/src/components/admin/ButtonsTab.tsx b/src/components/admin/ButtonsTab.tsx index 69f0072..26acec0 100644 --- a/src/components/admin/ButtonsTab.tsx +++ b/src/components/admin/ButtonsTab.tsx @@ -19,7 +19,7 @@ const STYLE_OPTIONS: { value: StyleValue; colorClass: string }[] = [ { value: 'default', colorClass: 'bg-dark-500' }, { value: 'primary', colorClass: 'bg-blue-500' }, { value: 'success', colorClass: 'bg-success-500' }, - { value: 'danger', colorClass: 'bg-red-500' }, + { value: 'danger', colorClass: 'bg-error-500' }, ]; function labelsEqual(a: Record, b: Record): boolean { @@ -226,7 +226,7 @@ export function ButtonsTab() { : cfg.style === 'success' ? 'bg-success-500 text-white' : cfg.style === 'danger' - ? 'bg-red-500 text-white' + ? 'bg-error-500 text-white' : 'bg-blue-500 text-white' }`} > diff --git a/src/components/admin/ColoredItemCombobox.tsx b/src/components/admin/ColoredItemCombobox.tsx index 074b579..2c05260 100644 --- a/src/components/admin/ColoredItemCombobox.tsx +++ b/src/components/admin/ColoredItemCombobox.tsx @@ -292,11 +292,11 @@ export function ColoredItemCombobox({ type="button" onClick={(e) => handleDelete(e, item)} disabled={deletingId === item.id} - className="shrink-0 rounded p-1 text-dark-600 transition-colors hover:bg-red-500/10 hover:text-red-400 disabled:opacity-50" + className="shrink-0 rounded p-1 text-dark-600 transition-colors hover:bg-error-500/10 hover:text-error-400 disabled:opacity-50" aria-label={t('news.admin.combobox.delete', { name: item.name })} > {deletingId === item.id ? ( -
+
) : ( diff --git a/src/components/admin/MenuEditorTab.tsx b/src/components/admin/MenuEditorTab.tsx index 9e49621..80e532e 100644 --- a/src/components/admin/MenuEditorTab.tsx +++ b/src/components/admin/MenuEditorTab.tsx @@ -234,7 +234,7 @@ function ButtonChip({ {!isBuiltin && ( @@ -423,7 +423,7 @@ function SortableRow({ {!allBuiltin && ( @@ -796,7 +796,7 @@ export function MenuEditorTab() { if (isError) { return ( -
+
{t('common.error')}
); diff --git a/src/components/blocking/BlacklistedScreen.tsx b/src/components/blocking/BlacklistedScreen.tsx index 065fa4c..dd33cb8 100644 --- a/src/components/blocking/BlacklistedScreen.tsx +++ b/src/components/blocking/BlacklistedScreen.tsx @@ -21,7 +21,7 @@ export default function BlacklistedScreen() {
(
{ch.title || ch.channel_id} {ch.channel_link && ( @@ -146,8 +146,8 @@ export default function ChannelSubscriptionScreen() { {/* Error message */} {error && ( -
-

{error}

+
+

{error}

)} diff --git a/src/components/connection/TvQuickConnect.tsx b/src/components/connection/TvQuickConnect.tsx index 567a00e..424471d 100644 --- a/src/components/connection/TvQuickConnect.tsx +++ b/src/components/connection/TvQuickConnect.tsx @@ -323,7 +323,7 @@ export default function TvQuickConnect({ subscriptionUrl, isLight }: Props) { {toast && (
{toast.text} diff --git a/src/components/sales-stats/AddonsTab.tsx b/src/components/sales-stats/AddonsTab.tsx index bf6ccbb..0f13c8d 100644 --- a/src/components/sales-stats/AddonsTab.tsx +++ b/src/components/sales-stats/AddonsTab.tsx @@ -48,7 +48,7 @@ export function AddonsTab({ params }: AddonsTabProps) { } if (isError || !data) { - return
{t('admin.salesStats.loadError')}
; + return
{t('admin.salesStats.loadError')}
; } const packageBarData = data.by_package.map((item) => ({ diff --git a/src/components/sales-stats/DepositsTab.tsx b/src/components/sales-stats/DepositsTab.tsx index 8b1078c..e62599c 100644 --- a/src/components/sales-stats/DepositsTab.tsx +++ b/src/components/sales-stats/DepositsTab.tsx @@ -68,7 +68,7 @@ export function DepositsTab({ params }: DepositsTabProps) { } if (isError || !data) { - return
{t('admin.salesStats.loadError')}
; + return
{t('admin.salesStats.loadError')}
; } return ( diff --git a/src/components/sales-stats/RenewalsTab.tsx b/src/components/sales-stats/RenewalsTab.tsx index 84b18ad..185c798 100644 --- a/src/components/sales-stats/RenewalsTab.tsx +++ b/src/components/sales-stats/RenewalsTab.tsx @@ -35,7 +35,7 @@ export function RenewalsTab({ params }: RenewalsTabProps) { } if (isError || !data) { - return
{t('admin.salesStats.loadError')}
; + return
{t('admin.salesStats.loadError')}
; } const dailyData = data.daily.map((item) => ({ diff --git a/src/components/sales-stats/SalesTab.tsx b/src/components/sales-stats/SalesTab.tsx index a56c4e7..5b7bc44 100644 --- a/src/components/sales-stats/SalesTab.tsx +++ b/src/components/sales-stats/SalesTab.tsx @@ -45,7 +45,7 @@ export function SalesTab({ params }: SalesTabProps) { } if (isError || !data) { - return
{t('admin.salesStats.loadError')}
; + return
{t('admin.salesStats.loadError')}
; } const tariffBarData = data.by_tariff.map((item) => ({ diff --git a/src/components/sales-stats/TrialsTab.tsx b/src/components/sales-stats/TrialsTab.tsx index dcc0197..1cd09df 100644 --- a/src/components/sales-stats/TrialsTab.tsx +++ b/src/components/sales-stats/TrialsTab.tsx @@ -42,7 +42,7 @@ export function TrialsTab({ params }: TrialsTabProps) { } if (isError || !data) { - return
{t('admin.salesStats.loadError')}
; + return
{t('admin.salesStats.loadError')}
; } const pieData = data.by_provider.map((item) => ({ diff --git a/src/components/subscription/SubscriptionListCard.tsx b/src/components/subscription/SubscriptionListCard.tsx index 48315af..827049c 100644 --- a/src/components/subscription/SubscriptionListCard.tsx +++ b/src/components/subscription/SubscriptionListCard.tsx @@ -45,7 +45,7 @@ function StatusBadge({ ? 'bg-emerald-400/15 text-emerald-400 border-emerald-400/20' : isLimited ? 'bg-amber-400/15 text-amber-400 border-amber-400/20' - : 'bg-red-400/15 text-red-400 border-red-400/20'; + : 'bg-error-400/15 text-error-400 border-error-400/20'; const label = isActive ? t('subscription.statusActive', 'Активна') @@ -96,7 +96,11 @@ export default function SubscriptionListCard({ ? Math.min(100, (trafficUsed / trafficLimit) * 100) : 0; const trafficColor = - trafficPercent >= 90 ? 'bg-red-400' : trafficPercent >= 70 ? 'bg-amber-400' : 'bg-emerald-400'; + trafficPercent >= 90 + ? 'bg-error-400' + : trafficPercent >= 70 + ? 'bg-amber-400' + : 'bg-emerald-400'; const isLimitedStatus = subscription.status === 'limited'; @@ -207,7 +211,7 @@ export default function SubscriptionListCard({ : t('subscription.autopay', 'Автопродление'); return ( = { success: 'bg-success-500/20 text-success-400', - denied: 'bg-red-500/20 text-red-400', + denied: 'bg-error-500/20 text-error-400', error: 'bg-amber-500/20 text-amber-400', }; @@ -212,7 +212,7 @@ function MethodBadge({ method }: MethodBadgeProps) { POST: 'bg-success-500/20 text-success-400', PUT: 'bg-amber-500/20 text-amber-400', PATCH: 'bg-amber-500/20 text-amber-400', - DELETE: 'bg-red-500/20 text-red-400', + DELETE: 'bg-error-500/20 text-error-400', }; return ( diff --git a/src/pages/AdminPayments.tsx b/src/pages/AdminPayments.tsx index 174435d..7a26dca 100644 --- a/src/pages/AdminPayments.tsx +++ b/src/pages/AdminPayments.tsx @@ -50,7 +50,7 @@ function StatusBadge({ status }: StatusBadgeProps) { const styles: Record = { paid: 'bg-green-500/20 text-green-400', pending: 'bg-amber-500/20 text-amber-400', - cancelled: 'bg-red-500/20 text-red-400', + cancelled: 'bg-error-500/20 text-error-400', }; const normalized = status.toLowerCase(); @@ -78,7 +78,7 @@ function StatCard({ label, value, color, isActive, onClick }: StatCardProps) { blue: 'border-accent-500/30 bg-accent-500/20 text-accent-400', amber: 'border-amber-500/30 bg-amber-500/20 text-amber-400', green: 'border-green-500/30 bg-green-500/20 text-green-400', - red: 'border-red-500/30 bg-red-500/20 text-red-400', + red: 'border-error-500/30 bg-error-500/20 text-error-400', }; return ( @@ -597,7 +597,7 @@ export default function AdminPayments() { {checkPaymentMutation.isError && checkPaymentMutation.variables?.paymentId === payment.id && checkPaymentMutation.variables?.method === payment.method && ( -
+
{t('admin.payments.checkError')}
)} diff --git a/src/pages/AdminPolicies.tsx b/src/pages/AdminPolicies.tsx index 3f6cd2c..f01d622 100644 --- a/src/pages/AdminPolicies.tsx +++ b/src/pages/AdminPolicies.tsx @@ -141,7 +141,7 @@ function EffectBadge({ effect, className }: EffectBadgeProps) { className={`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold ${ isAllow ? 'border-success-500/30 bg-success-500/10 text-success-400' - : 'border-red-500/30 bg-red-500/10 text-red-400' + : 'border-error-500/30 bg-error-500/10 text-error-400' } ${className ?? ''}`} > {isAllow ? t('admin.policies.effectAllow') : t('admin.policies.effectDeny')} @@ -331,7 +331,7 @@ export default function AdminPolicies() {
{t('admin.policies.stats.allow')}
-
+
{sortedPolicies.filter((p) => p.effect === 'deny').length}
{t('admin.policies.stats.deny')}
diff --git a/src/pages/AdminPolicyEdit.tsx b/src/pages/AdminPolicyEdit.tsx index 7a105a6..dc2b710 100644 --- a/src/pages/AdminPolicyEdit.tsx +++ b/src/pages/AdminPolicyEdit.tsx @@ -455,7 +455,7 @@ export default function AdminPolicyEdit() { onClick={() => setFormData((prev) => ({ ...prev, effect: 'deny' }))} className={`flex-1 rounded-lg border px-3 py-2 text-sm font-medium transition-colors ${ formData.effect === 'deny' - ? 'border-red-500/50 bg-red-500/10 text-red-400' + ? 'border-error-500/50 bg-error-500/10 text-error-400' : 'border-dark-600 bg-dark-900 text-dark-400 hover:border-dark-500' }`} > diff --git a/src/pages/AdminTickets.tsx b/src/pages/AdminTickets.tsx index 7e05e73..91dc570 100644 --- a/src/pages/AdminTickets.tsx +++ b/src/pages/AdminTickets.tsx @@ -595,14 +595,14 @@ export default function AdminTickets() {
)} {att.error && ( -
- ! +
+ !
)} {revokeMutation.error && ( -

{getErrorMessage(revokeMutation.error)}

+

{getErrorMessage(revokeMutation.error)}

)}
)} diff --git a/src/pages/Support.tsx b/src/pages/Support.tsx index 90e5cd6..a6b7fcb 100644 --- a/src/pages/Support.tsx +++ b/src/pages/Support.tsx @@ -350,14 +350,14 @@ export default function Support() {
)} {att.error && ( -
- ! +
+ !
)} diff --git a/src/pages/TelegramCallback.tsx b/src/pages/TelegramCallback.tsx index c483e3f..e2153c0 100644 --- a/src/pages/TelegramCallback.tsx +++ b/src/pages/TelegramCallback.tsx @@ -66,7 +66,7 @@ export default function TelegramCallback() { return (
-
+

{t('auth.loginFailed')}

{error}