import { Alert, Button, Group, Paper, Stack, Text, Title } from "@mantine/core" import { useDisclosure } from "@mantine/hooks" import cl from "clsx" import { useState } from "react" import { assetsFactory } from "business/assets" import { DASHBOARD_PIPELINE } from "./config/dashboard.config" import { AssetDetailPanel } from "./parts/asset-detail-panel" import { AssetsTable } from "./parts/assets-table" import { CreateAssetModal } from "./parts/create-asset-modal" import { PresetsPanel } from "./parts/presets-panel" import { SummaryCards } from "./parts/summary-cards" import styles from "./styles/dashboard.module.css" import type { DashboardScreenProps } from "./types/dashboard.type" const assets = assetsFactory() /** * Стартовый dashboard admin-приложения. * * Используется для: * - отображения стартового состояния admin MVP * - обзора будущих разделов и пайплайна генерации */ export const DashboardScreen = (props: DashboardScreenProps) => { const { className, ...rootAttrs } = props const [selectedPublicId, setSelectedPublicId] = useState(null) const [isCreateAssetOpen, createAssetModal] = useDisclosure(false) const dashboard = assets.useAssetsDashboard() const createAsset = assets.useCreateAsset() const effectivePublicId = selectedPublicId ?? dashboard.assets[0]?.publicId ?? null const overview = assets.useAssetOverview(effectivePublicId) return (
Image Platform Admin Control plane для image delivery Управление allowed hosts, assets, source versions, presets и variant generation без прямого доступа к storage-слою.
{DASHBOARD_PIPELINE.map((step) => ( {step} ))} {dashboard.error ? ( Проверьте, что backend запущен на `localhost:3001`, а Vite proxy доступен по `/api`. ) : null}
) }