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:
c0mrade
2026-05-26 11:10:50 +03:00
parent cb7693e3ff
commit bd8a4fad6e
14 changed files with 45 additions and 41 deletions

View File

@@ -190,7 +190,7 @@ function StatusBadge({ status, label }: StatusBadgeProps) {
const colorMap: Record<string, string> = {
success: 'bg-success-500/20 text-success-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 (
@@ -210,8 +210,8 @@ function MethodBadge({ method }: MethodBadgeProps) {
const colorMap: Record<string, string> = {
GET: 'bg-blue-500/20 text-blue-400',
POST: 'bg-success-500/20 text-success-400',
PUT: 'bg-amber-500/20 text-amber-400',
PATCH: 'bg-amber-500/20 text-amber-400',
PUT: 'bg-warning-500/20 text-warning-400',
PATCH: 'bg-warning-500/20 text-warning-400',
DELETE: 'bg-error-500/20 text-error-400',
};

View File

@@ -170,14 +170,18 @@ function SubscriptionSubRow({
const days = subscription.days_remaining;
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 =
subscription.traffic_limit_gb > 0
? Math.min(100, (subscription.traffic_used_gb / subscription.traffic_limit_gb) * 100)
: 0;
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 (
<tr
@@ -308,11 +312,11 @@ function StatusBadge({ status }: { status: string | null }) {
labelKey: 'admin.bulkActions.statuses.expired',
},
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',
},
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',
},
disabled: {
@@ -1007,8 +1011,8 @@ function ActionModal({
/>
</div>
{/* Warning about users with existing subscriptions */}
<div className="rounded-xl border border-amber-500/20 bg-amber-500/5 px-3 py-2.5">
<p className="text-xs text-amber-400">
<div className="rounded-xl border border-warning-500/20 bg-warning-500/5 px-3 py-2.5">
<p className="text-xs text-warning-400">
{t('admin.bulkActions.grantSubscription.warning')}
</p>
</div>
@@ -1029,8 +1033,8 @@ function ActionModal({
</div>
{activePaidCount > 0 && (
<>
<div className="rounded-xl border border-amber-500/20 bg-amber-500/5 px-3 py-2.5">
<p className="text-sm font-medium text-amber-400">
<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-warning-400">
{t('admin.bulkActions.deleteSubscription.activePaidWarning', {
count: activePaidCount,
total: totalSelected,
@@ -2309,15 +2313,15 @@ export default function AdminBulkActions() {
className={cn(
'flex h-5 w-5 items-center justify-center rounded-md border-2 transition-all duration-150',
trialOnly
? 'border-amber-500 bg-amber-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-warning-500 bg-warning-500 shadow-[0_0_8px_rgba(245,158,11,0.4)]'
: 'border-dark-500 bg-dark-700/60 hover:border-warning-500/50 hover:bg-dark-600/60',
)}
aria-pressed={trialOnly}
>
{trialOnly && <CheckIcon />}
</button>
<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')}
</span>

View File

@@ -587,7 +587,7 @@ export default function AdminLandingStats() {
{day.label}
</span>
<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)}%`}
>
<div
@@ -596,7 +596,7 @@ export default function AdminLandingStats() {
/>
</div>
<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-accent-400">{day.purchases || 0}</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="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>
</div>
<div className="flex items-center gap-1">

View File

@@ -49,7 +49,7 @@ interface StatusBadgeProps {
function StatusBadge({ status }: StatusBadgeProps) {
const styles: Record<string, string> = {
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',
};
@@ -76,7 +76,7 @@ interface StatCardProps {
function StatCard({ label, value, color, isActive, onClick }: StatCardProps) {
const colors: Record<string, string> = {
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',
red: 'border-error-500/30 bg-error-500/20 text-error-400',
};

View File

@@ -175,8 +175,8 @@ function VersionBadge({ hasUpdate }: { hasUpdate: boolean }) {
if (hasUpdate) {
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="h-1.5 w-1.5 animate-pulse rounded-full bg-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-warning-400" />
{t('adminUpdates.updateAvailable')}
</span>
);

View File

@@ -1704,8 +1704,8 @@ export default function AdminUserDetail() {
disabled={actionLoading}
className={`rounded-lg px-3 py-2 text-sm font-medium transition-all disabled:opacity-50 ${
confirmingAction === 'resetSubscription'
? 'bg-amber-500 text-white'
: 'bg-amber-500/15 text-amber-400 hover:bg-amber-500/25'
? 'bg-warning-500 text-white'
: 'bg-warning-500/15 text-warning-400 hover:bg-warning-500/25'
}`}
>
{confirmingAction === 'resetSubscription'

View File

@@ -2344,11 +2344,11 @@ export default function Subscription() {
<button
onClick={handleRevoke}
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>
<div className="font-medium text-amber-400">
<div className="font-medium text-warning-400">
{t('subscription.revoke.button')}
</div>
<div className="mt-1 text-sm text-dark-400">
@@ -2360,9 +2360,9 @@ export default function Subscription() {
: t('subscription.revoke.description')}
</div>
</div>
<div className="text-amber-400">
<div className="text-warning-400">
{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
className="h-5 w-5"

View File

@@ -1207,8 +1207,8 @@ export default function SubscriptionPurchase() {
selectedTariff.custom_days_enabled &&
(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="mb-2 text-sm font-medium text-amber-400">
<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-warning-400">
{t('subscription.noPeriodsAvailable')}
</div>
<div className="text-xs text-dark-400">