diff --git a/src/common/SearchBar/SearchBar.js b/src/common/SearchBar/SearchBar.js
new file mode 100644
index 000000000..3f11dab33
--- /dev/null
+++ b/src/common/SearchBar/SearchBar.js
@@ -0,0 +1,33 @@
+const React = require('react');
+const PropTypes = require('prop-types');
+const classnames = require('classnames');
+const Icon = require('stremio-icons/dom');
+const TextInput = require('stremio/common/TextInput');
+const SearchBarPlaceholder = require('./SearchBarPlaceholder');
+const styles = require('./styles');
+
+const SearchBar = ({ className, title, value, onChange }) => {
+ return (
+
+ );
+};
+
+SearchBar.Placeholder = SearchBarPlaceholder;
+
+SearchBar.propTypes = {
+ className: PropTypes.string,
+ title: PropTypes.string,
+ value: PropTypes.string,
+ onChange: PropTypes.func
+};
+
+module.exports = SearchBar;
diff --git a/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js
new file mode 100644
index 000000000..e1def6d81
--- /dev/null
+++ b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js
@@ -0,0 +1,21 @@
+const React = require('react');
+const PropTypes = require('prop-types');
+const classnames = require('classnames');
+const Icon = require('stremio-icons/dom');
+const styles = require('./styles');
+
+const SearchBarPlaceholder = ({ className, title }) => {
+ return (
+
+ );
+};
+
+SearchBarPlaceholder.propTypes = {
+ className: PropTypes.string,
+ title: PropTypes.string
+};
+
+module.exports = SearchBarPlaceholder;
diff --git a/src/common/SearchBar/SearchBarPlaceholder/index.js b/src/common/SearchBar/SearchBarPlaceholder/index.js
new file mode 100644
index 000000000..e7dc7ba8c
--- /dev/null
+++ b/src/common/SearchBar/SearchBarPlaceholder/index.js
@@ -0,0 +1,3 @@
+const SearchBarPlaceholder = require('./SearchBarPlaceholder');
+
+module.exports = SearchBarPlaceholder;
diff --git a/src/common/SearchBar/SearchBarPlaceholder/styles.less b/src/common/SearchBar/SearchBarPlaceholder/styles.less
new file mode 100644
index 000000000..3c43128d4
--- /dev/null
+++ b/src/common/SearchBar/SearchBarPlaceholder/styles.less
@@ -0,0 +1,25 @@
+.search-bar-container {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ height: 3.5rem;
+ padding: 0 1rem;
+ border-radius: 3.5rem;
+ border: var(--focus-outline-size) solid transparent;
+ background-color: var(--color-placeholder-background);
+
+ .search-input {
+ flex: 1;
+ max-height: 1.2em;
+ margin-right: 1rem;
+ font-size: 1.1rem;
+ color: var(--color-placeholder-text);
+ }
+
+ .icon {
+ flex: none;
+ width: 1.5rem;
+ height: 1.5rem;
+ fill: var(--color-placeholder-background);
+ }
+}
\ No newline at end of file
diff --git a/src/common/SearchBar/index.js b/src/common/SearchBar/index.js
new file mode 100644
index 000000000..c6a6a7609
--- /dev/null
+++ b/src/common/SearchBar/index.js
@@ -0,0 +1,3 @@
+const SearchBar = require('./SearchBar');
+
+module.exports = SearchBar;
diff --git a/src/common/SearchBar/styles.less b/src/common/SearchBar/styles.less
new file mode 100644
index 000000000..784673042
--- /dev/null
+++ b/src/common/SearchBar/styles.less
@@ -0,0 +1,41 @@
+@import (reference) '~stremio-colors/dist/less/stremio-colors.less';
+
+.search-bar-container {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ height: 3.5rem;
+ padding: 0 1rem;
+ border-radius: 3.5rem;
+ 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-90;
+ }
+}
\ No newline at end of file
diff --git a/src/common/index.js b/src/common/index.js
index 81b0c1d16..4edbb546e 100644
--- a/src/common/index.js
+++ b/src/common/index.js
@@ -14,6 +14,7 @@ const { HorizontalNavBar, VerticalNavBar } = require('./NavBar');
const PaginationInput = require('./PaginationInput');
const PlayIconCircleCentered = require('./PlayIconCircleCentered');
const Popup = require('./Popup');
+const SearchBar = require('./SearchBar');
const SharePrompt = require('./SharePrompt');
const Slider = require('./Slider');
const TextInput = require('./TextInput');
@@ -51,6 +52,7 @@ module.exports = {
PaginationInput,
PlayIconCircleCentered,
Popup,
+ SearchBar,
SharePrompt,
Slider,
TextInput,
diff --git a/src/routes/Addons/Addons.js b/src/routes/Addons/Addons.js
index d9a05dcc0..c0caedc7f 100644
--- a/src/routes/Addons/Addons.js
+++ b/src/routes/Addons/Addons.js
@@ -2,7 +2,7 @@ const React = require('react');
const PropTypes = require('prop-types');
const { useRouteFocused } = require('stremio-router');
const Icon = require('stremio-icons/dom');
-const { AddonDetailsModal, Button, Image, Multiselect, MainNavBars, TextInput, SharePrompt, ModalDialog, useBinaryState } = require('stremio/common');
+const { AddonDetailsModal, Button, Image, Multiselect, MainNavBars, TextInput, SearchBar, SharePrompt, ModalDialog, useBinaryState } = require('stremio/common');
const Addon = require('./Addon');
const useAddons = require('./useAddons');
const useSelectableInputs = require('./useSelectableInputs');
@@ -103,16 +103,12 @@ const Addons = ({ urlParams, queryParams }) => {
/>
))}
-
+
{
addons.selectable.catalogs.length === 0 && addons.catalog_resource === null ?
diff --git a/src/routes/Addons/styles.less b/src/routes/Addons/styles.less
index 5f9eb01a6..68eda10a4 100644
--- a/src/routes/Addons/styles.less
+++ b/src/routes/Addons/styles.less
@@ -85,48 +85,10 @@
flex: 1;
}
- .search-bar-container {
+ .search-bar {
flex-grow: 0;
flex-shrink: 1;
flex-basis: 18rem;
- 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-light2;
- }
-
- &: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;
- }
-
}
}
diff --git a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js
index 6785417ba..661ee215d 100644
--- a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js
+++ b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js
@@ -1,7 +1,7 @@
const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
-const Icon = require('stremio-icons/dom');
+const PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered');
const styles = require('./styles');
const StreamPlaceholder = ({ className }) => {
@@ -14,9 +14,7 @@ const StreamPlaceholder = ({ className }) => {
-
-
-
+
);
};
diff --git a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less
index c8f82a3df..a25aa9816 100644
--- a/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less
+++ b/src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less
@@ -1,27 +1,31 @@
+:import('~stremio/common/PlayIconCircleCentered/styles.less') {
+ play-icon-circle-centered-background: background;
+ play-icon-circle-centered-icon: icon;
+}
+
.stream-placeholder-container {
display: flex;
flex-direction: row;
align-items: center;
- background-color: var(--color-placeholder);
+ padding: 0.5rem 1rem;
.addon-container {
flex: none;
- padding: 0.5rem;
.addon-name {
width: 5rem;
height: 2rem;
- background-color: var(--color-placeholder);
+ background-color: var(--color-placeholder-background);
}
}
.info-container {
flex: 1;
- padding: 0.5rem;
+ margin: 0.5rem 1rem;
.description-container {
height: 1.2rem;
- background-color: var(--color-placeholder);
+ background-color: var(--color-placeholder-background);
&:nth-child(1) {
width: 80%;
@@ -34,17 +38,17 @@
}
}
- .play-icon-container {
+ .play-icon {
flex: none;
- width: 5rem;
+ width: 3.5rem;
height: 5rem;
- padding: 1.5rem;
- .play-icon {
- display: block;
- width: 100%;
- height: 100%;
- fill: var(--color-placeholder);
+ .play-icon-circle-centered-background {
+ fill: none;
+ }
+
+ .play-icon-circle-centered-icon {
+ fill: var(--color-placeholder-background);
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js
index 3aca88864..9b839ce0c 100644
--- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js
+++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js
@@ -8,13 +8,16 @@ const SeasonsBarPlaceholder = ({ className }) => {
return (
);
diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less
index ec0352240..4145a52ca 100644
--- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less
+++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less
@@ -1,35 +1,58 @@
.seasons-bar-placeholder-container {
display: flex;
flex-direction: row;
+ justify-content: space-between;
+ padding: 1rem;
.prev-season-button, .next-season-button {
flex: none;
- width: 4rem;
- height: 4rem;
- padding: 1rem;
- background-color: var(--color-placeholder);
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ width: 6.5rem;
+ height: 3.5rem;
+ padding: 0.5rem;
+
+ &>:first-child {
+ margin-right: 0.5rem;
+ }
.icon {
+ flex: none;
display: block;
- width: 100%;
- height: 100%;
- fill: var(--color-placeholder);
+ width: 1.5rem;
+ height: 1.5rem;
+ fill: var(--color-placeholder-background);
+ }
+
+ .label {
+ flex: 1;
+ max-height: 1.2em;
+ font-weight: 500;
+ text-align: center;
+ color: var(--color-placeholder-text);
}
}
.seasons-popup-label-container {
- flex: 1;
- align-self: stretch;
+ flex: 0 1 auto;
display: flex;
+ flex-direction: row;
align-items: center;
- justify-content: center;
margin: 0 1rem;
- background-color: var(--color-placeholder);
.seasons-popup-label {
- width: 50%;
- height: 1.2rem;
- background-color: var(--color-placeholder);
+ max-height: 1.2em;
+ font-weight: 500;
+ color: var(--color-placeholder-text);
+ }
+
+ .seasons-popup-icon {
+ flex: none;
+ width: 1rem;
+ height: 1rem;
+ margin-left: 1rem;
+ fill: var(--color-placeholder-background);
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js
index 025f78647..45f8bee0d 100644
--- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js
+++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js
@@ -1,7 +1,6 @@
const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
-const Icon = require('stremio-icons/dom');
const styles = require('./styles');
const VideoPlaceholder = ({ className }) => {
@@ -11,9 +10,6 @@ const VideoPlaceholder = ({ className }) => {
-
-
-
);
};
diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less
index 3edf01b4b..aa94f84cc 100644
--- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less
+++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less
@@ -2,37 +2,25 @@
display: flex;
flex-direction: row;
align-items: center;
- background-color: var(--color-placeholder);
+ padding: 0.5rem 1rem;
.info-container {
flex: 1;
- padding: 0.5rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ height: 3rem;
+ margin: 0.5rem 1rem;
.name-container {
width: 80%;
height: 1.2rem;
- background: var(--color-placeholder);
+ background: var(--color-placeholder-background);
}
.released-container {
- width: 40%;
- height: 1.2rem;
- margin-top: 0.5rem;
- background: var(--color-placeholder);
- }
- }
-
- .next-icon-container {
- flex: none;
- width: 2rem;
- height: 2.5rem;
- padding: 0.5rem;
-
- .next-icon {
- display: block;
- width: 100%;
- height: 100%;
- fill: var(--color-placeholder);
+ height: 1rem;
+ background: var(--color-placeholder-background);
}
}
}
\ No newline at end of file
diff --git a/src/routes/MetaDetails/VideosList/VideosList.js b/src/routes/MetaDetails/VideosList/VideosList.js
index 9fbffd0a8..04ff1a994 100644
--- a/src/routes/MetaDetails/VideosList/VideosList.js
+++ b/src/routes/MetaDetails/VideosList/VideosList.js
@@ -1,9 +1,8 @@
const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
-const Icon = require('stremio-icons/dom');
const Image = require('stremio/common/Image');
-const TextInput = require('stremio/common/TextInput');
+const SearchBar = require('stremio/common/SearchBar');
const SeasonsBar = require('./SeasonsBar');
const Video = require('./Video');
const useSelectableSeasons = require('./useSelectableSeasons');
@@ -30,6 +29,7 @@ const VideosList = ({ className, metaResource }) => {
!metaResource || metaResource.content.type === 'Loading' ?
+
@@ -57,16 +57,12 @@ const VideosList = ({ className, metaResource }) => {
:
null
}
-
+
{
videosForSeason
diff --git a/src/routes/MetaDetails/VideosList/styles.less b/src/routes/MetaDetails/VideosList/styles.less
index c5117daa7..58d061c53 100644
--- a/src/routes/MetaDetails/VideosList/styles.less
+++ b/src/routes/MetaDetails/VideosList/styles.less
@@ -37,51 +37,14 @@
align-self: stretch;
}
- .search-bar-container {
+ .search-bar {
flex: none;
align-self: stretch;
- display: flex;
- flex-direction: row;
- align-items: center;
- height: 3.5rem;
- padding: 0 1rem;
margin: 0 1.5rem 1rem 1.5rem;
- border-radius: 3.5rem;
- border: var(--focus-outline-size) solid transparent;
- background-color: @color-background;
- cursor: text;
&:first-child {
margin-top: 1rem;
}
-
- &: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-90;
- }
}
.videos-container {