mirror of
https://github.com/tachiyomiorg/website.git
synced 2024-12-21 07:31:58 +01:00
Project Linting (#209)
* More setup for ESLint * Initial linting * Fix: "Unexpected use of 'location': no-restricted-globals" * Fix: "Prop 'sidebarItems' should define at least its type" * Fix: "import/no-unresolved" * Fix: "import/no-extraneous-dependencies" * Fix: "Unexpected require() 'global-require'" * Fix: "vue/require-prop-types" * Line disable: "radix" * Line disable: "no-param-reassign" * Line disable: "no-shadow" This should usually be an actual problem but I don't think so in this case as the next prompt is basically just a one-action warning. * Add markdown linting support * Replace single quotes with double * Fix indentation for all files * Fix second level quotation marks * Change accordingly I'd still rather keep 4-tab for MD when applicable though, the alternative is a non-standard 3-space indent, which makes three different indentations to keep track of.
This commit is contained in:
parent
8c2459d492
commit
b520d4e448
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@ -0,0 +1 @@
|
||||
!.vuepress
|
@ -5,18 +5,28 @@
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"vuepress",
|
||||
"prettier"
|
||||
"airbnb-base",
|
||||
"prettier",
|
||||
"vuepress"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"vue",
|
||||
"prettier"
|
||||
"prettier",
|
||||
"markdown"
|
||||
],
|
||||
"rules": {
|
||||
"prettier/prettier": ["error"]
|
||||
"prettier/prettier": "error",
|
||||
"import/no-unresolved": [
|
||||
2,
|
||||
{ "ignore": ["^@"] }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
4
.github/workflows/push.yml
vendored
4
.github/workflows/push.yml
vendored
@ -31,6 +31,6 @@ jobs:
|
||||
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
publish_branch: gh-pages
|
||||
publish_dir: ./public
|
||||
user_name: 'github-actions[bot]'
|
||||
user_email: 'github-actions[bot]@users.noreply.github.com'
|
||||
user_name: "github-actions[bot]"
|
||||
user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_message: ${{ github.event.head_commit.message }}
|
||||
|
88
.stylintrc
88
.stylintrc
@ -1,47 +1,47 @@
|
||||
{
|
||||
"blocks": false,
|
||||
"brackets": "never",
|
||||
"colons": "never",
|
||||
"colors": "always",
|
||||
"commaSpace": "always",
|
||||
"commentSpace": "always",
|
||||
"cssLiteral": "never",
|
||||
"customProperties": [],
|
||||
"depthLimit": false,
|
||||
"duplicates": true,
|
||||
"efficient": "always",
|
||||
"exclude": [],
|
||||
"extendPref": "@extends",
|
||||
"globalDupe": true,
|
||||
"groupOutputByFile": true,
|
||||
"indentPref": false,
|
||||
"leadingZero": "always",
|
||||
"maxErrors": false,
|
||||
"maxWarnings": false,
|
||||
"mixed": true,
|
||||
"mixins": [],
|
||||
"namingConvention": false,
|
||||
"namingConventionStrict": false,
|
||||
"none": "always",
|
||||
"noImportant": false,
|
||||
"parenSpace": "never",
|
||||
"placeholders": "always",
|
||||
"prefixVarsWithDollar": "always",
|
||||
"quotePref": false,
|
||||
"reporterOptions": {
|
||||
"columns": ["lineData", "severity", "description", "rule"],
|
||||
"columnSplitter": " ",
|
||||
"showHeaders": false,
|
||||
"truncate": true
|
||||
},
|
||||
"semicolons": "never",
|
||||
"sortOrder": ["grouped", "alphabetical"],
|
||||
"stackedProperties": "never",
|
||||
"trailingWhitespace": "never",
|
||||
"universal": false,
|
||||
"valid": true,
|
||||
"zeroUnits": "never",
|
||||
"blocks": false,
|
||||
"brackets": "never",
|
||||
"colons": "never",
|
||||
"colors": "always",
|
||||
"commaSpace": "always",
|
||||
"commentSpace": "always",
|
||||
"cssLiteral": "never",
|
||||
"customProperties": [],
|
||||
"depthLimit": false,
|
||||
"duplicates": true,
|
||||
"efficient": "always",
|
||||
"exclude": [],
|
||||
"extendPref": "@extends",
|
||||
"globalDupe": true,
|
||||
"groupOutputByFile": true,
|
||||
"indentPref": false,
|
||||
"leadingZero": "always",
|
||||
"maxErrors": false,
|
||||
"maxWarnings": false,
|
||||
"mixed": true,
|
||||
"mixins": [],
|
||||
"namingConvention": false,
|
||||
"namingConventionStrict": false,
|
||||
"none": "always",
|
||||
"noImportant": false,
|
||||
"parenSpace": "never",
|
||||
"placeholders": "always",
|
||||
"prefixVarsWithDollar": "always",
|
||||
"quotePref": false,
|
||||
"reporterOptions": {
|
||||
"columns": ["lineData", "severity", "description", "rule"],
|
||||
"columnSplitter": " ",
|
||||
"showHeaders": false,
|
||||
"truncate": true
|
||||
},
|
||||
"semicolons": "never",
|
||||
"sortOrder": ["grouped", "alphabetical"],
|
||||
"stackedProperties": "never",
|
||||
"trailingWhitespace": "never",
|
||||
"universal": false,
|
||||
"valid": true,
|
||||
"zeroUnits": "never",
|
||||
"zIndexNormalize": false,
|
||||
"stylusSupremacy.selectorSeparator": ",\n",
|
||||
"stylusSupremacy.insertNewLineAroundBlocks": "root"
|
||||
"stylusSupremacy.selectorSeparator": ",\n",
|
||||
"stylusSupremacy.insertNewLineAroundBlocks": "root"
|
||||
}
|
||||
|
22
README.md
22
README.md
@ -1,9 +1,11 @@
|
||||
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/tachiyomi">
|
||||
<img src="https://img.shields.io/discord/349436576037732353.svg?label=Discord&labelColor=7289da&color=2c2f33&style=flat" alt="Discord">
|
||||
</a>
|
||||
</p>
|
||||
<div>
|
||||
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/tachiyomi">
|
||||
<img src="https://img.shields.io/discord/349436576037732353.svg?label=Discord&labelColor=7289da&color=2c2f33&style=flat" alt="Discord">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Contributing
|
||||
|
||||
@ -18,8 +20,8 @@ Pull requests are welcome. For major changes, please open an issue first to disc
|
||||
|
||||
## License
|
||||
|
||||
Copyright (C) 2018 The Tachiyomi Open Source Project
|
||||
Copyright (C) 2018 The Tachiyomi Open Source Project
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
257
package-lock.json
generated
257
package-lock.json
generated
@ -2189,6 +2189,12 @@
|
||||
"object.assign": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"bail": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
|
||||
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
@ -2873,6 +2879,24 @@
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"character-entities": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
|
||||
"integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
|
||||
"dev": true
|
||||
},
|
||||
"character-entities-legacy": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
|
||||
"integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
|
||||
"dev": true
|
||||
},
|
||||
"character-reference-invalid": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
|
||||
"integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
|
||||
"dev": true
|
||||
},
|
||||
"chardet": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
@ -3099,6 +3123,12 @@
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||
"dev": true
|
||||
},
|
||||
"collapse-white-space": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
|
||||
"integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==",
|
||||
"dev": true
|
||||
},
|
||||
"collection-visit": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
|
||||
@ -4716,6 +4746,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-plugin-markdown": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.2.tgz",
|
||||
"integrity": "sha512-BfvXKsO0K+zvdarNc801jsE/NTLmig4oKhZ1U3aSUgTf2dB/US5+CrfGxMsCK2Ki1vS1R3HPok+uYpufFndhzw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"object-assign": "^4.0.1",
|
||||
"remark-parse": "^5.0.0",
|
||||
"unified": "^6.1.2"
|
||||
}
|
||||
},
|
||||
"eslint-plugin-node": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
|
||||
@ -6490,6 +6531,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"is-alphabetical": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
|
||||
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"is-alphanumerical": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
|
||||
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-alphabetical": "^1.0.0",
|
||||
"is-decimal": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-arguments": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
|
||||
@ -6580,6 +6637,12 @@
|
||||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
||||
"dev": true
|
||||
},
|
||||
"is-decimal": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
|
||||
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-descriptor": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
|
||||
@ -6638,6 +6701,12 @@
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-hexadecimal": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
|
||||
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-installed-globally": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
|
||||
@ -6784,12 +6853,24 @@
|
||||
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
||||
"dev": true
|
||||
},
|
||||
"is-whitespace-character": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
|
||||
"integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
|
||||
"dev": true
|
||||
},
|
||||
"is-windows": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
||||
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
||||
"dev": true
|
||||
},
|
||||
"is-word-character": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
|
||||
"integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
|
||||
"dev": true
|
||||
},
|
||||
"is-wsl": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
||||
@ -7111,8 +7192,7 @@
|
||||
"lodash.orderby": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
|
||||
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM=",
|
||||
"dev": true
|
||||
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM="
|
||||
},
|
||||
"lodash.padstart": {
|
||||
"version": "4.6.1",
|
||||
@ -7146,8 +7226,7 @@
|
||||
"lodash.throttle": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
|
||||
"dev": true
|
||||
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
|
||||
},
|
||||
"lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
@ -7247,6 +7326,12 @@
|
||||
"object-visit": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"markdown-escapes": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz",
|
||||
"integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==",
|
||||
"dev": true
|
||||
},
|
||||
"markdown-it": {
|
||||
"version": "8.4.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
|
||||
@ -8375,6 +8460,20 @@
|
||||
"safe-buffer": "^5.1.1"
|
||||
}
|
||||
},
|
||||
"parse-entities": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
|
||||
"integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"character-entities": "^1.0.0",
|
||||
"character-entities-legacy": "^1.0.0",
|
||||
"character-reference-invalid": "^1.0.0",
|
||||
"is-alphanumerical": "^1.0.0",
|
||||
"is-decimal": "^1.0.0",
|
||||
"is-hexadecimal": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"parse-json": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||
@ -9627,6 +9726,29 @@
|
||||
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
|
||||
"dev": true
|
||||
},
|
||||
"remark-parse": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz",
|
||||
"integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"collapse-white-space": "^1.0.2",
|
||||
"is-alphabetical": "^1.0.0",
|
||||
"is-decimal": "^1.0.0",
|
||||
"is-whitespace-character": "^1.0.0",
|
||||
"is-word-character": "^1.0.0",
|
||||
"markdown-escapes": "^1.0.0",
|
||||
"parse-entities": "^1.1.0",
|
||||
"repeat-string": "^1.5.4",
|
||||
"state-toggle": "^1.0.0",
|
||||
"trim": "0.0.1",
|
||||
"trim-trailing-lines": "^1.0.0",
|
||||
"unherit": "^1.0.4",
|
||||
"unist-util-remove-position": "^1.0.0",
|
||||
"vfile-location": "^2.0.0",
|
||||
"xtend": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"remove-trailing-separator": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
||||
@ -9712,6 +9834,12 @@
|
||||
"is-finite": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"replace-ext": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
|
||||
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
|
||||
"dev": true
|
||||
},
|
||||
"request": {
|
||||
"version": "2.88.2",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
||||
@ -10665,6 +10793,12 @@
|
||||
"integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
|
||||
"dev": true
|
||||
},
|
||||
"state-toggle": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
|
||||
"integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==",
|
||||
"dev": true
|
||||
},
|
||||
"static-extend": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
|
||||
@ -11268,12 +11402,30 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"trim": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
||||
"integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=",
|
||||
"dev": true
|
||||
},
|
||||
"trim-newlines": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
||||
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
|
||||
"dev": true
|
||||
},
|
||||
"trim-trailing-lines": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
|
||||
"integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==",
|
||||
"dev": true
|
||||
},
|
||||
"trough": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
|
||||
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
|
||||
"dev": true
|
||||
},
|
||||
"true-case-path": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
|
||||
@ -11380,6 +11532,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"unherit": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
|
||||
"integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.0",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
|
||||
@ -11408,6 +11570,20 @@
|
||||
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
|
||||
"dev": true
|
||||
},
|
||||
"unified": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
|
||||
"integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bail": "^1.0.0",
|
||||
"extend": "^3.0.0",
|
||||
"is-plain-obj": "^1.1.0",
|
||||
"trough": "^1.0.0",
|
||||
"vfile": "^2.0.0",
|
||||
"x-is-string": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"union-value": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
|
||||
@ -11459,6 +11635,45 @@
|
||||
"crypto-random-string": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"unist-util-is": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
|
||||
"integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==",
|
||||
"dev": true
|
||||
},
|
||||
"unist-util-remove-position": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
|
||||
"integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"unist-util-visit": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"unist-util-stringify-position": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
|
||||
"integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
|
||||
"dev": true
|
||||
},
|
||||
"unist-util-visit": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
|
||||
"integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"unist-util-visit-parents": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"unist-util-visit-parents": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
|
||||
"integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"unist-util-is": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
@ -11776,6 +11991,33 @@
|
||||
"extsprintf": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"vfile": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
|
||||
"integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-buffer": "^1.1.4",
|
||||
"replace-ext": "1.0.0",
|
||||
"unist-util-stringify-position": "^1.0.0",
|
||||
"vfile-message": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"vfile-location": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
|
||||
"integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==",
|
||||
"dev": true
|
||||
},
|
||||
"vfile-message": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
|
||||
"integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"unist-util-stringify-position": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"vm-browserify": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
||||
@ -11792,7 +12034,6 @@
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-agile/-/vue-agile-1.1.3.tgz",
|
||||
"integrity": "sha512-RnvKK6ZoXNAk2Q6h/ux+bhqYs4uflFew3xcsNfysQa+GVLKHfizAaeKHJndqGjSXA+qg+kJuYd4RDY/ry8RY4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.throttle": "^4.1.1"
|
||||
@ -12624,6 +12865,12 @@
|
||||
"async-limiter": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"x-is-string": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
|
||||
"integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
|
||||
"dev": true
|
||||
},
|
||||
"xdg-basedir": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
|
||||
|
@ -16,13 +16,16 @@
|
||||
"@vuepress/plugin-google-analytics": "^1.5.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-airbnb": "^18.1.0",
|
||||
"eslint-config-airbnb-base": "^14.1.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-config-vuepress": "^2.2.0",
|
||||
"eslint-plugin-import": "^2.20.2",
|
||||
"eslint-plugin-markdown": "^1.0.2",
|
||||
"eslint-plugin-prettier": "^3.1.3",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"node-sass": "^4.14.1",
|
||||
"prettier": "^2.0.5",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue-agile": "^1.1.3",
|
||||
"vuepress": "^1.5.0",
|
||||
"vuepress-plugin-clean-urls": "^1.1.1",
|
||||
"vuepress-plugin-container": "^2.1.3"
|
||||
@ -33,6 +36,7 @@
|
||||
"lodash.groupby": "^4.6.0",
|
||||
"lodash.sortby": "^4.7.0",
|
||||
"material-design-icons": "^3.0.1",
|
||||
"vue-agile": "^1.1.3",
|
||||
"vue-material-design-icons": "^4.6.0",
|
||||
"vue-sweetalert2": "^3.0.5",
|
||||
"vuepress-plugin-sitemap": "^2.3.1"
|
||||
|
@ -16,18 +16,18 @@ export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: "carousel"
|
||||
default: "carousel",
|
||||
},
|
||||
config: {
|
||||
type: Object,
|
||||
default: function() {
|
||||
default() {
|
||||
return {
|
||||
navButtons: true,
|
||||
centerMode: true
|
||||
centerMode: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -10,9 +10,9 @@ export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: "carousel-cell"
|
||||
}
|
||||
}
|
||||
default: "carousel-cell",
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -15,35 +15,34 @@ import axios from "axios";
|
||||
const RELEASE_URL =
|
||||
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
||||
|
||||
const PREVIEW_URL =
|
||||
"https://tachiyomi.kanade.eu/latest";
|
||||
const PREVIEW_URL = "https://tachiyomi.kanade.eu/latest";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
downloadStableTag: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadPreviewTag: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadStableLabel: {
|
||||
type: String,
|
||||
default: "Stable"
|
||||
default: "Stable",
|
||||
},
|
||||
downloadPreviewLabel: {
|
||||
type: String,
|
||||
default: "Preview"
|
||||
default: "Preview",
|
||||
},
|
||||
downloadStableUrl: {
|
||||
type: String,
|
||||
default: undefined
|
||||
default: undefined,
|
||||
},
|
||||
downloadPreviewUrl: {
|
||||
type: String,
|
||||
default: undefined
|
||||
}
|
||||
default: undefined,
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
@ -56,7 +55,7 @@ export default {
|
||||
async mounted() {
|
||||
const { data } = await axios.get(RELEASE_URL);
|
||||
// Maybe eventually some release has more than the apk in assets.
|
||||
const apkAsset = data.assets.find(a => a.name.includes(".apk"));
|
||||
const apkAsset = data.assets.find((a) => a.name.includes(".apk"));
|
||||
// Set the values.
|
||||
this.$data.tagName = data.tag_name;
|
||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||
@ -66,7 +65,7 @@ export default {
|
||||
downloadStable() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.downloadStableLabel + " version is being downloaded.",
|
||||
text: `${this.downloadStableLabel} version is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -74,24 +73,32 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
window.location.assign(
|
||||
this.$props.downloadStableUrl || this.$data.browserDownloadUrl || RELEASE_URL
|
||||
this.$props.downloadStableUrl ||
|
||||
this.$data.browserDownloadUrl ||
|
||||
RELEASE_URL
|
||||
);
|
||||
window.ga(
|
||||
"send",
|
||||
"event",
|
||||
"Action",
|
||||
"Download",
|
||||
this.downloadStableTag
|
||||
);
|
||||
window.ga("send", "event", "Action", "Download", this.downloadStableTag);
|
||||
},
|
||||
downloadPreview() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.downloadPreviewLabel + " version is being downloaded.",
|
||||
text: `${this.downloadPreviewLabel} version is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -99,21 +106,27 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
window.location.assign(
|
||||
this.$props.downloadPreviewUrl || PREVIEW_URL
|
||||
);
|
||||
window.ga("send", "event", "Action", "Download", this.downloadPreviewTag);
|
||||
}
|
||||
}
|
||||
window.ga(
|
||||
"send",
|
||||
"event",
|
||||
"Action",
|
||||
"Download",
|
||||
this.downloadPreviewTag
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -54,24 +54,26 @@ const EXTENSION_JSON =
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
extensions: []
|
||||
extensions: [],
|
||||
};
|
||||
},
|
||||
|
||||
async beforeMount() {
|
||||
const { data } = await axios.get(EXTENSION_JSON);
|
||||
const values = Object.values(groupBy(data, "lang"));
|
||||
this.$data.extensions = sortBy(values, [g => this.langName(g[0].lang)]);
|
||||
this.$data.extensions = sortBy(values, [
|
||||
(g) => this.langName(g[0].lang),
|
||||
]);
|
||||
},
|
||||
|
||||
updated() {
|
||||
if (location.hash) {
|
||||
location.replace(location.hash);
|
||||
if (window.ocation.hash) {
|
||||
window.location.replace(window.location.hash);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
langName: code =>
|
||||
langName: (code) =>
|
||||
code === "all"
|
||||
? "All"
|
||||
: `${ISO6391.getName(code)} (${ISO6391.getNativeName(code)})`,
|
||||
@ -79,9 +81,9 @@ export default {
|
||||
const pkgName = pkg.substring(0, pkg.lastIndexOf("."));
|
||||
return `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/icon/${pkgName}.png`;
|
||||
},
|
||||
apkUrl: apk =>
|
||||
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`
|
||||
}
|
||||
apkUrl: (apk) =>
|
||||
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -1,9 +1,17 @@
|
||||
<template>
|
||||
<div class="downloadContainer">
|
||||
<button class="downloadForkButton" :style="downloadForkStyle" @click="downloadFork">
|
||||
<button
|
||||
class="downloadForkButton"
|
||||
:style="downloadForkStyle"
|
||||
@click="downloadFork"
|
||||
>
|
||||
{{ downloadForkLabel }}
|
||||
</button>
|
||||
<button class="githubForkButton" :style="githubForkStyle" :onclick="githubForkLink">
|
||||
<button
|
||||
class="githubForkButton"
|
||||
:style="githubForkStyle"
|
||||
:onclick="githubForkLink"
|
||||
>
|
||||
{{ githubForkLabel }}
|
||||
</button>
|
||||
</div>
|
||||
@ -16,44 +24,44 @@ export default {
|
||||
props: {
|
||||
forkName: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadForkLabel: {
|
||||
type: String,
|
||||
default: "Download"
|
||||
default: "Download",
|
||||
},
|
||||
downloadForkLink: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadForkStyle: {
|
||||
type: String,
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
githubForkLabel: {
|
||||
type: String,
|
||||
default: "GitHub"
|
||||
default: "GitHub",
|
||||
},
|
||||
githubForkLink: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
githubForkStyle: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tagName: "",
|
||||
browserDownloadUrl: ""
|
||||
browserDownloadUrl: "",
|
||||
};
|
||||
},
|
||||
|
||||
async mounted() {
|
||||
const { data } = await axios.get(this.$props.downloadForkLink);
|
||||
// Maybe eventually some release has more than the apk in assets.
|
||||
const apkAsset = data.assets.find(a => a.name.includes(".apk"));
|
||||
const apkAsset = data.assets.find((a) => a.name.includes(".apk"));
|
||||
// Set the values.
|
||||
this.$data.tagName = data.tag_name;
|
||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||
@ -63,7 +71,7 @@ export default {
|
||||
downloadFork() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.$props.forkName + " is being downloaded.",
|
||||
text: `${this.$props.forkName} is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -71,21 +79,27 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
window.location.assign(
|
||||
this.$data.browserDownloadUrl || this.$props.downloadForkLink
|
||||
);
|
||||
window.ga("send", "event", "Action", "Download", this.$props.forkName);
|
||||
}
|
||||
}
|
||||
window.ga(
|
||||
"send",
|
||||
"event",
|
||||
"Action",
|
||||
"Download",
|
||||
this.$props.forkName
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -1,27 +1,23 @@
|
||||
<template>
|
||||
<Layout :class="$frontmatter.title">
|
||||
<main class="page">
|
||||
<slot name="top" />
|
||||
<slot name="top" />
|
||||
|
||||
<Content class="theme-default-content" />
|
||||
<PageEdit />
|
||||
<Content class="theme-default-content" />
|
||||
<PageEdit />
|
||||
|
||||
<PageNav v-bind="{ sidebarItems }" />
|
||||
|
||||
<slot name="bottom" />
|
||||
<slot name="bottom" />
|
||||
</main>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Layout from '@theme/layouts/Layout.vue'
|
||||
import PageEdit from '@theme/components/PageEdit.vue'
|
||||
import PageNav from '@theme/components/PageNav.vue'
|
||||
import Layout from "@theme/layouts/Layout.vue";
|
||||
import PageEdit from "@theme/components/PageEdit.vue";
|
||||
|
||||
export default {
|
||||
components: { PageEdit, PageNav, Layout },
|
||||
props: ['sidebarItems']
|
||||
}
|
||||
components: { PageEdit, Layout },
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
|
@ -158,209 +158,209 @@ export default {
|
||||
|
||||
<style lang="stylus">
|
||||
.help-page
|
||||
.page
|
||||
padding-left 0 !important
|
||||
padding-bottom 2rem
|
||||
display block
|
||||
.theme-custom-content
|
||||
max-width 75rem
|
||||
margin 0 auto
|
||||
padding 2rem 2.5rem
|
||||
*
|
||||
box-sizing border-box
|
||||
h1
|
||||
text-align center
|
||||
.header-anchor
|
||||
display none
|
||||
h3
|
||||
.header-anchor
|
||||
display none
|
||||
.content__center
|
||||
text-align center
|
||||
margin-bottom 2rem
|
||||
.algolia-search-wrapper
|
||||
width 100%
|
||||
text-align center
|
||||
margin-bottom 5rem
|
||||
.algolia-autocomplete
|
||||
width 50%
|
||||
input
|
||||
background #ffffff url('/assets/img/search.83621669.svg') 0.6rem 0.9rem no-repeat
|
||||
background-size 1rem
|
||||
box-shadow 0 0 30px rgba(177, 174, 174, 0.322)
|
||||
border 1px solid #cfd4db
|
||||
font-size 1.2rem
|
||||
height 3rem
|
||||
width 100%
|
||||
.card
|
||||
background-color white
|
||||
border-bottom 1px solid transparent
|
||||
border-radius 6px
|
||||
box-shadow 0 0 30px #b1aeae52
|
||||
color $accentColor
|
||||
height 100%
|
||||
overflow hidden
|
||||
padding 0.5rem
|
||||
text-align center
|
||||
user-select none
|
||||
width auto
|
||||
header
|
||||
margin-top 1.25rem
|
||||
white-space nowrap
|
||||
.material-icons,
|
||||
.material-design-icon
|
||||
display contents
|
||||
font-size 2.5em
|
||||
color $accentColorSecondary
|
||||
.material-design-icon > .material-design-icon__svg
|
||||
position relative
|
||||
span
|
||||
display block
|
||||
.icon.outbound
|
||||
display inline-block
|
||||
visibility hidden
|
||||
vertical-align baseline
|
||||
right 10px
|
||||
h3
|
||||
display inline-block
|
||||
margin-left 1.8rem
|
||||
margin-bottom 0
|
||||
h3
|
||||
margin 10px
|
||||
p
|
||||
color #566573
|
||||
font-weight 400
|
||||
font-size 0.95rem
|
||||
&:hover
|
||||
border-bottom 2px solid $accentColor
|
||||
border-bottom-left-radius 0
|
||||
border-bottom-right-radius 0
|
||||
position relative
|
||||
.material-design-icon
|
||||
color $accentColor
|
||||
&.discord-icon
|
||||
color $discordAccentColor
|
||||
&.reddit-icon
|
||||
color $redditAccentColor
|
||||
&.github-icon
|
||||
color $githubAccentColor
|
||||
.icon.outbound
|
||||
visibility visible
|
||||
&__Discord:hover
|
||||
border-bottom 2px solid $discordAccentColor
|
||||
h3
|
||||
color $discordAccentColor
|
||||
&__Reddit:hover
|
||||
border-bottom 2px solid $redditAccentColor
|
||||
h3
|
||||
color $redditAccentColor
|
||||
&__GitHub:hover
|
||||
border-bottom 2px solid $githubAccentColor
|
||||
h3
|
||||
color $githubAccentColor
|
||||
.column
|
||||
border 1px solid #cfd4db
|
||||
border-radius 6px
|
||||
&:hover
|
||||
border-bottom none
|
||||
a:focus
|
||||
box-shadow none
|
||||
outline none
|
||||
.card
|
||||
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||
outline none
|
||||
.row
|
||||
display grid
|
||||
grid-template-columns repeat(4, 1fr)
|
||||
grid-auto-rows 1fr
|
||||
grid-gap 1rem
|
||||
&:after
|
||||
content ''
|
||||
display table
|
||||
clear both
|
||||
.page
|
||||
padding-left 0 !important
|
||||
padding-bottom 2rem
|
||||
display block
|
||||
.theme-custom-content
|
||||
max-width 75rem
|
||||
margin 0 auto
|
||||
padding 2rem 2.5rem
|
||||
*
|
||||
box-sizing border-box
|
||||
h1
|
||||
text-align center
|
||||
.header-anchor
|
||||
display none
|
||||
h3
|
||||
.header-anchor
|
||||
display none
|
||||
.content__center
|
||||
text-align center
|
||||
margin-bottom 2rem
|
||||
.algolia-search-wrapper
|
||||
width 100%
|
||||
text-align center
|
||||
margin-bottom 5rem
|
||||
.algolia-autocomplete
|
||||
width 50%
|
||||
input
|
||||
background #ffffff url('/assets/img/search.83621669.svg') 0.6rem 0.9rem no-repeat
|
||||
background-size 1rem
|
||||
box-shadow 0 0 30px rgba(177, 174, 174, 0.322)
|
||||
border 1px solid #cfd4db
|
||||
font-size 1.2rem
|
||||
height 3rem
|
||||
width 100%
|
||||
.card
|
||||
background-color white
|
||||
border-bottom 1px solid transparent
|
||||
border-radius 6px
|
||||
box-shadow 0 0 30px #b1aeae52
|
||||
color $accentColor
|
||||
height 100%
|
||||
overflow hidden
|
||||
padding 0.5rem
|
||||
text-align center
|
||||
user-select none
|
||||
width auto
|
||||
header
|
||||
margin-top 1.25rem
|
||||
white-space nowrap
|
||||
.material-icons,
|
||||
.material-design-icon
|
||||
display contents
|
||||
font-size 2.5em
|
||||
color $accentColorSecondary
|
||||
.material-design-icon > .material-design-icon__svg
|
||||
position relative
|
||||
span
|
||||
display block
|
||||
.icon.outbound
|
||||
display inline-block
|
||||
visibility hidden
|
||||
vertical-align baseline
|
||||
right 10px
|
||||
h3
|
||||
display inline-block
|
||||
margin-left 1.8rem
|
||||
margin-bottom 0
|
||||
h3
|
||||
margin 10px
|
||||
p
|
||||
color #566573
|
||||
font-weight 400
|
||||
font-size 0.95rem
|
||||
&:hover
|
||||
border-bottom 2px solid $accentColor
|
||||
border-bottom-left-radius 0
|
||||
border-bottom-right-radius 0
|
||||
position relative
|
||||
.material-design-icon
|
||||
color $accentColor
|
||||
&.discord-icon
|
||||
color $discordAccentColor
|
||||
&.reddit-icon
|
||||
color $redditAccentColor
|
||||
&.github-icon
|
||||
color $githubAccentColor
|
||||
.icon.outbound
|
||||
visibility visible
|
||||
&__Discord:hover
|
||||
border-bottom 2px solid $discordAccentColor
|
||||
h3
|
||||
color $discordAccentColor
|
||||
&__Reddit:hover
|
||||
border-bottom 2px solid $redditAccentColor
|
||||
h3
|
||||
color $redditAccentColor
|
||||
&__GitHub:hover
|
||||
border-bottom 2px solid $githubAccentColor
|
||||
h3
|
||||
color $githubAccentColor
|
||||
.column
|
||||
border 1px solid #cfd4db
|
||||
border-radius 6px
|
||||
&:hover
|
||||
border-bottom none
|
||||
a:focus
|
||||
box-shadow none
|
||||
outline none
|
||||
.card
|
||||
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||
outline none
|
||||
.row
|
||||
display grid
|
||||
grid-template-columns repeat(4, 1fr)
|
||||
grid-auto-rows 1fr
|
||||
grid-gap 1rem
|
||||
&:after
|
||||
content ""
|
||||
display table
|
||||
clear both
|
||||
|
||||
@media screen and (max-width $MQMobile)
|
||||
.help-page
|
||||
.page
|
||||
.theme-custom-content
|
||||
padding 2rem 0.75rem
|
||||
padding-bottom 0
|
||||
h1
|
||||
margin-bottom 0.5rem
|
||||
.content__center
|
||||
margin-top 0
|
||||
padding-top 0
|
||||
.algolia-search-wrapper
|
||||
width 100%
|
||||
margin-bottom 1rem
|
||||
.algolia-autocomplete
|
||||
width 100%
|
||||
padding 0.4rem 0.65rem
|
||||
input
|
||||
width 100%
|
||||
left 0
|
||||
.column
|
||||
margin 0.4rem 0.6rem
|
||||
.card
|
||||
height auto
|
||||
width auto
|
||||
header
|
||||
margin-top 1rem
|
||||
.material-icons,
|
||||
.material-design-icon
|
||||
font-size 1.6em
|
||||
&.discord-icon
|
||||
color $discordAccentColor
|
||||
&.reddit-icon
|
||||
color $redditAccentColor
|
||||
&.github-icon
|
||||
color $githubAccentColor
|
||||
span
|
||||
display inline-block
|
||||
.icon.outbound
|
||||
visibility visible
|
||||
right 0
|
||||
top -4px
|
||||
h3
|
||||
margin-left 0
|
||||
margin-bottom 0
|
||||
h3
|
||||
font-size 1.5rem
|
||||
display inline-block
|
||||
margin 0
|
||||
p
|
||||
font-size 1rem
|
||||
&:hover
|
||||
border-bottom 2px solid #cfd4db
|
||||
border-bottom-left-radius 6px
|
||||
border-bottom-right-radius 6px
|
||||
position inherit
|
||||
top unset
|
||||
.material-design-icon
|
||||
color $accentColorSecondary
|
||||
&__Discord
|
||||
h3
|
||||
color $discordAccentColor
|
||||
&__Reddit
|
||||
h3
|
||||
color $redditAccentColor
|
||||
&__GitHub
|
||||
h3
|
||||
color $githubAccentColor
|
||||
.row
|
||||
grid-template-columns repeat(1, 1fr)
|
||||
.navbar
|
||||
padding-left 1rem
|
||||
.logo
|
||||
margin-right 0
|
||||
.can-hide
|
||||
display block
|
||||
.sidebar-button
|
||||
display none
|
||||
.site-name.can-hide
|
||||
display none
|
||||
.nav-links.can-hide
|
||||
.nav-item,
|
||||
.repo-link
|
||||
padding-left 0.8em
|
||||
.help-page
|
||||
.page
|
||||
.theme-custom-content
|
||||
padding 2rem 0.75rem
|
||||
padding-bottom 0
|
||||
h1
|
||||
margin-bottom 0.5rem
|
||||
.content__center
|
||||
margin-top 0
|
||||
padding-top 0
|
||||
.algolia-search-wrapper
|
||||
width 100%
|
||||
margin-bottom 1rem
|
||||
.algolia-autocomplete
|
||||
width 100%
|
||||
padding 0.4rem 0.65rem
|
||||
input
|
||||
width 100%
|
||||
left 0
|
||||
.column
|
||||
margin 0.4rem 0.6rem
|
||||
.card
|
||||
height auto
|
||||
width auto
|
||||
header
|
||||
margin-top 1rem
|
||||
.material-icons,
|
||||
.material-design-icon
|
||||
font-size 1.6em
|
||||
&.discord-icon
|
||||
color $discordAccentColor
|
||||
&.reddit-icon
|
||||
color $redditAccentColor
|
||||
&.github-icon
|
||||
color $githubAccentColor
|
||||
span
|
||||
display inline-block
|
||||
.icon.outbound
|
||||
visibility visible
|
||||
right 0
|
||||
top -4px
|
||||
h3
|
||||
margin-left 0
|
||||
margin-bottom 0
|
||||
h3
|
||||
font-size 1.5rem
|
||||
display inline-block
|
||||
margin 0
|
||||
p
|
||||
font-size 1rem
|
||||
&:hover
|
||||
border-bottom 2px solid #cfd4db
|
||||
border-bottom-left-radius 6px
|
||||
border-bottom-right-radius 6px
|
||||
position inherit
|
||||
top unset
|
||||
.material-design-icon
|
||||
color $accentColorSecondary
|
||||
&__Discord
|
||||
h3
|
||||
color $discordAccentColor
|
||||
&__Reddit
|
||||
h3
|
||||
color $redditAccentColor
|
||||
&__GitHub
|
||||
h3
|
||||
color $githubAccentColor
|
||||
.row
|
||||
grid-template-columns repeat(1, 1fr)
|
||||
.navbar
|
||||
padding-left 1rem
|
||||
.logo
|
||||
margin-right 0
|
||||
.can-hide
|
||||
display block
|
||||
.sidebar-button
|
||||
display none
|
||||
.site-name.can-hide
|
||||
display none
|
||||
.nav-links.can-hide
|
||||
.nav-item,
|
||||
.repo-link
|
||||
padding-left 0.8em
|
||||
</style>
|
||||
|
@ -14,17 +14,17 @@ export default {
|
||||
props: {
|
||||
iconOnly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
iconName: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -37,7 +37,7 @@ export default {
|
||||
display inline
|
||||
|
||||
.material-icons
|
||||
font-family 'Material Icons'
|
||||
font-family "Material Icons"
|
||||
font-size 1.35em
|
||||
font-style normal
|
||||
position relative
|
||||
@ -50,7 +50,6 @@ export default {
|
||||
white-space nowrap
|
||||
word-wrap normal
|
||||
direction ltr
|
||||
font-feature-settings 'liga'
|
||||
font-feature-settings "liga"
|
||||
-webkit-font-smoothing antialiased
|
||||
|
||||
</style>
|
||||
|
@ -1,13 +1,27 @@
|
||||
<template>
|
||||
<span v-if="nav.link" class="app-navigation" :class="nav.class" title="App navigation">
|
||||
<span
|
||||
v-if="nav.link"
|
||||
class="app-navigation"
|
||||
:class="nav.class"
|
||||
title="App navigation"
|
||||
>
|
||||
<a class="app-link" :href="nav.link + entry">
|
||||
<MaterialIcon v-if="nav.icon" class="app-icon" :iconName="nav.icon" />
|
||||
<MaterialIcon
|
||||
v-if="nav.icon"
|
||||
class="app-icon"
|
||||
:icon-name="nav.icon"
|
||||
/>
|
||||
<span class="app-label">{{ nav.text }}</span>
|
||||
<slot />
|
||||
</a>
|
||||
</span>
|
||||
<span v-else class="app-navigation" :class="nav.class" title="App navigation">
|
||||
<MaterialIcon v-if="nav.icon" class="app-icon" :iconName="nav.icon" />
|
||||
<span
|
||||
v-else
|
||||
class="app-navigation"
|
||||
:class="nav.class"
|
||||
title="App navigation"
|
||||
>
|
||||
<MaterialIcon v-if="nav.icon" class="app-icon" :icon-name="nav.icon" />
|
||||
<span class="app-label">{{ nav.text }}</span>
|
||||
<slot />
|
||||
</span>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<span v-if="fileName" class="fileNameContainer" title="File name">
|
||||
<MaterialIcon class="fileNameIcon" iconName="get_app" />
|
||||
<MaterialIcon class="fileNameIcon" icon-name="get_app" />
|
||||
<span class="fileName">tachiyomi-{{ this.$data.tagName }}.apk</span>
|
||||
<slot />
|
||||
</span>
|
||||
@ -18,8 +18,8 @@ const RELEASE_URL =
|
||||
export default {
|
||||
props: {
|
||||
fileName: {
|
||||
type: Boolean
|
||||
}
|
||||
type: Boolean,
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
|
@ -1,52 +1,53 @@
|
||||
module.exports = {
|
||||
dest: './public',
|
||||
temp: './node_modules/.temp/theme',
|
||||
const pluginsConfig = require("./config/plugins");
|
||||
const navBarConfig = require("./config/navBar");
|
||||
const sideBarConfig = require("./config/sideBar");
|
||||
|
||||
title: 'Tachiyomi',
|
||||
description: 'Free and open source manga reader for Android',
|
||||
module.exports = {
|
||||
dest: "./public",
|
||||
temp: "./node_modules/.temp/theme",
|
||||
|
||||
title: "Tachiyomi",
|
||||
description: "Free and open source manga reader for Android",
|
||||
|
||||
// prettier-ignore
|
||||
head: [
|
||||
// Embed headers
|
||||
['link', { rel: 'icon', href: '/favicon.ico' }],
|
||||
['link', { rel: 'manifest', href: '/manifest.json' }],
|
||||
['meta', { name: 'theme-color', content: '#2e84bf' }],
|
||||
['meta', { prefix: 'og: http://ogp.me/ns#', property: 'og:image', content: 'https://tachiyomi.org/icons/logo.png' }],
|
||||
["link", { rel: "icon", href: "/favicon.ico" }],
|
||||
["link", { rel: "manifest", href: "/manifest.json" }],
|
||||
["meta", { name: "theme-color", content: "#2e84bf" }],
|
||||
["meta", { prefix: "og: http://ogp.me/ns#", property: "og:image", content: "https://tachiyomi.org/icons/logo.png" }],
|
||||
// Custom headers
|
||||
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin:''}],
|
||||
['link', { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Open+Sans'}],
|
||||
["link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin:""}],
|
||||
["link", { rel: "stylesheet", href: "https://fonts.googleapis.com/css?family=Open+Sans"}],
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
logo: '/icons/logo.svg',
|
||||
repo: 'inorichi/tachiyomi',
|
||||
docsRepo: 'tachiyomiorg/website',
|
||||
docsDir: 'src',
|
||||
logo: "/icons/logo.svg",
|
||||
repo: "inorichi/tachiyomi",
|
||||
docsRepo: "tachiyomiorg/website",
|
||||
docsDir: "src",
|
||||
smoothScroll: true,
|
||||
algolia: {
|
||||
apiKey: 'fc1c45b5a3835e1882cbbf0751dfe705',
|
||||
indexName: 'tachiyomi'
|
||||
apiKey: "fc1c45b5a3835e1882cbbf0751dfe705",
|
||||
indexName: "tachiyomi",
|
||||
},
|
||||
searchPlaceholder: 'Search...',
|
||||
searchPlaceholder: "Search...",
|
||||
editLinks: true,
|
||||
editLinkText: 'Help us improve this page',
|
||||
lastUpdated: 'Last Updated',
|
||||
nav: require('./config/nav'),
|
||||
editLinkText: "Help us improve this page",
|
||||
lastUpdated: "Last Updated",
|
||||
nav: navBarConfig,
|
||||
sidebar: {
|
||||
'/help/guides/': require('./config/sidebar/guides'),
|
||||
'/help/faq/': require('./config/sidebar/faq'),
|
||||
'/help/contribution': require('./config/sidebar/contribution'),
|
||||
'/extensions': require('./config/sidebar/extensions'),
|
||||
'/forks': require('./config/sidebar/forks')
|
||||
}
|
||||
"/help/guides/": sideBarConfig.guides,
|
||||
"/help/faq/": sideBarConfig.faq,
|
||||
"/help/contribution": sideBarConfig.contribution,
|
||||
"/extensions": sideBarConfig.extensions,
|
||||
"/forks": sideBarConfig.forks,
|
||||
},
|
||||
},
|
||||
plugins: require('./config/plugins'),
|
||||
plugins: pluginsConfig,
|
||||
extraWatchFiles: [
|
||||
'.vuepress/config/nav.js',
|
||||
'.vuepress/config/plugins.js',
|
||||
'.vuepress/config/sidebar/guides.js',
|
||||
'.vuepress/config/sidebar/faq.js',
|
||||
'.vuepress/config/sidebar/contribution.js',
|
||||
'.vuepress/config/sidebar/extensions.js'
|
||||
]
|
||||
}
|
||||
".vuepress/config/plugins.js",
|
||||
".vuepress/config/navBar.js",
|
||||
".vuepress/config/sideBar.js",
|
||||
],
|
||||
};
|
||||
|
@ -3,50 +3,50 @@ module.exports = [
|
||||
[
|
||||
"clean-urls",
|
||||
{
|
||||
normalSuffix: "/"
|
||||
}
|
||||
normalSuffix: "/",
|
||||
},
|
||||
],
|
||||
[
|
||||
"@vuepress/google-analytics",
|
||||
{
|
||||
ga: "UA-148212082-1"
|
||||
}
|
||||
ga: "UA-148212082-1",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "expander",
|
||||
before: info =>
|
||||
before: (info) =>
|
||||
`<details class="expander"><summary class="expansion">${info}</summary>`,
|
||||
after: "</details>"
|
||||
}
|
||||
after: "</details>",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "guide",
|
||||
before: info => `<div class="guide"><p class="title">${info}</p>`,
|
||||
after: "</div>"
|
||||
}
|
||||
before: (info) => `<div class="guide"><p class="title">${info}</p>`,
|
||||
after: "</div>",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "aside",
|
||||
defaultTitle: ""
|
||||
}
|
||||
defaultTitle: "",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "aside-guide",
|
||||
defaultTitle: ""
|
||||
}
|
||||
defaultTitle: "",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-sitemap",
|
||||
{
|
||||
hostname: "https://tachiyomi.org"
|
||||
}
|
||||
]
|
||||
hostname: "https://tachiyomi.org",
|
||||
},
|
||||
],
|
||||
];
|
||||
|
148
src/.vuepress/config/sideBar.js
Normal file
148
src/.vuepress/config/sideBar.js
Normal file
@ -0,0 +1,148 @@
|
||||
module.exports = {
|
||||
guides: [
|
||||
"/",
|
||||
{
|
||||
title: "Guides",
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
{
|
||||
title: "General",
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
"/help/guides/getting-started",
|
||||
"/help/guides/source-problems",
|
||||
"/help/guides/source-migration",
|
||||
"/help/guides/creating-backups",
|
||||
"/help/guides/reading-local-manga",
|
||||
"/help/guides/categories",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Settings",
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
"/help/guides/settings/general",
|
||||
"/help/guides/settings/reader",
|
||||
"/help/guides/settings/downloads",
|
||||
"/help/guides/settings/tracking",
|
||||
"/help/guides/settings/backup",
|
||||
"/help/guides/settings/advanced",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Frequently Asked Questions",
|
||||
path: "/help/faq/",
|
||||
},
|
||||
{
|
||||
title: "Forks",
|
||||
path: "/forks/",
|
||||
},
|
||||
{
|
||||
title: "Contribution",
|
||||
path: "/help/contribution",
|
||||
},
|
||||
{
|
||||
title: "Available extensions",
|
||||
path: "/extensions/",
|
||||
},
|
||||
],
|
||||
faq: [
|
||||
"/",
|
||||
{
|
||||
title: "Frequently Asked Questions",
|
||||
path: "/help/faq/",
|
||||
},
|
||||
{
|
||||
title: "Guides",
|
||||
path: "/help/guides/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Forks",
|
||||
path: "/forks/",
|
||||
},
|
||||
{
|
||||
title: "Contribution",
|
||||
path: "/help/contribution",
|
||||
},
|
||||
{
|
||||
title: "Available extensions",
|
||||
path: "/extensions/",
|
||||
},
|
||||
],
|
||||
contribution: [
|
||||
"/",
|
||||
{
|
||||
title: "Contribution",
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: ["/help/contribution"],
|
||||
},
|
||||
{
|
||||
title: "Frequently Asked Questions",
|
||||
path: "/help/faq/",
|
||||
},
|
||||
{
|
||||
title: "Guides",
|
||||
path: "/help/guides/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Forks",
|
||||
path: "/forks/",
|
||||
},
|
||||
{
|
||||
title: "Available extensions",
|
||||
path: "/extensions/",
|
||||
},
|
||||
],
|
||||
extensions: [
|
||||
"/",
|
||||
{
|
||||
title: "Available extensions",
|
||||
path: "/extensions/",
|
||||
},
|
||||
{
|
||||
title: "Frequently Asked Questions",
|
||||
path: "/help/faq/",
|
||||
},
|
||||
{
|
||||
title: "Guides",
|
||||
path: "/help/guides/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Forks",
|
||||
path: "/forks/",
|
||||
},
|
||||
{
|
||||
title: "Contribution",
|
||||
path: "/help/contribution",
|
||||
},
|
||||
],
|
||||
forks: [
|
||||
"/",
|
||||
{
|
||||
title: "Forks",
|
||||
path: "/forks/",
|
||||
},
|
||||
{
|
||||
title: "Frequently Asked Questions",
|
||||
path: "/help/faq/",
|
||||
},
|
||||
{
|
||||
title: "Guides",
|
||||
path: "/help/guides/getting-started",
|
||||
},
|
||||
{
|
||||
title: "Contribution",
|
||||
path: "/help/contribution",
|
||||
},
|
||||
{
|
||||
title: "Available extensions",
|
||||
path: "/extensions/",
|
||||
},
|
||||
],
|
||||
};
|
@ -1,27 +0,0 @@
|
||||
module.exports = [
|
||||
'/',
|
||||
{
|
||||
title: 'Contribution',
|
||||
collapsable: false,
|
||||
sidebarDepth: 1,
|
||||
children: [
|
||||
'/help/contribution'
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'Frequently Asked Questions',
|
||||
path: '/help/faq/',
|
||||
},
|
||||
{
|
||||
title: 'Guides',
|
||||
path: '/help/guides/getting-started',
|
||||
},
|
||||
{
|
||||
title: 'Forks',
|
||||
path: '/forks/'
|
||||
},
|
||||
{
|
||||
title: 'Available extensions',
|
||||
path: '/extensions/'
|
||||
}
|
||||
];
|
@ -1,23 +0,0 @@
|
||||
module.exports = [
|
||||
'/',
|
||||
{
|
||||
title: 'Available extensions',
|
||||
path: '/extensions/'
|
||||
},
|
||||
{
|
||||
title: 'Frequently Asked Questions',
|
||||
path: '/help/faq/',
|
||||
},
|
||||
{
|
||||
title: 'Guides',
|
||||
path: '/help/guides/getting-started',
|
||||
},
|
||||
{
|
||||
title: 'Forks',
|
||||
path: '/forks/'
|
||||
},
|
||||
{
|
||||
title: 'Contribution',
|
||||
path: '/help/contribution'
|
||||
}
|
||||
];
|
@ -1,23 +0,0 @@
|
||||
module.exports = [
|
||||
'/',
|
||||
{
|
||||
title: 'Frequently Asked Questions',
|
||||
path: '/help/faq/'
|
||||
},
|
||||
{
|
||||
title: 'Guides',
|
||||
path: '/help/guides/getting-started',
|
||||
},
|
||||
{
|
||||
title: 'Forks',
|
||||
path: '/forks/'
|
||||
},
|
||||
{
|
||||
title: 'Contribution',
|
||||
path: '/help/contribution'
|
||||
},
|
||||
{
|
||||
title: 'Available extensions',
|
||||
path: '/extensions/'
|
||||
}
|
||||
];
|
@ -1,23 +0,0 @@
|
||||
module.exports = [
|
||||
'/',
|
||||
{
|
||||
title: 'Forks',
|
||||
path: '/forks/'
|
||||
},
|
||||
{
|
||||
title: 'Frequently Asked Questions',
|
||||
path: '/help/faq/',
|
||||
},
|
||||
{
|
||||
title: 'Guides',
|
||||
path: '/help/guides/getting-started',
|
||||
},
|
||||
{
|
||||
title: 'Contribution',
|
||||
path: '/help/contribution'
|
||||
},
|
||||
{
|
||||
title: 'Available extensions',
|
||||
path: '/extensions/'
|
||||
}
|
||||
];
|
@ -1,52 +0,0 @@
|
||||
module.exports = [
|
||||
'/',
|
||||
{
|
||||
title: 'Guides',
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
{
|
||||
title: 'General',
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
'/help/guides/getting-started',
|
||||
'/help/guides/source-problems',
|
||||
'/help/guides/source-migration',
|
||||
'/help/guides/creating-backups',
|
||||
'/help/guides/reading-local-manga',
|
||||
'/help/guides/categories'
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'Settings',
|
||||
collapsable: false,
|
||||
sidebarDepth: 2,
|
||||
children: [
|
||||
'/help/guides/settings/general',
|
||||
'/help/guides/settings/reader',
|
||||
'/help/guides/settings/downloads',
|
||||
'/help/guides/settings/tracking',
|
||||
'/help/guides/settings/backup',
|
||||
'/help/guides/settings/advanced'
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'Frequently Asked Questions',
|
||||
path: '/help/faq/',
|
||||
},
|
||||
{
|
||||
title: 'Forks',
|
||||
path: '/forks/'
|
||||
},
|
||||
{
|
||||
title: 'Contribution',
|
||||
path: '/help/contribution'
|
||||
},
|
||||
{
|
||||
title: 'Available extensions',
|
||||
path: '/extensions/'
|
||||
}
|
||||
];
|
@ -1,18 +1,18 @@
|
||||
import './styles/fonts.styl'
|
||||
import './styles/animate.css'
|
||||
import 'sweetalert2/dist/sweetalert2.min.css';
|
||||
import 'vue-material-design-icons/styles.css';
|
||||
import "./styles/fonts.styl";
|
||||
import "./styles/animate.css";
|
||||
import "./styles/sweetalert2.css";
|
||||
import "vue-material-design-icons/styles.css";
|
||||
|
||||
import { VueAgile } from 'vue-agile';
|
||||
import VueSweetalert2 from 'vue-sweetalert2';
|
||||
import { VueAgile } from "vue-agile";
|
||||
import VueSweetalert2 from "vue-sweetalert2";
|
||||
|
||||
export default ({
|
||||
Vue, // the version of Vue being used in the VuePress app
|
||||
options, // the options for the root Vue instance
|
||||
router, // the router instance for the app
|
||||
siteData // site metadata
|
||||
siteData, // site metadata
|
||||
}) => {
|
||||
// eslint-disable-next-line vue/match-component-file-name
|
||||
Vue.component('Agile', VueAgile);
|
||||
Vue.component("Agile", VueAgile);
|
||||
Vue.use(VueSweetalert2);
|
||||
};
|
||||
|
@ -1,23 +1,23 @@
|
||||
{
|
||||
"name": "Tachiyomi",
|
||||
"short_name": "Tachiyomi",
|
||||
"description": "Free and open source manga reader for Android.",
|
||||
"lang": "en-US",
|
||||
"theme_color": "#2e84bf",
|
||||
"background_color": "#ffffff",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait-primary",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/icons/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
"name": "Tachiyomi",
|
||||
"short_name": "Tachiyomi",
|
||||
"description": "Free and open source manga reader for Android.",
|
||||
"lang": "en-US",
|
||||
"theme_color": "#2e84bf",
|
||||
"background_color": "#ffffff",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait-primary",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/icons/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/icons/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
6164
src/.vuepress/styles/animate.css
vendored
6164
src/.vuepress/styles/animate.css
vendored
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
@font-face
|
||||
font-family 'Material Icons'
|
||||
font-family "Material Icons"
|
||||
font-style normal
|
||||
font-weight 400
|
||||
src url('~material-design-icons/iconfont/MaterialIcons-Regular.eot')
|
||||
src local('Material Icons'), local('MaterialIcons-Regular'), url('~material-design-icons/iconfont/MaterialIcons-Regular.woff2') format('woff2'), url('~material-design-icons/iconfont/MaterialIcons-Regular.woff') format('woff'), url('~material-design-icons/iconfont/MaterialIcons-Regular.ttf') format('truetype'), url('~material-design-icons/iconfont/MaterialIcons-Regular.svg#MaterialIcons-Regular') format('svg')
|
||||
src url("~material-design-icons/iconfont/MaterialIcons-Regular.eot")
|
||||
src local("Material Icons"), local("MaterialIcons-Regular"), url("~material-design-icons/iconfont/MaterialIcons-Regular.woff2") format("woff2"), url("~material-design-icons/iconfont/MaterialIcons-Regular.woff") format("woff"), url("~material-design-icons/iconfont/MaterialIcons-Regular.ttf") format("truetype"), url("~material-design-icons/iconfont/MaterialIcons-Regular.svg#MaterialIcons-Regular") format("svg")
|
||||
|
@ -72,7 +72,7 @@ font-feature-settings()
|
||||
font-weight normal
|
||||
&::before
|
||||
&::after
|
||||
content ''
|
||||
content ""
|
||||
left 0
|
||||
position absolute
|
||||
&::before
|
||||
|
@ -23,8 +23,8 @@ $MQNarrow = 959px
|
||||
$MQMobile = 767px
|
||||
$MQMobileNarrow = 419px
|
||||
// Fonts
|
||||
$buttonFontFamily = 'Open Sans', Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif
|
||||
$codeFontFamily = source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace
|
||||
$buttonFontFamily = "Open Sans", Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif
|
||||
$codeFontFamily = source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace
|
||||
// Forks
|
||||
$nekoAccentColor = #3DDA83
|
||||
$j2kAccentColor = $accentColor
|
||||
|
1371
src/.vuepress/styles/sweetalert2.css
Normal file
1371
src/.vuepress/styles/sweetalert2.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,182 +1,195 @@
|
||||
<template>
|
||||
<form
|
||||
id="search-form"
|
||||
class="algolia-search-wrapper search-box"
|
||||
role="search"
|
||||
>
|
||||
<input
|
||||
id="algolia-search-input"
|
||||
class="search-query"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
</form>
|
||||
<form
|
||||
id="search-form"
|
||||
class="algolia-search-wrapper search-box"
|
||||
role="search"
|
||||
>
|
||||
<input
|
||||
id="algolia-search-input"
|
||||
class="search-query"
|
||||
:placeholder="placeholder"
|
||||
/>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AlgoliaSearchBox',
|
||||
name: "AlgoliaSearchBox",
|
||||
|
||||
props: ['options'],
|
||||
props: {
|
||||
options: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
placeholder: undefined
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
placeholder: undefined,
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
$lang (newValue) {
|
||||
this.update(this.options, newValue)
|
||||
},
|
||||
watch: {
|
||||
$lang(newValue) {
|
||||
this.update(this.options, newValue);
|
||||
},
|
||||
|
||||
options (newValue) {
|
||||
this.update(newValue, this.$lang)
|
||||
}
|
||||
},
|
||||
options(newValue) {
|
||||
this.update(newValue, this.$lang);
|
||||
},
|
||||
},
|
||||
|
||||
mounted () {
|
||||
this.initialize(this.options, this.$lang)
|
||||
this.placeholder = this.$site.themeConfig.searchPlaceholder || ''
|
||||
},
|
||||
mounted() {
|
||||
this.initialize(this.options, this.$lang);
|
||||
this.placeholder = this.$site.themeConfig.searchPlaceholder || "";
|
||||
},
|
||||
|
||||
methods: {
|
||||
initialize (userOptions, lang) {
|
||||
Promise.all([
|
||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.js'),
|
||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.css')
|
||||
]).then(([docsearch]) => {
|
||||
docsearch = docsearch.default
|
||||
const { algoliaOptions = {}} = userOptions
|
||||
docsearch(Object.assign(
|
||||
{},
|
||||
userOptions,
|
||||
{
|
||||
inputSelector: '#algolia-search-input',
|
||||
// #697 Make docsearch work well at i18n mode.
|
||||
algoliaOptions: Object.assign({
|
||||
'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || [])
|
||||
}, algoliaOptions),
|
||||
handleSelected: (input, event, suggestion) => {
|
||||
const { pathname, hash } = new URL(suggestion.url)
|
||||
const routepath = pathname.replace(this.$site.base, '/')
|
||||
this.$router.push(`${routepath}${hash}`)
|
||||
}
|
||||
}
|
||||
))
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
initialize(userOptions, lang) {
|
||||
Promise.all([
|
||||
import(
|
||||
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.js"
|
||||
),
|
||||
import(
|
||||
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.css"
|
||||
),
|
||||
]).then(([docsearch]) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
docsearch = docsearch.default;
|
||||
const { algoliaOptions = {} } = userOptions;
|
||||
docsearch({
|
||||
...userOptions,
|
||||
inputSelector: "#algolia-search-input",
|
||||
// #697 Make docsearch work well at i18n mode.
|
||||
algoliaOptions: {
|
||||
facetFilters: [`lang:${lang}`].concat(
|
||||
algoliaOptions.facetFilters || []
|
||||
),
|
||||
...algoliaOptions,
|
||||
},
|
||||
handleSelected: (input, event, suggestion) => {
|
||||
const { pathname, hash } = new URL(suggestion.url);
|
||||
const routepath = pathname.replace(
|
||||
this.$site.base,
|
||||
"/"
|
||||
);
|
||||
this.$router.push(`${routepath}${hash}`);
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
update (options, lang) {
|
||||
this.$el.innerHTML = '<input id="algolia-search-input" class="search-query">'
|
||||
this.initialize(options, lang)
|
||||
}
|
||||
}
|
||||
}
|
||||
update(options, lang) {
|
||||
this.$el.innerHTML =
|
||||
'<input id="algolia-search-input" class="search-query">';
|
||||
this.initialize(options, lang);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.algolia-search-wrapper
|
||||
& > span
|
||||
vertical-align middle
|
||||
&.search-box
|
||||
input
|
||||
border-radius 6px
|
||||
.algolia-autocomplete
|
||||
line-height normal
|
||||
.ds-dropdown-menu
|
||||
background-color #fff
|
||||
border 1px solid #dde0e5
|
||||
border-radius 4px
|
||||
font-size 16px
|
||||
margin 6px 0 0
|
||||
padding 12px
|
||||
text-align left
|
||||
&:before
|
||||
border-color #dde0e5
|
||||
[class*=ds-dataset-]
|
||||
border none
|
||||
padding 0
|
||||
.ds-suggestions
|
||||
margin-top 0
|
||||
.ds-suggestion
|
||||
border-bottom none
|
||||
.algolia-docsearch-suggestion--text
|
||||
font-size 0.7em
|
||||
.algolia-docsearch-suggestion--highlight
|
||||
color $accentColor
|
||||
font-weight 600
|
||||
background rgba(143,187,237,0.05)
|
||||
padding 0
|
||||
.algolia-docsearch-suggestion
|
||||
border-color $borderColor
|
||||
padding 0
|
||||
.algolia-docsearch-suggestion--category-header
|
||||
border 0px
|
||||
border-bottom 1px solid #EAECEF
|
||||
padding 5px 10px
|
||||
margin-top 0
|
||||
background transparent
|
||||
color $textColor
|
||||
font-weight 400
|
||||
.algolia-docsearch-suggestion--highlight
|
||||
background rgba(255, 255, 255, 0.6)
|
||||
.algolia-docsearch-suggestion--wrapper
|
||||
padding 0
|
||||
padding-top 0.5rem
|
||||
.algolia-docsearch-suggestion--title
|
||||
font-weight 500
|
||||
margin-bottom 0
|
||||
color $textColor
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
vertical-align top
|
||||
padding 5px 7px 5px 5px
|
||||
border-color $borderColor
|
||||
background #fff
|
||||
&:after
|
||||
display none
|
||||
.algolia-docsearch-suggestion--subcategory-column-text
|
||||
color lighten($accentColorSecondary, 40%)
|
||||
font-weight 400
|
||||
.algolia-docsearch-footer
|
||||
border-color $borderColor
|
||||
.ds-cursor .algolia-docsearch-suggestion--content
|
||||
background-color #e7edf3 !important
|
||||
color $textColor
|
||||
& > span
|
||||
vertical-align middle
|
||||
&.search-box
|
||||
input
|
||||
border-radius 6px
|
||||
.algolia-autocomplete
|
||||
line-height normal
|
||||
.ds-dropdown-menu
|
||||
background-color #fff
|
||||
border 1px solid #dde0e5
|
||||
border-radius 4px
|
||||
font-size 16px
|
||||
margin 6px 0 0
|
||||
padding 12px
|
||||
text-align left
|
||||
&:before
|
||||
border-color #dde0e5
|
||||
[class*=ds-dataset-]
|
||||
border none
|
||||
padding 0
|
||||
.ds-suggestions
|
||||
margin-top 0
|
||||
.ds-suggestion
|
||||
border-bottom none
|
||||
.algolia-docsearch-suggestion--text
|
||||
font-size 0.7em
|
||||
.algolia-docsearch-suggestion--highlight
|
||||
color $accentColor
|
||||
font-weight 600
|
||||
background rgba(143,187,237,0.05)
|
||||
padding 0
|
||||
.algolia-docsearch-suggestion
|
||||
border-color $borderColor
|
||||
padding 0
|
||||
.algolia-docsearch-suggestion--category-header
|
||||
border 0px
|
||||
border-bottom 1px solid #EAECEF
|
||||
padding 5px 10px
|
||||
margin-top 0
|
||||
background transparent
|
||||
color $textColor
|
||||
font-weight 400
|
||||
.algolia-docsearch-suggestion--highlight
|
||||
background rgba(255, 255, 255, 0.6)
|
||||
.algolia-docsearch-suggestion--wrapper
|
||||
padding 0
|
||||
padding-top 0.5rem
|
||||
.algolia-docsearch-suggestion--title
|
||||
font-weight 500
|
||||
margin-bottom 0
|
||||
color $textColor
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
vertical-align top
|
||||
padding 5px 7px 5px 5px
|
||||
border-color $borderColor
|
||||
background #fff
|
||||
&:after
|
||||
display none
|
||||
.algolia-docsearch-suggestion--subcategory-column-text
|
||||
color lighten($accentColorSecondary, 40%)
|
||||
font-weight 400
|
||||
.algolia-docsearch-footer
|
||||
border-color $borderColor
|
||||
.ds-cursor .algolia-docsearch-suggestion--content
|
||||
background-color #e7edf3 !important
|
||||
color $textColor
|
||||
|
||||
@media (min-width: $MQMobile)
|
||||
.algolia-search-wrapper
|
||||
.algolia-autocomplete
|
||||
.algolia-docsearch-suggestion
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
float none
|
||||
width 150px
|
||||
min-width 150px
|
||||
display table-cell
|
||||
.algolia-docsearch-suggestion--content
|
||||
float none
|
||||
display table-cell
|
||||
width 100%
|
||||
vertical-align top
|
||||
.ds-dropdown-menu
|
||||
min-width 515px !important
|
||||
.algolia-search-wrapper
|
||||
.algolia-autocomplete
|
||||
.algolia-docsearch-suggestion
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
float none
|
||||
width 150px
|
||||
min-width 150px
|
||||
display table-cell
|
||||
.algolia-docsearch-suggestion--content
|
||||
float none
|
||||
display table-cell
|
||||
width 100%
|
||||
vertical-align top
|
||||
.ds-dropdown-menu
|
||||
min-width 515px !important
|
||||
|
||||
@media (max-width: $MQMobile)
|
||||
.algolia-search-wrapper
|
||||
.ds-dropdown-menu
|
||||
min-width calc(100vw - 4rem) !important
|
||||
max-width calc(100vw - 4rem) !important
|
||||
.algolia-docsearch-suggestion--wrapper
|
||||
padding 5px 7px 5px 5px !important
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
padding 0 !important
|
||||
background white !important
|
||||
.algolia-docsearch-suggestion--subcategory-column-text:after
|
||||
content " > "
|
||||
font-size 10px
|
||||
line-height 14.4px
|
||||
display inline-block
|
||||
width 5px
|
||||
margin -3px 3px 0
|
||||
vertical-align middle
|
||||
|
||||
.algolia-search-wrapper
|
||||
.ds-dropdown-menu
|
||||
min-width calc(100vw - 4rem) !important
|
||||
max-width calc(100vw - 4rem) !important
|
||||
.algolia-docsearch-suggestion--wrapper
|
||||
padding 5px 7px 5px 5px !important
|
||||
.algolia-docsearch-suggestion--subcategory-column
|
||||
padding 0 !important
|
||||
background white !important
|
||||
.algolia-docsearch-suggestion--subcategory-column-text:after
|
||||
content " > "
|
||||
font-size 10px
|
||||
line-height 14.4px
|
||||
display inline-block
|
||||
width 5px
|
||||
margin -3px 3px 0
|
||||
vertical-align middle
|
||||
</style>
|
||||
|
@ -230,6 +230,7 @@ export default {
|
||||
popup:
|
||||
"animate__animated animate__faster animate__zoomOut",
|
||||
},
|
||||
// eslint-disable-next-line no-shadow
|
||||
}).then((result) => {
|
||||
if (result.value) {
|
||||
this.$swal({
|
||||
|
@ -1,95 +1,114 @@
|
||||
<template>
|
||||
<header class="navbar">
|
||||
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
|
||||
<header class="navbar">
|
||||
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
|
||||
|
||||
<RouterLink
|
||||
:to="$localePath"
|
||||
class="home-link"
|
||||
>
|
||||
<img
|
||||
v-if="$site.themeConfig.logo"
|
||||
class="logo"
|
||||
:src="$withBase($site.themeConfig.logo)"
|
||||
:alt="$siteTitle"
|
||||
>
|
||||
<span
|
||||
v-if="$siteTitle"
|
||||
ref="siteName"
|
||||
class="site-name"
|
||||
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||
>{{ $siteTitle }}</span>
|
||||
</RouterLink>
|
||||
<RouterLink :to="$localePath" class="home-link">
|
||||
<img
|
||||
v-if="$site.themeConfig.logo"
|
||||
class="logo"
|
||||
:src="$withBase($site.themeConfig.logo)"
|
||||
:alt="$siteTitle"
|
||||
/>
|
||||
<span
|
||||
v-if="$siteTitle"
|
||||
ref="siteName"
|
||||
class="site-name"
|
||||
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||
>{{ $siteTitle }}</span
|
||||
>
|
||||
</RouterLink>
|
||||
|
||||
<div
|
||||
class="links"
|
||||
:style="linksWrapMaxWidth ? {
|
||||
'max-width': linksWrapMaxWidth + 'px'
|
||||
} : {}"
|
||||
>
|
||||
<div v-if="$page.frontmatter.hideSearch"/>
|
||||
<AlgoliaSearchBox
|
||||
v-else-if="isAlgoliaSearch"
|
||||
:options="algolia"
|
||||
/>
|
||||
<SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false" />
|
||||
<NavLinks class="can-hide" />
|
||||
</div>
|
||||
</header>
|
||||
<div
|
||||
class="links"
|
||||
:style="
|
||||
linksWrapMaxWidth
|
||||
? {
|
||||
'max-width': linksWrapMaxWidth + 'px',
|
||||
}
|
||||
: {}
|
||||
"
|
||||
>
|
||||
<div v-if="$page.frontmatter.hideSearch" />
|
||||
<AlgoliaSearchBox v-else-if="isAlgoliaSearch" :options="algolia" />
|
||||
<SearchBox
|
||||
v-else-if="
|
||||
$site.themeConfig.search !== false &&
|
||||
$page.frontmatter.search !== false
|
||||
"
|
||||
/>
|
||||
<NavLinks class="can-hide" />
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AlgoliaSearchBox from './AlgoliaSearchBox.vue'
|
||||
import SearchBox from '@SearchBox'
|
||||
import SidebarButton from '@theme/components/SidebarButton.vue'
|
||||
import NavLinks from '@theme/components/NavLinks.vue'
|
||||
import SearchBox from "@SearchBox";
|
||||
import SidebarButton from "@theme/components/SidebarButton.vue";
|
||||
import NavLinks from "@theme/components/NavLinks.vue";
|
||||
import AlgoliaSearchBox from "./AlgoliaSearchBox.vue";
|
||||
|
||||
export default {
|
||||
name: 'Navbar',
|
||||
name: "Navbar",
|
||||
|
||||
components: {
|
||||
SidebarButton,
|
||||
NavLinks,
|
||||
SearchBox,
|
||||
AlgoliaSearchBox
|
||||
},
|
||||
components: {
|
||||
SidebarButton,
|
||||
NavLinks,
|
||||
SearchBox,
|
||||
AlgoliaSearchBox,
|
||||
},
|
||||
|
||||
data () {
|
||||
return {
|
||||
linksWrapMaxWidth: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
linksWrapMaxWidth: null,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
algolia () {
|
||||
return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
|
||||
},
|
||||
computed: {
|
||||
algolia() {
|
||||
return (
|
||||
this.$themeLocaleConfig.algolia ||
|
||||
this.$site.themeConfig.algolia ||
|
||||
{}
|
||||
);
|
||||
},
|
||||
|
||||
isAlgoliaSearch () {
|
||||
return this.algolia && this.algolia.apiKey && this.algolia.indexName
|
||||
}
|
||||
},
|
||||
isAlgoliaSearch() {
|
||||
return (
|
||||
this.algolia && this.algolia.apiKey && this.algolia.indexName
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
mounted () {
|
||||
const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
|
||||
const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight'))
|
||||
const handleLinksWrapWidth = () => {
|
||||
if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
|
||||
this.linksWrapMaxWidth = null
|
||||
} else {
|
||||
this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING
|
||||
- (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0)
|
||||
}
|
||||
}
|
||||
handleLinksWrapWidth()
|
||||
window.addEventListener('resize', handleLinksWrapWidth, false)
|
||||
}
|
||||
}
|
||||
mounted() {
|
||||
const MOBILE_DESKTOP_BREAKPOINT = 719; // refer to config.styl
|
||||
const NAVBAR_VERTICAL_PADDING =
|
||||
// eslint-disable-next-line radix
|
||||
parseInt(css(this.$el, "paddingLeft")) +
|
||||
// eslint-disable-next-line radix
|
||||
parseInt(css(this.$el, "paddingRight"));
|
||||
const handleLinksWrapWidth = () => {
|
||||
if (
|
||||
document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT
|
||||
) {
|
||||
this.linksWrapMaxWidth = null;
|
||||
} else {
|
||||
this.linksWrapMaxWidth =
|
||||
this.$el.offsetWidth -
|
||||
NAVBAR_VERTICAL_PADDING -
|
||||
((this.$refs.siteName && this.$refs.siteName.offsetWidth) ||
|
||||
0);
|
||||
}
|
||||
};
|
||||
handleLinksWrapWidth();
|
||||
window.addEventListener("resize", handleLinksWrapWidth, false);
|
||||
},
|
||||
};
|
||||
|
||||
function css (el, property) {
|
||||
// NOTE: Known bug, will return 'auto' if style value is 'auto'
|
||||
const win = el.ownerDocument.defaultView
|
||||
// null means not to return pseudo styles
|
||||
return win.getComputedStyle(el, null)[property]
|
||||
function css(el, property) {
|
||||
// NOTE: Known bug, will return "auto" if style value is "auto"
|
||||
const win = el.ownerDocument.defaultView;
|
||||
// null means not to return pseudo styles
|
||||
return win.getComputedStyle(el, null)[property];
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -98,44 +117,44 @@ $navbar-vertical-padding = 0.7rem
|
||||
$navbar-horizontal-padding = 1.5rem
|
||||
|
||||
.navbar
|
||||
padding $navbar-vertical-padding $navbar-horizontal-padding
|
||||
line-height $navbarHeight - 1.4rem
|
||||
a, span, img
|
||||
display inline-block
|
||||
.logo
|
||||
height $navbarHeight - 1.4rem
|
||||
min-width $navbarHeight - 1.4rem
|
||||
margin-right 0.8rem
|
||||
vertical-align top
|
||||
.site-name
|
||||
font-size 1.3rem
|
||||
font-weight 600
|
||||
color $textColor
|
||||
position relative
|
||||
.links
|
||||
padding-left 1.5rem
|
||||
box-sizing border-box
|
||||
background-color white
|
||||
white-space nowrap
|
||||
font-size 0.9rem
|
||||
position absolute
|
||||
right $navbar-horizontal-padding
|
||||
top $navbar-vertical-padding
|
||||
display flex
|
||||
.search-box
|
||||
flex: 0 0 auto
|
||||
vertical-align top
|
||||
padding $navbar-vertical-padding $navbar-horizontal-padding
|
||||
line-height $navbarHeight - 1.4rem
|
||||
a, span, img
|
||||
display inline-block
|
||||
.logo
|
||||
height $navbarHeight - 1.4rem
|
||||
min-width $navbarHeight - 1.4rem
|
||||
margin-right 0.8rem
|
||||
vertical-align top
|
||||
.site-name
|
||||
font-size 1.3rem
|
||||
font-weight 600
|
||||
color $textColor
|
||||
position relative
|
||||
.links
|
||||
padding-left 1.5rem
|
||||
box-sizing border-box
|
||||
background-color white
|
||||
white-space nowrap
|
||||
font-size 0.9rem
|
||||
position absolute
|
||||
right $navbar-horizontal-padding
|
||||
top $navbar-vertical-padding
|
||||
display flex
|
||||
.search-box
|
||||
flex: 0 0 auto
|
||||
vertical-align top
|
||||
|
||||
@media (max-width: $MQMobile)
|
||||
.navbar
|
||||
padding-left 4rem
|
||||
.can-hide
|
||||
display none
|
||||
.links
|
||||
padding-left 1.5rem
|
||||
.site-name
|
||||
width calc(100vw - 9.4rem)
|
||||
overflow hidden
|
||||
white-space nowrap
|
||||
text-overflow ellipsis
|
||||
.navbar
|
||||
padding-left 4rem
|
||||
.can-hide
|
||||
display none
|
||||
.links
|
||||
padding-left 1.5rem
|
||||
.site-name
|
||||
width calc(100vw - 9.4rem)
|
||||
overflow hidden
|
||||
white-space nowrap
|
||||
text-overflow ellipsis
|
||||
</style>
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
extend: "@vuepress/theme-default"
|
||||
extend: "@vuepress/theme-default",
|
||||
};
|
||||
|
@ -6,14 +6,14 @@ buttonDownload: Download
|
||||
buttonGuides: User guide
|
||||
buttonGuidesLink: /help/guides/getting-started
|
||||
features:
|
||||
- title: Tracking
|
||||
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu, Shikimori, and Bangumi.
|
||||
image: Library
|
||||
- title: Extensions
|
||||
details: Online reading from sources such as MangaDex, MangaKakalot and hundreds more.
|
||||
image: Browse
|
||||
- title: Customization
|
||||
details: A configurable reader with multiple viewers, reading directions and other settings.
|
||||
image: Manga
|
||||
- title: Tracking
|
||||
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu, Shikimori, and Bangumi.
|
||||
image: Library
|
||||
- title: Extensions
|
||||
details: Online reading from sources such as MangaDex, MangaKakalot and hundreds more.
|
||||
image: Browse
|
||||
- title: Customization
|
||||
details: A configurable reader with multiple viewers, reading directions and other settings.
|
||||
image: Manga
|
||||
footer: Apache Licensed | Copyright © 2015-present Javier Tomás
|
||||
---
|
||||
|
@ -47,6 +47,6 @@ Visit our translation project [here](https://hosted.weblate.org/projects/tachiyo
|
||||
## Donation
|
||||
If you can't contribute code or translations but you still wish to help, then you can choose to contribute directly to the projects founder, [Inorichi](https://github.com/inorichi/) by using the button below, or going [directly to Ko-Fi](https://ko-fi.com/inorichi).
|
||||
***
|
||||
<a href='https://ko-fi.com/inorichi' target='_blank' rel='noopener'>
|
||||
<img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' />
|
||||
<a href="https://ko-fi.com/inorichi" target="_blank" rel="noopener">
|
||||
<img height="36" style="border:0px;height:36px;" src="https://cdn.ko-fi.com/cdn/kofi1.png?v=2" border="0" alt="Buy Me a Coffee at ko-fi.com" />
|
||||
</a>
|
@ -36,40 +36,40 @@ All examples are illustrations and may not reflect what actually happens.
|
||||
<Carousel name="carousel-scale-type">
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Fit screen</h4>
|
||||
<p>Will fit either to width or height depending on image resolution</p>
|
||||
<h4>Fit screen</h4>
|
||||
<p>Will fit either to width or height depending on image resolution</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitscreen.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Stretch</h4>
|
||||
<h4>Stretch</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/stretch.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Fit width</h4>
|
||||
<h4>Fit width</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitwidth.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Fit height</h4>
|
||||
<h4>Fit height</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitheight.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Original size</h4>
|
||||
<p>Will be either zoom in or out depending on image resolution</p>
|
||||
<h4>Original size</h4>
|
||||
<p>Will be either zoom in or out depending on image resolution</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/originalsize.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Smart fit</h4>
|
||||
<p>Fits to the longest side of the image</p>
|
||||
<h4>Smart fit</h4>
|
||||
<p>Fits to the longest side of the image</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/smartfit.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
@ -90,23 +90,23 @@ All examples are illustrations
|
||||
<Carousel name="carousel-zoom-start-position">
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Left</h4>
|
||||
<p>Will start at the left side of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionleft.png')">
|
||||
<h4>Left</h4>
|
||||
<p>Will start at the left side of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionleft.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Right</h4>
|
||||
<p>Will start at the right side of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionright.png')">
|
||||
<h4>Right</h4>
|
||||
<p>Will start at the right side of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionright.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>Center</h4>
|
||||
<p>Will start at the center of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositioncenter.png')">
|
||||
<h4>Center</h4>
|
||||
<p>Will start at the center of the page.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositioncenter.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
</Carousel>
|
||||
@ -126,16 +126,16 @@ This allows you to control what color the background should be in reader. Backgr
|
||||
<Carousel name="carousel-background-color">
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorblack.png')">
|
||||
<h4>Black</h4>
|
||||
<p>Surrounds page with black. With an AMOLED screen you can save battery by using this.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorblack.png')">
|
||||
<h4>Black</h4>
|
||||
<p>Surrounds page with black. With an AMOLED screen you can save battery by using this.</p>
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorwhite.png')">
|
||||
<h4>White</h4>
|
||||
<p>Surrounds page with white. Makes pages seemless with the screen.</p>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorwhite.png')">
|
||||
<h4>White</h4>
|
||||
<p>Surrounds page with white. Makes pages seemless with the screen.</p>
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
</Carousel>
|
||||
@ -172,14 +172,14 @@ Tries to remove excess white borders
|
||||
<Carousel name="carousel-crop-borders">
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>With Crop borders on</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withcropborder.png')">
|
||||
<h4>With Crop borders on</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withcropborder.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
<CarouselItem>
|
||||
<figure class="centered">
|
||||
<h4>With Crop borders off</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withoutcropborder.png')">
|
||||
<h4>With Crop borders off</h4>
|
||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withoutcropborder.png')">
|
||||
</figure>
|
||||
</CarouselItem>
|
||||
</Carousel>
|
||||
|
@ -12,8 +12,7 @@ Migration is the process of moving manga from one source to another while keepin
|
||||
1. Go to <Navigation item="more"/> and tap <Navigation item="source_migration"/>.
|
||||
1. Select the **Source** you're migrating from.
|
||||
1. Find and select the title that you want to migrate.
|
||||
|
||||
**Tachiyomi** will do a global search of all the sources you have installed and enabled. If you don't find the manga you want, try searching for other titles it might go under.
|
||||
> **Tachiyomi** will do a global search of all the sources you have installed and enabled. If you don't find the manga you want, try searching for other titles it might go under.
|
||||
1. Once you find the manga you want to migrate, select it and then choose which data you want to transfer over, and you're done.
|
||||
:::
|
||||
|
||||
|
@ -54,9 +54,9 @@ In this case it is a problem with the site.
|
||||
You can open WebView in two of the following ways:
|
||||
|
||||
* If you already have a manga in **Library**
|
||||
* Open the manga in **Library**, then click on the <Navigation item="webview"/> on the **INFO** tab.
|
||||
* Open the manga in **Library**, then click on the <Navigation item="webview"/> on the **INFO** tab.
|
||||
* If you don't have manga in **Library**
|
||||
* Go to <Navigation item="browse"/> and click on **BROWSE** beside the source. Then open a manga and click on <Navigation item="webview"/>.
|
||||
* Go to <Navigation item="browse"/> and click on **BROWSE** beside the source. Then open a manga and click on <Navigation item="webview"/>.
|
||||
|
||||
Once in WebView, you will see a webpage and a bar on top with an arrow at the left side, pointing to the left edge of your screen.
|
||||
If there is no CAPTCHA on the webpage, initiate one by tapping a manga title, if possible. Once a CAPTCHA is shown, solve it. After that, use the aforementioned back arrow on the bar at the top of your screen to go back to your manga. Please do not use the back button on your phone as it does not work as expected.
|
||||
|
Loading…
Reference in New Issue
Block a user