mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
refactor(theming): replace amber-* with warning-* tokens
Sweep all amber-N color classes to warning-N (uniformly pending/warning semantics). Yellow and orange left for per-file review (mixed Stars brand + semantic uses).
This commit is contained in:
@@ -268,7 +268,7 @@ export default function PromoOffersSection({ className = '' }: PromoOffersSectio
|
|||||||
className="card border-orange-500/30 bg-gradient-to-br from-orange-500/5 to-transparent transition-colors hover:border-orange-500/50"
|
className="card border-orange-500/30 bg-gradient-to-br from-orange-500/5 to-transparent transition-colors hover:border-orange-500/50"
|
||||||
>
|
>
|
||||||
<div className="flex items-start gap-4">
|
<div className="flex items-start gap-4">
|
||||||
<div className="flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-orange-500/30 to-amber-500/20">
|
<div className="flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-orange-500/30 to-warning-500/20">
|
||||||
{getOfferIcon(offer.effect_type, offer.discount_percent)}
|
{getOfferIcon(offer.effect_type, offer.discount_percent)}
|
||||||
</div>
|
</div>
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
@@ -291,7 +291,7 @@ export default function PromoOffersSection({ className = '' }: PromoOffersSectio
|
|||||||
<button
|
<button
|
||||||
onClick={() => handleClaim(offer.id)}
|
onClick={() => handleClaim(offer.id)}
|
||||||
disabled={claimingId === offer.id}
|
disabled={claimingId === offer.id}
|
||||||
className="group relative flex w-full items-center justify-center gap-2 overflow-hidden rounded-lg bg-gradient-to-r from-orange-500 to-amber-500 px-5 py-2.5 text-sm font-semibold text-white shadow-lg shadow-orange-500/25 transition-all hover:scale-105 hover:shadow-xl hover:shadow-orange-500/30 active:scale-100 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:scale-100 sm:w-auto"
|
className="group relative flex w-full items-center justify-center gap-2 overflow-hidden rounded-lg bg-gradient-to-r from-orange-500 to-warning-500 px-5 py-2.5 text-sm font-semibold text-white shadow-lg shadow-orange-500/25 transition-all hover:scale-105 hover:shadow-xl hover:shadow-orange-500/30 active:scale-100 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:scale-100 sm:w-auto"
|
||||||
>
|
>
|
||||||
{/* Shimmer effect */}
|
{/* Shimmer effect */}
|
||||||
<span className="absolute inset-0 -translate-x-full bg-gradient-to-r from-transparent via-white/20 to-transparent transition-transform duration-1000 group-hover:translate-x-full" />
|
<span className="absolute inset-0 -translate-x-full bg-gradient-to-r from-transparent via-white/20 to-transparent transition-transform duration-1000 group-hover:translate-x-full" />
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export function SettingsTableRow({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{setting.read_only && (
|
{setting.read_only && (
|
||||||
<span className="flex items-center gap-0.5 rounded-full bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-medium leading-none text-amber-400">
|
<span className="flex items-center gap-0.5 rounded-full bg-warning-500/15 px-1.5 py-0.5 text-[10px] font-medium leading-none text-warning-400">
|
||||||
{t('admin.settings.badgeEnv')}
|
{t('admin.settings.badgeEnv')}
|
||||||
<LockIcon className="h-3 w-3" />
|
<LockIcon className="h-3 w-3" />
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export default function AccountDeletedScreen() {
|
|||||||
<div className="mb-8">
|
<div className="mb-8">
|
||||||
<div className="mx-auto flex h-24 w-24 items-center justify-center rounded-full bg-dark-800">
|
<div className="mx-auto flex h-24 w-24 items-center justify-center rounded-full bg-dark-800">
|
||||||
<svg
|
<svg
|
||||||
className="h-12 w-12 text-amber-400"
|
className="h-12 w-12 text-warning-400"
|
||||||
fill="none"
|
fill="none"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export default function MaintenanceScreen() {
|
|||||||
<div className="mb-8">
|
<div className="mb-8">
|
||||||
<div className="mx-auto flex h-24 w-24 items-center justify-center rounded-full bg-dark-800">
|
<div className="mx-auto flex h-24 w-24 items-center justify-center rounded-full bg-dark-800">
|
||||||
<svg
|
<svg
|
||||||
className="h-12 w-12 text-amber-500"
|
className="h-12 w-12 text-warning-500"
|
||||||
fill="none"
|
fill="none"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
@@ -57,15 +57,15 @@ export default function MaintenanceScreen() {
|
|||||||
{/* Decorative dots */}
|
{/* Decorative dots */}
|
||||||
<div className="mt-8 flex items-center justify-center gap-2">
|
<div className="mt-8 flex items-center justify-center gap-2">
|
||||||
<div
|
<div
|
||||||
className="h-2 w-2 animate-pulse rounded-full bg-amber-500"
|
className="h-2 w-2 animate-pulse rounded-full bg-warning-500"
|
||||||
style={{ animationDelay: '0ms' }}
|
style={{ animationDelay: '0ms' }}
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
className="h-2 w-2 animate-pulse rounded-full bg-amber-500"
|
className="h-2 w-2 animate-pulse rounded-full bg-warning-500"
|
||||||
style={{ animationDelay: '300ms' }}
|
style={{ animationDelay: '300ms' }}
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
className="h-2 w-2 animate-pulse rounded-full bg-amber-500"
|
className="h-2 w-2 animate-pulse rounded-full bg-warning-500"
|
||||||
style={{ animationDelay: '600ms' }}
|
style={{ animationDelay: '600ms' }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ export default function InstallationGuide({
|
|||||||
: 'border border-dark-700/50 bg-dark-800/80 text-dark-200 hover:border-dark-600/50 hover:bg-dark-700/80'
|
: 'border border-dark-700/50 bg-dark-800/80 text-dark-200 hover:border-dark-600/50 hover:bg-dark-700/80'
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{app.featured && <span className="h-2 w-2 shrink-0 rounded-full bg-amber-400" />}
|
{app.featured && <span className="h-2 w-2 shrink-0 rounded-full bg-warning-400" />}
|
||||||
<span className="relative z-10 truncate">{app.name}</span>
|
<span className="relative z-10 truncate">{app.name}</span>
|
||||||
{appIconSvg && (
|
{appIconSvg && (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function StatusBadge({
|
|||||||
|
|
||||||
if (isTrial) {
|
if (isTrial) {
|
||||||
return (
|
return (
|
||||||
<span className="inline-flex items-center gap-1 rounded-full border border-amber-400/25 bg-amber-400/10 px-2 py-0.5 text-[10px] font-semibold text-amber-400">
|
<span className="inline-flex items-center gap-1 rounded-full border border-warning-400/25 bg-warning-400/10 px-2 py-0.5 text-[10px] font-semibold text-warning-400">
|
||||||
<svg className="h-2.5 w-2.5" viewBox="0 0 24 24" fill="currentColor">
|
<svg className="h-2.5 w-2.5" viewBox="0 0 24 24" fill="currentColor">
|
||||||
<path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z" />
|
<path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z" />
|
||||||
</svg>
|
</svg>
|
||||||
@@ -44,7 +44,7 @@ function StatusBadge({
|
|||||||
const color = isActive
|
const color = isActive
|
||||||
? 'bg-success-400/15 text-success-400 border-success-400/20'
|
? 'bg-success-400/15 text-success-400 border-success-400/20'
|
||||||
: isLimited
|
: isLimited
|
||||||
? 'bg-amber-400/15 text-amber-400 border-amber-400/20'
|
? 'bg-warning-400/15 text-warning-400 border-warning-400/20'
|
||||||
: 'bg-error-400/15 text-error-400 border-error-400/20';
|
: 'bg-error-400/15 text-error-400 border-error-400/20';
|
||||||
|
|
||||||
const label = isActive
|
const label = isActive
|
||||||
@@ -99,7 +99,7 @@ export default function SubscriptionListCard({
|
|||||||
trafficPercent >= 90
|
trafficPercent >= 90
|
||||||
? 'bg-error-400'
|
? 'bg-error-400'
|
||||||
: trafficPercent >= 70
|
: trafficPercent >= 70
|
||||||
? 'bg-amber-400'
|
? 'bg-warning-400'
|
||||||
: 'bg-success-400';
|
: 'bg-success-400';
|
||||||
|
|
||||||
const isLimitedStatus = subscription.status === 'limited';
|
const isLimitedStatus = subscription.status === 'limited';
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ function StatusBadge({ status, label }: StatusBadgeProps) {
|
|||||||
const colorMap: Record<string, string> = {
|
const colorMap: Record<string, string> = {
|
||||||
success: 'bg-success-500/20 text-success-400',
|
success: 'bg-success-500/20 text-success-400',
|
||||||
denied: 'bg-error-500/20 text-error-400',
|
denied: 'bg-error-500/20 text-error-400',
|
||||||
error: 'bg-amber-500/20 text-amber-400',
|
error: 'bg-warning-500/20 text-warning-400',
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -210,8 +210,8 @@ function MethodBadge({ method }: MethodBadgeProps) {
|
|||||||
const colorMap: Record<string, string> = {
|
const colorMap: Record<string, string> = {
|
||||||
GET: 'bg-blue-500/20 text-blue-400',
|
GET: 'bg-blue-500/20 text-blue-400',
|
||||||
POST: 'bg-success-500/20 text-success-400',
|
POST: 'bg-success-500/20 text-success-400',
|
||||||
PUT: 'bg-amber-500/20 text-amber-400',
|
PUT: 'bg-warning-500/20 text-warning-400',
|
||||||
PATCH: 'bg-amber-500/20 text-amber-400',
|
PATCH: 'bg-warning-500/20 text-warning-400',
|
||||||
DELETE: 'bg-error-500/20 text-error-400',
|
DELETE: 'bg-error-500/20 text-error-400',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -170,14 +170,18 @@ function SubscriptionSubRow({
|
|||||||
|
|
||||||
const days = subscription.days_remaining;
|
const days = subscription.days_remaining;
|
||||||
const daysColor =
|
const daysColor =
|
||||||
days === 0 ? 'text-error-400' : days <= 7 ? 'text-amber-400' : 'text-success-400';
|
days === 0 ? 'text-error-400' : days <= 7 ? 'text-warning-400' : 'text-success-400';
|
||||||
|
|
||||||
const trafficPercent =
|
const trafficPercent =
|
||||||
subscription.traffic_limit_gb > 0
|
subscription.traffic_limit_gb > 0
|
||||||
? Math.min(100, (subscription.traffic_used_gb / subscription.traffic_limit_gb) * 100)
|
? Math.min(100, (subscription.traffic_used_gb / subscription.traffic_limit_gb) * 100)
|
||||||
: 0;
|
: 0;
|
||||||
const trafficBarColor =
|
const trafficBarColor =
|
||||||
trafficPercent >= 90 ? 'bg-error-400' : trafficPercent >= 70 ? 'bg-amber-400' : 'bg-accent-400';
|
trafficPercent >= 90
|
||||||
|
? 'bg-error-400'
|
||||||
|
: trafficPercent >= 70
|
||||||
|
? 'bg-warning-400'
|
||||||
|
: 'bg-accent-400';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<tr
|
<tr
|
||||||
@@ -308,11 +312,11 @@ function StatusBadge({ status }: { status: string | null }) {
|
|||||||
labelKey: 'admin.bulkActions.statuses.expired',
|
labelKey: 'admin.bulkActions.statuses.expired',
|
||||||
},
|
},
|
||||||
trial: {
|
trial: {
|
||||||
class: 'border-amber-500/30 bg-amber-500/15 text-amber-400',
|
class: 'border-warning-500/30 bg-warning-500/15 text-warning-400',
|
||||||
labelKey: 'admin.bulkActions.statuses.trial',
|
labelKey: 'admin.bulkActions.statuses.trial',
|
||||||
},
|
},
|
||||||
limited: {
|
limited: {
|
||||||
class: 'border-amber-500/30 bg-amber-500/15 text-amber-400',
|
class: 'border-warning-500/30 bg-warning-500/15 text-warning-400',
|
||||||
labelKey: 'admin.bulkActions.statuses.limited',
|
labelKey: 'admin.bulkActions.statuses.limited',
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
@@ -1007,8 +1011,8 @@ function ActionModal({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/* Warning about users with existing subscriptions */}
|
{/* Warning about users with existing subscriptions */}
|
||||||
<div className="rounded-xl border border-amber-500/20 bg-amber-500/5 px-3 py-2.5">
|
<div className="rounded-xl border border-warning-500/20 bg-warning-500/5 px-3 py-2.5">
|
||||||
<p className="text-xs text-amber-400">
|
<p className="text-xs text-warning-400">
|
||||||
{t('admin.bulkActions.grantSubscription.warning')}
|
{t('admin.bulkActions.grantSubscription.warning')}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -1029,8 +1033,8 @@ function ActionModal({
|
|||||||
</div>
|
</div>
|
||||||
{activePaidCount > 0 && (
|
{activePaidCount > 0 && (
|
||||||
<>
|
<>
|
||||||
<div className="rounded-xl border border-amber-500/20 bg-amber-500/5 px-3 py-2.5">
|
<div className="rounded-xl border border-warning-500/20 bg-warning-500/5 px-3 py-2.5">
|
||||||
<p className="text-sm font-medium text-amber-400">
|
<p className="text-sm font-medium text-warning-400">
|
||||||
{t('admin.bulkActions.deleteSubscription.activePaidWarning', {
|
{t('admin.bulkActions.deleteSubscription.activePaidWarning', {
|
||||||
count: activePaidCount,
|
count: activePaidCount,
|
||||||
total: totalSelected,
|
total: totalSelected,
|
||||||
@@ -2309,15 +2313,15 @@ export default function AdminBulkActions() {
|
|||||||
className={cn(
|
className={cn(
|
||||||
'flex h-5 w-5 items-center justify-center rounded-md border-2 transition-all duration-150',
|
'flex h-5 w-5 items-center justify-center rounded-md border-2 transition-all duration-150',
|
||||||
trialOnly
|
trialOnly
|
||||||
? 'border-amber-500 bg-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.4)]'
|
? 'border-warning-500 bg-warning-500 shadow-[0_0_8px_rgba(245,158,11,0.4)]'
|
||||||
: 'border-dark-500 bg-dark-700/60 hover:border-amber-500/50 hover:bg-dark-600/60',
|
: 'border-dark-500 bg-dark-700/60 hover:border-warning-500/50 hover:bg-dark-600/60',
|
||||||
)}
|
)}
|
||||||
aria-pressed={trialOnly}
|
aria-pressed={trialOnly}
|
||||||
>
|
>
|
||||||
{trialOnly && <CheckIcon />}
|
{trialOnly && <CheckIcon />}
|
||||||
</button>
|
</button>
|
||||||
<span
|
<span
|
||||||
className={cn('text-sm', trialOnly ? 'font-medium text-amber-400' : 'text-dark-400')}
|
className={cn('text-sm', trialOnly ? 'font-medium text-warning-400' : 'text-dark-400')}
|
||||||
>
|
>
|
||||||
{t('admin.bulkActions.filters.trialOnly')}
|
{t('admin.bulkActions.filters.trialOnly')}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -587,7 +587,7 @@ export default function AdminLandingStats() {
|
|||||||
{day.label}
|
{day.label}
|
||||||
</span>
|
</span>
|
||||||
<div
|
<div
|
||||||
className="group relative h-5 flex-1 overflow-hidden rounded-full bg-amber-500/80"
|
className="group relative h-5 flex-1 overflow-hidden rounded-full bg-warning-500/80"
|
||||||
title={`${t('admin.landings.stats.created', 'Created')}: ${day.created || 0}\n${t('admin.landings.stats.paid', 'paid')}: ${day.purchases || 0}\n${t('admin.landings.stats.revenueLabel', 'Revenue')}: ${day.revenue?.toFixed(0) || 0} ${t('common.currency', '\u20BD')}\nCR: ${Math.round(purchasedPct)}%`}
|
title={`${t('admin.landings.stats.created', 'Created')}: ${day.created || 0}\n${t('admin.landings.stats.paid', 'paid')}: ${day.purchases || 0}\n${t('admin.landings.stats.revenueLabel', 'Revenue')}: ${day.revenue?.toFixed(0) || 0} ${t('common.currency', '\u20BD')}\nCR: ${Math.round(purchasedPct)}%`}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -596,7 +596,7 @@ export default function AdminLandingStats() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span className="w-12 shrink-0 text-xs text-dark-400">
|
<span className="w-12 shrink-0 text-xs text-dark-400">
|
||||||
<span className="text-amber-400">{day.created || 0}</span>
|
<span className="text-warning-400">{day.created || 0}</span>
|
||||||
<span className="text-dark-600">/</span>
|
<span className="text-dark-600">/</span>
|
||||||
<span className="text-accent-400">{day.purchases || 0}</span>
|
<span className="text-accent-400">{day.purchases || 0}</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -605,7 +605,7 @@ export default function AdminLandingStats() {
|
|||||||
})}
|
})}
|
||||||
<div className="mt-2 flex items-center gap-4 text-xs text-dark-500">
|
<div className="mt-2 flex items-center gap-4 text-xs text-dark-500">
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
<div className="h-2 w-2 rounded-full bg-amber-500/80" />
|
<div className="h-2 w-2 rounded-full bg-warning-500/80" />
|
||||||
<span>{t('admin.landings.stats.created', 'Created')}</span>
|
<span>{t('admin.landings.stats.created', 'Created')}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ interface StatusBadgeProps {
|
|||||||
function StatusBadge({ status }: StatusBadgeProps) {
|
function StatusBadge({ status }: StatusBadgeProps) {
|
||||||
const styles: Record<string, string> = {
|
const styles: Record<string, string> = {
|
||||||
paid: 'bg-success-500/20 text-success-400',
|
paid: 'bg-success-500/20 text-success-400',
|
||||||
pending: 'bg-amber-500/20 text-amber-400',
|
pending: 'bg-warning-500/20 text-warning-400',
|
||||||
cancelled: 'bg-error-500/20 text-error-400',
|
cancelled: 'bg-error-500/20 text-error-400',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ interface StatCardProps {
|
|||||||
function StatCard({ label, value, color, isActive, onClick }: StatCardProps) {
|
function StatCard({ label, value, color, isActive, onClick }: StatCardProps) {
|
||||||
const colors: Record<string, string> = {
|
const colors: Record<string, string> = {
|
||||||
blue: 'border-accent-500/30 bg-accent-500/20 text-accent-400',
|
blue: 'border-accent-500/30 bg-accent-500/20 text-accent-400',
|
||||||
amber: 'border-amber-500/30 bg-amber-500/20 text-amber-400',
|
amber: 'border-warning-500/30 bg-warning-500/20 text-warning-400',
|
||||||
green: 'border-success-500/30 bg-success-500/20 text-success-400',
|
green: 'border-success-500/30 bg-success-500/20 text-success-400',
|
||||||
red: 'border-error-500/30 bg-error-500/20 text-error-400',
|
red: 'border-error-500/30 bg-error-500/20 text-error-400',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -175,8 +175,8 @@ function VersionBadge({ hasUpdate }: { hasUpdate: boolean }) {
|
|||||||
|
|
||||||
if (hasUpdate) {
|
if (hasUpdate) {
|
||||||
return (
|
return (
|
||||||
<span className="inline-flex items-center gap-1 rounded-full bg-amber-500/20 px-2.5 py-0.5 text-xs font-medium text-amber-400">
|
<span className="inline-flex items-center gap-1 rounded-full bg-warning-500/20 px-2.5 py-0.5 text-xs font-medium text-warning-400">
|
||||||
<span className="h-1.5 w-1.5 animate-pulse rounded-full bg-amber-400" />
|
<span className="h-1.5 w-1.5 animate-pulse rounded-full bg-warning-400" />
|
||||||
{t('adminUpdates.updateAvailable')}
|
{t('adminUpdates.updateAvailable')}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1704,8 +1704,8 @@ export default function AdminUserDetail() {
|
|||||||
disabled={actionLoading}
|
disabled={actionLoading}
|
||||||
className={`rounded-lg px-3 py-2 text-sm font-medium transition-all disabled:opacity-50 ${
|
className={`rounded-lg px-3 py-2 text-sm font-medium transition-all disabled:opacity-50 ${
|
||||||
confirmingAction === 'resetSubscription'
|
confirmingAction === 'resetSubscription'
|
||||||
? 'bg-amber-500 text-white'
|
? 'bg-warning-500 text-white'
|
||||||
: 'bg-amber-500/15 text-amber-400 hover:bg-amber-500/25'
|
: 'bg-warning-500/15 text-warning-400 hover:bg-warning-500/25'
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{confirmingAction === 'resetSubscription'
|
{confirmingAction === 'resetSubscription'
|
||||||
|
|||||||
@@ -2344,11 +2344,11 @@ export default function Subscription() {
|
|||||||
<button
|
<button
|
||||||
onClick={handleRevoke}
|
onClick={handleRevoke}
|
||||||
disabled={revokeMutation.isPending || revokeCooldown > 0}
|
disabled={revokeMutation.isPending || revokeCooldown > 0}
|
||||||
className="w-full rounded-xl border border-amber-500/30 bg-amber-500/10 p-4 text-left transition-colors hover:bg-amber-500/20 disabled:opacity-50"
|
className="w-full rounded-xl border border-warning-500/30 bg-warning-500/10 p-4 text-left transition-colors hover:bg-warning-500/20 disabled:opacity-50"
|
||||||
>
|
>
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div>
|
<div>
|
||||||
<div className="font-medium text-amber-400">
|
<div className="font-medium text-warning-400">
|
||||||
{t('subscription.revoke.button')}
|
{t('subscription.revoke.button')}
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-1 text-sm text-dark-400">
|
<div className="mt-1 text-sm text-dark-400">
|
||||||
@@ -2360,9 +2360,9 @@ export default function Subscription() {
|
|||||||
: t('subscription.revoke.description')}
|
: t('subscription.revoke.description')}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-amber-400">
|
<div className="text-warning-400">
|
||||||
{revokeMutation.isPending ? (
|
{revokeMutation.isPending ? (
|
||||||
<div className="h-5 w-5 animate-spin rounded-full border-2 border-amber-400/30 border-t-amber-400" />
|
<div className="h-5 w-5 animate-spin rounded-full border-2 border-warning-400/30 border-t-amber-400" />
|
||||||
) : (
|
) : (
|
||||||
<svg
|
<svg
|
||||||
className="h-5 w-5"
|
className="h-5 w-5"
|
||||||
|
|||||||
@@ -1207,8 +1207,8 @@ export default function SubscriptionPurchase() {
|
|||||||
selectedTariff.custom_days_enabled &&
|
selectedTariff.custom_days_enabled &&
|
||||||
(selectedTariff.price_per_day_kopeks ?? 0) > 0
|
(selectedTariff.price_per_day_kopeks ?? 0) > 0
|
||||||
) && (
|
) && (
|
||||||
<div className="rounded-xl border border-amber-500/30 bg-amber-500/10 p-4 text-center">
|
<div className="rounded-xl border border-warning-500/30 bg-warning-500/10 p-4 text-center">
|
||||||
<div className="mb-2 text-sm font-medium text-amber-400">
|
<div className="mb-2 text-sm font-medium text-warning-400">
|
||||||
{t('subscription.noPeriodsAvailable')}
|
{t('subscription.noPeriodsAvailable')}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-xs text-dark-400">
|
<div className="text-xs text-dark-400">
|
||||||
|
|||||||
Reference in New Issue
Block a user