2023-06-09 23:45:41 +00:00
|
|
|
|
import {
|
|
|
|
|
Button,
|
|
|
|
|
Flex,
|
|
|
|
|
Menu,
|
|
|
|
|
MenuButton,
|
|
|
|
|
MenuItem,
|
|
|
|
|
MenuList,
|
|
|
|
|
Portal,
|
|
|
|
|
Tab,
|
|
|
|
|
TabList,
|
|
|
|
|
TabPanel,
|
|
|
|
|
TabPanels,
|
|
|
|
|
Tabs,
|
|
|
|
|
Text,
|
|
|
|
|
useBreakpointValue,
|
|
|
|
|
} from '@chakra-ui/react';
|
|
|
|
|
import { PanelQMCv2Key } from './panels/PanelQMCv2Key';
|
|
|
|
|
import { useState } from 'react';
|
|
|
|
|
import { MdExpandMore, MdMenu } from 'react-icons/md';
|
|
|
|
|
|
|
|
|
|
const TABS: { name: string; Tab: () => JSX.Element }[] = [
|
|
|
|
|
{ name: 'QMCv2 密钥', Tab: PanelQMCv2Key },
|
|
|
|
|
{
|
|
|
|
|
name: '其它/待定',
|
|
|
|
|
Tab: () => (
|
|
|
|
|
<TabPanel>
|
|
|
|
|
<Text>这里空空如也~</Text>
|
|
|
|
|
</TabPanel>
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
];
|
2023-06-09 22:11:30 +00:00
|
|
|
|
|
|
|
|
|
export function Settings() {
|
2023-06-09 23:45:41 +00:00
|
|
|
|
const isLargeWidthDevice =
|
|
|
|
|
useBreakpointValue({
|
|
|
|
|
base: false,
|
|
|
|
|
lg: true,
|
|
|
|
|
}) ?? false;
|
|
|
|
|
|
|
|
|
|
const [tabIndex, setTabIndex] = useState(0);
|
|
|
|
|
const handleTabChange = (idx: number) => {
|
|
|
|
|
setTabIndex(idx);
|
|
|
|
|
};
|
|
|
|
|
|
2023-06-09 22:11:30 +00:00
|
|
|
|
return (
|
2023-06-09 23:45:41 +00:00
|
|
|
|
<Flex flexDir="column" flex={1}>
|
|
|
|
|
<Menu>
|
|
|
|
|
<MenuButton
|
|
|
|
|
as={Button}
|
|
|
|
|
leftIcon={<MdMenu />}
|
|
|
|
|
rightIcon={<MdExpandMore />}
|
|
|
|
|
colorScheme="gray"
|
|
|
|
|
variant="outline"
|
|
|
|
|
w="full"
|
|
|
|
|
flexShrink={0}
|
|
|
|
|
hidden={isLargeWidthDevice}
|
|
|
|
|
mb="4"
|
|
|
|
|
>
|
|
|
|
|
{TABS[tabIndex].name}
|
|
|
|
|
</MenuButton>
|
|
|
|
|
<Portal>
|
|
|
|
|
<MenuList w="100px">
|
|
|
|
|
{TABS.map(({ name }, i) => (
|
|
|
|
|
<MenuItem key={name} onClick={() => setTabIndex(i)}>
|
|
|
|
|
{name}
|
|
|
|
|
</MenuItem>
|
|
|
|
|
))}
|
|
|
|
|
</MenuList>
|
|
|
|
|
</Portal>
|
|
|
|
|
</Menu>
|
|
|
|
|
|
|
|
|
|
<Tabs
|
|
|
|
|
orientation={isLargeWidthDevice ? 'vertical' : 'horizontal'}
|
|
|
|
|
align="start"
|
|
|
|
|
variant="line-i"
|
|
|
|
|
display="flex"
|
|
|
|
|
flex={1}
|
|
|
|
|
index={tabIndex}
|
|
|
|
|
onChange={handleTabChange}
|
|
|
|
|
>
|
|
|
|
|
<TabList hidden={!isLargeWidthDevice} minW="8em" width="8em" textAlign="right" justifyContent="center">
|
|
|
|
|
{TABS.map(({ name }) => (
|
|
|
|
|
<Tab key={name}>{name}</Tab>
|
|
|
|
|
))}
|
|
|
|
|
</TabList>
|
2023-06-09 22:11:30 +00:00
|
|
|
|
|
2023-06-09 23:45:41 +00:00
|
|
|
|
<TabPanels>
|
|
|
|
|
{TABS.map(({ name, Tab }) => (
|
|
|
|
|
<Tab key={name} />
|
|
|
|
|
))}
|
|
|
|
|
</TabPanels>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</Flex>
|
2023-06-09 22:11:30 +00:00
|
|
|
|
);
|
|
|
|
|
}
|