fix: use branded sidebar logo, gate help menu behind plugin, add instance pending/starting filters
This commit is contained in:
@@ -107,7 +107,6 @@ const baseRoutes = [
|
|||||||
icon: 'icon-models',
|
icon: 'icon-models',
|
||||||
selectedIcon: 'icon-models-filled',
|
selectedIcon: 'icon-models-filled',
|
||||||
defaultIcon: 'icon-models',
|
defaultIcon: 'icon-models',
|
||||||
access: 'canSeeUser',
|
|
||||||
component: './llmodels/user-models'
|
component: './llmodels/user-models'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Logo from '@/assets/images/gpustack-logo.png';
|
import Logo from '@/assets/images/gpustack-logo.png';
|
||||||
import { GPUStackVersionAtom, UpdateCheckAtom, userAtom } from '@/atoms/user';
|
import { GPUStackVersionAtom, UpdateCheckAtom, userAtom } from '@/atoms/user';
|
||||||
import externalLinks from '@/constants/external-links';
|
import externalLinks from '@/constants/external-links';
|
||||||
|
import { useLogo } from '@/hooks/use-logo';
|
||||||
import { Button } from 'antd';
|
import { Button } from 'antd';
|
||||||
import { useAtom } from 'jotai';
|
import { useAtom } from 'jotai';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
@@ -18,7 +19,7 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
|
|||||||
isProd,
|
isProd,
|
||||||
isDev
|
isDev
|
||||||
} = gpuStackVersionAtom;
|
} = gpuStackVersionAtom;
|
||||||
|
const { sidebarLogo } = useLogo();
|
||||||
// user info
|
// user info
|
||||||
const { is_admin } = userDataAtom || {};
|
const { is_admin } = userDataAtom || {};
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
|
|||||||
return (
|
return (
|
||||||
<div className="version-box">
|
<div className="version-box">
|
||||||
<div className="img">
|
<div className="img">
|
||||||
<img src={Logo} alt="logo" />
|
<img src={sidebarLogo || Logo} alt="logo" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="ver">
|
<div className="ver">
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import VersionInfo, { modalConfig } from '@/components/version-info';
|
|||||||
import externalLinks from '@/constants/external-links';
|
import externalLinks from '@/constants/external-links';
|
||||||
import useBodyScroll from '@/hooks/use-body-scroll';
|
import useBodyScroll from '@/hooks/use-body-scroll';
|
||||||
import { logout } from '@/pages/login/apis';
|
import { logout } from '@/pages/login/apis';
|
||||||
|
import { getGPUStackPlugin } from '@/plugins';
|
||||||
import { useModel } from '@@/plugin-model';
|
import { useModel } from '@@/plugin-model';
|
||||||
import {
|
import {
|
||||||
DiscordOutlined,
|
DiscordOutlined,
|
||||||
@@ -98,6 +99,7 @@ const CustomItem = styled.div`
|
|||||||
|
|
||||||
export const ExtraContent = (props: { isDarkTheme?: boolean }) => {
|
export const ExtraContent = (props: { isDarkTheme?: boolean }) => {
|
||||||
const { isDarkTheme } = props;
|
const { isDarkTheme } = props;
|
||||||
|
const plugin = getGPUStackPlugin();
|
||||||
const { saveScrollHeight, restoreScrollHeight } = useBodyScroll();
|
const { saveScrollHeight, restoreScrollHeight } = useBodyScroll();
|
||||||
const [modal, contextHolder] = Modal.useModal();
|
const [modal, contextHolder] = Modal.useModal();
|
||||||
const [version] = useAtom(GPUStackVersionAtom);
|
const [version] = useAtom(GPUStackVersionAtom);
|
||||||
@@ -286,15 +288,17 @@ export const ExtraContent = (props: { isDarkTheme?: boolean }) => {
|
|||||||
</NewLabel>
|
</NewLabel>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<DropdownActions menu={{ ...helpMenu }} popupRender={helpPopupRender}>
|
{!plugin && (
|
||||||
<IconWrapper>
|
<DropdownActions menu={{ ...helpMenu }} popupRender={helpPopupRender}>
|
||||||
<IconFont
|
<IconWrapper>
|
||||||
type="icon-help"
|
<IconFont
|
||||||
className="font-size-20"
|
type="icon-help"
|
||||||
style={{ color: 'var(--ant-color-text-tertiary)' }}
|
className="font-size-20"
|
||||||
/>
|
style={{ color: 'var(--ant-color-text-tertiary)' }}
|
||||||
</IconWrapper>
|
/>
|
||||||
</DropdownActions>
|
</IconWrapper>
|
||||||
|
</DropdownActions>
|
||||||
|
)}
|
||||||
<PluginExtraField name="GlobalSettings" />
|
<PluginExtraField name="GlobalSettings" />
|
||||||
<DropdownActions menu={{ ...userMenu }} popupRender={userPopupRender}>
|
<DropdownActions menu={{ ...userMenu }} popupRender={userPopupRender}>
|
||||||
<IconWrapper>
|
<IconWrapper>
|
||||||
|
|||||||
@@ -31,6 +31,16 @@ const filterOptions = {
|
|||||||
label: 'Error',
|
label: 'Error',
|
||||||
value: 'error',
|
value: 'error',
|
||||||
color: 'var(--ant-color-error)'
|
color: 'var(--ant-color-error)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Pending',
|
||||||
|
value: 'pending',
|
||||||
|
color: 'var(--ant-color-info)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Starting',
|
||||||
|
value: 'starting',
|
||||||
|
color: 'var(--ant-color-info)'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user