quality / commitlint (push) Skipped
quality / changes (push) Successful in 8s
quality / go (push) Skipped
quality / bird2 (push) Skipped
quality / docker-check (push) Skipped
quality / openapi (push) Successful in 22s
quality / web (push) Successful in 1m0s
CD / quality (push) Successful in 1m35s
CD / publish (push) Successful in 2m59s
Секции страниц переведены на segmented Tabs (c-tabs-9), статус грида — ToggleGroup в toolbar. Убраны календарь задач, пустые вкладки мониторинга и demo-деревья ReUI. KPI overflow как в CFDM, DetailPanel на карточке модуля, один FrameSection. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
860 B
TypeScript
32 lines
860 B
TypeScript
import { Boxes, Plus } from 'lucide-react'
|
|
|
|
import { EmptyState } from '@/components/empty-state'
|
|
import { Button } from '@evobgp/ui/components/button'
|
|
|
|
/** empty-state-14 for first module. Preview: https://reui.io/preview/base/empty-state-14 */
|
|
export function ProjectsEmptyState({
|
|
canCreate = true,
|
|
onCreate,
|
|
}: {
|
|
canCreate?: boolean
|
|
onCreate?: () => void
|
|
}) {
|
|
return (
|
|
<EmptyState
|
|
framed
|
|
centered={false}
|
|
icon={Boxes}
|
|
title="Создайте первый модуль"
|
|
description="Модули задают источники префиксов: AS, CDN, домены и IP-диапазоны."
|
|
action={
|
|
canCreate && onCreate ? (
|
|
<Button size="sm" onClick={onCreate}>
|
|
<Plus />
|
|
Новый модуль
|
|
</Button>
|
|
) : undefined
|
|
}
|
|
/>
|
|
)
|
|
}
|