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/en.po
107
locales/en.po
@@ -427,7 +427,7 @@ msgstr "← Back"
|
||||
|
||||
#: 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 "← Back to all dumps"
|
||||
|
||||
@@ -589,12 +589,12 @@ msgstr "Can't connect to the live updates server. Upvotes and notifications may
|
||||
#: 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 "Cancel"
|
||||
|
||||
@@ -607,7 +607,7 @@ msgstr "Cancel removal"
|
||||
msgid "Cancel reply"
|
||||
msgstr "Cancel reply"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:164
|
||||
#: src/components/layout/AppHeader.tsx:190
|
||||
msgid "Cancel search"
|
||||
msgstr "Cancel search"
|
||||
|
||||
@@ -642,13 +642,13 @@ msgid "Change skin tone"
|
||||
msgstr "Change skin tone"
|
||||
|
||||
#: 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 "Chat"
|
||||
|
||||
#: src/components/layout/ChatButton.tsx:26
|
||||
#: src/components/layout/ChatButton.tsx:29
|
||||
#: src/components/layout/ChatFab.tsx:53
|
||||
msgid "Chat ({unreadChatCount} unread)"
|
||||
msgstr "Chat ({unreadChatCount} unread)"
|
||||
@@ -712,7 +712,7 @@ msgid "Could not connect to the server. Check your connection and try again."
|
||||
msgstr "Could not connect to the server. Check your connection and try again."
|
||||
|
||||
#: src/components/profile/ProfilePlaylistsTab.tsx:126
|
||||
#: src/pages/DumpEdit.tsx:558
|
||||
#: src/pages/DumpEdit.tsx:559
|
||||
msgid "Could not delete"
|
||||
msgstr "Could not delete"
|
||||
|
||||
@@ -720,7 +720,7 @@ msgstr "Could not delete"
|
||||
msgid "Could not rename"
|
||||
msgstr "Could not rename"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:511
|
||||
#: src/pages/DumpEdit.tsx:512
|
||||
msgid "Could not save"
|
||||
msgstr "Could not save"
|
||||
|
||||
@@ -740,7 +740,7 @@ msgstr "Couldn't unsubscribe"
|
||||
msgid "Couldn't update. Try again."
|
||||
msgstr "Couldn't update. Try again."
|
||||
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:133
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:135
|
||||
msgid "Cover"
|
||||
msgstr "Cover"
|
||||
|
||||
@@ -775,7 +775,7 @@ msgstr "Default tab"
|
||||
#: 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 "Delete"
|
||||
@@ -789,19 +789,20 @@ msgstr "Delete category"
|
||||
msgid "Delete category \"{0}\"? This cannot be undone."
|
||||
msgstr "Delete category \"{0}\"? This cannot be undone."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:313
|
||||
#: src/pages/DumpEdit.tsx:566
|
||||
#: src/pages/DumpEdit.tsx:314
|
||||
#: src/pages/DumpEdit.tsx:562
|
||||
msgid "Delete dump"
|
||||
msgstr "Delete dump"
|
||||
|
||||
#. placeholder {0}: res.status
|
||||
#: src/pages/DumpEdit.tsx:192
|
||||
#: src/pages/DumpEdit.tsx:193
|
||||
msgid "Delete failed ({0})"
|
||||
msgstr "Delete failed ({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 "Delete playlist"
|
||||
|
||||
@@ -809,7 +810,7 @@ msgstr "Delete playlist"
|
||||
msgid "Delete this comment?"
|
||||
msgstr "Delete this comment?"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:312
|
||||
#: src/pages/DumpEdit.tsx:313
|
||||
msgid "Delete this dump? This cannot be undone."
|
||||
msgstr "Delete this dump? This cannot be undone."
|
||||
|
||||
@@ -818,7 +819,7 @@ msgid "Delete this message?"
|
||||
msgstr "Delete this 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 "Delete this playlist? This cannot be undone."
|
||||
|
||||
@@ -826,7 +827,7 @@ msgstr "Delete this playlist? This cannot be undone."
|
||||
msgid "deleted message"
|
||||
msgstr "deleted message"
|
||||
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:173
|
||||
#: src/components/playlist/PlaylistEditForm.tsx:175
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
@@ -864,11 +865,11 @@ msgstr "Drop a file here"
|
||||
msgid "Drop a file here, or paste one"
|
||||
msgstr "Drop a file here, or paste one"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:502
|
||||
#: src/pages/DumpEdit.tsx:503
|
||||
msgid "Drop a replacement here"
|
||||
msgstr "Drop a replacement here"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:203
|
||||
#: src/components/layout/AppHeader.tsx:209
|
||||
msgid "Dump"
|
||||
msgstr "Dump"
|
||||
|
||||
@@ -946,12 +947,12 @@ msgstr "edited {0}"
|
||||
msgid "Edited {0}"
|
||||
msgstr "Edited {0}"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:256
|
||||
#: src/pages/DumpEdit.tsx:257
|
||||
msgid "Editing"
|
||||
msgstr "Editing"
|
||||
|
||||
#. placeholder {0}: state.dump.title
|
||||
#: src/pages/DumpEdit.tsx:79
|
||||
#: src/pages/DumpEdit.tsx:80
|
||||
msgid "Editing {0}"
|
||||
msgstr "Editing {0}"
|
||||
|
||||
@@ -1005,7 +1006,7 @@ msgstr "Failed to post comment"
|
||||
msgid "Failed to post reply"
|
||||
msgstr "Failed to post reply"
|
||||
|
||||
#: 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 "In 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 "Insert emoji"
|
||||
|
||||
@@ -1175,7 +1176,7 @@ msgstr "Link or file"
|
||||
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||
msgstr "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:238
|
||||
#: src/components/layout/AppHeader.tsx:242
|
||||
msgid "Live updates unavailable."
|
||||
msgstr "Live updates unavailable."
|
||||
|
||||
@@ -1188,7 +1189,7 @@ msgid "Load older messages"
|
||||
msgstr "Load older messages"
|
||||
|
||||
#: src/pages/Dump.tsx:302
|
||||
#: src/pages/DumpEdit.tsx:207
|
||||
#: src/pages/DumpEdit.tsx:208
|
||||
msgid "Loading dump…"
|
||||
msgstr "Loading dump…"
|
||||
|
||||
@@ -1218,7 +1219,7 @@ msgstr "Loading profile…"
|
||||
msgid "Loading…"
|
||||
msgstr "Loading…"
|
||||
|
||||
#: 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 "Not following anyone yet."
|
||||
msgid "Nothing here yet."
|
||||
msgstr "Nothing here yet."
|
||||
|
||||
#: 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} unread)"
|
||||
|
||||
@@ -1385,11 +1386,11 @@ msgstr "Off"
|
||||
msgid "On"
|
||||
msgstr "On"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:359
|
||||
#: src/components/editor/TextEditor.tsx:385
|
||||
msgid "Only images can be dropped here."
|
||||
msgstr "Only images can be dropped here."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:117
|
||||
#: src/pages/DumpEdit.tsx:118
|
||||
msgid "Only its poster or a moderator can edit this dump."
|
||||
msgstr "Only its poster or a moderator can edit this dump."
|
||||
|
||||
@@ -1463,7 +1464,7 @@ msgid "Play"
|
||||
msgstr "Play"
|
||||
|
||||
#: 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 "Refresh metadata"
|
||||
|
||||
@@ -1520,7 +1521,7 @@ msgstr "Refresh metadata"
|
||||
msgid "Refreshing stream…"
|
||||
msgstr "Refreshing stream…"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:288
|
||||
#: src/pages/DumpEdit.tsx:289
|
||||
msgid "Refreshing…"
|
||||
msgstr "Refreshing…"
|
||||
|
||||
@@ -1566,7 +1567,7 @@ msgstr "Rename"
|
||||
msgid "Renaming…"
|
||||
msgstr "Renaming…"
|
||||
|
||||
#: src/pages/DumpEdit.tsx:494
|
||||
#: src/pages/DumpEdit.tsx:495
|
||||
msgid "Replace file"
|
||||
msgstr "Replace file"
|
||||
|
||||
@@ -1592,8 +1593,8 @@ msgstr "Reset failed"
|
||||
msgid "Reset password"
|
||||
msgstr "Reset password"
|
||||
|
||||
#: 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 "Reset to default"
|
||||
|
||||
@@ -1604,7 +1605,7 @@ msgstr "Reset to the suggested title"
|
||||
|
||||
#: src/components/chat/PendingItem.tsx:86
|
||||
#: src/pages/Dump.tsx:319
|
||||
#: src/pages/DumpEdit.tsx:224
|
||||
#: src/pages/DumpEdit.tsx:225
|
||||
msgid "Retry"
|
||||
msgstr "Retry"
|
||||
|
||||
@@ -1615,16 +1616,16 @@ msgstr "Role"
|
||||
#: 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 "Save"
|
||||
|
||||
#: 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 "Save"
|
||||
msgid "Saving…"
|
||||
msgstr "Saving…"
|
||||
|
||||
#: 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 "Send reset link"
|
||||
msgid "Sending…"
|
||||
msgstr "Sending…"
|
||||
|
||||
#: src/components/layout/AppHeader.tsx:200
|
||||
#: src/components/layout/AppHeader.tsx:206
|
||||
msgid "Server unreachable"
|
||||
msgstr "Server unreachable"
|
||||
|
||||
@@ -1704,14 +1705,14 @@ msgstr "Single use, valid for 7 days."
|
||||
msgid "slug"
|
||||
msgstr "slug"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:317
|
||||
#: src/components/editor/TextEditor.tsx:343
|
||||
msgid "Some images couldn't be uploaded."
|
||||
msgstr "Some images couldn't be uploaded."
|
||||
|
||||
#: 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 "Something went wrong"
|
||||
|
||||
@@ -1743,7 +1744,7 @@ msgstr "the chat"
|
||||
msgid "The dump couldn't be removed. Try again."
|
||||
msgstr "The dump couldn't be removed. Try again."
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:318
|
||||
#: src/components/editor/TextEditor.tsx:344
|
||||
msgid "The image couldn't be uploaded."
|
||||
msgstr "The image couldn't be uploaded."
|
||||
|
||||
@@ -1779,14 +1780,14 @@ msgstr "This site doesn't send email, so no digest goes out."
|
||||
msgid "This unsubscribe link is missing or malformed."
|
||||
msgstr "This unsubscribe link is missing or malformed."
|
||||
|
||||
#: src/pages/DumpEdit.tsx:454
|
||||
#: src/pages/DumpEdit.tsx:455
|
||||
msgid "Thumbnail"
|
||||
msgstr "Thumbnail"
|
||||
|
||||
#: 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 "Title"
|
||||
|
||||
@@ -1861,7 +1862,7 @@ msgstr "Upload failed"
|
||||
msgid "Uploading {0}%"
|
||||
msgstr "Uploading {0}%"
|
||||
|
||||
#: src/components/editor/TextEditor.tsx:566
|
||||
#: src/components/editor/TextEditor.tsx:595
|
||||
msgid "Uploading image…"
|
||||
msgstr "Uploading image…"
|
||||
|
||||
@@ -1883,7 +1884,7 @@ msgstr "Upvoted"
|
||||
msgid "Upvoted ({0})"
|
||||
msgstr "Upvoted ({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 "What makes it worth it?"
|
||||
|
||||
@@ -1951,7 +1952,7 @@ msgid "Why & where"
|
||||
msgstr "Why & where"
|
||||
|
||||
#: src/components/dump/create/DumpCreateModal.tsx:711
|
||||
#: src/pages/DumpEdit.tsx:542
|
||||
#: src/pages/DumpEdit.tsx:543
|
||||
msgid "Why?"
|
||||
msgstr "Why?"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user