import { useEffect, useMemo, useRef, useState, useId } from 'react' import { Accordion, Button, ButtonGroup, Col, Container, Form, Modal, Row, Tab, Tabs, OverlayTrigger, Tooltip } from 'react-bootstrap' import DataTable, { createTheme } from 'react-data-table-component' import { useTranslation } from 'react-i18next' import { useDropzone } from 'react-dropzone' import { useAuth } from '../context/AuthContext' import { createForum, deleteForum, fetchSettings, fetchStats, fetchVersionCheck, runSystemUpdate, fetchSystemStatus, listAllForums, listRanks, listRoles, listUsers, listAuditLogs, reorderForums, saveSetting, saveSettings, createRank, deleteRank, updateUserRank, updateRank, updateUser, createRole, updateRole, deleteRole, uploadRankBadgeImage, uploadFavicon, uploadLogo, updateForum, listAttachmentGroups, createAttachmentGroup, updateAttachmentGroup, deleteAttachmentGroup, reorderAttachmentGroups, listAttachmentExtensions, createAttachmentExtension, updateAttachmentExtension, deleteAttachmentExtension, } from '../api/client' const StatusIcon = ({ status = 'bad', tooltip }) => { const id = useId() const iconClass = status === 'ok' ? 'bi-check-circle-fill' : status === 'warn' ? 'bi-question-circle-fill' : 'bi-x-circle-fill' const content = (