* feat: tensorrt-llm-extension * fix: loading * feat: add download tensorrt llm runner Signed-off-by: James <james@jan.ai> * feat: update to rollupjs instead of webpack for monitoring extension Signed-off-by: James <james@jan.ai> * feat: move update nvidia info to monitor extension Signed-off-by: James <james@jan.ai> * allow download tensorrt Signed-off-by: James <james@jan.ai> * update Signed-off-by: James <james@jan.ai> * allow download tensor rt based on gpu setting Signed-off-by: James <james@jan.ai> * update downloaded models Signed-off-by: James <james@jan.ai> * feat: add extension compatibility * dynamic tensor rt engines Signed-off-by: James <james@jan.ai> * update models Signed-off-by: James <james@jan.ai> * chore: remove ts-ignore * feat: getting installation state from extension Signed-off-by: James <james@jan.ai> * chore: adding type for decompress Signed-off-by: James <james@jan.ai> * feat: update according Louis's comment Signed-off-by: James <james@jan.ai> * feat: add progress for installing extension Signed-off-by: James <james@jan.ai> * chore: remove args from extension installation * fix: model download does not work properly * fix: do not allow user to stop tensorrtllm inference * fix: extension installed style * fix: download tensorrt does not update state Signed-off-by: James <james@jan.ai> * chore: replace int4 by fl16 * feat: modal for installing extension Signed-off-by: James <james@jan.ai> * fix: start download immediately after press install Signed-off-by: James <james@jan.ai> * fix: error switching between engines * feat: rename inference provider to ai engine and refactor to core * fix: missing ulid * fix: core bundler * feat: add cancel extension installing Signed-off-by: James <james@jan.ai> * remove mocking for mac Signed-off-by: James <james@jan.ai> * fix: show models only when extension is ready * add tensorrt badge for model Signed-off-by: James <james@jan.ai> * fix: copy * fix: add compatible check (#2342) * fix: add compatible check Signed-off-by: James <james@jan.ai> * fix: copy * fix: font * fix: copy * fix: broken monitoring extension * chore: bump engine * fix: copy * fix: model copy * fix: copy * fix: model json --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: Louis <louis@jan.ai> * fix: vulkan support * fix: installation button padding * fix: empty script * fix: remove hard code string --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com>
90 lines
2.8 KiB
TypeScript
90 lines
2.8 KiB
TypeScript
import {
|
|
Tooltip,
|
|
TooltipArrow,
|
|
TooltipContent,
|
|
TooltipTrigger,
|
|
} from '@janhq/uikit'
|
|
import { useAtomValue } from 'jotai'
|
|
|
|
import { FaGithub, FaDiscord } from 'react-icons/fa'
|
|
|
|
import DownloadingState from '@/containers/Layout/BottomBar/DownloadingState'
|
|
|
|
import CommandListDownloadedModel from '@/containers/Layout/TopBar/CommandListDownloadedModel'
|
|
import ProgressBar from '@/containers/ProgressBar'
|
|
|
|
import { appDownloadProgress } from '@/containers/Providers/Jotai'
|
|
|
|
import ImportingModelState from './ImportingModelState'
|
|
import InstallingExtension from './InstallingExtension'
|
|
import SystemMonitor from './SystemMonitor'
|
|
import UpdatedFailedModal from './UpdateFailedModal'
|
|
|
|
const menuLinks = [
|
|
{
|
|
name: 'Discord',
|
|
icon: <FaDiscord size={20} className="flex-shrink-0" />,
|
|
link: 'https://discord.gg/FTk2MvZwJH',
|
|
},
|
|
{
|
|
name: 'Github',
|
|
icon: <FaGithub size={16} className="flex-shrink-0" />,
|
|
link: 'https://github.com/janhq/jan',
|
|
},
|
|
]
|
|
|
|
const BottomBar = () => {
|
|
const progress = useAtomValue(appDownloadProgress)
|
|
|
|
return (
|
|
<div className="fixed bottom-0 left-16 z-50 flex h-12 w-[calc(100%-64px)] items-center justify-between border-t border-border bg-background/80 px-3">
|
|
<div className="flex flex-shrink-0 items-center gap-x-2">
|
|
<div className="flex items-center space-x-2">
|
|
{progress && progress > 0 ? (
|
|
<ProgressBar total={100} used={progress} />
|
|
) : null}
|
|
</div>
|
|
<ImportingModelState />
|
|
<DownloadingState />
|
|
<UpdatedFailedModal />
|
|
<InstallingExtension />
|
|
</div>
|
|
<div className="flex items-center gap-x-3">
|
|
<SystemMonitor />
|
|
|
|
{/* VERSION is defined by webpack, please see next.config.js */}
|
|
<span className="text-xs text-muted-foreground">
|
|
Jan v{VERSION ?? ''}
|
|
</span>
|
|
<div className="mt-1 flex items-center gap-x-2">
|
|
{menuLinks
|
|
.filter((link) => !!link)
|
|
.map((link, i) => (
|
|
<div className="relative" key={i}>
|
|
<Tooltip>
|
|
<TooltipTrigger>
|
|
<a
|
|
href={link.link}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="relative flex w-full flex-shrink-0 cursor-pointer items-center justify-center"
|
|
>
|
|
{link.icon}
|
|
</a>
|
|
</TooltipTrigger>
|
|
<TooltipContent side="top" sideOffset={10}>
|
|
<span>{link.name}</span>
|
|
<TooltipArrow />
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
<CommandListDownloadedModel />
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default BottomBar
|