feat(music): complete music UI overhaul - bugs, UX, missing features & styling

- Fix dead buttons (fa-edit/fa-share → fa-pen/fa-share-alt matching icon registry)
- Fix volume icon, shuffle bias, queue removal, repeat-one CSS
- Replace native prompt/confirm/alert with Modal system
- Add click-to-select, dblclick-to-play, playback error notifications
- Add loading indicators, success toasts, close player button
- Implement remove track from playlist (DELETE endpoint)
- Implement drag & drop track reorder (PUT reorder endpoint)
- Implement manage shares dialog (GET/DELETE shares endpoints)
- Implement cover art upload & display (cover_file_id in UpdatePlaylistDto)
- Implement public/private toggle (is_public in UpdatePlaylistDto)
- Mount get_audio_metadata route in backend routes.rs
- Redesign empty state: full-width centered onboarding when 0 playlists
- Move create button into sidebar header as compact + button
- Add music.css to build.rs production CSS bundle
- Add 16+ i18n keys in en.json and es.json
- Add CSS for drag handles, track remove, cover overlay, shares dialog, public badge
This commit is contained in:
Diocrafts
2026-04-11 10:59:01 +02:00
parent 6880edf641
commit 3ce8ec25d6
7 changed files with 1166 additions and 241 deletions
+18 -1
View File
@@ -24,6 +24,7 @@
"create_playlist": "Crear Lista",
"playlists": "Listas",
"no_playlists": "Sin listas aún",
"empty_hint": "Crea tu primera lista para empezar a organizar tu música",
"select_playlist": "Selecciona una lista",
"select_hint": "Elige una lista de la barra lateral o crea una nueva",
"add_tracks": "Añadir Pistas",
@@ -62,7 +63,23 @@
"add_error": "No se pudieron añadir las pistas",
"no_playlists_yet": "No hay listas aún. ¡Crea una primero!",
"selected_files": "Seleccionados:",
"error": "Error"
"share_with_user": "ID de usuario o email",
"playback_error": "Error de reproducción",
"error": "Error",
"remove": "Eliminar",
"track_removed": "Pista eliminada",
"manage_shares": "Gestionar compartidos",
"no_shares": "Sin compartidos aún",
"remove_share": "Eliminar compartido",
"can_write": "Puede editar",
"read_only": "Solo lectura",
"public": "Pública",
"private": "Privada",
"toggle_public": "Visibilidad",
"make_public": "Hacer pública",
"make_private": "Hacer privada",
"set_cover": "Establecer portada",
"cover_updated": "Portada actualizada"
},
"share": {
"dialogTitle": "Compartir Enlace",