setEditTitle(e.target.value)}
readOnly={isApproved}
className={`text-lg font-bold text-text-primary bg-transparent border-none outline-none focus:ring-0 w-full ${isApproved ? 'cursor-default' : ''}`}
placeholder={t('translations.titlePlaceholder')}
/>
{translation.status?.replace('_', ' ')}
{AVAILABLE_LANGUAGES.find(l => l.code === editSourceLanguage)?.label || editSourceLanguage}
{translation.creator_name && (
{t('review.createdBy')} {translation.creator_name}
)}
>
}
tabs={tabs}
activeTab={activeTab}
onTabChange={setActiveTab}
footer={isApproved ? (
{t('translations.approvedReadOnly')}
) : (
)}
>
{/* Details Tab */}
{activeTab === 'details' && (
{t('translations.sourceLanguage')}
{t('translations.sourceContent')}
{t('translations.brand')}
{t('translations.linkedPost')}
{isApproved ? (
{translation.post_name || '—'}
) : showCreatePost ? (
setNewPostTitle(e.target.value)}
onKeyDown={e => e.key === 'Enter' && handleCreatePost()}
className="flex-1 px-3 py-2 text-sm border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-brand-primary/20"
placeholder={t('translations.newPostTitle')}
autoFocus
/>
) : (
)}
{t('translations.approversLabel')}
)}
{/* Translations Tab */}
{activeTab === 'translations' && (
{/* Source content reference */}
{t('translations.sourceContent')} — {AVAILABLE_LANGUAGES.find(l => l.code === translation.source_language)?.label || translation.source_language}
{translation.source_content}
{/* Add translation option button */}
{t('translations.translationTexts')}
{!isApproved && (
)}
{/* Grouped by language */}
{targetLanguages.some(l => textsByLanguage[l.code]?.length > 0) ? (
{targetLanguages.map(lang => {
const options = textsByLanguage[lang.code] || []
if (options.length === 0) return null
return (
{lang.label}
({lang.code})
{options.length} {options.length === 1 ? t('translations.option') : t('translations.options')}
{(() => { const hasSelected = options.some(isTextSelected); return options.map((text, idx) => {
const selected = isTextSelected(text)
const isDimmed = isApproved && hasSelected && !selected
return (
{t('translations.optionLabel')} {text.option_number || idx + 1}
{selected && {t('translations.selected')}}
{editingTextId !== text.Id && (
)}
{isApproved ? null : editingTextId === text.Id ? (
<>
>
) : (
<>
>
)}
{editingTextId === text.Id ? (
)
}) })()}
)
})}
) : (
{t('translations.noTranslationTexts')}
)}
)}
{/* Review Tab */}
{activeTab === 'review' && (
{['draft', 'revision_requested', 'rejected'].includes(translation.status) && (
)}
{currentReviewUrl && (
{t('translations.reviewLinkTitle')}
)}
{translation.feedback && (
{t('translations.feedbackTitle')}
{translation.feedback}
)}
{translation.status === 'approved' && translation.approved_by_name && (
{t('translations.approvedByLabel')} {translation.approved_by_name}
{translation.approved_at && (
{new Date(translation.approved_at).toLocaleString()}
)}
)}
{!['draft', 'revision_requested', 'rejected'].includes(translation.status) && !currentReviewUrl && !translation.feedback && !(translation.status === 'approved' && translation.approved_by_name) && (
{translation.status === 'pending_review'
? t('translations.pendingReviewInfo')
: t('translations.noReviewInfo')}
)}
)}
{/* Add Translation Modal */}