feat(web): enhance ReUI components and sidebar navigation
Build, Test, and Push CFDM Docker Image / test (push) Successful in 5m22s
Build, Test, and Push CFDM Docker Image / build-and-push (push) Successful in 2m36s
Build, Test, and Push CFDM Docker Image / update-wiki (push) Successful in 8s
Build, Test, and Push CFDM Docker Image / create-release (push) Has been skipped

- Updated frontend UI patterns documentation to include new ReUI components and improved navigation instructions.
- Enhanced AppSidebar to utilize active state management for better user experience.
- Refactored layout components in the ReUI kit for improved spacing and alignment.
- Introduced KanbanBoardSkeleton for loading states in Kanban boards.
- Improved OpsDashboard and ResourcePage with consistent header layouts and enhanced accessibility features.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-07-16 23:54:31 +07:00
co-authored by Cursor
parent 3e326a4509
commit d5de7f5e68
14 changed files with 191 additions and 81 deletions
+1 -1
View File
@@ -70,7 +70,7 @@ function CertificatesPage() {
)
return (
<PageShell className="gap-6">
<PageShell>
<CertKpiCards
summary={summary}
total={certs?.length}
@@ -206,11 +206,6 @@ function DnsPage() {
void refetchDomain()
void refetchRecords()
}}
primaryAction={
<Button variant="outline" onClick={() => setSheetOpen(true)}>
Новая запись
</Button>
}
emptyState={{
title: 'DNS-записи не найдены',
description: 'Синхронизируйте зону или создайте запись вручную',
@@ -347,7 +347,7 @@ function DomainOverviewPage() {
columns={columns}
data={subdomainRows}
getRowId={(row) => String(row.subdomain.id)}
primaryAction={
toolbarExtra={
<Button type="button" onClick={openCreateSheet}>
Добавить поддомен
</Button>
+2 -2
View File
@@ -17,7 +17,7 @@ import { PageShell } from '@/components/page-shell'
import { EmptyState } from '@/components/empty-state'
import { ConfirmDialog } from '@/components/confirm-dialog'
import { DomainGroupEditSheet } from '@/components/domain-group-edit-sheet'
import { KanbanBoard } from '@/components/reui-kit'
import { KanbanBoard, KanbanBoardSkeleton } from '@/components/reui-kit'
import { DomainKanbanCard } from '@/components/kanban/domain-kanban-card'
import { useDomainGroupsKanban } from '@/hooks/use-domain-groups-kanban'
import { groupColumnId } from '@/components/board/column-ids'
@@ -150,7 +150,7 @@ function GroupsPage() {
if (isLoading) {
return (
<PageShell>
<div className="text-muted-foreground text-sm">Загрузка доски…</div>
<KanbanBoardSkeleton columns={3} />
</PageShell>
)
}
+4 -4
View File
@@ -28,7 +28,7 @@ import { ServiceGroupEditSheet } from '@/components/service-group-edit-sheet'
import { ServicesBulkToolbar } from '@/components/services-board/services-bulk-toolbar'
import { useServicesKanban } from '@/hooks/use-services-kanban'
import { useServicesSelection } from '@/hooks/use-services-selection'
import { KanbanBoard } from '@/components/reui-kit'
import { KanbanBoard, KanbanBoardSkeleton } from '@/components/reui-kit'
import { ServiceKanbanCard } from '@/components/kanban/service-kanban-card'
import { Button } from '@cfdm/ui/components/button'
@@ -374,7 +374,7 @@ function ServicesPage() {
/>
{isLoading ? (
<div className="text-muted-foreground text-sm">Загрузка доски…</div>
<KanbanBoardSkeleton columns={3} />
) : isError ? (
<EmptyState
title="Не удалось загрузить сервисы"
@@ -415,12 +415,12 @@ function ServicesPage() {
value={kanbanValue}
onValueChange={dragDisabled ? () => {} : handleKanbanValueChange}
toolbarActions={
<div className="flex flex-wrap gap-2">
<>
<Button variant="outline" onClick={() => setCreateGroupSheetOpen(true)}>
Добавить группу
</Button>
<Button onClick={() => handleOpenCreateService()}>Добавить сервис</Button>
</div>
</>
}
renderCard={(service, ctx) => (
<ServiceKanbanCard