mirror of
https://github.com/woodchen-ink/clash-and-dashboard.git
synced 2025-07-19 14:31:57 +08:00
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import * as React from 'react'
|
|
import { Route } from 'react-router-dom'
|
|
import { hot } from 'react-hot-loader'
|
|
import classnames from 'classnames'
|
|
import { I18nProps } from '@models'
|
|
import { isClashX } from '@lib/jsBridge'
|
|
import './App.scss'
|
|
|
|
import Overview from '@containers/Overview'
|
|
import Proxies from '@containers/Proxies'
|
|
import Logs from '@containers/Logs'
|
|
import Rules from '@containers/Rules'
|
|
import Settings from '@containers/Settings'
|
|
import SlideBar from '@containers/Sidebar'
|
|
|
|
export interface AppProps extends I18nProps {
|
|
}
|
|
|
|
@hot(module)
|
|
export default class App extends React.Component<AppProps, {}> {
|
|
render () {
|
|
const routes = [
|
|
{ path: '/', name: 'Overview', component: Overview, exact: true },
|
|
{ path: '/proxies', name: 'Proxies', component: Proxies },
|
|
{ path: '/logs', name: 'Logs', component: Logs },
|
|
{ path: '/rules', name: 'Rules', component: Rules },
|
|
{ path: '/settings', name: 'Settings', component: Settings }
|
|
]
|
|
|
|
return (
|
|
<div className={classnames('app', { 'clash-x': !isClashX() })}>
|
|
<SlideBar routes={routes} />
|
|
<div className="page-container">
|
|
{
|
|
routes.map(
|
|
route => <Route exact={!!route.exact} path={route.path} component={route.component}/>
|
|
)
|
|
}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
}
|