import { CubeIcon, BanknotesIcon, ChatBubbleLeftEllipsisIcon, ScissorsIcon, SwatchIcon, SparklesIcon, } from "@heroicons/react/24/outline"; import { ChatStore } from "@/types/chatstore"; import { models } from "@/types/models"; import { Tr } from "@/translate"; import { getTotalCost } from "@/utils/totalCost"; const StatusBar = (props: { chatStore: ChatStore; setShowSettings: (show: boolean) => void; setShowSearch: (show: boolean) => void; }) => { const { chatStore, setShowSettings, setShowSearch } = props; return (
  • Tokens: {chatStore.totalTokens}/{chatStore.maxTokens}

  • Cut: {chatStore.postBeginIndex}/ {chatStore.history.filter(({ hide }) => !hide).length}

  • Cost: ${chatStore.cost.toFixed(4)}

{ setShowSettings(true); }} > {/* the long staus bar */}
Model
{chatStore.model}
{models[chatStore.model]?.price?.prompt * 1000 * 1000} $/M tokens
Mode
{chatStore.streamMode ? Tr("STREAM") : Tr("FETCH")}
STREAM/FETCH
Tokens
{chatStore.totalTokens}
Max: {chatStore.maxTokens}
Cut
{chatStore.postBeginIndex}
Max: {chatStore.history.filter(({ hide }) => !hide).length}
Cost
${chatStore.cost.toFixed(4)}
Accumulated: ${getTotalCost().toFixed(2)}
{/* the short status bar */}
{chatStore.totalTokens !== 0 && ( Tokens: {chatStore.totalTokens} )} {chatStore.model}
); }; export default StatusBar;