S1: delete page.new.js (1724L abandoned) + remove dead getAntigravityProjectId
S2: split large files by natural seams
- usage.js → usage/{github,google,claude,codex,kiro,minimax,misc,shared}.js
- media-providers page → components/{Embedding,Tts,Generic,Stt}ExampleCard.js
- EndpointPageClient → endpointConstants.js + endpointPing.js + components/
- tokenRefresh.js → tokenRefresh/{dedup,providers}.js
- ProviderLimits/index.js: 16 pure fn + 9 constants → utils.js
- oauth/providers.js: 7 pure helpers → providerHelpers.js
S3: shared utils
- getModelKind(m, fallback) → shared/constants/models.js (replaces 20× m.kind||m.type)
- getStatusVariant → shared/utils/connectionStatus.js (dedup ConnectionRow/ConnectionsCard)
- sseChunk → open-sse/utils/sse.js (dedup grok-web/perplexity-web)
- fetchWithTimeout → usage/shared.js (replace 4× AbortController pattern in google.js)
fix: enableObservability2 field name in requestDetailsRepo
Co-authored-by: Cursor <cursoragent@cursor.com>
23 lines
860 B
JavaScript
23 lines
860 B
JavaScript
"use client";
|
|
|
|
/** Security warning banner with optional action link */
|
|
export default function SecurityWarning({ message, action }) {
|
|
return (
|
|
<div className="flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400">
|
|
<span className="material-symbols-outlined text-[16px] shrink-0 mt-0.5">warning</span>
|
|
<p className="text-xs flex-1">{message}</p>
|
|
{action && (
|
|
<a
|
|
href={action.href}
|
|
className="text-xs font-medium underline shrink-0 hover:opacity-80"
|
|
onClick={action.href.startsWith("#") ? (e) => {
|
|
e.preventDefault();
|
|
document.getElementById(action.href.slice(1))?.scrollIntoView({ behavior: "smooth" });
|
|
} : undefined}
|
|
>
|
|
{action.label}
|
|
</a>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|