mirror of
https://github.com/woodchen-ink/clash-and-dashboard.git
synced 2025-07-19 06:21:56 +08:00
Merge branch 'master' of github.com:Dreamacro/clash-dashboard
This commit is contained in:
commit
8a8506c3f3
84
package-lock.json
generated
84
package-lock.json
generated
@ -1859,7 +1859,7 @@
|
|||||||
},
|
},
|
||||||
"browserify-aes": {
|
"browserify-aes": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
||||||
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -1896,7 +1896,7 @@
|
|||||||
},
|
},
|
||||||
"browserify-rsa": {
|
"browserify-rsa": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
|
||||||
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
|
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -2623,7 +2623,7 @@
|
|||||||
},
|
},
|
||||||
"create-hash": {
|
"create-hash": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
|
||||||
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -2636,7 +2636,7 @@
|
|||||||
},
|
},
|
||||||
"create-hmac": {
|
"create-hmac": {
|
||||||
"version": "1.1.7",
|
"version": "1.1.7",
|
||||||
"resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
|
||||||
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -3271,7 +3271,7 @@
|
|||||||
},
|
},
|
||||||
"diffie-hellman": {
|
"diffie-hellman": {
|
||||||
"version": "5.0.3",
|
"version": "5.0.3",
|
||||||
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
||||||
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
|
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -6929,6 +6929,22 @@
|
|||||||
"xtend": "4.0.1"
|
"xtend": "4.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"load-bmfont": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/load-bmfont/download/load-bmfont-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-dfFwcLFKjHhf5/W+4ub9T5gJO2s=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"buffer-equal": "0.0.1",
|
||||||
|
"mime": "^1.3.4",
|
||||||
|
"parse-bmfont-ascii": "^1.0.3",
|
||||||
|
"parse-bmfont-binary": "^1.0.5",
|
||||||
|
"parse-bmfont-xml": "^1.1.4",
|
||||||
|
"phin": "^2.9.1",
|
||||||
|
"xhr": "^2.0.1",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"load-json-file": {
|
"load-json-file": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
||||||
@ -7827,7 +7843,7 @@
|
|||||||
},
|
},
|
||||||
"buffer": {
|
"buffer": {
|
||||||
"version": "4.9.1",
|
"version": "4.9.1",
|
||||||
"resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
|
||||||
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
|
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -8407,7 +8423,7 @@
|
|||||||
},
|
},
|
||||||
"parse-asn1": {
|
"parse-asn1": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
||||||
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -8440,6 +8456,28 @@
|
|||||||
"xml2js": "0.4.19"
|
"xml2js": "0.4.19"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parse-bmfont-ascii": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/parse-bmfont-ascii/download/parse-bmfont-ascii-1.0.6.tgz",
|
||||||
|
"integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"parse-bmfont-binary": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/parse-bmfont-binary/download/parse-bmfont-binary-1.0.6.tgz",
|
||||||
|
"integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"parse-bmfont-xml": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/parse-bmfont-xml/download/parse-bmfont-xml-1.1.4.tgz",
|
||||||
|
"integrity": "sha1-AVMZeX4+EvnnOcTVE4cs0vo184k=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"xml-parse-from-string": "^1.0.0",
|
||||||
|
"xml2js": "^0.4.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"parse-entities": {
|
"parse-entities": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
|
||||||
@ -8635,6 +8673,15 @@
|
|||||||
"pngjs": "3.3.3"
|
"pngjs": "3.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pixelmatch": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/pixelmatch/download/pixelmatch-4.0.2.tgz",
|
||||||
|
"integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"pngjs": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"pkg-dir": {
|
"pkg-dir": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
||||||
@ -9383,7 +9430,7 @@
|
|||||||
},
|
},
|
||||||
"public-encrypt": {
|
"public-encrypt": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
|
||||||
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
|
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -10333,7 +10380,7 @@
|
|||||||
},
|
},
|
||||||
"sha.js": {
|
"sha.js": {
|
||||||
"version": "2.4.11",
|
"version": "2.4.11",
|
||||||
"resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
||||||
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -13459,6 +13506,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"webpack-pwa-manifest": {
|
||||||
|
"version": "3.7.1",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/webpack-pwa-manifest/download/webpack-pwa-manifest-3.7.1.tgz",
|
||||||
|
"integrity": "sha1-7zykVxsfeZpHAiW+U3wMpqGslQU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"css-color-names": "0.0.4",
|
||||||
|
"jimp": "^0.2.28",
|
||||||
|
"mime": "^1.6.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"mime": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"resolved": "http://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
|
||||||
|
"integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"webpack-sources": {
|
"webpack-sources": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
|
||||||
|
0
src/containers/Settings/components/index.ts
Normal file
0
src/containers/Settings/components/index.ts
Normal file
@ -1,7 +1,25 @@
|
|||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
|
import { Header, Card } from '@components'
|
||||||
|
import { translate } from 'react-i18next'
|
||||||
|
import { I18nProps } from '@i18n'
|
||||||
|
|
||||||
|
class Settings extends React.Component<I18nProps, {}> {
|
||||||
|
|
||||||
|
state = {
|
||||||
|
startAtLogin: false
|
||||||
|
}
|
||||||
|
|
||||||
export default class Settings extends React.Component<{}, {}> {
|
|
||||||
render () {
|
render () {
|
||||||
return 'Settings'
|
const { t } = this.props
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="page">
|
||||||
|
<Header title={t('title')} />
|
||||||
|
<Card style={{ marginTop: 25 }}>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default translate(['Settings'])(Settings)
|
||||||
|
12
src/containers/Settings/style.scss
Normal file
12
src/containers/Settings/style.scss
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
@import '~@styles/variables';
|
||||||
|
|
||||||
|
.proxies-list {
|
||||||
|
margin: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 20px 15px 20px 0;
|
||||||
|
}
|
||||||
|
}
|
@ -18,9 +18,9 @@ class Sidebar extends React.Component<SidebarProps, {}> {
|
|||||||
render () {
|
render () {
|
||||||
const { routes, t } = this.props
|
const { routes, t } = this.props
|
||||||
return (
|
return (
|
||||||
<div className="slidebar">
|
<div className="sidebar">
|
||||||
<img src={logo} className="slidebar-logo" />
|
<img src={logo} className="sidebar-logo" />
|
||||||
<ul className="slidebar-menu">
|
<ul className="sidebar-menu">
|
||||||
{
|
{
|
||||||
routes.map(
|
routes.map(
|
||||||
({ path, name, exact }) => (
|
({ path, name, exact }) => (
|
||||||
@ -36,4 +36,4 @@ class Sidebar extends React.Component<SidebarProps, {}> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default translate(['slidebar'])(Sidebar)
|
export default translate(['SideBar'])(Sidebar)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
@import '~@styles/variables';
|
@import '~@styles/variables';
|
||||||
|
|
||||||
.slidebar {
|
.sidebar {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -8,13 +8,13 @@
|
|||||||
width: 140px;
|
width: 140px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.slidebar-logo {
|
.sidebar-logo {
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.slidebar-menu {
|
.sidebar-menu {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
|
31
src/i18n/en_US.ts
Normal file
31
src/i18n/en_US.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
export default {
|
||||||
|
SideBar: {
|
||||||
|
Proxies: 'Proxies',
|
||||||
|
Overview: 'Overview',
|
||||||
|
Logs: 'Logs',
|
||||||
|
Rules: 'Rules',
|
||||||
|
Settings: 'Setting'
|
||||||
|
},
|
||||||
|
Settings: {
|
||||||
|
title: 'Settings',
|
||||||
|
labels: {
|
||||||
|
startAtLogin: 'Start at login',
|
||||||
|
language: 'language',
|
||||||
|
setAsSystemProxy: 'Set as system proxy',
|
||||||
|
allowConnectFromLan: 'Allow connect from Lan',
|
||||||
|
proxyMode: 'Mode',
|
||||||
|
socketProxyPort: 'Socket proxy port',
|
||||||
|
httpProxyPort: 'HTTP proxy port',
|
||||||
|
externalController: 'External controller'
|
||||||
|
},
|
||||||
|
values: {
|
||||||
|
cn: '中文',
|
||||||
|
en: 'English',
|
||||||
|
global: 'Global',
|
||||||
|
rules: 'Rules',
|
||||||
|
direct: 'Direct'
|
||||||
|
},
|
||||||
|
versionString: 'Current ClashX is the latest version:{{version}}',
|
||||||
|
checkUpdate: 'Check Update'
|
||||||
|
}
|
||||||
|
}
|
@ -1,30 +1,23 @@
|
|||||||
import * as i18n from 'i18next'
|
import * as i18n from 'i18next'
|
||||||
import * as LanguageDetector from 'i18next-browser-languagedetector'
|
import * as LanguageDetector from 'i18next-browser-languagedetector'
|
||||||
|
|
||||||
const options = {
|
// locales
|
||||||
fallbackLng: 'en',
|
import en_US from './en_US'
|
||||||
|
import zh_CN from './zh_CN'
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
fallbackLng: 'en_US',
|
||||||
|
|
||||||
|
ns: [
|
||||||
|
'SideBar',
|
||||||
|
'Settings'
|
||||||
|
],
|
||||||
|
|
||||||
ns: ['slidebar'],
|
|
||||||
resources: {
|
resources: {
|
||||||
en: {
|
en: en_US,
|
||||||
slidebar: {
|
zh: zh_CN
|
||||||
Proxies: 'Proxies',
|
|
||||||
Overview: 'Overview',
|
|
||||||
Logs: 'Logs',
|
|
||||||
Rules: 'Rules',
|
|
||||||
Settings: 'Setting'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'zh-CN': {
|
|
||||||
slidebar: {
|
|
||||||
Proxies: '代理',
|
|
||||||
Overview: '总览',
|
|
||||||
Logs: '日志',
|
|
||||||
Rules: '规则',
|
|
||||||
Settings: '设置'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
react: {
|
react: {
|
||||||
wait: true
|
wait: true
|
||||||
}
|
}
|
||||||
|
31
src/i18n/zh_CN.ts
Normal file
31
src/i18n/zh_CN.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
export default {
|
||||||
|
SideBar: {
|
||||||
|
Proxies: '代理',
|
||||||
|
Overview: '总览',
|
||||||
|
Logs: '日志',
|
||||||
|
Rules: '规则',
|
||||||
|
Settings: '设置'
|
||||||
|
},
|
||||||
|
Settings: {
|
||||||
|
title: '设置',
|
||||||
|
labels: {
|
||||||
|
startAtLogin: '开机时启动',
|
||||||
|
language: '语言',
|
||||||
|
setAsSystemProxy: '设置为系统代理',
|
||||||
|
allowConnectFromLan: '允许来自局域网的连接',
|
||||||
|
proxyMode: '代理模式',
|
||||||
|
socketProxyPort: 'Socket 代理端口',
|
||||||
|
httpProxyPort: 'HTTP 代理端口',
|
||||||
|
externalController: '外部控制设置'
|
||||||
|
},
|
||||||
|
values: {
|
||||||
|
cn: '中文',
|
||||||
|
en: 'English',
|
||||||
|
global: '全局',
|
||||||
|
rules: '规则',
|
||||||
|
direct: '直连'
|
||||||
|
},
|
||||||
|
versionString: '当前 ClashX 已是最新版本:{{version}}',
|
||||||
|
checkUpdate: '检查更新'
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user