feat: Refactor page headers in multiple managers for improved layout and consistency; remove global badge styles to support Tabler text colors
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 8m30s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 8m30s
This commit is contained in:
@@ -386,6 +386,19 @@ function ASNsNewManager() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<div className="page-header d-print-none mb-4">
|
||||||
|
<div className="row align-items-center">
|
||||||
|
<div className="col">
|
||||||
|
<h2 className="page-title">ASNs</h2>
|
||||||
|
<div className="page-pretitle">Главная / Данные / ASNs</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-auto ms-auto d-print-none">
|
||||||
|
<div className="btn-list">
|
||||||
|
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-lg-3">
|
<div className="col-lg-3">
|
||||||
<LockBanner resource="asns" className="mb-3" />
|
<LockBanner resource="asns" className="mb-3" />
|
||||||
@@ -549,9 +562,7 @@ function ASNsNewManager() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div></div>
|
||||||
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/* Мета-информация будет показана внизу карточки */}
|
{/* Мета-информация будет показана внизу карточки */}
|
||||||
{loading ? (
|
{loading ? (
|
||||||
|
|||||||
+2
-17
@@ -148,23 +148,8 @@
|
|||||||
background-position: center;
|
background-position: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Badge styles */
|
/* Убрали глобальную перекраску .badge, чтобы работали текстовые цвета Tabler
|
||||||
.badge {
|
(например, badge bg-blue-lt text-blue) */
|
||||||
display: inline-block;
|
|
||||||
padding: 0.35em 0.65em;
|
|
||||||
font-size: 0.75em;
|
|
||||||
font-weight: 700;
|
|
||||||
line-height: 1;
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
vertical-align: baseline;
|
|
||||||
border-radius: 0.375rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.badge.bg-red {
|
|
||||||
background-color: #d63939 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive navbar */
|
/* Responsive navbar */
|
||||||
@media (max-width: 991.98px) {
|
@media (max-width: 991.98px) {
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ function CommunitiesManager() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container-xl">
|
<div>
|
||||||
<div className="page-header d-print-none mb-4">
|
<div className="page-header d-print-none mb-4">
|
||||||
<div className="row align-items-center">
|
<div className="row align-items-center">
|
||||||
<div className="col">
|
<div className="col">
|
||||||
|
|||||||
@@ -393,6 +393,19 @@ function DomainsNewManager() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<div className="page-header d-print-none mb-4">
|
||||||
|
<div className="row align-items-center">
|
||||||
|
<div className="col">
|
||||||
|
<h2 className="page-title">Домены</h2>
|
||||||
|
<div className="page-pretitle">Главная / Данные / Домены</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-auto ms-auto d-print-none">
|
||||||
|
<div className="btn-list">
|
||||||
|
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-lg-3">
|
<div className="col-lg-3">
|
||||||
<LockBanner resource="domains-new" className="mb-3" />
|
<LockBanner resource="domains-new" className="mb-3" />
|
||||||
@@ -557,9 +570,7 @@ function DomainsNewManager() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div></div>
|
||||||
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/* Мета-информация будет показана внизу карточки */}
|
{/* Мета-информация будет показана внизу карточки */}
|
||||||
{loading ? (
|
{loading ? (
|
||||||
|
|||||||
@@ -802,7 +802,7 @@ function FilterManager() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container-xl">
|
<div>
|
||||||
<div className="page-header d-print-none mb-4">
|
<div className="page-header d-print-none mb-4">
|
||||||
<div className="row align-items-center">
|
<div className="row align-items-center">
|
||||||
<div className="col">
|
<div className="col">
|
||||||
|
|||||||
@@ -402,6 +402,19 @@ function IPRangesManager() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<div className="page-header d-print-none mb-4">
|
||||||
|
<div className="row align-items-center">
|
||||||
|
<div className="col">
|
||||||
|
<h2 className="page-title">IP-диапазоны</h2>
|
||||||
|
<div className="page-pretitle">Главная / Данные / IP ranges</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-auto ms-auto d-print-none">
|
||||||
|
<div className="btn-list">
|
||||||
|
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-lg-3">
|
<div className="col-lg-3">
|
||||||
<LockBanner resource="ip-ranges" className="mb-3" />
|
<LockBanner resource="ip-ranges" className="mb-3" />
|
||||||
@@ -565,9 +578,7 @@ function IPRangesManager() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div></div>
|
||||||
<button className="btn btn-outline-secondary" onClick={() => setHistoryOpen(true)}>История</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/* Мета-информация будет показана внизу карточки */}
|
{/* Мета-информация будет показана внизу карточки */}
|
||||||
{loading ? (
|
{loading ? (
|
||||||
|
|||||||
@@ -475,45 +475,37 @@ function ServerManager() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Кнопки управления */}
|
{/* Page header */}
|
||||||
<div className="d-flex flex-wrap gap-2 mb-3 align-items-center">
|
<div className="page-header d-print-none mb-3">
|
||||||
<button
|
<div className="row align-items-center">
|
||||||
type="button"
|
<div className="col">
|
||||||
className="btn btn-primary d-flex align-items-center"
|
<h2 className="page-title">Серверы</h2>
|
||||||
onClick={handleOpenAddServerModal}
|
<div className="page-pretitle">Главная / Управление / Серверы</div>
|
||||||
>
|
</div>
|
||||||
<span className="me-2 d-flex align-items-center"><IconPlus className="icon" /></span>
|
<div className="col-auto ms-auto d-print-none">
|
||||||
<span className="fw-bold">Добавить</span>
|
<div className="btn-list">
|
||||||
</button>
|
<div className="dropdown">
|
||||||
{/* Пресеты генератора ссылок */}
|
<button className="btn btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown">
|
||||||
<div className="dropdown">
|
Профили ссылок
|
||||||
<button className="btn btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown">
|
</button>
|
||||||
Профили ссылок
|
<div className="dropdown-menu">
|
||||||
</button>
|
{Object.keys(presets).map(key => (
|
||||||
<div className="dropdown-menu">
|
<button key={key} className="dropdown-item" type="button" onClick={() => applyPreset(key)}>{key}</button>
|
||||||
{Object.keys(presets).map(key => (
|
))}
|
||||||
<button key={key} className="dropdown-item" type="button" onClick={() => applyPreset(key)}>{key}</button>
|
</div>
|
||||||
))}
|
</div>
|
||||||
|
<button type="button" className="btn btn-outline-primary d-flex align-items-center" onClick={exportAllLinks} disabled={servers.length === 0}>
|
||||||
|
<IconDownload className="me-1" /> Экспорт
|
||||||
|
</button>
|
||||||
|
<button type="button" className="btn btn-outline-primary d-flex align-items-center" onClick={handleSaveChanges} disabled={loading}>
|
||||||
|
<IconDatabase className={loading ? 'spin me-1' : 'me-1'} /> Сохранить
|
||||||
|
</button>
|
||||||
|
<button type="button" className="btn btn-primary d-flex align-items-center" onClick={handleOpenAddServerModal}>
|
||||||
|
<IconPlus className="me-1" /> Добавить
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="btn btn-outline-primary d-flex align-items-center"
|
|
||||||
onClick={handleSaveChanges}
|
|
||||||
disabled={loading}
|
|
||||||
>
|
|
||||||
<span className="me-2 d-flex align-items-center"><IconDatabase className={loading ? 'spin' : ''} /></span>
|
|
||||||
<span className="fw-bold">Сохранить</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="btn btn-outline-primary d-flex align-items-center"
|
|
||||||
onClick={exportAllLinks}
|
|
||||||
disabled={servers.length === 0}
|
|
||||||
>
|
|
||||||
<span className="me-2 d-flex align-items-center"><IconDownload className="icon" /></span>
|
|
||||||
<span className="fw-bold">Экспорт</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Таблица серверов на всю ширину */}
|
{/* Таблица серверов на всю ширину */}
|
||||||
|
|||||||
Reference in New Issue
Block a user