diff --git a/src/routes/MetaDetails/StreamsList/Stream/styles.less b/src/routes/MetaDetails/StreamsList/Stream/styles.less
index 589037827..2b3f4dd24 100644
--- a/src/routes/MetaDetails/StreamsList/Stream/styles.less
+++ b/src/routes/MetaDetails/StreamsList/Stream/styles.less
@@ -1,13 +1,29 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+
+:import('~stremio/common/PlayIconCircleCentered/styles.less') {
+ play-icon-circle-centered-background: background;
+ play-icon-circle-centered-icon: icon;
+}
+
.stream-container {
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
- min-width: 18rem;
- background-color: var(--color-surfacedarker60);
+ background-color: @color-background-dark3-80;
&:hover, &:focus {
- background-color: var(--color-surfacedarker);
+ background-color: @color-background;
+
+ .play-icon {
+ .play-icon-circle-centered-background {
+ fill: @color-accent4;
+ }
+
+ .play-icon-circle-centered-icon {
+ fill: @color-surface-light5;
+ }
+ }
}
.thumbnail-container, .addon-name-container {
@@ -26,7 +42,7 @@
display: block;
width: 5rem;
height: 5rem;
- fill: var(--color-surfacelight20);
+ fill: @color-secondaryvariant1-light3;
}
.addon-name {
@@ -34,38 +50,29 @@
max-height: 3.6em;
font-size: 1.1rem;
text-align: center;
- color: var(--color-surfacelighter);
+ color: @color-surface-light5;
}
}
.info-container {
flex: 1;
- padding: 0.5rem;
-
- .addon-name-label {
- font-size: 1.1rem;
- max-height: 3.6em;
- margin-bottom: 0.5rem;
- color: var(--color-surfacelighter);
- }
-
- .title-label {
- max-height: 3.6em;
- color: var(--color-surfacelighter);
- }
+ max-height: 3.6em;
+ margin: 0.5rem;
+ font-size: 0.8rem;
+ color: @color-surface-90;
}
- .play-icon-container {
- flex: none;
- width: 6rem;
- height: 6rem;
- padding: 2rem;
+ .play-icon {
+ width: 3.5rem;
+ height: 5rem;
+ margin: 0.5rem 1.5rem 0.5rem 0.5rem;
- .play-icon {
- display: block;
- width: 100%;
- height: 100%;
- fill: var(--color-surfacelighter);
+ .play-icon-circle-centered-background {
+ fill: none;
+ }
+
+ .play-icon-circle-centered-icon {
+ fill: @color-surface-dark5;
}
}
@@ -73,11 +80,11 @@
flex-grow: 0;
flex-shrink: 0;
flex-basis: 100%;
- background-color: var(--color-backgroundlighter);
+ background-color: @color-background-light2;
.progress-bar {
height: 0.5rem;
- background-color: var(--color-primary);
+ background-color: @color-primaryvariant1;
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js
index 2e0f8de86..01ca619b2 100644
--- a/src/routes/MetaDetails/StreamsList/StreamsList.js
+++ b/src/routes/MetaDetails/StreamsList/StreamsList.js
@@ -2,7 +2,7 @@ const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
const Icon = require('stremio-icons/dom');
-const { Button } = require('stremio/common');
+const { Button, Image } = require('stremio/common');
const Stream = require('./Stream');
const styles = require('./styles');
@@ -14,14 +14,21 @@ const StreamsList = ({ className, streamsResources }) => {
.flat(1);
}, [streamsResources]);
return (
-
+
streamsResource.content.type === 'Err') })}>
{
streamsResources.length === 0 ?
-
No addons ware requested for streams
+
+
+
No addons were requested for streams
+
:
streamsResources.every((streamsResource) => streamsResource.content.type === 'Err') ?
-
No streams were found
+
+
+
No streams were found!
+
Please install some addons to find more streams
+
:
streams.length > 0 ?
streams.map((stream, index) => (
@@ -38,9 +45,9 @@ const StreamsList = ({ className, streamsResources }) => {
}
-
);
diff --git a/src/routes/MetaDetails/StreamsList/styles.less b/src/routes/MetaDetails/StreamsList/styles.less
index f6cc71c59..fee483d28 100644
--- a/src/routes/MetaDetails/StreamsList/styles.less
+++ b/src/routes/MetaDetails/StreamsList/styles.less
@@ -1,7 +1,12 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+
.streams-list-container {
display: flex;
flex-direction: column;
- background: var(--color-backgrounddark80);
+
+ &:global(.streams-list-message) {
+ background-color: @color-background-dark3-80;
+ }
.streams-scroll-container {
flex-grow: 0;
@@ -10,24 +15,40 @@
align-self: stretch;
overflow-y: auto;
- .message-label {
- padding: 2rem 0;
- font-size: 2rem;
- text-align: center;
- color: var(--color-surfacelighter);
+ .message-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: var(--item-size);
+ height: 100%;
+ padding: 2rem;
+
+ &>:not(:last-child) {
+ margin-bottom: 1rem;
+ }
+
+ .image {
+ flex: none;
+ width: 10rem;
+ opacity: 0.9;
+ }
+
+ .label {
+ flex: none;
+ font-size: 1.4rem;
+ text-align: center;
+ color: @color-surface-light5-90;
+ }
+
+ .description {
+ flex: none;
+ text-align: center;
+ color: @color-surface-dark1-90;
+ }
}
.stream {
width: var(--item-size);
- margin: 1rem 2rem;
-
- &:first-child {
- margin-top: 2rem;
- }
-
- &:last-child {
- margin-bottom: 0;
- }
}
}
@@ -38,30 +59,28 @@
flex-direction: row;
align-items: center;
justify-content: center;
- width: var(--item-size);
- margin: 1rem 2rem 2rem 2rem;
- padding: 1rem;
- background-color: var(--color-signal5);
+ padding: 1.3rem;
+ background-color: @color-accent3;
&:hover, &:focus {
- filter: brightness(1.2);
+ background-color: @color-accent3-light2;
}
.icon {
flex: none;
- width: 3rem;
- height: 3rem;
+ width: 2rem;
+ height: 2rem;
margin-right: 1rem;
- fill: var(--color-surfacelighter);
+ fill: @color-surface-light5-90;
}
.label {
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
- font-size: 1.5rem;
+ font-size: 1.4rem;
max-height: 3.6em;
- color: var(--color-surfacelighter);
+ color: @color-surface-light5-90;
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js
index d830d710d..5fdd455da 100644
--- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js
+++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js
@@ -16,9 +16,6 @@ const SeasonsBar = ({ className, seasons, season, onSelect }) => {
const selected = React.useMemo(() => {
return [String(season)];
}, [season]);
- const renderMultiselectLabelContent = React.useMemo(() => () => (
-
Season {season}
- ), [season]);
const prevNextButtonOnClick = React.useCallback((event) => {
if (typeof onSelect === 'function') {
const seasonIndex = seasons.indexOf(season);
@@ -50,6 +47,7 @@ const SeasonsBar = ({ className, seasons, season, onSelect }) => {
+ Prev
{
options={options}
selected={selected}
disabled={false}
- renderLabelContent={renderMultiselectLabelContent}
onSelect={seasonOnSelect}
/>
+ Next
diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less
index b70da1d3f..351da1a36 100644
--- a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less
+++ b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less
@@ -1,24 +1,54 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+
+:import('~stremio/common/Multiselect/styles.less') {
+ season-label: label;
+ season-icon: icon;
+}
+
.seasons-bar-container {
display: flex;
flex-direction: row;
overflow: visible;
+ background: @color-background-dark3-80;
.prev-season-button, .next-season-button {
flex: none;
- width: 4rem;
- height: 4rem;
- padding: 1rem;
- background-color: var(--color-surfacedarker60);
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 6.5rem;
+ padding: 0.5rem;
&:hover, &:focus {
- background-color: var(--color-surfacedarker);
+ .label {
+ color: @color-surface-dark1;
+ }
+
+ .icon {
+ fill: @color-surface-dark3;
+ }
+ }
+
+ &:focus {
+ outline: none;
+ background-color: @color-surface-light5-10;
+ }
+
+ &>:first-child {
+ margin-right: 1rem;
+ }
+
+ .label {
+ max-height: 1.2em;
+ color: @color-surface-dark3-90;
}
.icon {
display: block;
- width: 100%;
- height: 100%;
- fill: var(--color-surfacelighter);
+ width: 1.5rem;
+ height: 1.5rem;
+ fill: @color-surface-dark5;
}
}
@@ -28,26 +58,29 @@
display: flex;
align-items: center;
justify-content: center;
- margin: 0 1rem;
- background-color: var(--color-surfacedarker60);
+ margin: 0 2rem;
+ background: none;
overflow: visible;
&:hover, &:focus {
- background-color: var(--color-surfacedarker);
+ background-color: @color-background-dark1;
+
+ .season-icon {
+ fill: @color-surface-dark3;
+ }
}
&:global(.active) {
- background-color: var(--color-surfacedark);
+ background-color: @color-background;
}
.season-label {
- flex-grow: 0;
- flex-shrink: 1;
- flex-basis: auto;
- max-height: 3.6em;
- padding: 0 0.2rem;
- font-size: 1.1rem;
- color: var(--color-surfacelighter);
+ flex: none;
+ color: @color-surface-light5-90;
+ }
+
+ .season-icon {
+ fill: @color-surface-dark5;
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/VideosList/Video/Video.js b/src/routes/MetaDetails/VideosList/Video/Video.js
index 4b13e30e6..51d75a778 100644
--- a/src/routes/MetaDetails/VideosList/Video/Video.js
+++ b/src/routes/MetaDetails/VideosList/Video/Video.js
@@ -32,33 +32,34 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w
{episode !== null && !isNaN(episode) ? `${episode}. ` : null}
{typeof title === 'string' && title.length > 0 ? title : id}
- {
- released instanceof Date && !isNaN(released.getTime()) ?
-
- {released.toLocaleString(undefined, { year: '2-digit', month: 'short', day: 'numeric' })}
-
- :
- null
- }
- {
- upcoming ?
-
- :
- null
- }
- {
- watched ?
-
- :
- null
- }
-
-
{
@@ -33,8 +40,9 @@ const VideosList = ({ className, metaResource }) => {
:
metaResource.content.type === 'Err' || videosForSeason.length === 0 ?
-
- No videos found for this meta
+
+
+
No videos found for this meta
:
@@ -49,14 +57,34 @@ const VideosList = ({ className, metaResource }) => {
:
null
}
-
- {videosForSeason.map((video, index) => (
-
+
+ {videosForSeason
+ .filter((video) => {
+ return search.length === 0 ||
+ (
+ (typeof video.title === 'string' && video.title.toLowerCase().includes(search.toLowerCase())) ||
+ (video.released.toLocaleString(undefined, { year: '2-digit', month: 'short', day: 'numeric' }).toLowerCase().includes(search.toLowerCase()))
+ );
+ })
+ .map((video, index) => (
+
+ ))}
}
diff --git a/src/routes/MetaDetails/VideosList/styles.less b/src/routes/MetaDetails/VideosList/styles.less
index 6311956c7..f05348e74 100644
--- a/src/routes/MetaDetails/VideosList/styles.less
+++ b/src/routes/MetaDetails/VideosList/styles.less
@@ -1,18 +1,90 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+
.videos-list-container {
display: flex;
flex-direction: column;
- background: var(--color-backgrounddark80);
+ background-color: @color-background-dark3-80;
- .seasons-bar, .message-label {
+ .seasons-bar {
flex: none;
- width: var(--item-size);
- margin: 2rem 2rem 1rem 2rem;
+ align-self: stretch;
+ padding: 1rem 0;
}
- .message-label {
- font-size: 1.4rem;
- text-align: center;
- color: var(--color-surfacelighter);
+ .message-container {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: var(--item-size);
+ padding: 2rem;
+ background-color: @color-background-dark3-80;
+
+ .image {
+ flex: none;
+ width: 10rem;
+ margin-bottom: 1rem;
+ opacity: 0.9;
+ }
+
+ .label {
+ flex: 0 1 auto;
+ font-size: 1.4rem;
+ text-align: center;
+ color: @color-surface-light5-90;
+ }
+ }
+
+ .search-container {
+ flex: none;
+ min-width: var(--item-size);
+ padding: 0 1.5rem 1rem 1.5rem;
+ background-color: @color-background-dark3-80;
+
+ &:first-child {
+ padding-top: 1rem;
+ }
+
+ .search-bar-container {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ height: 3.5rem;
+ padding: 0 1rem;
+ border-radius: 2.3rem;
+ border: var(--focus-outline-size) solid transparent;
+ background-color: @color-background;
+ cursor: text;
+
+ &:hover, &:focus-within {
+ background-color: @color-background-light1;
+ }
+
+ &:focus-within {
+ border: var(--focus-outline-size) solid @color-surface-light5;
+ }
+
+ .search-input {
+ flex: 1;
+ margin-right: 1rem;
+ font-size: 1.1rem;
+ color: @color-surface-light5;
+
+ &::placeholder {
+ max-height: 1.2em;
+ opacity: 1;
+ color: @color-secondaryvariant1-light1-90;
+ }
+ }
+
+ .icon {
+ flex: none;
+ width: 1.5rem;
+ height: 1.5rem;
+ fill: @color-secondaryvariant1;
+ }
+
+ }
}
.videos-scroll-container {
@@ -20,25 +92,8 @@
align-self: stretch;
overflow-y: auto;
- &:first-child {
- .video {
- &:first-child {
- margin-top: 2rem;
- }
- }
- }
-
.video {
width: var(--item-size);
- margin: 1rem 2rem;
-
- &:first-child {
- margin-top: 0;
- }
-
- &:last-child {
- margin-bottom: 2rem;
- }
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/styles.less b/src/routes/MetaDetails/styles.less
index 4bdea39ca..47a26e0d7 100644
--- a/src/routes/MetaDetails/styles.less
+++ b/src/routes/MetaDetails/styles.less
@@ -1,9 +1,17 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+@import (reference) '~stremio/common/screen-sizes.less';
+
+:import('~stremio/common/MetaPreview/styles.less') {
+ meta-info-container: meta-info-container;
+}
+
.metadetails-container {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
- background-color: var(--color-background);
+ background:
+ linear-gradient(to right, @color-background-dark3-60, @color-background-dark3-80);
.nav-bar {
flex: none;
@@ -30,9 +38,9 @@
display: block;
width: 100%;
height: 100%;
+ opacity: 0.2;
object-fit: cover;
object-position: top left;
- filter: brightness(50%);
}
}
@@ -42,11 +50,71 @@
}
.videos-list, .streams-list {
- --item-size: 28rem;
+ --item-size: 26.5rem;
flex-grow: 0;
flex-shrink: 0;
flex-basis: auto;
align-self: stretch;
}
}
+}
+
+@media only screen and (min-width: @large) {
+ .metadetails-container {
+ .metadetails-content {
+ .meta-preview {
+ .meta-info-container {
+ width: 58rem;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: @large) {
+ .metadetails-container {
+ .metadetails-content {
+ .meta-preview {
+ .meta-info-container {
+ width: 48rem;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: @medium) {
+ .metadetails-container {
+ .metadetails-content {
+ .meta-preview {
+ .meta-info-container {
+ width: 40rem;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: @small) {
+ .metadetails-container {
+ .metadetails-content {
+ .meta-preview {
+ .meta-info-container {
+ width: 34rem;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: @xsmall) {
+ .metadetails-container {
+ .metadetails-content {
+ .meta-preview {
+ .meta-info-container {
+ width: 30rem;
+ }
+ }
+ }
+ }
}
\ No newline at end of file