github-actions[bot]
Sync to HuggingFace Spaces
6b3405c
import { lazy, Suspense } from "react";
import {
Drawer,
Accordion,
ActionIcon,
HoverCard,
Stack,
Group,
Center,
FocusTrap,
DrawerProps,
} from "@mantine/core";
import { IconBrandGithub } from "@tabler/icons-react";
import { repository } from "../../../../../package.json";
import prettyMilliseconds from "pretty-ms";
import { getSemanticVersion } from "../../../../modules/stringFormatters";
import { addLogEntry } from "../../../../modules/logEntries";
const AISettingsForm = lazy(() => import("./AISettingsForm"));
const ActionsForm = lazy(() => import("./ActionsForm"));
const InterfaceSettingsForm = lazy(() => import("./InterfaceSettingsForm"));
export default function MenuDrawer(drawerProps: DrawerProps) {
const repoName = repository.url.split("/").pop();
return (
<Drawer
{...drawerProps}
position="right"
size="md"
title={
<Group gap="xs">
<ActionIcon
variant="subtle"
component="a"
color="var(--mantine-color-text)"
href={repository.url}
target="_blank"
onClick={() => addLogEntry("User clicked the GitHub link")}
>
<IconBrandGithub size={16} />
</ActionIcon>
<HoverCard shadow="md" withArrow>
<HoverCard.Target>
<Center>{repoName}</Center>
</HoverCard.Target>
<HoverCard.Dropdown>
<Stack gap="xs">
<Center>{repoName}</Center>
<Center>
{`v${getSemanticVersion(VITE_BUILD_DATE_TIME)}+${VITE_COMMIT_SHORT_HASH}`}
</Center>
<Center>
Released{" "}
{prettyMilliseconds(
new Date().getTime() -
new Date(VITE_BUILD_DATE_TIME).getTime(),
{
compact: true,
verbose: true,
},
)}{" "}
ago
</Center>
</Stack>
</HoverCard.Dropdown>
</HoverCard>
</Group>
}
>
<FocusTrap.InitialFocus />
<Drawer.Body>
<Accordion variant="separated" multiple>
<Accordion.Item value="aiSettings">
<Accordion.Control>AI Settings</Accordion.Control>
<Accordion.Panel>
<Suspense>
<AISettingsForm />
</Suspense>
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="interfaceSettings">
<Accordion.Control>Interface Settings</Accordion.Control>
<Accordion.Panel>
<Suspense>
<InterfaceSettingsForm />
</Suspense>
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="actions">
<Accordion.Control>Actions</Accordion.Control>
<Accordion.Panel>
<Suspense>
<ActionsForm />
</Suspense>
</Accordion.Panel>
</Accordion.Item>
</Accordion>
</Drawer.Body>
</Drawer>
);
}