mirror of https://github.com/msgbyte/tailchat
feat: add custom sidebar item
parent
960898f7e6
commit
e73046e7d5
@ -0,0 +1,31 @@
|
|||||||
|
import type { PluginCustomPanel } from '@/plugin/common';
|
||||||
|
import React, { useMemo } from 'react';
|
||||||
|
import { Icon } from 'tailchat-design';
|
||||||
|
import { SidebarItem } from './SidebarItem';
|
||||||
|
|
||||||
|
const defaultUseIsShow = () => true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导航栏自定义选项
|
||||||
|
* 用于插件
|
||||||
|
*/
|
||||||
|
export const CustomSidebarItem: React.FC<{
|
||||||
|
panelInfo: PluginCustomPanel;
|
||||||
|
}> = React.memo(({ panelInfo }) => {
|
||||||
|
const useIsShow = useMemo(() => panelInfo.useIsShow ?? defaultUseIsShow, []);
|
||||||
|
const isShow = useIsShow();
|
||||||
|
|
||||||
|
if (!isShow) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SidebarItem
|
||||||
|
key={panelInfo.name}
|
||||||
|
name={panelInfo.label}
|
||||||
|
icon={<Icon icon={panelInfo.icon} />}
|
||||||
|
to={`/main/personal/custom/${panelInfo.name}`}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
CustomSidebarItem.displayName = 'CustomSidebarItem';
|
Loading…
Reference in New Issue