Docker images / prepare-release (push) Successful in 4s
Docker images / backend-image (push) Failing after 2m36s
Docker images / frontend-image (push) Successful in 2m22s
Docker images / notify-webhook (push) Skipped
Docker images / updater-image (push) Successful in 55s
Docker images / publish-release (push) Skipped
Подключить App Switcher, NavUser, OpsPanel и AlertDialog вместо Card-shell. Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import {
|
|
Empty,
|
|
EmptyContent,
|
|
EmptyDescription,
|
|
EmptyHeader,
|
|
EmptyMedia,
|
|
EmptyTitle,
|
|
} from "@/components/ui/empty"
|
|
import { IconStack } from "@/components/reui/icon-stack"
|
|
import { InboxIcon } from "lucide-react"
|
|
import { cn } from "@/lib/utils"
|
|
import type { ReactNode } from "react"
|
|
|
|
interface EmptyStateProps {
|
|
icon?: ReactNode
|
|
title: string
|
|
description?: string
|
|
action?: ReactNode
|
|
className?: string
|
|
}
|
|
|
|
/**
|
|
* ReUI Empty + IconStack — Frame-friendly empty-state-14/12.
|
|
* Preview: https://reui.io/preview/base/empty-state-14 · https://reui.io/preview/base/empty-state-12
|
|
*/
|
|
function EmptyState({ icon, title, description, action, className }: EmptyStateProps) {
|
|
return (
|
|
<Empty className={cn("border-0 bg-transparent py-16", className)}>
|
|
<EmptyHeader className="gap-5">
|
|
<EmptyMedia className="mb-0">
|
|
<IconStack aria-hidden="true" className="h-14 w-12">
|
|
{icon ?? <InboxIcon strokeWidth={1.9} aria-hidden="true" className="size-5" />}
|
|
</IconStack>
|
|
</EmptyMedia>
|
|
<EmptyTitle>{title}</EmptyTitle>
|
|
{description ? <EmptyDescription>{description}</EmptyDescription> : null}
|
|
</EmptyHeader>
|
|
{action ? <EmptyContent>{action}</EmptyContent> : null}
|
|
</Empty>
|
|
)
|
|
}
|
|
|
|
export { EmptyState, type EmptyStateProps }
|