gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/common/components/settings-dialog/index.tsx · v0.6.4
Source
1 7389ad0 Mardin 2y ago import { type FC, type PropsWithChildren, useEffect } from "react";
2 7389ad0 Mardin 2y ago import {
3 7389ad0 Mardin 2y ago ScrollArea,
4 7389ad0 Mardin 2y ago Sheet,
5 7389ad0 Mardin 2y ago SheetContent,
6 7389ad0 Mardin 2y ago SheetHeader,
7 7389ad0 Mardin 2y ago SheetTitle,
8 7389ad0 Mardin 2y ago } from "@marzneshin/common/components";
9 7389ad0 Mardin 2y ago import { useTranslation } from "react-i18next";
10 7389ad0 Mardin 2y ago
11 7389ad0 Mardin 2y ago export interface SettingsDialogProps {
12 7389ad0 Mardin 2y ago onOpenChange: (state: boolean) => void;
13 7389ad0 Mardin 2y ago open: boolean;
14 7389ad0 Mardin 2y ago onClose?: () => void;
15 7389ad0 Mardin 2y ago }
16 7389ad0 Mardin 2y ago
17 7389ad0 Mardin 2y ago export const SettingsDialog: FC<SettingsDialogProps & PropsWithChildren> = ({
18 7389ad0 Mardin 2y ago open,
19 7389ad0 Mardin 2y ago onOpenChange,
20 7389ad0 Mardin 2y ago children,
21 7389ad0 Mardin 2y ago onClose = () => null,
22 7389ad0 Mardin 2y ago }) => {
23 7389ad0 Mardin 2y ago const { t } = useTranslation();
24 7389ad0 Mardin 2y ago
25 7389ad0 Mardin 2y ago useEffect(() => {
26 7389ad0 Mardin 2y ago if (!open) onClose();
27 7389ad0 Mardin 2y ago }, [open, onClose]);
28 7389ad0 Mardin 2y ago
29 7389ad0 Mardin 2y ago return (
30 7389ad0 Mardin 2y ago <Sheet open={open} onOpenChange={onOpenChange}>
31 7389ad0 Mardin 2y ago <SheetContent className="sm:min-w-full md:min-w-[700px] space-y-5">
32 7389ad0 Mardin 2y ago <SheetHeader>
33 7389ad0 Mardin 2y ago <SheetTitle>{t("settings")}</SheetTitle>
34 7389ad0 Mardin 2y ago </SheetHeader>
35 7389ad0 Mardin 2y ago <ScrollArea className="flex flex-col gap-4 h-[calc(100vh-100px)] max-h-full">
36 7389ad0 Mardin 2y ago {children}
37 7389ad0 Mardin 2y ago </ScrollArea>
38 7389ad0 Mardin 2y ago </SheetContent>
39 7389ad0 Mardin 2y ago </Sheet>
40 7389ad0 Mardin 2y ago );
41 7389ad0 Mardin 2y ago };