diff --git a/package-lock.json b/package-lock.json index 87e7d42..59962fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -970,6 +970,14 @@ } } }, + "@fortawesome/free-regular-svg-icons": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.13.0.tgz", + "integrity": "sha512-70FAyiS5j+ANYD4dh9NGowTorNDnyvQHHpCM7FpnF7GxtDjBUCKdrFqCPzesEIpNDFNd+La3vex+jDk4nnUfpA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.28" + } + }, "@fortawesome/free-solid-svg-icons": { "version": "5.13.0", "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz", @@ -2495,6 +2503,16 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3301,7 +3319,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -3311,7 +3328,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -3319,14 +3335,12 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -5520,6 +5534,13 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -7637,6 +7658,13 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9974,7 +10002,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, "requires": { "is-arrayish": "^0.3.1" }, @@ -9982,8 +10009,7 @@ "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" } } }, @@ -11534,6 +11560,8 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { @@ -12346,6 +12374,8 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { diff --git a/package.json b/package.json index 010aa31..6213006 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,10 @@ "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.28", "@fortawesome/free-brands-svg-icons": "^5.13.0", + "@fortawesome/free-regular-svg-icons": "^5.13.0", "@fortawesome/free-solid-svg-icons": "^5.13.0", "@fortawesome/vue-fontawesome": "^0.1.9", + "color": "^3.1.2", "core-js": "^3.6.5", "vue": "^2.6.11", "vue-class-component": "^7.2.2", diff --git a/src/App.vue b/src/App.vue index c1612d5..ba82095 100644 --- a/src/App.vue +++ b/src/App.vue @@ -449,112 +449,11 @@ a { } .card { - background: rgb(var(--color-foreground)); - border-radius: 3px; - box-shadow: 0 2px 20px rgba(var(--color-shadow), .09); - overflow: hidden; - position: relative; - a { color: inherit; outline: 0; text-decoration: none; transition: 0.15s; - - &:hover { - color: rgb(var(--color-blue)); - } - } - - .cover { - background-position: 50%; - background-repeat: no-repeat; - background-size: cover; - position: relative; - - .overlay { - background: rgba(var(--color-overlay), 0.8); - color: rgba(var(--color-text-bright)); - padding: 12px; - position: relative; - - .title { - color: rgb(var(--color-text-bright)); - font-size: 1.4rem; - line-height: 17px; - } - - .subtitle { - color: rgb(var(--color-blue)); - font-size: 1.2rem; - margin-top: 8px; - } - } - } - - &--placeholder { - .cover { - background-color: rgba(var(--color-background), 0.8); - border-radius: 3px; - overflow: hidden; - padding: relative; - - &:before { - animation: loading-pulse-data 2s linear infinite; - background: linear-gradient(90deg, - rgba(var(--color-background),0) 0, - rgba(var(--color-blue-dim),.15) 40%, - rgba(var(--color-blue-dim),.15) 60%, - rgba(var(--color-background),0)); - content: ''; - display: block; - height: 100%; - transform: translateX(0); - width: 200%; - } - } - - .block { - background-color: rgba(var(--color-background), 0.8); - border-radius: 2px; - margin: 14px 20px; - overflow: hidden; - - &:before { - animation: loading-pulse-data 2s linear infinite; - background: linear-gradient(90deg, - rgba(var(--color-background),0) 0, - rgba(var(--color-blue-dim),.15) 40%, - rgba(var(--color-blue-dim),.15) 60%, - rgba(var(--color-background),0)); - content: ''; - display: block; - height: 100%; - transform: translateX(0); - width: 200%; - } - - &--big { - height: 30px; - margin: 22px 20px; - } - - &--medium { - height: 8px; - margin-bottom: 0; - width: 80%; - } - - &--small { - height: 8px; - margin-bottom: 0; - width: 60%; - } - - &--no-margin { - margin: 0; - } - } } } } diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 4222342..7d23b9e 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -78,6 +78,9 @@ "ENUM_BOTTOM": { "message": "Bottom" }, + "ENUM_CANCELED": { + "message": "Canceled" + }, "ENUM_CENTER": { "message": "Center" }, @@ -90,15 +93,45 @@ "ENUM_FALL": { "message": "Fall" }, + "ENUM_FINISHED": { + "message": "Finished" + }, "ENUM_MANGA": { "message": "Manga" }, + "ENUM_MOVIE": { + "message": "Movie" + }, + "ENUM_MUSIC": { + "message": "Music" + }, + "ENUM_NOT_YET_RELEASED": { + "message": "Not yet releasing" + }, + "ENUM_NOVEL": { + "message": "Novel" + }, + "ENUM_ONA": { + "message": "ONA" + }, + "ENUM_ONE_SHOT": { + "message": "One shot" + }, + "ENUM_OVA": { + "message": "OVA" + }, + "ENUM_RELEASING": { + "message": "Releasing" + }, "ENUM_RIGHT": { "message": "Right" }, "ENUM_SPRING": { "message": "Spring" }, + "ENUM_SPECIAL": { + "message": "Special" + }, "ENUM_SUMMER": { "message": "Summer" }, @@ -111,6 +144,12 @@ "ENUM_TOP": { "message": "Top" }, + "ENUM_TV": { + "message": "TV" + }, + "ENUM_TV_SHORT": { + "message": "TV Short" + }, "ENUM_WINTER": { "message": "Winter" }, @@ -192,6 +231,9 @@ "S_Changelog": { "message": "Changelog" }, + "S_Chapters": { + "message": "chapters" + }, "S_Clear": { "message": "Clear" }, @@ -219,6 +261,9 @@ "S_EnableWebIntegrationDescription": { "message": "AL Search comes with a web integration feature that adds a button on the page to some website related to anime and manga culture (e.g. Crunchyroll) with a few actions." }, + "S_Episodes": { + "message": "episodes" + }, "S_Error": { "message": "Error" }, @@ -264,6 +309,15 @@ "S_FilterByYear": { "message": "Filter by year" }, + "S_NextAiringEpisodeIn": { + "message": "Ep $DATA$ airing in", + "placeholders": { + "data": { + "content": "$1", + "example": "" + } + } + }, "S_NoMediaForStudio": { "message": "No media to preview for this studio." }, @@ -288,12 +342,30 @@ "S_OverlayY": { "message": "(top / center / bottom)" }, + "S_PublishingSince": { + "message": "Publishing since $DATA$", + "placeholders": { + "data": { + "content": "$1", + "example": "" + } + } + }, "S_Refresh": { "message": "Refresh" }, "S_RefreshMyData": { "message": "Refresh my data" }, + "S_ReleasingSince": { + "message": "Releasing since $DATA$", + "placeholders": { + "data": { + "content": "$1", + "example": "" + } + } + }, "S_ResultsGlobalFirst": { "message": "Global results first" }, diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index 26c809a..9378d9f 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -78,6 +78,9 @@ "ENUM_BOTTOM": { "message": "Bas" }, + "ENUM_CANCELED": { + "message": "Annulé" + }, "ENUM_CENTER": { "message": "Centre" }, @@ -87,15 +90,45 @@ "ENUM_FALL": { "message": "Automne" }, + "ENUM_FINISHED": { + "message": "Terminé" + }, "ENUM_LEFT": { "message": "Gauche" }, "ENUM_MANGA": { "message": "Manga" }, + "ENUM_MOVIE": { + "message": "Film" + }, + "ENUM_MUSIC": { + "message": "Musique" + }, + "ENUM_NOT_YET_RELEASED": { + "message": "Pas encore diffusé" + }, + "ENUM_NOVEL": { + "message": "Roman" + }, + "ENUM_ONA": { + "message": "ONA" + }, + "ENUM_ONE_SHOT": { + "message": "One shot" + }, + "ENUM_OVA": { + "message": "OVA" + }, + "ENUM_RELEASING": { + "message": "En cours" + }, "ENUM_RIGHT": { "message": "Droite" }, + "ENUM_SPECIAL": { + "message": "Special" + }, "ENUM_SPRING": { "message": "Printemps" }, @@ -111,6 +144,12 @@ "ENUM_TOP": { "message": "Haut" }, + "ENUM_TV": { + "message": "TV" + }, + "ENUM_TV_SHORT": { + "message": "TV Short" + }, "ENUM_WINTER": { "message": "Hiver" }, @@ -192,6 +231,9 @@ "S_Changelog": { "message": "Changelog" }, + "S_Chapters": { + "message": "chapitres" + }, "S_Clear": { "message": "Vider" }, @@ -219,6 +261,9 @@ "S_EnableWebIntegrationDescription": { "message": "AL Search ajoute un bouton dans la fenêtre du navigateur sur certains sites liés à l'univers anime et manga (comme Crunchyroll). Ce bouton vous donne accès à certaines actions rapides." }, + "S_Episodes": { + "message": "episodes" + }, "S_Error": { "message": "Erreur" }, @@ -264,6 +309,15 @@ "S_FilterByYear": { "message": "Filtrer par année" }, + "S_NextAiringEpisodeIn": { + "message": "Ep $DATA$ diffusé dans", + "data": { + "number": { + "content": "$1", + "example": "" + } + } + }, "S_NoMediaForStudio": { "message": "Aucun media disponible pour ce studio." }, @@ -288,12 +342,30 @@ "S_OverlayY": { "message": "(haut / centre / bas)" }, + "S_PublishingSince": { + "message": "Publié depuis $DATA$", + "placeholders": { + "data": { + "content": "$1", + "example": "" + } + } + }, "S_Refresh": { "message": "Actualiser" }, "S_RefreshMyData": { "message": "Actualiser mes données locales" }, + "S_ReleasingSince": { + "message": "Diffusé depuis $DATA$", + "placeholders": { + "data": { + "content": "$1", + "example": "" + } + } + }, "S_ResultsGlobalFirst": { "message": "Résultats globaux en premier" }, diff --git a/src/anilist/graphql/search.ts b/src/anilist/graphql/search.ts index 837a9c4..fa2531a 100644 --- a/src/anilist/graphql/search.ts +++ b/src/anilist/graphql/search.ts @@ -50,6 +50,9 @@ query ( season format status + chapters + episodes + duration genres averageScore popularity @@ -127,6 +130,9 @@ query ( season format status + chapters + episodes + duration genres averageScore popularity diff --git a/src/components/search/cards/Media.vue b/src/components/search/cards/Media.vue index 7f2c423..1c30a0f 100644 --- a/src/components/search/cards/Media.vue +++ b/src/components/search/cards/Media.vue @@ -1,50 +1,89 @@