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:
@@ -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',
|
||||
};
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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',
|
||||
};
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user