Files
GearBox/src/client/components/ExternalLinkDialog.tsx
Jean-Luc Makiola 9bcdcc7168 style: replace blue accent with gray and mute card badge colors
Switch all interactive UI elements (buttons, focus rings, active tabs,
FAB, links, spinners) from blue to gray to match icon colors for a
more cohesive look. Mute card badge text colors to pastels (blue-400,
green-500, purple-500) to keep the focus on card content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 22:42:38 +01:00

64 lines
1.9 KiB
TypeScript

import { useEffect } from "react";
import { useUIStore } from "../stores/uiStore";
export function ExternalLinkDialog() {
const externalLinkUrl = useUIStore((s) => s.externalLinkUrl);
const closeExternalLink = useUIStore((s) => s.closeExternalLink);
useEffect(() => {
function handleKeyDown(e: KeyboardEvent) {
if (e.key === "Escape") closeExternalLink();
}
if (externalLinkUrl) {
document.addEventListener("keydown", handleKeyDown);
return () => document.removeEventListener("keydown", handleKeyDown);
}
}, [externalLinkUrl, closeExternalLink]);
if (!externalLinkUrl) return null;
function handleContinue() {
if (externalLinkUrl) {
window.open(externalLinkUrl, "_blank", "noopener,noreferrer");
}
closeExternalLink();
}
return (
<div className="fixed inset-0 z-50 flex items-center justify-center">
<div
className="absolute inset-0 bg-black/30"
onClick={closeExternalLink}
onKeyDown={(e) => {
if (e.key === "Escape") closeExternalLink();
}}
/>
<div className="relative bg-white rounded-xl shadow-lg p-6 max-w-sm mx-4 w-full">
<h3 className="text-lg font-semibold text-gray-900 mb-2">
You are about to leave GearBox
</h3>
<p className="text-sm text-gray-600 mb-1">You will be redirected to:</p>
<p className="text-sm text-gray-600 break-all mb-6">
{externalLinkUrl}
</p>
<div className="flex justify-end gap-3">
<button
type="button"
onClick={closeExternalLink}
className="px-4 py-2 text-sm font-medium text-gray-700 bg-gray-100 hover:bg-gray-200 rounded-lg transition-colors"
>
Cancel
</button>
<button
type="button"
onClick={handleContinue}
className="px-4 py-2 text-sm font-medium text-white bg-gray-700 hover:bg-gray-800 rounded-lg transition-colors"
>
Continue
</button>
</div>
</div>
</div>
);
}