import { Dialog as BaseDialog } from '@base-ui/react/dialog'; import { useQuery } from '@tanstack/react-query'; import { ExternalLinkIcon, GlobeIcon } from 'lucide-react'; import { useState } from 'react'; import { Badge } from '#/components/atoms/badge.jsx'; import { Button } from '#/components/atoms/button.jsx'; import { Notice } from '#/components/atoms/notice.jsx'; import { RowIcon } from '#/components/atoms/row-icon.jsx'; import { Dialog } from '#/components/molecules/dialog.jsx'; import { EmptyState } from '#/components/molecules/empty-state.jsx'; import { ListRow } from '#/components/molecules/list-row.jsx'; import { TextLink } from '#/components/molecules/text-link.jsx'; import { get, post } from '#/lib/api.js'; import { bytes, num, timeAgo } from '#/lib/format.js'; import { queryKeys, useApiMutation } from '#/lib/query.js'; /** The expanded site's manifest: every served path with its size and type. */ function SiteFiles({ site }) { const { data, error } = useQuery({ queryKey: queryKeys.siteFiles(site.name), queryFn: () => get(`/sites/files?name=${encodeURIComponent(site.name)}`), }); if (error) { return (