63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
interface ActionButtonsProps {
|
|
isUploading: boolean
|
|
isSecretEmpty: boolean
|
|
hasPendingOrErrors: boolean
|
|
allDone: boolean
|
|
hasErrors: boolean
|
|
onUpload: () => void
|
|
onCancel: () => void
|
|
onReset: () => void
|
|
}
|
|
|
|
export default function ActionButtons({
|
|
isUploading,
|
|
isSecretEmpty,
|
|
hasPendingOrErrors,
|
|
allDone,
|
|
hasErrors,
|
|
onUpload,
|
|
onCancel,
|
|
onReset,
|
|
}: ActionButtonsProps) {
|
|
return (
|
|
<div className="flex gap-3">
|
|
{!isUploading && hasPendingOrErrors && (
|
|
<button
|
|
onClick={onUpload}
|
|
disabled={isSecretEmpty}
|
|
className={`flex-1 font-medium text-sm py-2.5 px-6 rounded-xl transition-all duration-150
|
|
focus:outline-none focus:ring-2 focus:ring-white/50 border border-white/20
|
|
${isSecretEmpty
|
|
? 'bg-white/30 text-gray-500 cursor-not-allowed'
|
|
: 'bg-white text-[#000000] hover:bg-gray-200'
|
|
}`}
|
|
>
|
|
Envoyer sur GitHub
|
|
</button>
|
|
)}
|
|
|
|
{isUploading && (
|
|
<button
|
|
onClick={onCancel}
|
|
className="flex-1 bg-black-700 text-gray-300 font-medium text-sm
|
|
py-2.5 px-6 rounded-xl border border-black-600 transition-colors duration-150
|
|
hover:bg-black-600"
|
|
>
|
|
Annuler
|
|
</button>
|
|
)}
|
|
|
|
{(allDone || hasErrors) && !isUploading && (
|
|
<button
|
|
onClick={onReset}
|
|
className="flex-1 bg-black-700 text-gray-300 font-medium text-sm
|
|
py-2.5 px-6 rounded-xl border border-black-600 transition-colors duration-150
|
|
hover:bg-black-600"
|
|
>
|
|
{allDone ? 'Tout effacer' : 'Reessayer'}
|
|
</button>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|