feat: add settings pages
This commit is contained in:
parent
cf81885b3e
commit
78c13d7586
@ -15,7 +15,7 @@ function App(): JSX.Element {
|
|||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<HomePage />} />
|
<Route path="/" element={<HomePage />} />
|
||||||
<Route path="/apps" element={<AppsPage />} />
|
<Route path="/apps" element={<AppsPage />} />
|
||||||
<Route path="/settings" element={<SettingsPage />} />
|
<Route path="/settings/*" element={<SettingsPage />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
<Statusbar />
|
<Statusbar />
|
||||||
</MainContainer>
|
</MainContainer>
|
||||||
|
|||||||
@ -28,8 +28,8 @@ const Sidebar: FC = () => {
|
|||||||
</Menus>
|
</Menus>
|
||||||
</MainMenus>
|
</MainMenus>
|
||||||
<Menus>
|
<Menus>
|
||||||
<StyledLink to="/settings">
|
<StyledLink to="/settings/general">
|
||||||
<Icon className={isRoute('/settings')}>
|
<Icon className={pathname.startsWith('/settings') ? 'active' : ''}>
|
||||||
<i className="iconfont icon-setting"></i>
|
<i className="iconfont icon-setting"></i>
|
||||||
</Icon>
|
</Icon>
|
||||||
</StyledLink>
|
</StyledLink>
|
||||||
|
|||||||
10
src/renderer/src/pages/settings/AboutSetting.tsx
Normal file
10
src/renderer/src/pages/settings/AboutSetting.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
const AboutSetting: FC = () => {
|
||||||
|
return <Container>About</Container>
|
||||||
|
}
|
||||||
|
|
||||||
|
const Container = styled.div``
|
||||||
|
|
||||||
|
export default AboutSetting
|
||||||
10
src/renderer/src/pages/settings/DefaultAgentSetting.tsx
Normal file
10
src/renderer/src/pages/settings/DefaultAgentSetting.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
const DefaultAgentSetting: FC = () => {
|
||||||
|
return <Container>Default Agent</Container>
|
||||||
|
}
|
||||||
|
|
||||||
|
const Container = styled.div``
|
||||||
|
|
||||||
|
export default DefaultAgentSetting
|
||||||
10
src/renderer/src/pages/settings/DeveloperSetting.tsx
Normal file
10
src/renderer/src/pages/settings/DeveloperSetting.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
const DeveloperSetting: FC = () => {
|
||||||
|
return <Container>Developer</Container>
|
||||||
|
}
|
||||||
|
|
||||||
|
const Container = styled.div``
|
||||||
|
|
||||||
|
export default DeveloperSetting
|
||||||
10
src/renderer/src/pages/settings/GeneralSetting.tsx
Normal file
10
src/renderer/src/pages/settings/GeneralSetting.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
const GeneralSetting: FC = () => {
|
||||||
|
return <Container>General Settings</Container>
|
||||||
|
}
|
||||||
|
|
||||||
|
const Container = styled.div``
|
||||||
|
|
||||||
|
export default GeneralSetting
|
||||||
10
src/renderer/src/pages/settings/ModelsSetting.tsx
Normal file
10
src/renderer/src/pages/settings/ModelsSetting.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
const ModelsSetting: FC = () => {
|
||||||
|
return <Container>Models</Container>
|
||||||
|
}
|
||||||
|
|
||||||
|
const Container = styled.div``
|
||||||
|
|
||||||
|
export default ModelsSetting
|
||||||
@ -1,15 +1,50 @@
|
|||||||
import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar'
|
import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar'
|
||||||
import { FC } from 'react'
|
import { FC } from 'react'
|
||||||
|
import { Link, Route, Routes, useLocation } from 'react-router-dom'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
import SettingsHomePage from './GeneralSetting'
|
||||||
|
import SettingsDeveloperPage from './DeveloperSetting'
|
||||||
|
import SettingsAboutPage from './AboutSetting'
|
||||||
|
import SettingsModelsPage from './ModelsSetting'
|
||||||
|
import SettingsDefaultAgent from './DefaultAgentSetting'
|
||||||
|
|
||||||
const SettingsPage: FC = () => {
|
const SettingsPage: FC = () => {
|
||||||
|
const { pathname } = useLocation()
|
||||||
|
|
||||||
|
const isRoute = (path: string): string => (pathname === path ? 'active' : '')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<Navbar>
|
<Navbar>
|
||||||
<NavbarCenter>Settings</NavbarCenter>
|
<NavbarCenter>Settings</NavbarCenter>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
<ContentContainer>
|
<ContentContainer>
|
||||||
<SettingMenus></SettingMenus>
|
<SettingMenus>
|
||||||
|
<MenuItemLink to="/settings/general">
|
||||||
|
<MenuItem className={isRoute('/settings/general')}>General</MenuItem>
|
||||||
|
</MenuItemLink>
|
||||||
|
<MenuItemLink to="/settings/models">
|
||||||
|
<MenuItem className={isRoute('/settings/models')}>Language Model</MenuItem>
|
||||||
|
</MenuItemLink>
|
||||||
|
<MenuItemLink to="/settings/default-agent">
|
||||||
|
<MenuItem className={isRoute('/settings/default-agent')}>Default Agent</MenuItem>
|
||||||
|
</MenuItemLink>
|
||||||
|
<MenuItemLink to="/settings/about">
|
||||||
|
<MenuItem className={isRoute('/settings/about')}>About</MenuItem>
|
||||||
|
</MenuItemLink>
|
||||||
|
<MenuItemLink to="/settings/developer">
|
||||||
|
<MenuItem className={isRoute('/settings/developer')}>Developer</MenuItem>
|
||||||
|
</MenuItemLink>
|
||||||
|
</SettingMenus>
|
||||||
|
<SettingContent>
|
||||||
|
<Routes>
|
||||||
|
<Route path="general" element={<SettingsHomePage />} />
|
||||||
|
<Route path="models" element={<SettingsModelsPage />} />
|
||||||
|
<Route path="default-agent" element={<SettingsDefaultAgent />} />
|
||||||
|
<Route path="about" element={<SettingsAboutPage />} />
|
||||||
|
<Route path="developer" element={<SettingsDeveloperPage />} />
|
||||||
|
</Routes>
|
||||||
|
</SettingContent>
|
||||||
</ContentContainer>
|
</ContentContainer>
|
||||||
</Container>
|
</Container>
|
||||||
)
|
)
|
||||||
@ -27,12 +62,41 @@ const ContentContainer = styled.div`
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
`
|
`
|
||||||
|
|
||||||
const SettingMenus = styled.div`
|
const SettingMenus = styled.ul`
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
min-width: var(--conversations-width);
|
min-width: var(--conversations-width);
|
||||||
border-right: 1px solid #ffffff20;
|
border-right: 1px solid #ffffff20;
|
||||||
height: 100%;
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const MenuItemLink = styled(Link)`
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--color-text-1);
|
||||||
|
margin-bottom: 5px;
|
||||||
|
`
|
||||||
|
|
||||||
|
const MenuItem = styled.li`
|
||||||
|
padding: 6px 10px;
|
||||||
|
width: 100%;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 0.2s ease-in-out;
|
||||||
|
&:hover {
|
||||||
|
background: #213675;
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
background: #213675;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const SettingContent = styled.div`
|
||||||
|
display: flex;
|
||||||
|
height: 100%;
|
||||||
|
flex: 1;
|
||||||
|
border-right: 1px solid #ffffff20;
|
||||||
|
padding: 20px;
|
||||||
|
`
|
||||||
|
|
||||||
export default SettingsPage
|
export default SettingsPage
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user