Merge branch 'master' of github.com:Dreamacro/clash-dashboard

This commit is contained in:
Dreamacro 2018-09-24 23:44:48 +08:00
commit 8a8506c3f3
9 changed files with 190 additions and 39 deletions

84
package-lock.json generated
View File

@ -1859,7 +1859,7 @@
},
"browserify-aes": {
"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==",
"dev": true,
"requires": {
@ -1896,7 +1896,7 @@
},
"browserify-rsa": {
"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=",
"dev": true,
"requires": {
@ -2623,7 +2623,7 @@
},
"create-hash": {
"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==",
"dev": true,
"requires": {
@ -2636,7 +2636,7 @@
},
"create-hmac": {
"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==",
"dev": true,
"requires": {
@ -3271,7 +3271,7 @@
},
"diffie-hellman": {
"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==",
"dev": true,
"requires": {
@ -6929,6 +6929,22 @@
"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": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@ -7827,7 +7843,7 @@
},
"buffer": {
"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=",
"dev": true,
"requires": {
@ -8407,7 +8423,7 @@
},
"parse-asn1": {
"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==",
"dev": true,
"requires": {
@ -8440,6 +8456,28 @@
"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": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
@ -8635,6 +8673,15 @@
"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": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
@ -9383,7 +9430,7 @@
},
"public-encrypt": {
"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==",
"dev": true,
"requires": {
@ -10333,7 +10380,7 @@
},
"sha.js": {
"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==",
"dev": true,
"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": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",

View File

@ -1,7 +1,25 @@
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 () {
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)

View 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;
}
}

View File

@ -18,9 +18,9 @@ class Sidebar extends React.Component<SidebarProps, {}> {
render () {
const { routes, t } = this.props
return (
<div className="slidebar">
<img src={logo} className="slidebar-logo" />
<ul className="slidebar-menu">
<div className="sidebar">
<img src={logo} className="sidebar-logo" />
<ul className="sidebar-menu">
{
routes.map(
({ path, name, exact }) => (
@ -36,4 +36,4 @@ class Sidebar extends React.Component<SidebarProps, {}> {
}
}
export default translate(['slidebar'])(Sidebar)
export default translate(['SideBar'])(Sidebar)

View File

@ -1,6 +1,6 @@
@import '~@styles/variables';
.slidebar {
.sidebar {
display: flex;
flex-direction: column;
align-items: center;
@ -8,13 +8,13 @@
width: 140px;
}
.slidebar-logo {
.sidebar-logo {
margin-top: 50px;
width: 60px;
height: 60px;
}
.slidebar-menu {
.sidebar-menu {
display: flex;
flex-direction: column;
margin-top: 12px;

31
src/i18n/en_US.ts Normal file
View 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'
}
}

View File

@ -1,30 +1,23 @@
import * as i18n from 'i18next'
import * as LanguageDetector from 'i18next-browser-languagedetector'
const options = {
fallbackLng: 'en',
// locales
import en_US from './en_US'
import zh_CN from './zh_CN'
const options = {
fallbackLng: 'en_US',
ns: [
'SideBar',
'Settings'
],
ns: ['slidebar'],
resources: {
en: {
slidebar: {
Proxies: 'Proxies',
Overview: 'Overview',
Logs: 'Logs',
Rules: 'Rules',
Settings: 'Setting'
}
},
'zh-CN': {
slidebar: {
Proxies: '代理',
Overview: '总览',
Logs: '日志',
Rules: '规则',
Settings: '设置'
}
}
en: en_US,
zh: zh_CN
},
react: {
wait: true
}

31
src/i18n/zh_CN.ts Normal file
View 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: '检查更新'
}
}