feat(admin-ui): catalog refresh + token migration (Stage 3.2)

This commit is contained in:
Александр Зимин
2026-05-11 09:08:38 +00:00
parent 3e19fd2cf9
commit 6db2a0c345
24 changed files with 289 additions and 273 deletions
@@ -119,7 +119,7 @@ export const CascadeConfirmDialog = ({
{plan && (
<>
{/* Header summary */}
<p className="text-sm text-carbon">
<p className="text-sm text-ink">
{hasBlockers
? t('cascade.summary.blocked', {
blockers: plan.blockers.length,
@@ -144,16 +144,16 @@ export const CascadeConfirmDialog = ({
<span className="font-mono">
{b.sourceDict}/{b.businessKey}
</span>
<span className="text-carbon/60">.{b.sourceField}</span>
<span className="text-mute">.{b.sourceField}</span>
</li>
))}
{plan.blockers.length > 5 && (
<li className="text-carbon/60">
<li className="text-mute">
{t('cascade.blockers.more', { count: plan.blockers.length - 5 })}
</li>
)}
</ul>
<p className="mt-2 text-2xs text-carbon/70">
<p className="mt-2 text-2xs text-ink-2">
{t('cascade.blockers.resolveFirst')}
</p>
</Alert>
@@ -164,7 +164,7 @@ export const CascadeConfirmDialog = ({
<section className="space-y-2">
<div className="flex items-center gap-2">
<WarningIcon weight="bold" size={14} className="text-horizon" />
<h4 className="text-sm font-primary">
<h4 className="text-sm font-sans">
{t('cascade.cascade.title', { count: plan.cascade.length })}
</h4>
</div>
@@ -176,13 +176,13 @@ export const CascadeConfirmDialog = ({
return (
<li
key={key}
className="border border-regolith rounded-sm px-3 py-2 text-2xs"
className="border border-line rounded-sm px-3 py-2 text-2xs"
>
<div className="flex items-center gap-2 mb-1">
<span className="font-mono text-ultramarain">
<span className="font-mono text-accent">
{first.sourceDisplayName ?? first.sourceDict}
</span>
<span className="font-mono text-carbon/70">
<span className="font-mono text-ink-2">
.{first.sourceField}
</span>
<Badge variant={onCloseVariant(first.onClose)}>
@@ -190,14 +190,14 @@ export const CascadeConfirmDialog = ({
</Badge>
<Badge variant="neutral">{entries.length}</Badge>
</div>
<ul className="text-2xs text-carbon/70 ml-1 space-y-0.5">
<ul className="text-2xs text-ink-2 ml-1 space-y-0.5">
{sample.map((e) => (
<li key={e.recordId} className="font-mono">
· {e.businessKey}
</li>
))}
{overflow > 0 && (
<li className="text-carbon/50">
<li className="text-mute">
{t('cascade.cascade.more', { count: overflow })}
</li>
)}
@@ -224,7 +224,7 @@ export const CascadeConfirmDialog = ({
<div>
<label
htmlFor="cascade-reason"
className="text-2xs text-carbon/70 uppercase tracking-label"
className="text-2xs text-ink-2 uppercase tracking-[0.10em]"
>
{t('cascade.reason.label')}
</label>
@@ -242,7 +242,7 @@ export const CascadeConfirmDialog = ({
<div>
<label
htmlFor="cascade-confirm"
className="text-2xs text-carbon/70 uppercase tracking-label"
className="text-2xs text-ink-2 uppercase tracking-[0.10em]"
>
{t('cascade.confirmGate.label', { word: 'CONFIRM' })}
</label>
@@ -264,7 +264,7 @@ export const CascadeConfirmDialog = ({
)}
{/* Footer actions */}
<div className="flex items-center justify-end gap-2 pt-2 border-t border-regolith">
<div className="flex items-center justify-end gap-2 pt-2 border-t border-line">
<Button
variant="secondary"
onClick={onClose}