67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
// * Packages
|
|
import { Head, Link } from "@inertiajs/react";
|
|
import { ArrowLeft, Plus } from "lucide-react";
|
|
// * Components shadcn
|
|
import { Button } from "@/components/ui/button";
|
|
import {
|
|
Tooltip,
|
|
TooltipContent,
|
|
TooltipTrigger,
|
|
} from "@/components/ui/tooltip";
|
|
// * Other
|
|
import useTrans from "@/hooks/use-translations";
|
|
|
|
export default function AppTitle({
|
|
title,
|
|
linkBefore,
|
|
linkAfter,
|
|
}: {
|
|
title: string;
|
|
linkBefore?: string;
|
|
linkAfter?: string;
|
|
}) {
|
|
const backTrans = useTrans("back.crud_back_to_list");
|
|
const newEntryTrans = useTrans("back.crud_add_entry");
|
|
return (
|
|
<div className="flex justify-between items-center py-4">
|
|
<Head title={title} />
|
|
<div className="flex justify-start items-center">
|
|
{linkBefore && (
|
|
<Tooltip>
|
|
<TooltipTrigger asChild>
|
|
<Button size="icon" asChild>
|
|
<Link href={linkBefore}>
|
|
<ArrowLeft />
|
|
</Link>
|
|
</Button>
|
|
</TooltipTrigger>
|
|
<TooltipContent>
|
|
<p>{backTrans}</p>
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
)}
|
|
<h1
|
|
className={`scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl${
|
|
linkBefore ? " ms-2" : ""
|
|
}`}
|
|
>
|
|
{title}
|
|
</h1>
|
|
</div>
|
|
{linkAfter && (
|
|
<Tooltip>
|
|
<TooltipTrigger asChild>
|
|
<Button size="icon" asChild>
|
|
<Link href={linkAfter}>
|
|
<Plus />
|
|
</Link>
|
|
</Button>
|
|
</TooltipTrigger>
|
|
<TooltipContent>
|
|
<p>{newEntryTrans}</p>
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|