v4: the playlist and dump edit forms end in one bar of actions, a panel of its own — the playlist editor drew rules between its fields and its actions, and on a phone its Delete, Cancel and Save wrapped into a staircase, then stacked (a0c8b1d), neither of which held together. Both forms are now built as DumpEdit was: surface panels 3px apart (.form-panel, from .dump-edit-panel), the last a bar (.form-panel--bar, from .dump-edit-footer) holding Delete on the left and Cancel and Save on the right, compact (btn-sm), on one line. The new DeleteButton says "Delete" and names what goes to assistive tech ("Delete playlist", "Delete dump"); in a bar too narrow for the three labels in every face and language (a container query, under 18rem), it shows 🗑 instead. While edited, the playlist's header drops its own card for the form's panels. The phone stacking rule is gone. An auto-sized editor also re-fits when its width changes with its text unchanged: opening the form makes the page tall enough for a scrollbar, which narrowed the description after it was measured, so it overflowed; and it hides its overflow below its max-height, where a scrollbar could only come of rounding, and drops the resize grip, which the next keystroke would undo. 669 frontend tests pass, and tsc, eslint, deno fmt, doc:lint and i18n:compile --strict are clean; checked in screenshots in Kanagawa dark (French, 385 and 360px), Smooth light at 1000px and DumpEdit in Smooth at 390px.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
107
locales/fr.po
107
locales/fr.po
@@ -427,7 +427,7 @@ msgstr "← Retour"
|
||||
|
||||
#: src/pages/Dump.tsx:326
|
||||
#: src/pages/Dump.tsx:568
|
||||
#: src/pages/DumpEdit.tsx:231
|
||||
#: src/pages/DumpEdit.tsx:232
|
||||
msgid "← Back to all dumps"
|
||||
msgstr "← Retour à toutes les recos"
|
||||
|
||||
@@ -589,12 +589,12 @@ msgstr "Impossible de se connecter au serveur de mises à jour en direct. Les vo
|
||||
#: src/components/comment/CommentForm.tsx:127
|
||||
#: src/components/dump/create/DumpCreateModal.tsx:752
|
||||
#: src/components/form/FormActions.tsx:42
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:194
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:199
|
||||
#: src/components/profile/DescriptionEditor.tsx:97
|
||||
#: src/components/profile/EmailEditor.tsx:83
|
||||
#: src/components/shared/ConfirmModal.tsx:63
|
||||
#: src/pages/Dump.tsx:445
|
||||
#: src/pages/DumpEdit.tsx:570
|
||||
#: src/pages/DumpEdit.tsx:565
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
@@ -607,7 +607,7 @@ msgstr "Annuler la suppression"
|
||||
msgid "Cancel reply"
|
||||
msgstr "Annuler la réponse"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:164
|
||||
#: src/components/layout/AppHeader.tsx:190
|
||||
msgid "Cancel search"
|
||||
msgstr "Annuler la recherche"
|
||||
|
||||
@@ -642,13 +642,13 @@ msgid "Change skin tone"
|
||||
msgstr "Changer la couleur de peau"
|
||||
|
||||
#: src/components/chat/ChatModal.tsx:716
|
||||
#: src/components/layout/ChatButton.tsx:27
|
||||
#: src/components/layout/ChatButton.tsx:30
|
||||
#: src/components/layout/ChatFab.tsx:54
|
||||
#: src/components/layout/ChatFab.tsx:55
|
||||
msgid "Chat"
|
||||
msgstr "Tribune"
|
||||
|
||||
#: src/components/layout/ChatButton.tsx:26
|
||||
#: src/components/layout/ChatButton.tsx:29
|
||||
#: src/components/layout/ChatFab.tsx:53
|
||||
msgid "Chat ({unreadChatCount} unread)"
|
||||
msgstr "{unreadChatCount} messages non lus"
|
||||
@@ -712,7 +712,7 @@ msgid "Could not connect to the server. Check your connection and try again."
|
||||
msgstr "Impossible de joindre le serveur. Vérifiez votre connexion et réessayez."
|
||||
|
||||
#: src/components/profile/ProfilePlaylistsTab.tsx:126
|
||||
#: src/pages/DumpEdit.tsx:558
|
||||
#: src/pages/DumpEdit.tsx:559
|
||||
msgid "Could not delete"
|
||||
msgstr "Suppression impossible"
|
||||
|
||||
@@ -720,7 +720,7 @@ msgstr "Suppression impossible"
|
||||
msgid "Could not rename"
|
||||
msgstr "Renommage impossible"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:511
|
||||
#: src/pages/DumpEdit.tsx:512
|
||||
msgid "Could not save"
|
||||
msgstr "Sauvegarde impossible"
|
||||
|
||||
@@ -740,7 +740,7 @@ msgstr "Désabonnement impossible"
|
||||
msgid "Couldn't update. Try again."
|
||||
msgstr "La mise à jour a échoué. Réessayez."
|
||||
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:133
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:135
|
||||
msgid "Cover"
|
||||
msgstr "Couverture"
|
||||
|
||||
@@ -775,7 +775,7 @@ msgstr "Onglet par défaut"
|
||||
#: src/components/chat/ChatMessageItem.tsx:214
|
||||
#: src/components/comment/CommentNode.tsx:265
|
||||
#: src/components/comment/CommentNode.tsx:271
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:190
|
||||
#: src/components/form/DeleteButton.tsx:36
|
||||
#: src/components/shared/ConfirmModal.tsx:34
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
@@ -789,19 +789,20 @@ msgstr "Supprimer la catégorie"
|
||||
msgid "Delete category \"{0}\"? This cannot be undone."
|
||||
msgstr "Supprimer la catégorie \"{0}\" ? Cette action est irréversible."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:313
|
||||
#: src/pages/DumpEdit.tsx:566
|
||||
#: src/pages/DumpEdit.tsx:314
|
||||
#: src/pages/DumpEdit.tsx:562
|
||||
msgid "Delete dump"
|
||||
msgstr "Supprimer la reco"
|
||||
|
||||
#. placeholder {0}: res.status
|
||||
#: src/pages/DumpEdit.tsx:192
|
||||
#: src/pages/DumpEdit.tsx:193
|
||||
msgid "Delete failed ({0})"
|
||||
msgstr "Échec de la suppression ({0})"
|
||||
|
||||
#: src/components/playlist/PlaylistCard.tsx:142
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:190
|
||||
#: src/components/profile/ProfilePlaylistsTab.tsx:156
|
||||
#: src/pages/PlaylistDetail.tsx:136
|
||||
#: src/pages/PlaylistDetail.tsx:141
|
||||
msgid "Delete playlist"
|
||||
msgstr "Supprimer la collection"
|
||||
|
||||
@@ -809,7 +810,7 @@ msgstr "Supprimer la collection"
|
||||
msgid "Delete this comment?"
|
||||
msgstr "Supprimer ce commentaire ?"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:312
|
||||
#: src/pages/DumpEdit.tsx:313
|
||||
msgid "Delete this dump? This cannot be undone."
|
||||
msgstr "Supprimer cette reco ? Cette action est irréversible."
|
||||
|
||||
@@ -818,7 +819,7 @@ msgid "Delete this message?"
|
||||
msgstr "Supprimer ce message ?"
|
||||
|
||||
#: src/components/profile/ProfilePlaylistsTab.tsx:155
|
||||
#: src/pages/PlaylistDetail.tsx:135
|
||||
#: src/pages/PlaylistDetail.tsx:140
|
||||
msgid "Delete this playlist? This cannot be undone."
|
||||
msgstr "Supprimer cette collection ? Cette action est irréversible."
|
||||
|
||||
@@ -826,7 +827,7 @@ msgstr "Supprimer cette collection ? Cette action est irréversible."
|
||||
msgid "deleted message"
|
||||
msgstr "message supprimé"
|
||||
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:173
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:175
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
@@ -864,11 +865,11 @@ msgstr "Déposez un fichier ici"
|
||||
msgid "Drop a file here, or paste one"
|
||||
msgstr "Déposez un fichier ici, ou collez-en un"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:502
|
||||
#: src/pages/DumpEdit.tsx:503
|
||||
msgid "Drop a replacement here"
|
||||
msgstr "Déposez un fichier de remplacement ici"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:203
|
||||
#: src/components/layout/AppHeader.tsx:209
|
||||
msgid "Dump"
|
||||
msgstr "Reco"
|
||||
|
||||
@@ -946,12 +947,12 @@ msgstr "modifié {0}"
|
||||
msgid "Edited {0}"
|
||||
msgstr "Modifié le {0}"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:256
|
||||
#: src/pages/DumpEdit.tsx:257
|
||||
msgid "Editing"
|
||||
msgstr "Modification"
|
||||
|
||||
#. placeholder {0}: state.dump.title
|
||||
#: src/pages/DumpEdit.tsx:79
|
||||
#: src/pages/DumpEdit.tsx:80
|
||||
msgid "Editing {0}"
|
||||
msgstr "Édition de {0}"
|
||||
|
||||
@@ -1005,7 +1006,7 @@ msgstr "Impossible de publier le commentaire"
|
||||
msgid "Failed to post reply"
|
||||
msgstr "Impossible de publier la réponse"
|
||||
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:182
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:184
|
||||
#: src/components/profile/DescriptionEditor.tsx:99
|
||||
#: src/components/profile/EmailEditor.tsx:86
|
||||
msgid "Failed to save"
|
||||
@@ -1113,8 +1114,8 @@ msgstr "image"
|
||||
msgid "In collections"
|
||||
msgstr "Dans les collections"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:544
|
||||
#: src/components/editor/TextEditor.tsx:546
|
||||
#: src/components/editor/TextEditor.tsx:573
|
||||
#: src/components/editor/TextEditor.tsx:575
|
||||
msgid "Insert emoji"
|
||||
msgstr "Insérer un emoji"
|
||||
|
||||
@@ -1175,7 +1176,7 @@ msgstr "Lien ou fichier"
|
||||
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||
msgstr "Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:238
|
||||
#: src/components/layout/AppHeader.tsx:242
|
||||
msgid "Live updates unavailable."
|
||||
msgstr "Mises à jour en direct indisponibles."
|
||||
|
||||
@@ -1188,7 +1189,7 @@ msgid "Load older messages"
|
||||
msgstr "Charger les messages plus anciens"
|
||||
|
||||
#: src/pages/Dump.tsx:302
|
||||
#: src/pages/DumpEdit.tsx:207
|
||||
#: src/pages/DumpEdit.tsx:208
|
||||
msgid "Loading dump…"
|
||||
msgstr "Chargement de la reco…"
|
||||
|
||||
@@ -1218,7 +1219,7 @@ msgstr "Chargement du profil…"
|
||||
msgid "Loading…"
|
||||
msgstr "Chargement…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:211
|
||||
#: src/components/layout/AppHeader.tsx:216
|
||||
#: src/pages/UserLogin.tsx:41
|
||||
#: src/pages/UserLogin.tsx:67
|
||||
#: src/pages/UserLogin.tsx:86
|
||||
@@ -1366,14 +1367,14 @@ msgstr "Aucun abonnement pour le moment."
|
||||
msgid "Nothing here yet."
|
||||
msgstr "Rien ici pour l'instant."
|
||||
|
||||
#: src/components/layout/NotificationBell.tsx:55
|
||||
#: src/components/layout/NotificationBell.tsx:57
|
||||
#: src/pages/Notifications.tsx:376
|
||||
#: src/pages/Notifications.tsx:494
|
||||
#: src/pages/Settings.tsx:128
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
#: src/components/layout/NotificationBell.tsx:54
|
||||
#: src/components/layout/NotificationBell.tsx:56
|
||||
msgid "Notifications ({unreadNotificationCount} unread)"
|
||||
msgstr "Notifications ({unreadNotificationCount} non lues)"
|
||||
|
||||
@@ -1385,11 +1386,11 @@ msgstr "Désactivés"
|
||||
msgid "On"
|
||||
msgstr "Activés"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:359
|
||||
#: src/components/editor/TextEditor.tsx:385
|
||||
msgid "Only images can be dropped here."
|
||||
msgstr "Seules les images peuvent être déposées ici."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:117
|
||||
#: src/pages/DumpEdit.tsx:118
|
||||
msgid "Only its poster or a moderator can edit this dump."
|
||||
msgstr "Seuls son auteur et les modérateurs peuvent modifier ce dump."
|
||||
|
||||
@@ -1463,7 +1464,7 @@ msgid "Play"
|
||||
msgstr "Lecture"
|
||||
|
||||
#: src/components/dump/create/StepIndicator.tsx:21
|
||||
#: src/components/layout/AppHeader.tsx:184
|
||||
#: src/components/layout/AppHeader.tsx:178
|
||||
#: src/components/layout/UserMenu.tsx:81
|
||||
#: src/components/profile/ProfileFollowTab.tsx:167
|
||||
#: src/components/profile/ProfilePlaylistsTab.tsx:118
|
||||
@@ -1512,7 +1513,7 @@ msgstr "public"
|
||||
msgid "Public"
|
||||
msgstr "Public"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:289
|
||||
#: src/pages/DumpEdit.tsx:290
|
||||
msgid "Refresh metadata"
|
||||
msgstr "Actualiser les métadonnées"
|
||||
|
||||
@@ -1520,7 +1521,7 @@ msgstr "Actualiser les métadonnées"
|
||||
msgid "Refreshing stream…"
|
||||
msgstr "Actualisation du flux…"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:288
|
||||
#: src/pages/DumpEdit.tsx:289
|
||||
msgid "Refreshing…"
|
||||
msgstr "Actualisation…"
|
||||
|
||||
@@ -1566,7 +1567,7 @@ msgstr "Renommer"
|
||||
msgid "Renaming…"
|
||||
msgstr "Renommage…"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:494
|
||||
#: src/pages/DumpEdit.tsx:495
|
||||
msgid "Replace file"
|
||||
msgstr "Remplacer le fichier"
|
||||
|
||||
@@ -1592,8 +1593,8 @@ msgstr "Échec de la réinitialisation"
|
||||
msgid "Reset password"
|
||||
msgstr "Réinitialiser le mot de passe"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:470
|
||||
#: src/pages/DumpEdit.tsx:525
|
||||
#: src/pages/DumpEdit.tsx:471
|
||||
#: src/pages/DumpEdit.tsx:526
|
||||
msgid "Reset to default"
|
||||
msgstr "Réinitialiser par défaut"
|
||||
|
||||
@@ -1604,7 +1605,7 @@ msgstr "Rétablir le titre suggéré"
|
||||
|
||||
#: src/components/chat/PendingItem.tsx:86
|
||||
#: src/pages/Dump.tsx:319
|
||||
#: src/pages/DumpEdit.tsx:224
|
||||
#: src/pages/DumpEdit.tsx:225
|
||||
msgid "Retry"
|
||||
msgstr "Réessayer"
|
||||
|
||||
@@ -1615,16 +1616,16 @@ msgstr "Rôle"
|
||||
#: src/components/category/CategoryManager.tsx:216
|
||||
#: src/components/chat/ChatEditBox.tsx:85
|
||||
#: src/components/comment/CommentNode.tsx:216
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:200
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:206
|
||||
#: src/components/profile/DescriptionEditor.tsx:89
|
||||
#: src/components/profile/EmailEditor.tsx:75
|
||||
#: src/pages/Dump.tsx:437
|
||||
#: src/pages/DumpEdit.tsx:573
|
||||
#: src/pages/DumpEdit.tsx:568
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: src/components/comment/CommentNode.tsx:217
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:197
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:203
|
||||
#: src/components/profile/ChangePasswordModal.tsx:119
|
||||
#: src/components/profile/DescriptionEditor.tsx:86
|
||||
#: src/components/profile/EmailEditor.tsx:72
|
||||
@@ -1633,7 +1634,7 @@ msgstr "Enregistrer"
|
||||
msgid "Saving…"
|
||||
msgstr "Enregistrement…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:164
|
||||
#: src/components/layout/AppHeader.tsx:190
|
||||
#: src/components/layout/SearchBar.tsx:83
|
||||
#: src/pages/Search.tsx:69
|
||||
msgid "Search"
|
||||
@@ -1676,7 +1677,7 @@ msgstr "Envoyer le lien de réinitialisation"
|
||||
msgid "Sending…"
|
||||
msgstr "Envoi…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:200
|
||||
#: src/components/layout/AppHeader.tsx:206
|
||||
msgid "Server unreachable"
|
||||
msgstr "Serveur inaccessible"
|
||||
|
||||
@@ -1704,14 +1705,14 @@ msgstr "Usage unique, valable 7 jours."
|
||||
msgid "slug"
|
||||
msgstr "identifiant"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:317
|
||||
#: src/components/editor/TextEditor.tsx:343
|
||||
msgid "Some images couldn't be uploaded."
|
||||
msgstr "Certaines images n'ont pas pu être envoyées."
|
||||
|
||||
#: src/components/form/FormError.tsx:31
|
||||
#: src/components/layout/PageError.tsx:29
|
||||
#: src/contexts/ws/WSProvider.tsx:729
|
||||
#: src/pages/PlaylistDetail.tsx:119
|
||||
#: src/pages/PlaylistDetail.tsx:124
|
||||
msgid "Something went wrong"
|
||||
msgstr "Une erreur est survenue"
|
||||
|
||||
@@ -1743,7 +1744,7 @@ msgstr "la tribune"
|
||||
msgid "The dump couldn't be removed. Try again."
|
||||
msgstr "Le dump n'a pas pu être retiré. Réessayez."
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:318
|
||||
#: src/components/editor/TextEditor.tsx:344
|
||||
msgid "The image couldn't be uploaded."
|
||||
msgstr "L'image n'a pas pu être envoyée."
|
||||
|
||||
@@ -1779,14 +1780,14 @@ msgstr "Ce site n'envoie pas d'e-mails, aucun résumé ne part donc."
|
||||
msgid "This unsubscribe link is missing or malformed."
|
||||
msgstr "Ce lien de désabonnement est absent ou mal formé."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:454
|
||||
#: src/pages/DumpEdit.tsx:455
|
||||
msgid "Thumbnail"
|
||||
msgstr "Miniature"
|
||||
|
||||
#: src/components/dump/create/TitleField.tsx:45
|
||||
#: src/components/playlist/PlaylistCreateForm.tsx:96
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:157
|
||||
#: src/pages/DumpEdit.tsx:515
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:159
|
||||
#: src/pages/DumpEdit.tsx:516
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
@@ -1861,7 +1862,7 @@ msgstr "Envoi échoué"
|
||||
msgid "Uploading {0}%"
|
||||
msgstr "Envoi {0} %"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:566
|
||||
#: src/components/editor/TextEditor.tsx:595
|
||||
msgid "Uploading image…"
|
||||
msgstr "Envoi de l'image…"
|
||||
|
||||
@@ -1883,7 +1884,7 @@ msgstr "Voté"
|
||||
msgid "Upvoted ({0})"
|
||||
msgstr "Voté ({0})"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:486
|
||||
#: src/pages/DumpEdit.tsx:487
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
@@ -1933,7 +1934,7 @@ msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
#: src/components/dump/create/DumpCreateModal.tsx:712
|
||||
#: src/pages/DumpEdit.tsx:543
|
||||
#: src/pages/DumpEdit.tsx:544
|
||||
msgid "What makes it worth it?"
|
||||
msgstr "Pourquoi on en voudrait ?"
|
||||
|
||||
@@ -1951,7 +1952,7 @@ msgid "Why & where"
|
||||
msgstr "Pourquoi & où"
|
||||
|
||||
#: src/components/dump/create/DumpCreateModal.tsx:711
|
||||
#: src/pages/DumpEdit.tsx:542
|
||||
#: src/pages/DumpEdit.tsx:543
|
||||
msgid "Why?"
|
||||
msgstr "Pourquoi ?"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user