* feat: adding create bot functionality Signed-off-by: James <james@jan.ai> * update the temperature progress bar Signed-off-by: James <james@jan.ai> * WIP baselayout * Mapping plugins with available preferences * Added loader component * WIP working another screen * Cleanup types and avoid import one by one * Prepare bottom bar * Add css variables colors to enable user select the accent * Enable change accent color * Seperate css variable * Fix conflict * Add blank state of my model empty * Restyle explore models page * Enable user config left sidebar * Restyle my models page * WIP styling chat page * Restyling chat message * Fix conflict * Adde form preferences setting plugins * Fixed form bot info * Sidebar bot chat * Showing rightbar for both setting when user created bot * Fix style bot info * Using overflow auto intead of scroll * Remove script built UI from root package * Fix missig import * Resolve error linter * fix e2e tests Signed-off-by: James <james@jan.ai> --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai>
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { atom } from 'jotai'
|
|
import { setActiveConvoIdAtom } from './Conversation.atom'
|
|
import { systemBarVisibilityAtom } from './SystemBar.atom'
|
|
|
|
export enum MainViewState {
|
|
Welcome,
|
|
CreateBot,
|
|
ExploreModel,
|
|
MyModel,
|
|
ResourceMonitor,
|
|
Setting,
|
|
Conversation,
|
|
|
|
/**
|
|
* When user wants to create new conversation but haven't selected a model yet.
|
|
*/
|
|
ConversationEmptyModel,
|
|
|
|
BotInfo,
|
|
}
|
|
|
|
/**
|
|
* Stores the current main view state. Default is Welcome.
|
|
*/
|
|
const currentMainViewStateAtom = atom<MainViewState>(MainViewState.Welcome)
|
|
|
|
/**
|
|
* Getter for current main view state.
|
|
*/
|
|
export const getMainViewStateAtom = atom((get) => get(currentMainViewStateAtom))
|
|
|
|
/**
|
|
* Setter for current main view state.
|
|
*/
|
|
export const setMainViewStateAtom = atom(
|
|
null,
|
|
(get, set, state: MainViewState) => {
|
|
// return if the state is already set
|
|
if (get(getMainViewStateAtom) === state) return
|
|
|
|
if (state !== MainViewState.Conversation) {
|
|
// clear active conversation id if main view state is not Conversation
|
|
set(setActiveConvoIdAtom, undefined)
|
|
}
|
|
|
|
const showSystemBar =
|
|
state !== MainViewState.Conversation &&
|
|
state !== MainViewState.ConversationEmptyModel
|
|
|
|
// show system bar if state is not Conversation nor ConversationEmptyModel
|
|
set(systemBarVisibilityAtom, showSystemBar)
|
|
|
|
set(currentMainViewStateAtom, state)
|
|
}
|
|
)
|