diff --git a/package-lock.json b/package-lock.json index 4b8485e..ec3a340 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/src/containers/Settings/components/index.ts b/src/containers/Settings/components/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/Settings/index.tsx b/src/containers/Settings/index.tsx index 66db212..4c032ce 100644 --- a/src/containers/Settings/index.tsx +++ b/src/containers/Settings/index.tsx @@ -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 { + + state = { + startAtLogin: false + } -export default class Settings extends React.Component<{}, {}> { render () { - return 'Settings' + const { t } = this.props + + return ( +
+
+ + +
+ ) } } + +export default translate(['Settings'])(Settings) diff --git a/src/containers/Settings/style.scss b/src/containers/Settings/style.scss new file mode 100644 index 0000000..c53e635 --- /dev/null +++ b/src/containers/Settings/style.scss @@ -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; + } +} diff --git a/src/containers/Sidebar/index.tsx b/src/containers/Sidebar/index.tsx index 18e2c3d..4fe70c4 100644 --- a/src/containers/Sidebar/index.tsx +++ b/src/containers/Sidebar/index.tsx @@ -18,9 +18,9 @@ class Sidebar extends React.Component { render () { const { routes, t } = this.props return ( -
- -
    +
    + +
      { routes.map( ({ path, name, exact }) => ( @@ -36,4 +36,4 @@ class Sidebar extends React.Component { } } -export default translate(['slidebar'])(Sidebar) +export default translate(['SideBar'])(Sidebar) diff --git a/src/containers/Sidebar/style.scss b/src/containers/Sidebar/style.scss index 471356e..02d6b40 100644 --- a/src/containers/Sidebar/style.scss +++ b/src/containers/Sidebar/style.scss @@ -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; diff --git a/src/i18n/en_US.ts b/src/i18n/en_US.ts new file mode 100644 index 0000000..4bbd3da --- /dev/null +++ b/src/i18n/en_US.ts @@ -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' + } +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 8bbf091..8a35a40 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -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 } diff --git a/src/i18n/zh_CN.ts b/src/i18n/zh_CN.ts new file mode 100644 index 0000000..b534aea --- /dev/null +++ b/src/i18n/zh_CN.ts @@ -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: '检查更新' + } +}