Refine ACP general settings navigation and tabbed layout
All checks were successful
CI/CD Pipeline / deploy (push) Successful in 31s
CI/CD Pipeline / promote_stable (push) Successful in 2s

This commit is contained in:
2026-02-28 19:13:33 +01:00
parent 94f665192d
commit ef84b73cb5
12 changed files with 409 additions and 211 deletions

View File

@@ -284,6 +284,7 @@ export default function ThreadView() {
className={`bb-attachment-tab ${replyAttachmentTab === 'options' ? 'is-active' : ''}`}
onClick={() => setReplyAttachmentTab('options')}
>
<i className="bi bi-sliders me-2" aria-hidden="true" />
{t('attachment.tab_options')}
</button>
<button
@@ -291,6 +292,7 @@ export default function ThreadView() {
className={`bb-attachment-tab ${replyAttachmentTab === 'attachments' ? 'is-active' : ''}`}
onClick={() => setReplyAttachmentTab('attachments')}
>
<i className="bi bi-paperclip me-2" aria-hidden="true" />
{t('attachment.tab_attachments')}
</button>
</div>
@@ -374,6 +376,7 @@ export default function ThreadView() {
variant="outline-secondary"
onClick={() => document.getElementById('bb-reply-attachment-input')?.click()}
>
<i className="bi bi-upload me-2" aria-hidden="true" />
{t('attachment.add_files')}
</Button>
</div>
@@ -1040,6 +1043,7 @@ export default function ThreadView() {
document.getElementById('bb-reply-attachment-input')?.click()
}}
>
<i className="bi bi-folder2-open me-2" aria-hidden="true" />
{t('attachment.drop_browse')}
</button>
</span>
@@ -1053,6 +1057,7 @@ export default function ThreadView() {
onClick={handlePreview}
disabled={!token || saving || replyUploading || previewLoading}
>
<i className="bi bi-eye me-2" aria-hidden="true" />
{t('form.preview')}
</Button>
<Button
@@ -1060,6 +1065,7 @@ export default function ThreadView() {
className="bb-accent-button"
disabled={!token || saving || replyUploading}
>
<i className="bi bi-reply-fill me-2" aria-hidden="true" />
{saving || replyUploading ? t('form.posting') : t('form.post_reply')}
</Button>
</div>
@@ -1119,6 +1125,7 @@ export default function ThreadView() {
</Modal.Body>
<Modal.Footer className="justify-content-between">
<Button variant="outline-secondary" onClick={() => setEditPost(null)}>
<i className="bi bi-x-circle me-2" aria-hidden="true" />
{t('acp.cancel')}
</Button>
<Button
@@ -1126,6 +1133,7 @@ export default function ThreadView() {
onClick={handleEditSave}
disabled={editSaving || !editBody.trim() || (editPost?.isRoot && !editTitle.trim())}
>
<i className="bi bi-floppy me-2" aria-hidden="true" />
{editSaving ? t('form.saving') : t('acp.save')}
</Button>
</Modal.Footer>
@@ -1180,6 +1188,7 @@ export default function ThreadView() {
onClick={() => setDeleteTarget(null)}
disabled={deleteLoading}
>
<i className="bi bi-x-circle me-2" aria-hidden="true" />
{t('acp.cancel')}
</Button>
<Button
@@ -1187,6 +1196,7 @@ export default function ThreadView() {
onClick={handleDeleteConfirm}
disabled={deleteLoading}
>
<i className="bi bi-trash me-2" aria-hidden="true" />
{deleteLoading ? t('form.saving') : t('acp.delete')}
</Button>
</Modal.Footer>