返回 presentation-ai
HistoryButtons.tsx
根目录 / src / components / presentation / buttons / HistoryButtons.tsx
1 "use client";
2
3 import { Button } from "@/components/ui/button";
4 import {
5 Tooltip,
6 TooltipContent,
7 TooltipProvider,
8 TooltipTrigger,
9 } from "@/components/ui/tooltip";
10 import { usePresentationHistoryState } from "@/states/presentation-history-state";
11 import { Redo2, Undo2 } from "lucide-react";
12
13 export function HistoryButtons() {
14 const undo = usePresentationHistoryState((s) => s.undo);
15 const redo = usePresentationHistoryState((s) => s.redo);
16 const canUndo = usePresentationHistoryState((s) => s.canUndo);
17 const canRedo = usePresentationHistoryState((s) => s.canRedo);
18
19 return (
20 <TooltipProvider delayDuration={300}>
21 <div className="flex items-center gap-1">
22 <Tooltip>
23 <TooltipTrigger asChild>
24 <Button
25 variant="ghost"
26 size="icon"
27 onClick={undo}
28 disabled={!canUndo}
29 className="h-8 w-8"
30 >
31 <Undo2 className="h-4 w-4" />
32 </Button>
33 </TooltipTrigger>
34 <TooltipContent>
35 <p>Undo (Ctrl+Z)</p>
36 </TooltipContent>
37 </Tooltip>
38
39 <Tooltip>
40 <TooltipTrigger asChild>
41 <Button
42 variant="ghost"
43 size="icon"
44 onClick={redo}
45 disabled={!canRedo}
46 className="h-8 w-8"
47 >
48 <Redo2 className="h-4 w-4" />
49 </Button>
50 </TooltipTrigger>
51 <TooltipContent>
52 <p>Redo (Ctrl+Shift+Z or Ctrl+Y)</p>
53 </TooltipContent>
54 </Tooltip>
55 </div>
56 </TooltipProvider>
57 );
58 }
59
59 lines Plain Text