import { useEffect, useMemo, useState } from 'react' import { Button, ButtonGroup, Col, Container, Form, Modal, Row, Tab, Tabs } from 'react-bootstrap' import DataTable, { createTheme } from 'react-data-table-component' import { useTranslation } from 'react-i18next' import { createForum, deleteForum, listAllForums, listUsers, reorderForums, updateForum } from '../api/client' export default function Acp({ isAdmin }) { const { t } = useTranslation() const [forums, setForums] = useState([]) const [loading, setLoading] = useState(false) const [error, setError] = useState('') const [selectedId, setSelectedId] = useState(null) const [draggingId, setDraggingId] = useState(null) const [overId, setOverId] = useState(null) const [createType, setCreateType] = useState(null) const [users, setUsers] = useState([]) const [usersLoading, setUsersLoading] = useState(false) const [usersError, setUsersError] = useState('') const [usersPage, setUsersPage] = useState(1) const [usersPerPage, setUsersPerPage] = useState(10) const [themeMode, setThemeMode] = useState( document.documentElement.getAttribute('data-bs-theme') || 'light' ) useEffect(() => { createTheme('speedbb-dark', { text: { primary: '#e6e8eb', secondary: '#9aa4b2', }, background: { default: 'transparent', }, context: { background: '#1a1f29', text: '#ffffff', }, divider: { default: '#2a2f3a', }, action: { button: 'rgba(230, 232, 235, 0.12)', hover: 'rgba(230, 232, 235, 0.08)', disabled: 'rgba(230, 232, 235, 0.35)', }, }) createTheme('speedbb-light', { text: { primary: '#0e121b', secondary: '#5b6678', }, background: { default: '#ffffff', }, context: { background: '#f7f2ea', text: '#0e121b', }, divider: { default: '#e0d7c7', }, action: { button: 'rgba(14, 18, 27, 0.12)', hover: 'rgba(14, 18, 27, 0.06)', disabled: 'rgba(14, 18, 27, 0.35)', }, }) }, []) useEffect(() => { const observer = new MutationObserver(() => { setThemeMode(document.documentElement.getAttribute('data-bs-theme') || 'light') }) observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-bs-theme'], }) return () => observer.disconnect() }, []) const userColumns = useMemo( () => [ { name: t('user.name'), selector: (row) => row.name, sortable: true, }, { name: t('user.email'), selector: (row) => row.email, sortable: true, }, { name: '', width: '180px', right: true, cell: (row) => (