diff --git a/src/admin/AdminNavClient.tsx b/src/admin/AdminNavClient.tsx index 98c08c64..eea8d51c 100644 --- a/src/admin/AdminNavClient.tsx +++ b/src/admin/AdminNavClient.tsx @@ -1,7 +1,9 @@ 'use client'; +import LinkWithStatus from '@/components/LinkWithStatus'; import Note from '@/components/Note'; import SiteGrid from '@/components/SiteGrid'; +import Spinner from '@/components/Spinner'; import { PATH_ADMIN_CONFIGURATION, checkPathPrefix, @@ -11,7 +13,6 @@ import { import { useAppState } from '@/state/AppState'; import { clsx } from 'clsx/lite'; import { differenceInMinutes } from 'date-fns'; -import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useEffect, useMemo, useState } from 'react'; import { BiCog } from 'react-icons/bi'; @@ -60,40 +61,43 @@ export default function AdminNavClient({ contentMain={
{items.map(({ label, href, count }) => - {label} {count > 0 && ({count})} - )} + )}
- } > - +
{shouldShowBanner && }> diff --git a/src/components/LinkWithStatus.tsx b/src/components/LinkWithStatus.tsx index fe049330..8b0876a3 100644 --- a/src/components/LinkWithStatus.tsx +++ b/src/components/LinkWithStatus.tsx @@ -14,15 +14,19 @@ import clsx from 'clsx/lite'; // Avoid showing spinner for too short a time const FLICKER_THRESHOLD = 400; -// Clear loading status after 10 seconds of inactivity -const MAX_LOADING_DURATION = 10_000; +// Clear loading status after long duration of inactivity +const MAX_LOADING_DURATION = 15_000; export type LinkWithStatusProps = ComponentProps & { - loader?: ReactNode + loadingElement?: ReactNode + loadingClassName?: string + contentClassName?: string } export default function LinkWithStatus({ - loader, + loadingElement, + loadingClassName, + contentClassName, href, className, onClick, @@ -71,7 +75,11 @@ export default function LinkWithStatus({ return { const isOpeningNewTab = e.metaKey || e.ctrlKey; if (!isVisitingLinkHref && !isOpeningNewTab) { @@ -92,17 +100,20 @@ export default function LinkWithStatus({ > {children} - {isLoading && loader && - {loader} + {loadingElement} } ; } diff --git a/src/components/SwitcherItem.tsx b/src/components/SwitcherItem.tsx index d6160bda..eb1b70be 100644 --- a/src/components/SwitcherItem.tsx +++ b/src/components/SwitcherItem.tsx @@ -50,7 +50,7 @@ export default function SwitcherItem({ href, className, prefetch, - loader: , + loadingElement: , }}> {renderContent(icon)}