web: bulk-select accounts in the admin table and link the studio from the top bar

The users table grows a checkbox column with a select-all box in its head,
and three controls above it: SELECT ALL, SELECT NONE and DELETE SELECTED
naming the count. An admin account is the API's own privilege source, so it
gets no box and select-all skips it; the picks clear once the deletes land.

The landing top bar gains a RecipesCam web studio button between the account
slot and Download RecipesCam. It hides with the rest of the wide row under
1160px, where the burger sheet already offers the studio.
This commit is contained in:
2026-09-18 11:11:43 +07:00
parent b4d5d2926b
commit 86a93f46be
5 changed files with 93 additions and 2 deletions
+4
View File
@@ -186,6 +186,10 @@ export const en: Dict = {
'adm.userBlocked': 'Blocked',
'adm.userRemoved': 'Removed',
'adm.userDeleteConfirm': 'Permanently delete the account {email} with all of its photos and recipes? This cannot be undone.',
'adm.selectAll': 'SELECT ALL',
'adm.selectNone': 'SELECT NONE',
'adm.deleteSelected': 'DELETE SELECTED ({n})',
'adm.userDeleteSelectedConfirm': 'Permanently delete the {n} selected accounts with all of their photos and recipes? This cannot be undone.',
'profile.title': 'My profile',
+4
View File
@@ -189,6 +189,10 @@ export const vi = {
'adm.userBlocked': 'Đã khoá',
'adm.userRemoved': 'Đã gỡ',
'adm.userDeleteConfirm': 'Xoá vĩnh viễn tài khoản {email} cùng toàn bộ ảnh và công thức của nó? Không hoàn tác được.',
'adm.selectAll': 'CHỌN TẤT CẢ',
'adm.selectNone': 'BỎ CHỌN',
'adm.deleteSelected': 'XOÁ ĐÃ CHỌN ({n})',
'adm.userDeleteSelectedConfirm': 'Xoá vĩnh viễn {n} tài khoản đã chọn cùng toàn bộ ảnh và công thức của chúng? Không hoàn tác được.',
'profile.title': 'Hồ sơ của tôi',