ldc-supportweb/resources/ts/back/Components/Layout/Settings/AppSettings.tsx
2026-06-05 12:00:58 +02:00

51 lines
1.6 KiB
TypeScript

// * Packages
import { SettingsIcon } from "lucide-react";
import { usePage } from "@inertiajs/react";
// * Components shadcn
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
// * Other
import SettingRegistry from "@/back/Components/Layout/Settings/SettingRegistry";
import { cn, GetTranslation } from "@/lib/utils";
import { ConfigBackend } from "@/back/types/global";
import { AppEnv } from "@/types/global";
type AppSettingsProps = {
className?: string;
};
export default function AppSettings({ className = "" }: AppSettingsProps) {
const { appEnv, configBackend } = usePage().props as unknown as {
appEnv: AppEnv;
configBackend: ConfigBackend;
};
return (
<div className={cn(className)}>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button className="text-muted-foreground" variant="ghost">
<SettingsIcon className="h-[1.2rem] w-[1.2rem]" />
<span className="hidden lg:block">
{GetTranslation("uwil-backend::back.settings")}
</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent side="bottom" className="w-fit me-1">
{SettingRegistry.getAll(appEnv, configBackend).map(
(Section, index, arr) => (
<>
{Section}
{Section && index < arr.length - 1 && <DropdownMenuSeparator />}
</>
),
)}
</DropdownMenuContent>
</DropdownMenu>
</div>
);
}