mirror of
https://github.com/tachiyomiorg/website.git
synced 2024-12-21 07:31:58 +01:00
Rework Home page from scratch (#194)
* Initial commit * Add new feature images * Add better linting * Slightly darken main background * Change button icons and text * Fix missing quotation mark * Linting final files * a11y accommodations * Further a11y changes Now allows download button to be pressed when focused, which it didn't before. * Slightly adjust feature photos * Fix preview button border radius * Fix content moving in features Sloppily * Better view on mobile
This commit is contained in:
parent
8e0cff01de
commit
3cd12d8b61
@ -1,6 +1,7 @@
|
|||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -18,3 +18,6 @@ npm-debug.log
|
|||||||
# Ignore Visual Studio Code files
|
# Ignore Visual Studio Code files
|
||||||
*.code-workspace
|
*.code-workspace
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
|
|
||||||
|
# Ignore theme_eject folder
|
||||||
|
theme_eject/
|
7
.prettierrc
Normal file
7
.prettierrc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": true,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"endOfLine": "lf"
|
||||||
|
}
|
47
.stylintrc
Normal file
47
.stylintrc
Normal file
@ -0,0 +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",
|
||||||
|
"zIndexNormalize": false,
|
||||||
|
"stylusSupremacy.selectorSeparator": ",\n",
|
||||||
|
"stylusSupremacy.insertNewLineAroundBlocks": "root"
|
||||||
|
}
|
3
package-lock.json
generated
3
package-lock.json
generated
@ -1741,7 +1741,8 @@
|
|||||||
"version": "1.19.1",
|
"version": "1.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
|
||||||
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
|
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"source-map": {
|
"source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import './styles/fonts.styl'
|
import './styles/fonts.styl'
|
||||||
import './styles/animations.styl'
|
import './styles/animate.css'
|
||||||
import 'sweetalert2/dist/sweetalert2.min.css';
|
import 'sweetalert2/dist/sweetalert2.min.css';
|
||||||
import 'vue-material-design-icons/styles.css';
|
import 'vue-material-design-icons/styles.css';
|
||||||
|
|
||||||
|
BIN
src/.vuepress/public/assets/Browse-Dark.png
Normal file
BIN
src/.vuepress/public/assets/Browse-Dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
src/.vuepress/public/assets/Browse-Light.png
Normal file
BIN
src/.vuepress/public/assets/Browse-Light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
src/.vuepress/public/assets/Library-Dark.png
Normal file
BIN
src/.vuepress/public/assets/Library-Dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 456 KiB |
BIN
src/.vuepress/public/assets/Library-Light.png
Normal file
BIN
src/.vuepress/public/assets/Library-Light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 450 KiB |
BIN
src/.vuepress/public/assets/Manga-Dark.png
Normal file
BIN
src/.vuepress/public/assets/Manga-Dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
BIN
src/.vuepress/public/assets/Manga-Light.png
Normal file
BIN
src/.vuepress/public/assets/Manga-Light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 136 KiB |
4074
src/.vuepress/styles/animate.css
vendored
Normal file
4074
src/.vuepress/styles/animate.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -11,6 +11,10 @@ font-feature-settings()
|
|||||||
-ms-font-feature-settings arguments
|
-ms-font-feature-settings arguments
|
||||||
font-feature-settings arguments
|
font-feature-settings arguments
|
||||||
|
|
||||||
|
// Background color
|
||||||
|
.theme-container
|
||||||
|
background-color #fdfdfd
|
||||||
|
|
||||||
// Custom block containers
|
// Custom block containers
|
||||||
.custom-block
|
.custom-block
|
||||||
&.tip
|
&.tip
|
||||||
@ -116,56 +120,6 @@ font-feature-settings()
|
|||||||
&.version-indicator
|
&.version-indicator
|
||||||
background-color $badgeVersionColor !important
|
background-color $badgeVersionColor !important
|
||||||
|
|
||||||
// Index changes
|
|
||||||
.home
|
|
||||||
max-width $homePageWidth
|
|
||||||
.hero img
|
|
||||||
max-height $heroImageHeight
|
|
||||||
.action
|
|
||||||
user-select none
|
|
||||||
a
|
|
||||||
border-radius $buttonBorderRadius
|
|
||||||
cursor pointer
|
|
||||||
font-family $buttonFontFamily
|
|
||||||
font-size 1.125em
|
|
||||||
width 10.5rem
|
|
||||||
.material-icons
|
|
||||||
font-size 1.125em
|
|
||||||
color #ffffff
|
|
||||||
margin-right 2px
|
|
||||||
.feature
|
|
||||||
text-align center
|
|
||||||
p
|
|
||||||
min-height 4em
|
|
||||||
img
|
|
||||||
max-height 28em
|
|
||||||
max-width 100%
|
|
||||||
|
|
||||||
// Index download modal
|
|
||||||
.download-container
|
|
||||||
button
|
|
||||||
user-select none
|
|
||||||
.download-actions
|
|
||||||
.download-stable-button
|
|
||||||
.download-preview-button
|
|
||||||
.download-confirm-button
|
|
||||||
border-bottom-width 0
|
|
||||||
border-radius $buttonBorderRadius
|
|
||||||
font-family $buttonFontFamily
|
|
||||||
font-size 1.125em
|
|
||||||
height 3rem
|
|
||||||
width 8.5rem
|
|
||||||
&:focus
|
|
||||||
outline none
|
|
||||||
outline-style solid
|
|
||||||
.download-preview-button
|
|
||||||
background-color $accentColorSecondary
|
|
||||||
.download-title
|
|
||||||
border-bottom-width 0
|
|
||||||
.download-footer
|
|
||||||
border-top-width 0
|
|
||||||
padding-top 0
|
|
||||||
|
|
||||||
// Navbar Changes
|
// Navbar Changes
|
||||||
.navbar
|
.navbar
|
||||||
.site-name.can-hide
|
.site-name.can-hide
|
||||||
|
@ -4,67 +4,105 @@
|
|||||||
<img
|
<img
|
||||||
v-if="data.heroImage"
|
v-if="data.heroImage"
|
||||||
:src="$withBase(data.heroImage)"
|
:src="$withBase(data.heroImage)"
|
||||||
:alt="data.heroAlt || 'hero'"
|
:alt="data.heroAlt || 'Logo'"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<h1 v-if="data.heroText !== null" id="main-title">
|
<h1 v-if="data.heroText !== null" id="main-title">
|
||||||
{{ data.heroText || $title || "Tachiyomi" }}
|
{{ data.heroText || "Tachiyomi" }}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p class="description">
|
<p v-if="data.tagline !== null" class="description">
|
||||||
{{
|
{{
|
||||||
data.tagline ||
|
data.tagline ||
|
||||||
$description ||
|
"Free and open source manga reader for Android."
|
||||||
"Free and open source manga reader for Android."
|
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="action" v-if="data.actionText && data.actionLink">
|
<p v-if="data.buttonDownload || data.buttonGuides" class="action">
|
||||||
<a @click="showDownloads" class="action-button download">
|
<a
|
||||||
Download ↓
|
v-if="data.buttonDownload"
|
||||||
|
class="action-button action-button__Download"
|
||||||
|
tabindex="0"
|
||||||
|
@click="showDownloads"
|
||||||
|
@keyup.enter="showDownloads"
|
||||||
|
>
|
||||||
|
<CloudDownloadIcon />
|
||||||
|
{{ data.buttonDownload }}
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
v-if="data.buttonGuides"
|
||||||
|
class="action-button action-button__Guides"
|
||||||
|
tabindex="0"
|
||||||
|
:href="data.buttonGuidesLink"
|
||||||
|
>
|
||||||
|
<BookOpenVariantIcon />
|
||||||
|
{{ data.buttonGuides }}
|
||||||
</a>
|
</a>
|
||||||
<NavLink class="action-button secondary" :item="actionLink" />
|
|
||||||
</p>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="features" v-if="data.features && data.features.length">
|
<div v-if="data.features && data.features.length" class="features">
|
||||||
<div
|
<div
|
||||||
class="feature"
|
|
||||||
v-for="(feature, index) in data.features"
|
v-for="(feature, index) in data.features"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
class="feature"
|
||||||
>
|
>
|
||||||
<h2>{{ feature.title }}</h2>
|
<div class="feature__Details">
|
||||||
<p>{{ feature.details }}</p>
|
<h2>{{ feature.title }}</h2>
|
||||||
<img v-if="feature.image" :src="$withBase(feature.image)" />
|
<p>{{ feature.details }}</p>
|
||||||
|
</div>
|
||||||
|
<section class="feature__Animation">
|
||||||
|
<img
|
||||||
|
class="feature__Animation--dark"
|
||||||
|
:src="
|
||||||
|
$withBase('/assets/' + feature.image + '-Dark.png')
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
class="feature__Animation--light"
|
||||||
|
:src="
|
||||||
|
$withBase('/assets/' + feature.image + '-Light.png')
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Content class="theme-default-content custom" />
|
<Content class="theme-default-content custom" />
|
||||||
|
|
||||||
<footer class="footer" v-if="data.footer">
|
<footer>
|
||||||
{{ data.footer }}
|
<div v-if="data.footer" class="footer">
|
||||||
|
{{ data.footer }}
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import NavLink from "@parent-theme/components/NavLink.vue";
|
|
||||||
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
|
import CloudDownloadIcon from "vue-material-design-icons/CloudDownload.vue";
|
||||||
|
import BookOpenVariantIcon from "vue-material-design-icons/BookOpenVariant.vue";
|
||||||
|
|
||||||
const RELEASE_URL =
|
const RELEASE_URL =
|
||||||
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
||||||
|
|
||||||
const PREVIEW_URL =
|
const LATEST_RELEASE = "https://github.com/inorichi/tachiyomi/releases/latest";
|
||||||
"https://tachiyomi.kanade.eu/latest";
|
|
||||||
|
const PREVIEW_URL = "https://tachiyomi.kanade.eu/latest";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { NavLink },
|
name: "Home",
|
||||||
|
|
||||||
|
components: {
|
||||||
|
CloudDownloadIcon,
|
||||||
|
BookOpenVariantIcon,
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
tagName: "",
|
tagName: "",
|
||||||
browserDownloadUrl: ""
|
browserDownloadUrl: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -73,180 +111,344 @@ export default {
|
|||||||
return this.$page.frontmatter;
|
return this.$page.frontmatter;
|
||||||
},
|
},
|
||||||
|
|
||||||
actionLink() {
|
buttonDownload() {
|
||||||
return {
|
return {
|
||||||
link: this.data.actionLink,
|
text: this.data.buttonDownload,
|
||||||
text: this.data.actionText
|
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
|
|
||||||
|
buttonGuidesLink() {
|
||||||
|
return {
|
||||||
|
link: this.data.buttonGuidesLink,
|
||||||
|
text: this.data.buttonGuides,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
async mounted() {
|
||||||
|
const { data } = await axios.get(RELEASE_URL);
|
||||||
|
const apkAsset = data.assets.find((a) => a.name.includes(".apk"));
|
||||||
|
this.$data.tagName = data.tag_name;
|
||||||
|
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
showDownloads() {
|
showDownloads() {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Download",
|
title: "Get Tachiyomi for Android",
|
||||||
text: "Select which version to use",
|
text: "Requires Android 5.0 or newer.",
|
||||||
confirmButtonText: "Stable",
|
confirmButtonText: "Download",
|
||||||
confirmButtonAriaLabel: "Stable",
|
confirmButtonAriaLabel: "Download Tachiyomi",
|
||||||
cancelButtonText: "Preview",
|
cancelButtonText:
|
||||||
cancelButtonAriaLabel: "Preview",
|
"Living on the edge? Get the <strong>Preview</strong>",
|
||||||
|
cancelButtonAriaLabel: "Download Preview",
|
||||||
showCloseButton: true,
|
showCloseButton: true,
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
focusConfirm: false,
|
focusConfirm: true,
|
||||||
customClass: {
|
customClass: {
|
||||||
actions: "download-actions",
|
container: "showDownloads",
|
||||||
cancelButton: "download-preview-button",
|
popup: "showDownloads__popup",
|
||||||
closeButton: "download-close-button",
|
actions: "showDownloads__actions",
|
||||||
confirmButton: "download-stable-button",
|
title: "showDownloads__title",
|
||||||
container: "download-container",
|
content: "showDownloads__content",
|
||||||
content: "download-content",
|
confirmButton: "showDownloads__confirmButton",
|
||||||
header: "download-header",
|
cancelButton: "showDownloads__cancelButton",
|
||||||
icon: "download-icon",
|
closeButton: "showDownloads__closeButton",
|
||||||
popup: "download-popup",
|
footer: "showDownloads__footer",
|
||||||
title: "download-title"
|
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated zoomIn fastest"
|
popup: "animate__animated animate__faster animate__fadeIn",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup: "animate__animated animate__faster animate__zoomOut",
|
||||||
}
|
},
|
||||||
}).then(result => {
|
}).then((result) => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Downloading",
|
|
||||||
text: "Stable version is being downloaded.",
|
|
||||||
icon: "success",
|
icon: "success",
|
||||||
focusConfirm: false,
|
title: "Downloading",
|
||||||
focusCancel: false,
|
text: "Tachiyomi",
|
||||||
timer: 5000,
|
confirmButtonText: "Dismiss",
|
||||||
|
showCloseButton: false,
|
||||||
|
showCancelButton: false,
|
||||||
|
timer: 50000,
|
||||||
timerProgressBar: true,
|
timerProgressBar: true,
|
||||||
customClass: {
|
customClass: {
|
||||||
confirmButton: "download-confirm-button",
|
container: "showDownloads",
|
||||||
container: "download-container"
|
popup: "showDownloads__popup",
|
||||||
|
actions: "showDownloads__actions",
|
||||||
|
title: "showDownloads__title",
|
||||||
|
content: "showDownloads__content",
|
||||||
|
confirmButton: "showDownloads__confirmButton",
|
||||||
|
cancelButton: "showDownloads__cancelButton",
|
||||||
|
closeButton: "showDownloads__closeButton",
|
||||||
|
footer: "showDownloads__footer",
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated pulse faster"
|
popup:
|
||||||
|
"animate__animated animate__faster animate__pulse",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup:
|
||||||
}
|
"animate__animated animate__faster animate__zoomOut",
|
||||||
|
},
|
||||||
});
|
});
|
||||||
window.location.assign(
|
window.location.assign(
|
||||||
this.$data.browserDownloadUrl || RELEASE_URL
|
this.$data.browserDownloadUrl || LATEST_RELEASE
|
||||||
|
);
|
||||||
|
window.ga(
|
||||||
|
"send",
|
||||||
|
"event",
|
||||||
|
"Action",
|
||||||
|
"Download",
|
||||||
|
"Tachiyomi"
|
||||||
);
|
);
|
||||||
window.ga("send", "event", "Action", "Download", "Tachiyomi");
|
|
||||||
} else if (result.dismiss === "cancel") {
|
} else if (result.dismiss === "cancel") {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Downloading",
|
icon: "warning",
|
||||||
text: "Preview version is being downloaded.",
|
title: "Are you sure?",
|
||||||
icon: "success",
|
html:
|
||||||
focusConfirm: false,
|
"<strong>Preview</strong> is not recommended if you're not willing to test for – and endure issues.",
|
||||||
focusCancel: false,
|
confirmButtonText: "I am sure.",
|
||||||
timer: 5000,
|
showCloseButton: true,
|
||||||
timerProgressBar: true,
|
showCancelButton: false,
|
||||||
customClass: {
|
customClass: {
|
||||||
confirmButton: "download-confirm-button",
|
container: "showDownloads",
|
||||||
container: "download-container"
|
popup: "showDownloads__popup",
|
||||||
|
actions: "showDownloads__actions",
|
||||||
|
title: "showDownloads__title",
|
||||||
|
content: "showDownloads__content",
|
||||||
|
confirmButton: "showDownloads__confirmButton",
|
||||||
|
cancelButton: "showDownloads__cancelButton",
|
||||||
|
closeButton: "showDownloads__closeButton",
|
||||||
|
footer: "showDownloads__footer",
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated pulse faster"
|
popup: "animate__animated animate__headShake",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup:
|
||||||
|
"animate__animated animate__faster animate__zoomOut",
|
||||||
|
},
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.value) {
|
||||||
|
this.$swal({
|
||||||
|
icon: "success",
|
||||||
|
title: "Downloading",
|
||||||
|
text: "Tachiyomi Preview",
|
||||||
|
confirmButtonText: "Dismiss",
|
||||||
|
showCloseButton: false,
|
||||||
|
showCancelButton: false,
|
||||||
|
timer: 5000,
|
||||||
|
timerProgressBar: true,
|
||||||
|
customClass: {
|
||||||
|
container: "showDownloads",
|
||||||
|
popup: "showDownloads__popup",
|
||||||
|
actions: "showDownloads__actions",
|
||||||
|
title: "showDownloads__title",
|
||||||
|
content: "showDownloads__content",
|
||||||
|
confirmButton:
|
||||||
|
"showDownloads__confirmButton",
|
||||||
|
cancelButton: "showDownloads__cancelButton",
|
||||||
|
closeButton: "showDownloads__closeButton",
|
||||||
|
footer: "showDownloads__footer",
|
||||||
|
},
|
||||||
|
showClass: {
|
||||||
|
popup:
|
||||||
|
"animate__animated animate__faster animate__pulse",
|
||||||
|
},
|
||||||
|
hideClass: {
|
||||||
|
popup:
|
||||||
|
"animate__animated animate__faster animate__zoomOut",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
window.location.assign(PREVIEW_URL);
|
||||||
|
window.ga(
|
||||||
|
"send",
|
||||||
|
"event",
|
||||||
|
"Action",
|
||||||
|
"Download",
|
||||||
|
"Tachiyomi Preview"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
window.location.assign(
|
|
||||||
PREVIEW_URL
|
|
||||||
);
|
|
||||||
window.ga("send", "event", "Action", "Download", "Tachiyomi Preview");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
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"));
|
|
||||||
// Set the values.
|
|
||||||
this.$data.tagName = data.tag_name;
|
|
||||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus">
|
<style lang="stylus">
|
||||||
.home
|
.home
|
||||||
display block
|
display block
|
||||||
margin 0 auto
|
margin 0px auto
|
||||||
|
max-width $homePageWidth
|
||||||
padding $navbarHeight 2rem 0
|
padding $navbarHeight 2rem 0
|
||||||
.hero
|
.hero
|
||||||
text-align center
|
text-align center
|
||||||
img
|
img
|
||||||
display block
|
display block
|
||||||
margin 3rem auto 1.5rem
|
margin 1rem auto
|
||||||
max-width 100%
|
max-height $heroImageHeight
|
||||||
|
max-width: 100%
|
||||||
h1
|
h1
|
||||||
font-size 3rem
|
font-size 3rem
|
||||||
h1
|
h1, .description, .action
|
||||||
.description
|
margin 1rem auto
|
||||||
.action
|
|
||||||
margin 1.8rem auto
|
|
||||||
.description
|
.description
|
||||||
color lighten($textColor, 40%)
|
color lighten($textColor, 40%)
|
||||||
font-size 1.6rem
|
font-size 1.6rem
|
||||||
line-height 1.3
|
line-height 1.3
|
||||||
|
margin 1rem auto
|
||||||
max-width 35rem
|
max-width 35rem
|
||||||
.action-button
|
.action
|
||||||
background-color $accentColor
|
user-select none
|
||||||
border-bottom 1px solid darken($accentColor, 10%)
|
margin 2rem auto
|
||||||
box-sizing border-box
|
.action-button
|
||||||
color #fff
|
border-bottom 1px solid darken($accentColor, 10%)
|
||||||
display inline-block
|
border-radius 4px
|
||||||
padding 0.8rem 1.6rem
|
box-sizing border-box
|
||||||
transition background-color 0.1s ease
|
color #fff
|
||||||
&:hover
|
cursor pointer
|
||||||
background-color lighten($accentColor, 10%)
|
display inline-block
|
||||||
&.secondary
|
font-family $buttonFontFamily
|
||||||
background-color darken($borderColor, 5%)
|
font-size 1.125rem
|
||||||
border-bottom-color darken($borderColor, 15%)
|
margin 0.25rem
|
||||||
color lighten($textColor, 25%)
|
padding 0.8rem
|
||||||
&:hover
|
transition background-color .1s ease
|
||||||
background-color lighten($borderColor, 5%)
|
width 10rem
|
||||||
svg + span
|
.icon.outbound
|
||||||
margin-left 0.5rem
|
display none
|
||||||
svg
|
&__Download
|
||||||
height 1em
|
background-color $accentColor
|
||||||
width 1em
|
border-bottom 1px solid darken($accentColor, 10%)
|
||||||
& + .action-button
|
&:hover
|
||||||
margin-left 0.5rem
|
background-color lighten($accentColor, 10%)
|
||||||
|
&__Guides
|
||||||
|
background-color $accentColorSecondary
|
||||||
|
border-bottom 1px solid darken($accentColorSecondary, 10%)
|
||||||
|
&:hover
|
||||||
|
background-color lighten($accentColorSecondary, 10%)
|
||||||
|
&:focus
|
||||||
|
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||||
|
outline none
|
||||||
.features
|
.features
|
||||||
align-content stretch
|
|
||||||
align-items flex-start
|
|
||||||
border-top 1px solid $borderColor
|
border-top 1px solid $borderColor
|
||||||
|
padding 1rem 0
|
||||||
|
margin-top 1rem
|
||||||
display flex
|
display flex
|
||||||
|
flex-direction row
|
||||||
flex-wrap wrap
|
flex-wrap wrap
|
||||||
justify-content space-between
|
align-items flex-start
|
||||||
margin-top 2.5rem
|
align-content stretch
|
||||||
padding 1.2rem 0
|
justify-content space-evenly
|
||||||
.feature
|
.feature
|
||||||
|
flex 1
|
||||||
flex-basis 30%
|
flex-basis 30%
|
||||||
flex-grow 1
|
|
||||||
max-width 30%
|
max-width 30%
|
||||||
h2
|
|
||||||
border-bottom none
|
|
||||||
color lighten($textColor, 10%)
|
|
||||||
font-size 1.4rem
|
|
||||||
font-weight 500
|
|
||||||
padding-bottom 0
|
|
||||||
p
|
|
||||||
color lighten($textColor, 25%)
|
|
||||||
.footer
|
|
||||||
border-top 1px solid $borderColor
|
|
||||||
color lighten($textColor, 25%)
|
|
||||||
padding 2.5rem
|
|
||||||
text-align center
|
text-align center
|
||||||
|
&__Details
|
||||||
|
min-height 9rem
|
||||||
|
h2
|
||||||
|
font-size 1.4rem
|
||||||
|
font-weight 500
|
||||||
|
border-bottom none
|
||||||
|
padding-bottom 0
|
||||||
|
color lighten($textColor, 10%)
|
||||||
|
p
|
||||||
|
color lighten($textColor, 25%)
|
||||||
|
&__Animation
|
||||||
|
display block
|
||||||
|
position relative
|
||||||
|
&--light
|
||||||
|
&--dark
|
||||||
|
border-radius 6px
|
||||||
|
max-height 38em
|
||||||
|
max-width 100%
|
||||||
|
margin-left auto
|
||||||
|
margin-right auto
|
||||||
|
left 0
|
||||||
|
right 0
|
||||||
|
&--light
|
||||||
|
animation fade 2s ease-in-out 2s infinite alternate
|
||||||
|
box-shadow 0 10px 50px 0px #ddd
|
||||||
|
&--dark
|
||||||
|
position absolute
|
||||||
|
box-shadow 0 10px 50px 0px #ddd
|
||||||
|
footer
|
||||||
|
position relative
|
||||||
|
.footer
|
||||||
|
padding 2.5rem
|
||||||
|
border-top 1px solid $borderColor
|
||||||
|
text-align center
|
||||||
|
color lighten($textColor, 25%)
|
||||||
|
|
||||||
|
.showDownloads
|
||||||
|
button
|
||||||
|
user-select none
|
||||||
|
&__popup
|
||||||
|
width 30em !important
|
||||||
|
&__cancelButton
|
||||||
|
&__confirmButton
|
||||||
|
font-family $buttonFontFamily
|
||||||
|
&__confirmButton
|
||||||
|
width 50% !important
|
||||||
|
margin-left 25% !important
|
||||||
|
margin-right 25% !important
|
||||||
|
margin-bottom 8px !important
|
||||||
|
&__cancelButton
|
||||||
|
background none !important
|
||||||
|
color $textColor !important
|
||||||
|
font-size 0.8rem !important
|
||||||
|
padding 2px !important
|
||||||
|
padding-top 4px !important
|
||||||
|
border-top 1px solid darken($borderColor, 10%) !important
|
||||||
|
border-radius 0px !important
|
||||||
|
strong
|
||||||
|
color $accentColor
|
||||||
|
&:hover
|
||||||
|
cursor pointer
|
||||||
|
opacity 0.8
|
||||||
|
&:focus
|
||||||
|
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||||
|
outline none
|
||||||
|
&:hover
|
||||||
|
cursor default
|
||||||
|
&__closeButton
|
||||||
|
border-radius 6px
|
||||||
|
width 1em
|
||||||
|
height 1em
|
||||||
|
margin-top 0.2em
|
||||||
|
margin-right 0.2em
|
||||||
|
&:focus
|
||||||
|
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||||
|
outline none
|
||||||
|
&__title
|
||||||
|
border-bottom-width 0 !important
|
||||||
|
font-family $buttonFontFamily !important
|
||||||
|
font-weight 500
|
||||||
|
&__content
|
||||||
|
margin-top -10px
|
||||||
|
font-size 1rem
|
||||||
|
&__footer
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
@keyframes fade
|
||||||
|
0%
|
||||||
|
opacity 1
|
||||||
|
25%
|
||||||
|
opacity 1
|
||||||
|
75%
|
||||||
|
opacity 0
|
||||||
|
100%
|
||||||
|
opacity 0
|
||||||
|
|
||||||
|
@media (max-width: $MQNarrow)
|
||||||
|
.home
|
||||||
|
.feature
|
||||||
|
&__Details
|
||||||
|
min-height 11rem !important
|
||||||
|
|
||||||
@media (max-width: $MQMobile)
|
@media (max-width: $MQMobile)
|
||||||
.home
|
.home
|
||||||
@ -255,10 +457,8 @@ export default {
|
|||||||
.feature
|
.feature
|
||||||
max-width 100%
|
max-width 100%
|
||||||
padding 0 2.5rem
|
padding 0 2.5rem
|
||||||
.hero
|
&__Details
|
||||||
.action-button + .action-button
|
min-height 8rem !important
|
||||||
margin-left 0
|
|
||||||
margin-top 0.5rem
|
|
||||||
|
|
||||||
@media (max-width: $MQMobileNarrow)
|
@media (max-width: $MQMobileNarrow)
|
||||||
.home
|
.home
|
||||||
@ -266,18 +466,18 @@ export default {
|
|||||||
padding-right 1.5rem
|
padding-right 1.5rem
|
||||||
.hero
|
.hero
|
||||||
img
|
img
|
||||||
|
max-height 6rem
|
||||||
margin 2rem auto 1.2rem
|
margin 2rem auto 1.2rem
|
||||||
h1
|
h1
|
||||||
font-size 2rem
|
font-size 2rem
|
||||||
h1
|
h1, .description, .action
|
||||||
.description
|
|
||||||
.action
|
|
||||||
margin 1.2rem auto
|
margin 1.2rem auto
|
||||||
.description
|
.description
|
||||||
font-size 1.2rem
|
font-size 1.2rem
|
||||||
.action-button
|
.action-button
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
padding 0.6rem 1.2rem
|
padding 0.6rem 1.2rem
|
||||||
.feature h2
|
.feature
|
||||||
font-size 1.25rem
|
h2
|
||||||
|
font-size 1.8rem
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
home: true
|
home: true
|
||||||
lang: en-US
|
lang: en-US
|
||||||
heroImage: /icons/logo.svg
|
heroImage: /icons/logo.svg
|
||||||
actionText: Get started →
|
buttonDownload: Download
|
||||||
actionLink: /help/guides/getting-started
|
buttonGuides: User guide
|
||||||
|
buttonGuidesLink: /help/guides/getting-started
|
||||||
features:
|
features:
|
||||||
- title: Extensions
|
|
||||||
details: Online reading from sources such as MangaDex, KissManga and hundreds more.
|
|
||||||
image: /assets/media/my-library.png
|
|
||||||
- title: Tracking
|
- title: Tracking
|
||||||
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu and Shikimori.
|
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu and Shikimori.
|
||||||
image: /assets/media/browse.png
|
image: Library
|
||||||
|
- title: Extensions
|
||||||
|
details: Online reading from sources such as MangaDex, MangaKakalot and hundreds more.
|
||||||
|
image: Browse
|
||||||
- title: Configurable
|
- title: Configurable
|
||||||
details: Reader with multiple viewers, reading directions and other settings.
|
details: Reader with multiple viewers, reading directions and other settings.
|
||||||
image: /assets/media/manga.png
|
image: Manga
|
||||||
footer: Apache Licensed | Copyright © 2015-present Javier Tomás
|
footer: Apache Licensed | Copyright © 2015-present Javier Tomás
|
||||||
---
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user