diff --git a/assets/styles/_global.scss b/assets/styles/_global.scss new file mode 100644 index 0000000..cbae8dd --- /dev/null +++ b/assets/styles/_global.scss @@ -0,0 +1,38 @@ +.pointer{ + cursor: pointer; +} + +.fa-twitter { + color: $color-brand-twitter; +} + +.fa-link{ + color: $color-text-gray; +} + +.fa-youtube{ + color: $color-brand-youtube; +} + +.fa-instagram{ + color: $color-brand-instagram; +} + +.fa-facebook { + color: $color-brand-facebook; +} + +.social-networks { + text-align: center; + + .networks-inline-list{ + span{ + margin: 10px; + cursor: pointer; + + &:active, &:focus{ + outline: none; + } + } + } +} diff --git a/assets/styles/_variables.scss b/assets/styles/_variables.scss index 508a7db..febecb6 100644 --- a/assets/styles/_variables.scss +++ b/assets/styles/_variables.scss @@ -6,6 +6,7 @@ $color-text-green: #28a745; $color-text-gray: #909399; $color-border-gray: #e6e6e6; +$color-brand-facebook: #3b5998; $color-brand-instagram: #e4405f; $color-brand-paypal: #00457C; $color-brand-twitter: #00acee; diff --git a/components/ActorCard.vue b/components/ActorCard.vue index f839fa1..2e11d0f 100644 --- a/components/ActorCard.vue +++ b/components/ActorCard.vue @@ -15,13 +15,21 @@ {{ actor.shortname }} - - {{ detailButtonText }} - + + {{ detailButtonText }} + + diff --git a/components/ChapterCard.vue b/components/ChapterCard.vue index 48d1f9b..bc6f0a5 100644 --- a/components/ChapterCard.vue +++ b/components/ChapterCard.vue @@ -15,13 +15,21 @@ {{ chapter.natural_id }} - {{ chapter.name }} - - {{ detailButtonText }} - + + {{ detailButtonText }} + + @@ -41,17 +49,7 @@ export default { detailButtonText: this.$t('VIEWS.SEASONS.SEE_DETAIL.TEXT'), }; }, - methods: { - goToDetail() { - this.$router.push({ - name: `seasons-season_number-chapters-slug___${this.$i18n.locale}`, - params: { - season_number: this.chapter.season, - slug: this.chapter.slug, - }, - }); - }, - }, + methods: {}, }; diff --git a/components/CharacterCard.vue b/components/CharacterCard.vue index 6e925ea..6a0e408 100644 --- a/components/CharacterCard.vue +++ b/components/CharacterCard.vue @@ -15,13 +15,21 @@ {{ character.shortname }} - - {{ detailButtonText }} - + + {{ detailButtonText }} + + @@ -41,16 +49,7 @@ export default { detailButtonText: this.$t('VIEWS.CHARACTERS.SEE_DETAIL.TEXT'), }; }, - methods: { - goToDetail() { - this.$router.push({ - name: `characters-slug___${this.$i18n.locale}`, - params: { - slug: this.character.slug, - }, - }); - }, - }, + methods: {}, }; diff --git a/components/Header.vue b/components/Header.vue index b12643a..de13b97 100644 --- a/components/Header.vue +++ b/components/Header.vue @@ -1,19 +1,13 @@ diff --git a/components/Menu.vue b/components/Menu.vue index 655780b..7c8b5f0 100644 --- a/components/Menu.vue +++ b/components/Menu.vue @@ -82,12 +82,10 @@ export default { fifthSeasonItemText: this.$t('MENU.SEASONS.FIFTH_SEASON.TEXT'), }; }, - created() { - if (process.browser) { - // eslint-disable-next-line nuxt/no-globals-in-created - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + mounted() { + // eslint-disable-next-line nuxt/no-globals-in-created + window.addEventListener('resize', this.handleResize); + this.handleResize(); }, beforeDestroy() { window.removeEventListener('resize', this.handleResize); diff --git a/jest.config.js b/jest.config.js index 7124100..cb34e60 100644 --- a/jest.config.js +++ b/jest.config.js @@ -18,6 +18,7 @@ module.exports = { '/components/**/*.vue', '/pages/**/*.vue', '/plugins/anhqvClient/client.js', + '/store/**/*.js', ], verbose: true, }; diff --git a/layouts/default.vue b/layouts/default.vue index 84ac6ce..5dd2de1 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -67,9 +67,38 @@ body{ } #main { + padding: 0; - @media screen and (min-width: $tablet-min-width){ - padding: 50px; + .banner { + h1 { + padding: 5px; + height: 75px; + line-height: 75px; + font-size: 20px; + text-align: center; + background: $color-text-blue; // #66b3ff; + box-shadow: inset 0 8px 8px -8px rgba(0,0,0,.3), inset 0 -8px 8px -8px rgba(0,0,0,.3); + color: $color-text-white; + margin: 0; + + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + + @media screen and (min-width: $tablet-min-width){ + height: 150px; + line-height: 150px; + font-size: 50px; + } + } + } + + .wrapper { + padding: 20px; + + @media screen and (min-width: $tablet-min-width){ + padding: 50px; + } } } diff --git a/locales/es.js b/locales/es.js index f745ca6..05c5f75 100644 --- a/locales/es.js +++ b/locales/es.js @@ -7,6 +7,9 @@ export default TITLE: '🛑 AdBlock detectado', TEXT: 'Este sitio web tiene como única financiación los anuncios de Google AdSense. Para visitar este sitio web, por favor, desactiva AdBlock.', }, + SOCIAL_SHARING: { + SHARE: 'Comparte y comenta en tu red social favorita', + }, }, MENU: { ACTORS: { @@ -111,7 +114,7 @@ export default TITLE: 'Temporada {number}', CHAPTERS: { DETAIL: { - TITLE: 'Capítulo {slug}', + TITLE: '{slug} - {name}', INFO: { TITLE: 'Datos del capítulo', NAME: 'Capítulo', diff --git a/middleware/scroll-top.js b/middleware/scroll-top.js new file mode 100644 index 0000000..0f63d32 --- /dev/null +++ b/middleware/scroll-top.js @@ -0,0 +1,5 @@ +export default () => { + if (!process.server) { + window.document.getElementById('main').scrollTop = 0; + } +}; diff --git a/nuxt.config.js b/nuxt.config.js index 9f6954d..462ce66 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -14,11 +14,14 @@ export default { ** Headers of the page */ head: { - title: process.env.npm_package_name || '', + htmlAttrs: { + lang: 'es', + }, + title: 'ANHQV STATS', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }, + { hid: 'description', name: 'description', content: 'Información y estadísticas Aquí No Hay Quien Viva: personajes, actores, capítulos... y mucho más. ✅ Disponible API REST documentada.' }, ], link: [ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, @@ -40,6 +43,7 @@ export default { plugins: [ '@/plugins/element-ui', '@/plugins/nuxt-anhqv-client.js', + '@/plugins/nuxt-social-sharing.js', ], /* ** Nuxt.js dev-modules @@ -87,7 +91,10 @@ export default { ], styleResources: { - scss: ['./assets/styles/*.scss'], + scss: [ + './assets/styles/_variables.scss', + './assets/styles/_global.scss', + ], }, /* ** Axios module configuration @@ -105,4 +112,7 @@ export default { */ extend(config) { }, }, + router: { + middleware: ['scroll-top'], + }, }; diff --git a/package-lock.json b/package-lock.json index d3efd76..cd16584 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "anhqv-stats", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6446,7 +6446,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6812,7 +6813,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6860,6 +6862,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6898,11 +6901,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.1.1", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -15166,6 +15171,14 @@ } } }, + "vue-social-sharing": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/vue-social-sharing/-/vue-social-sharing-2.4.7.tgz", + "integrity": "sha512-X70bulEnjSHvakf8NaLhuKTuUS4yKzdhYjX/aJ4dPVIXWaoXH8w+QODuM3C6c3fPaiNqgR19VrDyWB7EUGUzPQ==", + "requires": { + "vue": "^2.2.4" + } + }, "vue-style-loader": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", diff --git a/package.json b/package.json index 7002fea..805a0b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anhqv-stats", - "version": "0.7.0", + "version": "0.7.1", "private": true, "scripts": { "dev": "nuxt", @@ -28,16 +28,17 @@ "nuxt-sass-resources-loader": "2.0.5", "vue": "2.6.11", "vue-adblock-detect": "0.0.2", + "vue-social-sharing": "2.4.7", "vuex": "3.1.3" }, "devDependencies": { "@nuxtjs/eslint-config": "2.0.2", "@nuxtjs/eslint-module": "1.1.0", - "@nuxtjs/style-resources": "^1.0.0", + "@nuxtjs/style-resources": "1.0.0", "@vue/test-utils": "1.0.0-beta.31", "axios-mock-adapter": "1.18.1", "babel-eslint": "10.1.0", - "babel-jest": "^24.1.0", + "babel-jest": "24.9.0", "eslint": "6.8.0", "eslint-config-airbnb-base": "14.1.0", "eslint-plugin-nuxt": "0.5.2", diff --git a/pages/actors/_slug/index.vue b/pages/actors/_slug/index.vue index bd97dc8..4bfbd1a 100644 --- a/pages/actors/_slug/index.vue +++ b/pages/actors/_slug/index.vue @@ -1,75 +1,108 @@ @@ -97,9 +130,21 @@ export default { }); } - return this.$store.dispatch('actors/getBySlug', { slug: this.$route.params.slug }) + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.ACTORS.DETAIL.TITLE', { actor: '' })); + + return Promise.all([ + this.$store.dispatch('seo-configs/getSeoConfigBySlug', { + slug: `actor-${this.$route.params.slug}`, + }), + this.$store.dispatch('actors/getBySlug', { + slug: this.$route.params.slug, + }), + ]) + .then(() => { + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.ACTORS.DETAIL.TITLE', { actor: this.actor.shortname })); + }) .finally(() => { - this.loadingInstance.close(); + if (this.loadingInstance) this.loadingInstance.close(); }); }, data() { @@ -112,19 +157,24 @@ export default { shortnameLabel: this.$t('VIEWS.ACTORS.DETAIL.INFO.SHORTNAME'), birthdateLabel: this.$t('VIEWS.ACTORS.DETAIL.INFO.BIRTHDATE'), deathdateLabel: this.$t('VIEWS.ACTORS.DETAIL.INFO.DEATHDATE'), + shareText: this.$t('COMMON.SOCIAL_SHARING.SHARE'), }; }, computed: { ...mapState('actors', { actor: 'current', }), + ...mapState('configs', { + title: 'currentTitle', + }), + ...mapState('seo-configs', { + seoConfig: 'currentSeoConfig', + }), }, - created() { - if (process.browser) { - // eslint-disable-next-line nuxt/no-globals-in-created - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + mounted() { + // eslint-disable-next-line nuxt/no-globals-in-created + window.addEventListener('resize', this.handleResize); + this.handleResize(); }, beforeDestroy() { if (this.loadingInstance) this.loadingInstance.close(); @@ -140,6 +190,85 @@ export default { } }, }, + head() { + const obj = { + meta: [], + link: [], + }; + + const { seoConfig } = this; + + if (seoConfig.title) obj.title = seoConfig.title; + // Standard metas + if (seoConfig.description) { + obj.meta.push({ + hid: 'description', + name: 'description', + content: seoConfig.description, + }); + } + if (seoConfig.canonical_url) { + obj.link.push({ + rel: 'canonical', + href: seoConfig.canonical_url, + }); + } + + // Open Graph metas + if (seoConfig.og_title) { + obj.meta.push({ + hid: 'og:title', + property: 'og:title', + content: seoConfig.og_title, + }); + } + if (seoConfig.og_type) { + obj.meta.push({ + hid: 'og:type', + property: 'og:type', + content: seoConfig.og_type, + }); + } + if (seoConfig.og_image) { + obj.meta.push({ + hid: 'og:image', + property: 'og:image', + content: seoConfig.og_image, + }); + } + if (seoConfig.og_url) { + obj.meta.push({ + hid: 'og:url', + property: 'og:url', + content: seoConfig.og_url, + }); + } + if (seoConfig.og_description) { + obj.meta.push({ + hid: 'og:description', + property: 'og:description', + content: seoConfig.og_description, + }); + } + + // Twitter metas + if (seoConfig.twitter_site) { + obj.meta.push({ + hid: 'twitter:site', + name: 'twitter:site', + content: seoConfig.twitter_site, + }); + } + if (seoConfig.twitter_card) { + obj.meta.push({ + hid: 'twitter:card', + name: 'twitter:card', + content: seoConfig.twitter_card, + }); + } + + return obj; + }, }; diff --git a/pages/actors/index.vue b/pages/actors/index.vue index df8378c..81d6b90 100644 --- a/pages/actors/index.vue +++ b/pages/actors/index.vue @@ -1,24 +1,57 @@ @@ -48,7 +81,14 @@ export default { }); } - return this.$store.dispatch('actors/getAll') + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.ACTORS.TITLE')); + + return Promise.all([ + this.$store.dispatch('seo-configs/getSeoConfigBySlug', { + slug: 'actors', + }), + this.$store.dispatch('actors/getAll'), + ]) .finally(() => { if (this.loadingInstance) this.loadingInstance.close(); }); @@ -56,19 +96,24 @@ export default { data() { return { gutter: utils.VIEWS.ACTORS.GUTTER.DEFAULT, + shareText: this.$t('COMMON.SOCIAL_SHARING.SHARE'), }; }, computed: { ...mapState('actors', { actors: 'all', }), + ...mapState('configs', { + title: 'currentTitle', + }), + ...mapState('seo-configs', { + seoConfig: 'currentSeoConfig', + }), }, - created() { - if (process.browser) { - // eslint-disable-next-line nuxt/no-globals-in-created - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + mounted() { + // eslint-disable-next-line nuxt/no-globals-in-created + window.addEventListener('resize', this.handleResize); + this.handleResize(); }, beforeDestroy() { if (this.loadingInstance) this.loadingInstance.close(); @@ -84,6 +129,85 @@ export default { } }, }, + head() { + const obj = { + meta: [], + link: [], + }; + + const { seoConfig } = this; + + if (seoConfig.title) obj.title = seoConfig.title; + // Standard metas + if (seoConfig.description) { + obj.meta.push({ + hid: 'description', + name: 'description', + content: seoConfig.description, + }); + } + if (seoConfig.canonical_url) { + obj.link.push({ + rel: 'canonical', + href: seoConfig.canonical_url, + }); + } + + // Open Graph metas + if (seoConfig.og_title) { + obj.meta.push({ + hid: 'og:title', + property: 'og:title', + content: seoConfig.og_title, + }); + } + if (seoConfig.og_type) { + obj.meta.push({ + hid: 'og:type', + property: 'og:type', + content: seoConfig.og_type, + }); + } + if (seoConfig.og_image) { + obj.meta.push({ + hid: 'og:image', + property: 'og:image', + content: seoConfig.og_image, + }); + } + if (seoConfig.og_url) { + obj.meta.push({ + hid: 'og:url', + property: 'og:url', + content: seoConfig.og_url, + }); + } + if (seoConfig.og_description) { + obj.meta.push({ + hid: 'og:description', + property: 'og:description', + content: seoConfig.og_description, + }); + } + + // Twitter metas + if (seoConfig.twitter_site) { + obj.meta.push({ + hid: 'twitter:site', + name: 'twitter:site', + content: seoConfig.twitter_site, + }); + } + if (seoConfig.twitter_card) { + obj.meta.push({ + hid: 'twitter:card', + name: 'twitter:card', + content: seoConfig.twitter_card, + }); + } + + return obj; + }, }; diff --git a/pages/characters/_slug/index.vue b/pages/characters/_slug/index.vue index 93d8a8e..904edb6 100644 --- a/pages/characters/_slug/index.vue +++ b/pages/characters/_slug/index.vue @@ -1,79 +1,112 @@ @@ -101,9 +134,21 @@ export default { }); } - return this.$store.dispatch('characters/getBySlug', { slug: this.$route.params.slug }) + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.CHARACTERS.DETAIL.TITLE', { character: '' })); + + return Promise.all([ + this.$store.dispatch('seo-configs/getSeoConfigBySlug', { + slug: `character-${this.$route.params.slug}`, + }), + this.$store.dispatch('characters/getBySlug', { + slug: this.$route.params.slug, + }), + ]) + .then(() => { + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.CHARACTERS.DETAIL.TITLE', { character: this.character.shortname })); + }) .finally(() => { - this.loadingInstance.close(); + if (this.loadingInstance) this.loadingInstance.close(); }); }, data() { @@ -115,19 +160,24 @@ export default { secondSurnameLabel: this.$t('VIEWS.CHARACTERS.DETAIL.INFO.SECOND_SURNAME'), shortnameLabel: this.$t('VIEWS.CHARACTERS.DETAIL.INFO.SHORTNAME'), nicknameLabel: this.$t('VIEWS.CHARACTERS.DETAIL.INFO.NICKNAME'), + shareText: this.$t('COMMON.SOCIAL_SHARING.SHARE'), }; }, computed: { ...mapState('characters', { character: 'current', }), + ...mapState('configs', { + title: 'currentTitle', + }), + ...mapState('seo-configs', { + seoConfig: 'currentSeoConfig', + }), }, - created() { - if (process.browser) { - // eslint-disable-next-line nuxt/no-globals-in-created - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + mounted() { + // eslint-disable-next-line nuxt/no-globals-in-created + window.addEventListener('resize', this.handleResize); + this.handleResize(); }, beforeDestroy() { if (this.loadingInstance) this.loadingInstance.close(); @@ -143,6 +193,85 @@ export default { } }, }, + head() { + const obj = { + meta: [], + link: [], + }; + + const { seoConfig } = this; + + if (seoConfig.title) obj.title = seoConfig.title; + // Standard metas + if (seoConfig.description) { + obj.meta.push({ + hid: 'description', + name: 'description', + content: seoConfig.description, + }); + } + if (seoConfig.canonical_url) { + obj.link.push({ + rel: 'canonical', + href: seoConfig.canonical_url, + }); + } + + // Open Graph metas + if (seoConfig.og_title) { + obj.meta.push({ + hid: 'og:title', + property: 'og:title', + content: seoConfig.og_title, + }); + } + if (seoConfig.og_type) { + obj.meta.push({ + hid: 'og:type', + property: 'og:type', + content: seoConfig.og_type, + }); + } + if (seoConfig.og_image) { + obj.meta.push({ + hid: 'og:image', + property: 'og:image', + content: seoConfig.og_image, + }); + } + if (seoConfig.og_url) { + obj.meta.push({ + hid: 'og:url', + property: 'og:url', + content: seoConfig.og_url, + }); + } + if (seoConfig.og_description) { + obj.meta.push({ + hid: 'og:description', + property: 'og:description', + content: seoConfig.og_description, + }); + } + + // Twitter metas + if (seoConfig.twitter_site) { + obj.meta.push({ + hid: 'twitter:site', + name: 'twitter:site', + content: seoConfig.twitter_site, + }); + } + if (seoConfig.twitter_card) { + obj.meta.push({ + hid: 'twitter:card', + name: 'twitter:card', + content: seoConfig.twitter_card, + }); + } + + return obj; + }, }; diff --git a/pages/characters/index.vue b/pages/characters/index.vue index 25ca164..2746a07 100644 --- a/pages/characters/index.vue +++ b/pages/characters/index.vue @@ -1,24 +1,57 @@ @@ -48,7 +81,14 @@ export default { }); } - return this.$store.dispatch('characters/getAll') + this.$store.commit('configs/setCurrentTitle', this.$t('VIEWS.CHARACTERS.TITLE')); + + return Promise.all([ + this.$store.dispatch('seo-configs/getSeoConfigBySlug', { + slug: 'characters', + }), + this.$store.dispatch('characters/getAll'), + ]) .finally(() => { if (this.loadingInstance) this.loadingInstance.close(); }); @@ -56,19 +96,24 @@ export default { data() { return { gutter: utils.VIEWS.CHARACTERS.GUTTER.DEFAULT, + shareText: this.$t('COMMON.SOCIAL_SHARING.SHARE'), }; }, computed: { ...mapState('characters', { characters: 'all', }), + ...mapState('configs', { + title: 'currentTitle', + }), + ...mapState('seo-configs', { + seoConfig: 'currentSeoConfig', + }), }, - created() { - if (process.browser) { - // eslint-disable-next-line nuxt/no-globals-in-created - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + mounted() { + // eslint-disable-next-line nuxt/no-globals-in-created + window.addEventListener('resize', this.handleResize); + this.handleResize(); }, beforeDestroy() { if (this.loadingInstance) this.loadingInstance.close(); @@ -84,6 +129,85 @@ export default { } }, }, + head() { + const obj = { + meta: [], + link: [], + }; + + const { seoConfig } = this; + + if (seoConfig.title) obj.title = seoConfig.title; + // Standard metas + if (seoConfig.description) { + obj.meta.push({ + hid: 'description', + name: 'description', + content: seoConfig.description, + }); + } + if (seoConfig.canonical_url) { + obj.link.push({ + rel: 'canonical', + href: seoConfig.canonical_url, + }); + } + + // Open Graph metas + if (seoConfig.og_title) { + obj.meta.push({ + hid: 'og:title', + property: 'og:title', + content: seoConfig.og_title, + }); + } + if (seoConfig.og_type) { + obj.meta.push({ + hid: 'og:type', + property: 'og:type', + content: seoConfig.og_type, + }); + } + if (seoConfig.og_image) { + obj.meta.push({ + hid: 'og:image', + property: 'og:image', + content: seoConfig.og_image, + }); + } + if (seoConfig.og_url) { + obj.meta.push({ + hid: 'og:url', + property: 'og:url', + content: seoConfig.og_url, + }); + } + if (seoConfig.og_description) { + obj.meta.push({ + hid: 'og:description', + property: 'og:description', + content: seoConfig.og_description, + }); + } + + // Twitter metas + if (seoConfig.twitter_site) { + obj.meta.push({ + hid: 'twitter:site', + name: 'twitter:site', + content: seoConfig.twitter_site, + }); + } + if (seoConfig.twitter_card) { + obj.meta.push({ + hid: 'twitter:card', + name: 'twitter:card', + content: seoConfig.twitter_card, + }); + } + + return obj; + }, }; diff --git a/pages/index.vue b/pages/index.vue index 247dd08..1b542d9 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,140 +1,181 @@ @@ -232,22 +359,6 @@ export default { } } } - - .fa-link{ - color: $color-text-gray; - } - - .fa-youtube{ - color: $color-brand-youtube; - } - - .fa-twitter{ - color: $color-brand-twitter; - } - - .fa-instagram{ - color: $color-brand-instagram; - } } } diff --git a/pages/seasons/_season_number/chapters/_slug/index.vue b/pages/seasons/_season_number/chapters/_slug/index.vue index c83ecf6..b94e0fe 100644 --- a/pages/seasons/_season_number/chapters/_slug/index.vue +++ b/pages/seasons/_season_number/chapters/_slug/index.vue @@ -1,126 +1,159 @@