Notary-662-Backend / components /QuotaErrorModal.tsx
SBZ-EDU
Initial commit for Cloudflare D1 integration
b273c57
Raw
History Blame Contribute Delete
2.33 kB
import React from 'react';
import { useLanguage } from '../types';
interface QuotaErrorModalProps {
isOpen: boolean;
onClose: () => void;
}
const QuotaErrorModal: React.FC<QuotaErrorModalProps> = ({ isOpen, onClose }) => {
const { t } = useLanguage();
if (!isOpen) return null;
return (
<div className="fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 animate-fade-in" aria-modal="true" role="dialog">
<div className="bg-brand-blue-light rounded-lg shadow-xl p-6 w-full max-w-md mx-4 border border-red-500/50">
<div className="text-center">
<div className="mx-auto flex items-center justify-center h-12 w-12 rounded-full bg-red-900">
<svg className="h-6 w-6 text-red-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
</div>
<h3 className="mt-5 text-lg font-semibold leading-6 text-white">{t('quotaErrorModal.title')}</h3>
<div className="mt-2">
<p className="text-sm text-gray-400">
{t('quotaErrorModal.body')}
</p>
</div>
</div>
<div className="mt-5 sm:mt-6 grid grid-cols-1 sm:grid-cols-2 gap-3">
<a
href="https://aistudio.google.com/billing"
target="_blank"
rel="noopener noreferrer"
className="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none sm:text-sm text-center"
>
{t('quotaErrorModal.cta')}
</a>
<button
type="button"
onClick={onClose}
className="w-full inline-flex justify-center rounded-md border border-gray-600 shadow-sm px-4 py-2 bg-gray-700 text-base font-medium text-white hover:bg-gray-600 focus:outline-none sm:text-sm"
>
{t('quotaErrorModal.close')}
</button>
</div>
</div>
</div>
);
};
export default QuotaErrorModal;