({
selectedPlatform,
setSelectedPlatform,
accessToken,
setAccessToken,
showTokenSection = true,
onToggleTokenSection,
allowPlatformChange = true
}: TokenInputProps)
| 14 | } |
| 15 | |
| 16 | export default function TokenInput({ |
| 17 | selectedPlatform, |
| 18 | setSelectedPlatform, |
| 19 | accessToken, |
| 20 | setAccessToken, |
| 21 | showTokenSection = true, |
| 22 | onToggleTokenSection, |
| 23 | allowPlatformChange = true |
| 24 | }: TokenInputProps) { |
| 25 | const { messages: t } = useLanguage(); |
| 26 | |
| 27 | const platformName = selectedPlatform.charAt(0).toUpperCase() + selectedPlatform.slice(1); |
| 28 | |
| 29 | return ( |
| 30 | <div className="mb-4"> |
| 31 | {onToggleTokenSection && ( |
| 32 | <button |
| 33 | type="button" |
| 34 | onClick={onToggleTokenSection} |
| 35 | className="text-sm text-[var(--accent-primary)] hover:text-[var(--highlight)] flex items-center transition-colors border-b border-[var(--border-color)] hover:border-[var(--accent-primary)] pb-0.5 mb-2" |
| 36 | > |
| 37 | {showTokenSection ? t.form?.hideTokens || 'Hide Access Tokens' : t.form?.addTokens || 'Add Access Tokens for Private Repositories'} |
| 38 | </button> |
| 39 | )} |
| 40 | |
| 41 | {showTokenSection && ( |
| 42 | <div className="mt-2 p-4 bg-[var(--background)]/50 rounded-md border border-[var(--border-color)]"> |
| 43 | {allowPlatformChange && ( |
| 44 | <div className="mb-3"> |
| 45 | <label className="block text-xs font-medium text-[var(--foreground)] mb-2"> |
| 46 | {t.form?.selectPlatform || 'Select Platform'} |
| 47 | </label> |
| 48 | <div className="flex gap-2"> |
| 49 | <button |
| 50 | type="button" |
| 51 | onClick={() => setSelectedPlatform('github')} |
| 52 | className={`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md border transition-all ${selectedPlatform === 'github' |
| 53 | ? 'bg-[var(--accent-primary)]/10 border-[var(--accent-primary)] text-[var(--accent-primary)] shadow-sm' |
| 54 | : 'border-[var(--border-color)] text-[var(--foreground)] hover:bg-[var(--background)]' |
| 55 | }`} |
| 56 | > |
| 57 | <span className="text-sm">GitHub</span> |
| 58 | </button> |
| 59 | <button |
| 60 | type="button" |
| 61 | onClick={() => setSelectedPlatform('gitlab')} |
| 62 | className={`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md border transition-all ${selectedPlatform === 'gitlab' |
| 63 | ? 'bg-[var(--accent-primary)]/10 border-[var(--accent-primary)] text-[var(--accent-primary)] shadow-sm' |
| 64 | : 'border-[var(--border-color)] text-[var(--foreground)] hover:bg-[var(--background)]' |
| 65 | }`} |
| 66 | > |
| 67 | <span className="text-sm">GitLab</span> |
| 68 | </button> |
| 69 | <button |
| 70 | type="button" |
| 71 | onClick={() => setSelectedPlatform('bitbucket')} |
| 72 | className={`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md border transition-all ${selectedPlatform === 'bitbucket' |
| 73 | ? 'bg-[var(--accent-primary)]/10 border-[var(--accent-primary)] text-[var(--accent-primary)] shadow-sm' |
nothing calls this directly
no test coverage detected