mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-10 02:29:19 +03:00
* prevent unnecessary reloads in useUserPersistence hook * always render ProtectedRoute (handling undefined roles internally) and add Suspense fallback * add missing i18n namespaces react 19 enforces Suspense more strictly, so components using useTranslation() with unloaded namespaces would suspend, blanking the content behind the empty Suspense fallback * add missing namespace * remove unneeded * remove modal from actions dropdown
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
} from "../ui/dropdown-menu";
|
|
import { Button } from "../ui/button";
|
|
import { useTranslation } from "react-i18next";
|
|
import { FaFilm } from "react-icons/fa6";
|
|
|
|
type ActionsDropdownProps = {
|
|
onDebugReplayClick: () => void;
|
|
onExportClick: () => void;
|
|
};
|
|
|
|
export default function ActionsDropdown({
|
|
onDebugReplayClick,
|
|
onExportClick,
|
|
}: ActionsDropdownProps) {
|
|
const { t } = useTranslation(["components/dialog", "views/replay", "common"]);
|
|
|
|
return (
|
|
<DropdownMenu modal={false}>
|
|
<DropdownMenuTrigger asChild>
|
|
<Button
|
|
className="flex items-center gap-2"
|
|
aria-label={t("menu.actions", { ns: "common" })}
|
|
size="sm"
|
|
>
|
|
<FaFilm className="size-5 text-secondary-foreground" />
|
|
<div className="text-primary">
|
|
{t("menu.actions", { ns: "common" })}
|
|
</div>
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="end">
|
|
<DropdownMenuItem onClick={onExportClick}>
|
|
{t("menu.export", { ns: "common" })}
|
|
</DropdownMenuItem>
|
|
<DropdownMenuItem onClick={onDebugReplayClick}>
|
|
{t("title", { ns: "views/replay" })}
|
|
</DropdownMenuItem>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
);
|
|
}
|