feat(admin-ui): catalog refresh + token migration (Stage 3.2)
This commit is contained in:
@@ -115,7 +115,7 @@ function WebhookDetailPage() {
|
||||
<div className="space-y-6">
|
||||
<PageHeader
|
||||
breadcrumb={
|
||||
<Link to="/webhooks" className="text-sm text-carbon/70 hover:text-ultramarain">
|
||||
<Link to="/webhooks" className="text-sm text-ink-2 hover:text-accent">
|
||||
← {t('nav.webhooks')}
|
||||
</Link>
|
||||
}
|
||||
@@ -169,7 +169,7 @@ function WebhookDetailPage() {
|
||||
{data.scopeFilter.map((s) => (
|
||||
<span
|
||||
key={s}
|
||||
className="inline-flex items-center gap-1 text-2xs uppercase tracking-label"
|
||||
className="inline-flex items-center gap-1 text-2xs uppercase tracking-[0.10em]"
|
||||
>
|
||||
<span className={`inline-block size-2 rounded-full ${SCOPE_DOT[s]}`} aria-hidden />
|
||||
{s}
|
||||
@@ -177,7 +177,7 @@ function WebhookDetailPage() {
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
<span className="text-2xs text-carbon/50">{t('webhooks.allScopes')}</span>
|
||||
<span className="text-2xs text-mute">{t('webhooks.allScopes')}</span>
|
||||
)}
|
||||
</InfoRow>
|
||||
<InfoRow label={t('webhooks.field.dictionaryFilter')}>
|
||||
@@ -207,7 +207,7 @@ function WebhookDetailPage() {
|
||||
|
||||
<div>
|
||||
<div className="flex items-center justify-between mb-3">
|
||||
<h2 className="font-primary text-base text-ultramarain">
|
||||
<h2 className="font-sans text-base text-accent">
|
||||
{t('webhooks.deliveries.title')}
|
||||
</h2>
|
||||
<IconButton
|
||||
@@ -232,10 +232,10 @@ function WebhookDetailPage() {
|
||||
onClick={() => handleStatusToggle(s)}
|
||||
aria-pressed={active}
|
||||
className={[
|
||||
'inline-flex items-center gap-1.5 px-2.5 py-1 rounded-sm border text-2xs uppercase tracking-label font-secondary transition-colors',
|
||||
'inline-flex items-center gap-1.5 px-2.5 py-1 rounded-sm border text-2xs uppercase tracking-[0.10em] font-display transition-colors',
|
||||
active
|
||||
? 'border-ultramarain bg-ultramarain/8 text-ultramarain'
|
||||
: 'border-regolith bg-white text-carbon/70 hover:border-carbon/40',
|
||||
? 'border-accent bg-accent/8 text-accent'
|
||||
: 'border-line bg-white text-ink-2 hover:border-carbon/40',
|
||||
].join(' ')}
|
||||
>
|
||||
{s}
|
||||
@@ -249,7 +249,7 @@ function WebhookDetailPage() {
|
||||
setPage(0)
|
||||
setStatusFilter(undefined)
|
||||
}}
|
||||
className="text-xs text-ultramarain hover:underline ml-2"
|
||||
className="text-xs text-accent hover:underline ml-2"
|
||||
>
|
||||
{t('webhooks.deliveries.filter.clear')}
|
||||
</button>
|
||||
@@ -293,7 +293,7 @@ function WebhookDetailPage() {
|
||||
<span className="font-mono text-2xs">{d.attemptCount}</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<span className="text-2xs text-carbon/70">
|
||||
<span className="text-2xs text-ink-2">
|
||||
{d.lastAttemptAt
|
||||
? new Date(d.lastAttemptAt).toLocaleString()
|
||||
: '—'}
|
||||
@@ -305,7 +305,7 @@ function WebhookDetailPage() {
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<span className="text-2xs text-carbon/70 line-clamp-2 max-w-md inline-block">
|
||||
<span className="text-2xs text-ink-2 line-clamp-2 max-w-md inline-block">
|
||||
{d.lastError ?? '—'}
|
||||
</span>
|
||||
</TableCell>
|
||||
@@ -337,7 +337,7 @@ function WebhookDetailPage() {
|
||||
>
|
||||
←
|
||||
</Button>
|
||||
<span className="text-sm text-carbon/70 self-center">
|
||||
<span className="text-sm text-ink-2 self-center">
|
||||
{page + 1} / {deliveries.data.totalPages}
|
||||
</span>
|
||||
<Button
|
||||
@@ -384,7 +384,7 @@ function TestResultAlert({
|
||||
action={
|
||||
<button
|
||||
type="button"
|
||||
className="text-xs text-carbon/70 hover:text-carbon"
|
||||
className="text-xs text-ink-2 hover:text-ink"
|
||||
onClick={onDismiss}
|
||||
>
|
||||
✕
|
||||
@@ -394,7 +394,7 @@ function TestResultAlert({
|
||||
<div className="space-y-1 text-sm">
|
||||
{result.httpStatus != null && (
|
||||
<div>
|
||||
<span className="text-2xs uppercase tracking-label text-carbon/60 mr-2">
|
||||
<span className="text-2xs uppercase tracking-[0.10em] text-mute mr-2">
|
||||
HTTP
|
||||
</span>
|
||||
<span className="font-mono">{result.httpStatus}</span>
|
||||
@@ -402,14 +402,14 @@ function TestResultAlert({
|
||||
)}
|
||||
{result.latencyMs != null && (
|
||||
<div>
|
||||
<span className="text-2xs uppercase tracking-label text-carbon/60 mr-2">
|
||||
<span className="text-2xs uppercase tracking-[0.10em] text-mute mr-2">
|
||||
{t('webhooks.test.latency')}
|
||||
</span>
|
||||
<span className="font-mono">{result.latencyMs} ms</span>
|
||||
</div>
|
||||
)}
|
||||
{result.message && (
|
||||
<div className="font-mono text-2xs text-carbon/80 whitespace-pre-wrap break-all">
|
||||
<div className="font-mono text-2xs text-ink whitespace-pre-wrap break-all">
|
||||
{result.message}
|
||||
</div>
|
||||
)}
|
||||
@@ -421,7 +421,7 @@ function TestResultAlert({
|
||||
function InfoRow({ label, children }: { label: string; children: React.ReactNode }) {
|
||||
return (
|
||||
<div>
|
||||
<div className="text-2xs uppercase tracking-label text-carbon/60 mb-1">
|
||||
<div className="text-2xs uppercase tracking-[0.10em] text-mute mb-1">
|
||||
{label}
|
||||
</div>
|
||||
<div>{children}</div>
|
||||
@@ -446,13 +446,13 @@ function RotateRevealModal({
|
||||
className="bg-white rounded-lg p-6 max-w-xl w-full space-y-4"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<h3 className="font-primary text-lg text-ultramarain">
|
||||
<h3 className="font-sans text-lg text-accent">
|
||||
{t('webhooks.secret.rotatedTitle')}
|
||||
</h3>
|
||||
<Alert variant="warning" title={t('webhooks.secret.warningTitle')}>
|
||||
{t('webhooks.secret.rotatedWarning')}
|
||||
</Alert>
|
||||
<div className="bg-carbon/5 border border-regolith rounded-md p-3">
|
||||
<div className="bg-carbon/5 border border-line rounded-md p-3">
|
||||
<code className="font-mono text-2xs break-all">{secret}</code>
|
||||
</div>
|
||||
<div className="flex justify-end">
|
||||
|
||||
Reference in New Issue
Block a user