"use client"
import { Badge } from "@/components/ui/badge"
import { Progress } from "@/components/ui/progress"
import { Skeleton } from "@/components/ui/skeleton"
import { useLoadingState, useResourcesStats } from "../hooks/use-resources"
/**
* Индикатор загрузки ресурсов для Browser
*/
export function BrowserLoadingIndicator() {
const loadingState = useLoadingState()
const stats = useResourcesStats()
// Показываем индикатор только если идет загрузка или есть ошибка
if (!loadingState.isLoading && !loadingState.error) {
return null
}
return (
{/* Статус загрузки */}
{loadingState.isLoading ? (
<>
Загрузка ресурсов...
>
) : loadingState.error ? (
<>
Ошибка загрузки
>
) : (
<>
Загрузка завершена
>
)}
{/* Статистика */}
{stats.total > 0 && (
{stats.total} ресурсов
)}
{loadingState.loadedSources.size > 0 && (
{loadingState.loadedSources.size} источников
)}
{/* Прогресс-бар */}
{loadingState.isLoading && (
{loadingState.loadingQueue.length > 0 && `Загружается: ${loadingState.loadingQueue.join(", ")}`}
{Math.round(loadingState.progress)}%
)}
{/* Ошибка */}
{loadingState.error && (
{loadingState.error}
)}
{/* Детальная статистика (только при загрузке) */}
{loadingState.isLoading && stats.total > 0 && (
{stats.byType.effect > 0 && Эффекты: {stats.byType.effect}}
{stats.byType.filter > 0 && Фильтры: {stats.byType.filter}}
{stats.byType.transition > 0 && Переходы: {stats.byType.transition}}
)}
)
}
/**
* Компонент-заглушка для скелетона загрузки списка ресурсов
*/
export function BrowserResourcesSkeleton() {
return (