feat: Добавить функциональность массовых операций в менеджер доменов, включая выбор всех, удаление и экспорт выбранных доменов. Обновить интерфейс с новыми компонентами для улучшения пользовательского опыта и добавление сохранённых фильтров для более удобной работы с данными.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m32s

This commit is contained in:
2025-10-02 18:30:31 +07:00
parent 339144fb11
commit cd5e169bc6
3 changed files with 241 additions and 80 deletions
+69 -25
View File
@@ -294,35 +294,79 @@ function MainLayout() {
</div>
</div>
{/* Правая часть навбара: язык и тема */}
<div className="navbar-nav flex-row order-md-last ms-2">
<div className="nav-item me-2">
<select
className="form-select form-select-sm"
value={lang}
onChange={(e) => setLang(e.target.value)}
aria-label="language"
{/* Правая часть навбара: язык, тема и действия */}
<div className="navbar-nav flex-row order-md-last">
{/* Язык */}
<div className="nav-item dropdown me-1">
<a
href="#"
className="nav-link px-2 dropdown-toggle"
data-bs-toggle="dropdown"
onClick={(e) => e.preventDefault()}
>
<option value="ru">RU</option>
<option value="en">EN</option>
</select>
<span className="badge">{lang.toUpperCase()}</span>
</a>
<div className="dropdown-menu dropdown-menu-end">
<a
href="#"
className={`dropdown-item ${lang === 'ru' ? 'active' : ''}`}
onClick={(e) => { e.preventDefault(); setLang('ru'); }}
>
Русский
</a>
<a
href="#"
className={`dropdown-item ${lang === 'en' ? 'active' : ''}`}
onClick={(e) => { e.preventDefault(); setLang('en'); }}
>
English
</a>
</div>
</div>
{/* Тема */}
<div className="nav-item dropdown me-1">
<a
href="#"
className="nav-link px-2 dropdown-toggle"
data-bs-toggle="dropdown"
onClick={(e) => e.preventDefault()}
>
{theme === 'dark' ? '🌙' : '☀️'}
</a>
<div className="dropdown-menu dropdown-menu-end">
<a
href="#"
className={`dropdown-item ${theme === 'light' ? 'active' : ''}`}
onClick={(e) => { e.preventDefault(); setTheme('light'); }}
>
{t('light')}
</a>
<a
href="#"
className={`dropdown-item ${theme === 'dark' ? 'active' : ''}`}
onClick={(e) => { e.preventDefault(); setTheme('dark'); }}
>
🌙 {t('dark')}
</a>
</div>
</div>
{/* Горячие клавиши */}
<div className="nav-item me-1">
<KeyboardShortcutsButton className="nav-link px-2" />
</div>
{/* Настройки */}
<div className="nav-item">
<select
className="form-select form-select-sm"
value={theme}
onChange={(e) => setTheme(e.target.value)}
aria-label="theme"
<a
href="#"
className="nav-link px-2"
onClick={(e) => { e.preventDefault(); setSettingsOpen(true); }}
title="Настройки"
>
<option value="light">{t('light')}</option>
<option value="dark">{t('dark')}</option>
</select>
</div>
<div className="nav-item ms-2 d-flex gap-1">
<KeyboardShortcutsButton />
<button className="btn btn-outline-primary btn-sm" onClick={() => setSettingsOpen(true)}>
<IconSettings className="me-1" /> Настройки
</button>
<IconSettings size={20} />
</a>
</div>
</div>
</div>