ldc-groupe/resources/ts/back/Components/Layout/AppTitle.tsx

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>
);
}