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 ( +
+
{title}
+ +
+ ); +}; + +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 (
- + +
Prev
-
+
Season 1
+
- +
Next
+
); 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 {