"use client"; import { useEffect, useState } from "react"; import { Download, Eye, FileText } from "lucide-react"; type DocumentItem = { id: number; title: string; file?: string; mode: "preview" | "download" | "disabled"; }; type Props = { items: DocumentItem[]; }; function getPreviewUrl(origin: string, file: string) { const absoluteUrl = `${origin}/documents/${file}`; const extension = file.split(".").pop()?.toLowerCase(); if (extension === "pdf") { return `${absoluteUrl}#toolbar=0&navpanes=0&scrollbar=1`; } return `https://docs.google.com/gview?embedded=1&url=${encodeURIComponent(absoluteUrl)}`; } export function DocumentsViewer({ items }: Props) { const firstPreviewable = items.find((item) => item.mode === "preview" && item.file) ?? null; const [selectedId, setSelectedId] = useState(firstPreviewable?.id ?? 0); const [origin, setOrigin] = useState(""); useEffect(() => { setOrigin(window.location.origin); }, []); const selectedItem = items.find((item) => item.id === selectedId && item.mode === "preview" && item.file) ?? firstPreviewable; return (
Просмотр документа

{selectedItem?.title ?? "Документ не выбран"}

Для просмотра используйте список слева
{selectedItem?.file && origin ? (