feat: intégration VU-mètre circulaire autour du bouton PTT

NOUVEAU DESIGN :
- VU-mètre transformé en anneau SVG autour du bouton PTT
- Cercle progressif (0-360°) selon le niveau audio
- Couleurs dynamiques selon le niveau :
  - Vert (0-75%) : audio normal
  - Orange (75-90%) : niveau élevé
  - Rouge (90-100%) : saturation/danger avec effet glow
  - Bleu : mode talking (micro actif)

AVANTAGES :
- Beaucoup plus discret et élégant
- Intégré visuellement au bouton principal
- Pas d'encombrement UI supplémentaire
- Contextuellement pertinent (niveau autour du contrôle)

TECHNIQUE :
- SVG avec stroke-dasharray pour l'arc progressif
- Transition fluide 0.1s sur le niveau
- Drop-shadow dynamique selon couleur
- Responsive (adapté mobile/paysage)
- z-index stratifié (anneau derrière, bouton devant)

SUPPRESSION :
- Ancien composant AudioIndicator.jsx retiré de App.jsx
- Garde plus d'espace pour UserList et GroupSelector

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-23 10:17:29 +02:00
parent ed6d2e763d
commit 7e42164c5c
3 changed files with 100 additions and 15 deletions
+29
View File
@@ -11,6 +11,24 @@
position: relative;
}
/* Wrapper bouton + anneau VU-mètre */
.ptt-button-wrapper {
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
/* Anneau VU-mètre (SVG) */
.audio-ring {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
z-index: 0;
}
.ptt-button {
width: 240px;
height: 240px;
@@ -27,6 +45,7 @@
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
position: relative;
overflow: hidden;
z-index: 1; /* Au-dessus de l'anneau */
/* Mobile touch optimizations */
touch-action: none;
@@ -189,6 +208,11 @@
height: 200px;
}
.audio-ring {
width: 240px;
height: 240px;
}
.ptt-icon {
width: 56px;
height: 56px;
@@ -210,6 +234,11 @@
height: 160px;
}
.audio-ring {
width: 200px;
height: 200px;
}
.ptt-icon {
width: 48px;
height: 48px;