forked from git.gladyson/openmonetis
- Substitui header fixo por topbar com backdrop blur e navegação agrupada em 5 seções - Adiciona FerramentasDropdown consolidando calculadora e modo privacidade - NotificationBell expandida com orçamentos e pré-lançamentos - Remove logout-button, header-dashboard e privacy-mode-toggle como componentes separados - Logo refatorado com variante compact; topbar com links em lowercase - Adiciona dependência radix-ui ^1.4.3 - Atualiza CHANGELOG para v1.7.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
"use client";
|
|
|
|
import { RiRefreshLine } from "@remixicon/react";
|
|
import { useRouter } from "next/navigation";
|
|
import { useTransition } from "react";
|
|
import { buttonVariants } from "@/components/ui/button";
|
|
import {
|
|
Tooltip,
|
|
TooltipContent,
|
|
TooltipTrigger,
|
|
} from "@/components/ui/tooltip";
|
|
import { cn } from "@/lib/utils/ui";
|
|
|
|
type RefreshPageButtonProps = React.ComponentPropsWithoutRef<"button">;
|
|
|
|
export function RefreshPageButton({
|
|
className,
|
|
...props
|
|
}: RefreshPageButtonProps) {
|
|
const router = useRouter();
|
|
const [isPending, startTransition] = useTransition();
|
|
|
|
const handleClick = () => {
|
|
startTransition(() => {
|
|
router.refresh();
|
|
});
|
|
};
|
|
|
|
return (
|
|
<Tooltip>
|
|
<TooltipTrigger asChild>
|
|
<button
|
|
type="button"
|
|
onClick={handleClick}
|
|
disabled={isPending}
|
|
aria-label="Atualizar página"
|
|
title="Atualizar página"
|
|
className={cn(
|
|
buttonVariants({ variant: "ghost", size: "icon-sm" }),
|
|
"size-8 text-muted-foreground transition-all duration-200",
|
|
"hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/40 border",
|
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
className,
|
|
)}
|
|
{...props}
|
|
>
|
|
<RiRefreshLine
|
|
className={cn(
|
|
"size-4 transition-transform duration-200",
|
|
isPending && "animate-spin",
|
|
)}
|
|
aria-hidden
|
|
/>
|
|
</button>
|
|
</TooltipTrigger>
|
|
<TooltipContent side="bottom">Atualizar página</TooltipContent>
|
|
</Tooltip>
|
|
);
|
|
}
|