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;