mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-14 16:30:50 +00:00
Module frontend/src/i18n : le texte français sert de clé, dictionnaires anglais par zone, langue du navigateur puis choix mémorisé, ?lang=en pour forcer. Bascule dans le menu du compte, la pastille visiteur, le menu Plus, l'écran d'accès et la connexion. Démo traduite (noms et lieux gardés). Liens d'aide et de vie privée selon la langue. Textes français sans accents corrigés. Test : chaque texte passé à t() a sa traduction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
73 lines
1.9 KiB
React
73 lines
1.9 KiB
React
import { t } from '../i18n/index.js'
|
|
import './ProximityFeedback.css'
|
|
|
|
/**
|
|
* Feedback visuel de proximité pendant le drag
|
|
* Affiche ligne pointillée + glow sur personne proche + badge type lien
|
|
*
|
|
* @param {Object} props
|
|
* @param {boolean} props.visible - Afficher le feedback
|
|
* @param {Object} props.dragPosition - Position drag {x, y}
|
|
* @param {Object} props.closestPerson - Personne proche {id, x, y, person}
|
|
* @param {string} props.linkType - Type de lien ('child', 'spouse', 'sibling')
|
|
*/
|
|
function ProximityFeedback({ visible, dragPosition, closestPerson, linkType }) {
|
|
if (!visible || !closestPerson || !linkType) return null
|
|
|
|
const { x: personX, y: personY } = closestPerson
|
|
const { x: dragX, y: dragY } = dragPosition
|
|
|
|
// Position badge au milieu de la ligne
|
|
const badgeX = (dragX + personX) / 2
|
|
const badgeY = (dragY + personY) / 2
|
|
|
|
// Labels
|
|
const linkLabels = {
|
|
child: t('Enfant'),
|
|
spouse: t('Conjoint'),
|
|
sibling: t('Frère·Sœur'),
|
|
}
|
|
|
|
return (
|
|
<>
|
|
{/* Ligne pointillée */}
|
|
<div className="proximity-line">
|
|
<svg className="proximity-line-svg">
|
|
<line
|
|
x1={dragX}
|
|
y1={dragY}
|
|
x2={personX}
|
|
y2={personY}
|
|
className={`proximity-line-path ${linkType}`}
|
|
/>
|
|
</svg>
|
|
</div>
|
|
|
|
{/* Badge type lien */}
|
|
<div
|
|
className={`proximity-badge ${linkType}`}
|
|
style={{
|
|
left: `${badgeX}px`,
|
|
top: `${badgeY}px`,
|
|
transform: 'translate(-50%, -50%)',
|
|
}}
|
|
>
|
|
{linkLabels[linkType] || t('Lien')}
|
|
</div>
|
|
|
|
{/* Glow sur personne proche */}
|
|
<div
|
|
className="proximity-highlight"
|
|
style={{
|
|
left: `${personX - 50}px`,
|
|
top: `${personY - 50}px`,
|
|
}}
|
|
>
|
|
<div className={`proximity-highlight-glow ${linkType}`} />
|
|
</div>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default ProximityFeedback
|