diff --git a/favicons/favicon.ico b/favicons/favicon.ico index 743d0c7b5..17ef6fc70 100644 Binary files a/favicons/favicon.ico and b/favicons/favicon.ico differ diff --git a/favicons/icon-96.png b/favicons/icon-96.png index 5c2c39b8a..afb57dedb 100644 Binary files a/favicons/icon-96.png and b/favicons/icon-96.png differ diff --git a/fonts/PlusJakartaSans.ttf b/fonts/PlusJakartaSans.ttf new file mode 100644 index 000000000..b88589a39 Binary files /dev/null and b/fonts/PlusJakartaSans.ttf differ diff --git a/fonts/Roboto-Bold.ttf b/fonts/Roboto-Bold.ttf deleted file mode 100644 index d998cf5b4..000000000 Binary files a/fonts/Roboto-Bold.ttf and /dev/null differ diff --git a/fonts/Roboto-BoldItalic.ttf b/fonts/Roboto-BoldItalic.ttf deleted file mode 100644 index b4e221039..000000000 Binary files a/fonts/Roboto-BoldItalic.ttf and /dev/null differ diff --git a/fonts/Roboto-Light.ttf b/fonts/Roboto-Light.ttf deleted file mode 100644 index 35267989d..000000000 Binary files a/fonts/Roboto-Light.ttf and /dev/null differ diff --git a/fonts/Roboto-LightItalic.ttf b/fonts/Roboto-LightItalic.ttf deleted file mode 100644 index 46e9bf7c9..000000000 Binary files a/fonts/Roboto-LightItalic.ttf and /dev/null differ diff --git a/fonts/Roboto-Medium.ttf b/fonts/Roboto-Medium.ttf deleted file mode 100644 index f714a514d..000000000 Binary files a/fonts/Roboto-Medium.ttf and /dev/null differ diff --git a/fonts/Roboto-MediumItalic.ttf b/fonts/Roboto-MediumItalic.ttf deleted file mode 100644 index 5dc6a2dc6..000000000 Binary files a/fonts/Roboto-MediumItalic.ttf and /dev/null differ diff --git a/fonts/Roboto-Regular.ttf b/fonts/Roboto-Regular.ttf deleted file mode 100644 index 2b6392ffe..000000000 Binary files a/fonts/Roboto-Regular.ttf and /dev/null differ diff --git a/fonts/Roboto-RegularItalic.ttf b/fonts/Roboto-RegularItalic.ttf deleted file mode 100644 index 5b390ff95..000000000 Binary files a/fonts/Roboto-RegularItalic.ttf and /dev/null differ diff --git a/images/anonymous.png b/images/anonymous.png index 0b16120d4..8eab52eb2 100644 Binary files a/images/anonymous.png and b/images/anonymous.png differ diff --git a/images/background_1.svg b/images/background_1.svg new file mode 100644 index 000000000..3a48df873 --- /dev/null +++ b/images/background_1.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/images/background_2.svg b/images/background_2.svg new file mode 100644 index 000000000..a1dea35fc --- /dev/null +++ b/images/background_2.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/images/default_avatar.png b/images/default_avatar.png index 0b9abec7f..6d4b4092b 100644 Binary files a/images/default_avatar.png and b/images/default_avatar.png differ diff --git a/images/empty.png b/images/empty.png index f16d1a43b..7db7324e5 100644 Binary files a/images/empty.png and b/images/empty.png differ diff --git a/images/icon_x192.png b/images/icon_x192.png index d379e0cbd..ca1a5a722 100644 Binary files a/images/icon_x192.png and b/images/icon_x192.png differ diff --git a/images/icon_x512.png b/images/icon_x512.png index ee0e4bf0f..c33705169 100644 Binary files a/images/icon_x512.png and b/images/icon_x512.png differ diff --git a/images/intro_background.jpg b/images/intro_background.jpg deleted file mode 100644 index 7bfc44df1..000000000 Binary files a/images/intro_background.jpg and /dev/null differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 000000000..39601b514 Binary files /dev/null and b/images/logo.png differ diff --git a/images/maskable_icon_x192.png b/images/maskable_icon_x192.png index f3e21ead5..9ccffa5d3 100644 Binary files a/images/maskable_icon_x192.png and b/images/maskable_icon_x192.png differ diff --git a/images/maskable_icon_x512.png b/images/maskable_icon_x512.png index 846728b42..57f0bd2ba 100644 Binary files a/images/maskable_icon_x512.png and b/images/maskable_icon_x512.png differ diff --git a/images/stremio_symbol.png b/images/stremio_symbol.png index 11093da31..28d3ccb4e 100644 Binary files a/images/stremio_symbol.png and b/images/stremio_symbol.png differ diff --git a/package-lock.json b/package-lock.json index f40e8b03c..607298871 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", "@stremio/stremio-core-web": "0.44.23", - "@stremio/stremio-icons": "4.0.0", + "@stremio/stremio-icons": "5.0.0-beta.3", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", "bowser": "2.11.0", @@ -46,6 +46,7 @@ "@babel/plugin-proposal-object-rest-spread": "7.16.0", "@babel/preset-env": "7.16.0", "@babel/preset-react": "7.16.0", + "@types/react": "^18.2.9", "babel-loader": "8.2.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "9.0.1", @@ -2711,9 +2712,9 @@ } }, "node_modules/@stremio/stremio-icons": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-4.0.0.tgz", - "integrity": "sha512-ku1ye/V6WtzCltLKZvLwa60nlEUR2YYT/upjZDzBOoA2VXZu1ubFeR83Hx10tBZPnjALHkG/1QZ5Eyg9PoBMbQ==" + "version": "5.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-5.0.0-beta.3.tgz", + "integrity": "sha512-K+jDsizEgxpBC+b0HExCUg+bnsWPZnx96qUfkdQ9nBDVAN/kzcP24Jq/4KwkiEyqDEcvC5l+xBzOLzkhdLwTMw==" }, "node_modules/@stremio/stremio-video": { "version": "0.0.24", @@ -2985,6 +2986,12 @@ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", "dev": true }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -2997,6 +3004,17 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, + "node_modules/@types/react": { + "version": "18.2.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.9.tgz", + "integrity": "sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -3012,6 +3030,12 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "devOptional": true + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -5075,6 +5099,12 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "devOptional": true + }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -16812,9 +16842,9 @@ } }, "@stremio/stremio-icons": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-4.0.0.tgz", - "integrity": "sha512-ku1ye/V6WtzCltLKZvLwa60nlEUR2YYT/upjZDzBOoA2VXZu1ubFeR83Hx10tBZPnjALHkG/1QZ5Eyg9PoBMbQ==" + "version": "5.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-5.0.0-beta.3.tgz", + "integrity": "sha512-K+jDsizEgxpBC+b0HExCUg+bnsWPZnx96qUfkdQ9nBDVAN/kzcP24Jq/4KwkiEyqDEcvC5l+xBzOLzkhdLwTMw==" }, "@stremio/stremio-video": { "version": "0.0.24", @@ -17080,6 +17110,12 @@ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", "dev": true }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "devOptional": true + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -17092,6 +17128,17 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, + "@types/react": { + "version": "18.2.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.9.tgz", + "integrity": "sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==", + "devOptional": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -17107,6 +17154,12 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "devOptional": true + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -18707,6 +18760,12 @@ } } }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "devOptional": true + }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", diff --git a/package.json b/package.json index 5119b6951..ef00d9a57 100755 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", "@stremio/stremio-core-web": "0.44.23", - "@stremio/stremio-icons": "4.0.0", + "@stremio/stremio-icons": "5.0.0-beta.3", "@stremio/stremio-video": "0.0.24", "a-color-picker": "1.2.1", "bowser": "2.11.0", @@ -49,6 +49,7 @@ "@babel/plugin-proposal-object-rest-spread": "7.16.0", "@babel/preset-env": "7.16.0", "@babel/preset-react": "7.16.0", + "@types/react": "^18.2.9", "babel-loader": "8.2.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "9.0.1", diff --git a/src/App/styles.less b/src/App/styles.less index 0b15a119c..f4454424c 100644 --- a/src/App/styles.less +++ b/src/App/styles.less @@ -1,9 +1,13 @@ // Copyright (C) 2017-2023 Smart code 203358507 -@import (inline, once, css) '~stremio/common/roboto.css'; @import (reference) '~stremio/common/screen-sizes.less'; @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; +@font-face { + font-family: 'PlusJakartaSans'; + src: url('/fonts/PlusJakartaSans.ttf') format('truetype'); +} + :global { @import (once, less) '~stremio/common/animations.less'; @import (once, less) '~stremio-router/styles.css'; @@ -13,14 +17,25 @@ --landscape-shape-ratio: 0.5625; --poster-shape-ratio: 1.464; --scroll-bar-size: 6px; - --horizontal-nav-bar-size: 4rem; - --vertical-nav-bar-size: 5.2rem; + --horizontal-nav-bar-size: 5.5rem; + --vertical-nav-bar-size: 6rem; --focus-outline-size: 2px; - --color-facebook: #4267b2; + --color-facebook: #1877F1; --color-twitter: #1DA1F2; + --color-imdb: #f5c518; --color-placeholder: #60606080; --color-placeholder-text: @color-surface-50; --color-placeholder-background: @color-surface-dark5-20; + --primary-background-color: rgba(12, 11, 17, 1); + --secondary-background-color: rgba(26, 23, 62, 1); + --primary-foreground-color: rgba(255, 255, 255, 0.9); + --secondary-foreground-color: rgb(12, 11, 17, 1); + --primary-accent-color: rgb(123, 91, 245); + --secondary-accent-color: rgba(34, 179, 101, 1); + --tertiary-accent-color: rgba(246, 199, 0, 1); + --overlay-color: rgba(255, 255, 255, 0.05); + --modal-background-color: rgba(15, 13, 32, 1); + --border-radius: 0.75rem; } * { @@ -28,7 +43,6 @@ padding: 0; box-sizing: border-box; font-size: 1rem; - line-height: 1.2em; font-family: inherit; border: none; outline: none; @@ -41,7 +55,7 @@ overflow: hidden; word-break: break-word; scrollbar-width: thin; - scrollbar-color: @color-secondaryvariant2-light1 @color-background-dark2; + scrollbar-color: var(--overlay-color) transparent; } ::-webkit-scrollbar { @@ -50,15 +64,16 @@ } ::-webkit-scrollbar-thumb { - background-color: @color-secondaryvariant2-light1; + border-radius: var(--scroll-bar-size); + background-color: var(--overlay-color); &:hover { - background-color: @color-secondaryvariant2-light2; + background-color: var(--primary-accent-color); } } ::-webkit-scrollbar-track { - background-color: @color-background-dark2; + background-color: transparent; } svg { @@ -70,12 +85,13 @@ html { height: 100%; min-width: 640px; min-height: 480px; - font-family: 'Roboto', 'sans-serif'; + font-family: 'PlusJakartaSans', 'sans-serif'; overflow: auto; body { width: 100%; height: 100%; + background: linear-gradient(41deg, var(--primary-background-color) 0%, var(--secondary-background-color) 100%); :global(#app) { position: relative; diff --git a/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js b/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js index d83f7ce8d..cecd6ef3a 100644 --- a/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js +++ b/src/common/AddonDetailsModal/AddonDetails/AddonDetails.js @@ -3,13 +3,13 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Image = require('stremio/common/Image'); const styles = require('./styles'); const AddonDetails = ({ className, id, name, version, logo, description, types, transportUrl, official }) => { const renderLogoFallback = React.useCallback(() => ( - + ), []); return (
diff --git a/src/common/AddonDetailsModal/AddonDetails/styles.less b/src/common/AddonDetailsModal/AddonDetails/styles.less index 26c665a46..8d6fa7b80 100644 --- a/src/common/AddonDetailsModal/AddonDetails/styles.less +++ b/src/common/AddonDetailsModal/AddonDetails/styles.less @@ -14,7 +14,6 @@ height: 5rem; margin-right: 1.5rem; padding: 0.5rem; - background-color: @color-background-dark5; } .logo { @@ -23,7 +22,7 @@ } .icon { - fill: @color-secondaryvariant1-light3; + color: var(--primary-foreground-color); } .name-container { @@ -41,7 +40,7 @@ flex-basis: auto; margin-right: 0.5rem; font-size: 1.6rem; - color: @color-background-dark5-90; + color: var(--primary-foreground-color); } .version { @@ -49,7 +48,7 @@ flex-shrink: 1; flex-basis: auto; margin-top: 0.5rem; - color: @color-background-dark5-60; + color: var(--primary-foreground-color); } } } @@ -59,13 +58,13 @@ .section-header { font-size: 1.1rem; - color: @color-background-dark5-90; + color: var(--primary-foreground-color); } .section-label { font-size: 1.1rem; font-weight: 300; - color: @color-background-dark5-90; + color: var(--primary-foreground-color); &.transport-url-label { user-select: text; diff --git a/src/common/AddonDetailsModal/styles.less b/src/common/AddonDetailsModal/styles.less index fa8c5b3be..1d4fde635 100644 --- a/src/common/AddonDetailsModal/styles.less +++ b/src/common/AddonDetailsModal/styles.less @@ -10,38 +10,24 @@ .addon-details-container, .addon-details-message-container { width: 40rem; max-width: 100%; - } - - .install-button, .uninstall-button, .cancel-button { - .label { - font-size: 1.2rem; - font-weight: 500; - } - } - - .uninstall-button, .cancel-button { - &:focus { - outline-color: @color-background-dark5; - } + color: var(--primary-foreground-color); } .cancel-button { background-color: transparent; + opacity: 0.3; &:hover { - background-color: @color-surface-light3; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + opacity: 1; } - .label { - color: @color-surface-dark2; + &:focus { + outline-color: var(--primary-foreground-color); } - } - .uninstall-button { - background-color: @color-accent2; - - &:hover { - background-color: @color-accent2-light2; + .cancel-button-label { + color: var(--primary-foreground-color); } } } \ No newline at end of file diff --git a/src/common/Button/styles.less b/src/common/Button/styles.less index e7b601729..6a26b3b7f 100644 --- a/src/common/Button/styles.less +++ b/src/common/Button/styles.less @@ -14,6 +14,6 @@ &:global(.disabled) { pointer-events: none; - opacity: 0.25; + opacity: 0.5; } } \ No newline at end of file diff --git a/src/common/CONSTANTS.js b/src/common/CONSTANTS.js index 02098b76d..ac8c123de 100644 --- a/src/common/CONSTANTS.js +++ b/src/common/CONSTANTS.js @@ -2,7 +2,7 @@ const CHROMECAST_RECEIVER_APP_ID = '1634F54B'; const SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250]; -const SUBTITLES_FONTS = ['Roboto', 'Arial', 'Halvetica', 'Times New Roman', 'Verdana', 'Courier', 'Lucida Console', 'sans-serif', 'serif', 'monospace']; +const SUBTITLES_FONTS = ['PlusJakartaSans', 'Arial', 'Halvetica', 'Times New Roman', 'Verdana', 'Courier', 'Lucida Console', 'sans-serif', 'serif', 'monospace']; const SEEK_TIME_DURATIONS = [5000, 10000, 15000, 20000, 25000, 30000]; const NEXT_VIDEO_POPUP_DURATIONS = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000]; const CATALOG_PREVIEW_SIZE = 10; @@ -27,17 +27,17 @@ const TYPE_PRIORITIES = { other: -Infinity }; const ICON_FOR_TYPE = new Map([ - ['movie', 'ic_movies'], - ['series', 'ic_series'], - ['channel', 'ic_channels'], - ['tv', 'ic_tv'], + ['movie', 'movies'], + ['series', 'series'], + ['channel', 'channels'], + ['tv', 'tv'], ['book', 'ic_book'], ['game', 'ic_games'], ['music', 'ic_music'], ['adult', 'ic_adult'], ['radio', 'ic_radio'], ['podcast', 'ic_podcast'], - ['other', 'ic_movies'], + ['other', 'movies'], ]); module.exports = { diff --git a/src/common/Checkbox/Checkbox.js b/src/common/Checkbox/Checkbox.js index bb9a8477d..a823ce488 100644 --- a/src/common/Checkbox/Checkbox.js +++ b/src/common/Checkbox/Checkbox.js @@ -3,21 +3,13 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); const Button = require('stremio/common/Button'); const styles = require('./styles'); const Checkbox = React.forwardRef(({ className, checked, children, ...props }, ref) => { return ( ); diff --git a/src/common/Checkbox/styles.less b/src/common/Checkbox/styles.less index 5aebab00d..d8224db53 100644 --- a/src/common/Checkbox/styles.less +++ b/src/common/Checkbox/styles.less @@ -2,18 +2,43 @@ @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; +@height: 1.7rem; +@width: 3.2rem; +@thumb-margin: 0.5rem; + +@thumb-size: calc(@height - @thumb-margin); + .checkbox-container { - &:global(.checked) { - .icon { - fill: @color-surface-light5; - background-color: @color-primaryvariant1; + position: relative; + + .toggle { + position: relative; + width: @width; + height: @height; + border-radius: @height; + background-color: var(--overlay-color); + transition: background-color 0.1s ease-in-out; + + &::before { + content: ""; + position: absolute; + height: @thumb-size; + width: @thumb-size; + top: calc(@thumb-margin / 2); + left: calc(@thumb-margin / 2); + border-radius: 50%; + background-color: var(--primary-foreground-color); + transition: transform 0.1s ease-in-out; } } - .icon { - display: block; - width: 1rem; - height: 1rem; - fill: @color-surface-light5; + &:global(.checked) { + .toggle { + background-color: var(--secondary-accent-color); + + &::before { + transform: translateX(calc(@width - @thumb-size - @thumb-margin)); + } + } } } \ No newline at end of file diff --git a/src/common/MainNavBars/MainNavBars.js b/src/common/MainNavBars/MainNavBars.js index 53f3175cc..542d68fe4 100644 --- a/src/common/MainNavBars/MainNavBars.js +++ b/src/common/MainNavBars/MainNavBars.js @@ -7,11 +7,11 @@ const { VerticalNavBar, HorizontalNavBar } = require('stremio/common/NavBar'); const styles = require('./styles'); const TABS = [ - { id: 'board', label: 'Board', icon: 'ic_board', href: '#/' }, - { id: 'discover', label: 'Discover', icon: 'ic_discover', href: '#/discover' }, - { id: 'library', label: 'Library', icon: 'ic_library', href: '#/library' }, - { id: 'settings', label: 'SETTINGS', icon: 'ic_settings', href: '#/settings' }, - { id: 'addons', label: 'ADDONS', icon: 'ic_addons', href: '#/addons' } + { id: 'board', label: 'Board', icon: 'home', href: '#/' }, + { id: 'discover', label: 'Discover', icon: 'discover', href: '#/discover' }, + { id: 'library', label: 'Library', icon: 'library', href: '#/library' }, + { id: 'addons', label: 'ADDONS', icon: 'addons', href: '#/addons' }, + { id: 'settings', label: 'SETTINGS', icon: 'settings', href: '#/settings' }, ]; const MainNavBars = React.memo(({ className, route, query, children }) => { diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index d0c12df92..6a09435ce 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const filterInvalidDOMProps = require('filter-invalid-dom-props').default; -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const Image = require('stremio/common/Image'); const Multiselect = require('stremio/common/Multiselect'); @@ -56,11 +56,11 @@ const MetaItem = React.memo(({ className, type, name, poster, posterShape, playI const renderPosterFallback = React.useCallback(() => ( ), [type]); const renderMenuLabelContent = React.useCallback(() => ( - + ), []); return ( : null @@ -157,14 +157,6 @@ const MetaPreview = ({ className, compact, name, logo, background, runtime, rele : null } - { - compact && typeof name === 'string' && name.length > 0 ? -
- {name} -
- : - null - } { compact && typeof description === 'string' && description.length > 0 ?
{description}
@@ -193,8 +185,8 @@ const MetaPreview = ({ className, compact, name, logo, background, runtime, rele typeof toggleInLibrary === 'function' ? @@ -205,8 +197,8 @@ const MetaPreview = ({ className, compact, name, logo, background, runtime, rele typeof trailerHref === 'string' ? @@ -217,7 +209,7 @@ const MetaPreview = ({ className, compact, name, logo, background, runtime, rele typeof showHref === 'string' && compact ? diff --git a/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js b/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js index d971ad1d4..28cb87f68 100644 --- a/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js +++ b/src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js @@ -14,9 +14,9 @@ const MetaPreviewPlaceholder = ({ className }) => {
-
-
-
+
+
+
@@ -27,20 +27,7 @@ const MetaPreviewPlaceholder = ({ className }) => {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
); }; diff --git a/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less b/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less index 65383fe3b..fe0c54675 100644 --- a/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less +++ b/src/common/MetaPreview/MetaPreviewPlaceholder/styles.less @@ -3,7 +3,6 @@ .meta-preview-placeholder-container { display: flex; flex-direction: column; - padding: 2rem; .meta-info-container { flex: 1; @@ -13,6 +12,7 @@ width: 20rem; height: 8rem; max-width: 100%; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } @@ -26,37 +26,18 @@ flex-basis: 5rem; height: 1.4rem; margin-right: 1rem; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } .release-info-container { flex-basis: 5rem; height: 1.4rem; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } } - .description-container { - margin: 1rem 0; - - .description-label-container { - background-color: var(--color-placeholder-background); - - &:nth-child(1) { - width: 20rem; - height: 1.4rem; - max-width: 80%; - } - - &:nth-child(2) { - width: 26rem; - height: 4.6rem; - max-width: 80%; - margin-top: 1rem; - } - } - } - .genres-container { margin: 1rem 0; @@ -64,6 +45,7 @@ width: 6.5rem; height: 1.6rem; max-width: 100%; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } @@ -72,6 +54,7 @@ height: 1.2rem; max-width: 100%; margin-top: 0.2rem; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } } @@ -81,32 +64,9 @@ display: flex; flex-direction: row; flex-wrap: wrap; - max-height: 6rem; - - .action-button-container { - flex: none; - width: 6rem; - height: 6rem; - margin-right: 2rem; - background-color: var(--color-placeholder-background); - - &:last-child { - margin-right: 0; - } - - .action-button-icon { - width: 2rem; - height: 2rem; - margin: 1rem 2rem 0 2rem; - background-color: var(--color-placeholder-background); - } - - .action-button-label { - width: 4rem; - height: 1.2rem; - margin: 0.9rem 1rem; - background-color: var(--color-placeholder-background); - } - } + height: 4rem; + margin-bottom: 1rem; + border-radius: 4rem; + background-color: var(--color-placeholder-background); } } \ No newline at end of file diff --git a/src/common/MetaPreview/styles.less b/src/common/MetaPreview/styles.less index b2ea42b84..083c50995 100644 --- a/src/common/MetaPreview/styles.less +++ b/src/common/MetaPreview/styles.less @@ -13,12 +13,11 @@ .meta-info-container { .logo, .logo-placeholder { width: 100%; - height: 8rem; - background-color: @color-surface-dark5-10; + height: 6rem; } .runtime-release-info-container { - justify-content: space-evenly; + justify-content: space-between; .runtime-label, .release-info-label { margin: 1rem 0.4rem; @@ -31,8 +30,7 @@ } .action-buttons-container { - justify-content: space-evenly; - padding: 0; + justify-content: space-between; .action-button:not(:last-child) { margin-right: 0; @@ -48,32 +46,20 @@ left: -10px; z-index: -1; - &::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - background: @color-background-dark2-60; - content: ""; - } - .background-image { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; - opacity: 0.9; - filter: blur(5px); + filter: blur(10px); + opacity: 0.3; } } .meta-info-container { flex: 1; align-self: stretch; - padding: 0 2rem; overflow-y: auto; &:not(:hover) { @@ -87,11 +73,11 @@ .logo, .logo-placeholder { display: block; max-width: 100%; - margin: 2rem 0; + margin-bottom: 2rem; } .logo { - height: 8rem; + height: 9rem; object-fit: contain; object-position: center; } @@ -110,10 +96,10 @@ .runtime-label, .release-info-label { flex: 0 1 auto; - margin-right: 2rem; - margin-bottom: 0.5rem; - font-size: 1.4rem; - color: @color-surface-light5-90; + margin-right: 3rem; + font-size: 1.25rem; + font-weight: 600; + color: var(--primary-foreground-color); } .imdb-button-container { @@ -121,55 +107,41 @@ display: flex; flex-direction: row; align-items: center; - margin-bottom: 0.5rem; - padding: 0.3rem 1rem; border-radius: 2.5rem; - border: var(--focus-outline-size) solid transparent; - background-color: @color-surface-light5-20; - - &:hover, &:focus { - background-color: @color-surface-light5-30; - } &:focus { outline: none; border: var(--focus-outline-size) solid @color-surface-light5; } + .label { + flex: 0 1 auto; + margin-right: 1rem; + font-size: 1.25rem; + font-weight: 600; + color: var(--primary-foreground-color); + } + .icon { flex: none; width: 3rem; - height: 1.1rem; - margin-right: 1rem; - fill: @color-surface-90; - } - - .label { - flex: 0 1 auto; - max-height: 1.2em; - font-size: 1.6rem; - font-weight: 500; - color: @color-surface-light5-90; + height: 3rem; + color: var(--color-imdb); } } } - .name-container { - margin-top: 1rem; - font-size: 1.5rem; - color: @color-surface-light5-90; - } - .description-container { max-height: 6em; margin-top: 1rem; - font-size: 1.1rem; - line-height: 1.5em; - color: @color-surface-light5-90; + font-size: 1rem; + font-weight: 400; + line-height: 2em; + color: var(--primary-foreground-color); } .meta-links { - margin-top: 1rem; + margin-top: 1.5rem; } } @@ -180,16 +152,21 @@ flex-direction: row; flex-wrap: wrap; max-height: 10rem; - padding: 0 2rem; .action-button { flex: none; - width: 6rem; - height: 6rem; - margin: 2rem 0; + width: 4rem; + height: 4rem; + margin-bottom: 1rem; + + &:global(.wide) { + width: auto; + padding: 0 2rem; + border-radius: 4rem; + } &:not(:last-child) { - margin-right: 2rem; + margin-right: 1rem; } } } @@ -202,33 +179,28 @@ @media only screen and (max-width: @minimum) { .meta-preview-container { .meta-info-container { - padding: 0 1.5rem; - .logo { - margin: 1em 0; + margin: 2rem auto; + } + + .runtime-release-info-container { + justify-content: space-between; + + .runtime-label, .release-info-label { + margin: 0; + } } } .action-buttons-container { flex-wrap: nowrap; - padding: 0 1.5rem; + margin-top: 3rem; overflow-x: visible; scrollbar-width: none; &::-webkit-scrollbar { display: none; } - - .action-button { - width: auto; - height: 4rem; - max-width: 60%; - margin: 1rem 0; - - &:not(:last-child) { - margin-right: 1rem; - } - } } } diff --git a/src/common/MetaRow/MetaRow.js b/src/common/MetaRow/MetaRow.js index 9e01261f5..5d06d9615 100644 --- a/src/common/MetaRow/MetaRow.js +++ b/src/common/MetaRow/MetaRow.js @@ -5,7 +5,7 @@ const ReactIs = require('react-is'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const CONSTANTS = require('stremio/common/CONSTANTS'); const MetaRowPlaceholder = require('./MetaRowPlaceholder'); @@ -28,7 +28,7 @@ const MetaRow = ({ className, title, message, items, itemComponent, deepLinks }) deepLinks && (typeof deepLinks.discover === 'string' || typeof deepLinks.library === 'string') ? : null diff --git a/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js b/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js index 3bf42db4d..05c0e7c2f 100644 --- a/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js +++ b/src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const CONSTANTS = require('stremio/common/CONSTANTS'); const styles = require('./styles'); @@ -21,7 +21,7 @@ const MetaRowPlaceholder = ({ className, title, deepLinks }) => { deepLinks && typeof deepLinks.discover === 'string' ? : null diff --git a/src/common/MetaRow/MetaRowPlaceholder/styles.less b/src/common/MetaRow/MetaRowPlaceholder/styles.less index 4a04dd714..27f236141 100644 --- a/src/common/MetaRow/MetaRowPlaceholder/styles.less +++ b/src/common/MetaRow/MetaRowPlaceholder/styles.less @@ -9,12 +9,13 @@ align-items: center; justify-content: flex-end; padding: 0 1rem; - margin-bottom: 1rem; + margin-bottom: 0.5rem; .title-container { flex: 1; max-height: 2.4em; - font-size: 1.8rem; + font-size: 1.6rem; + font-weight: 500; color: var(--color-placeholder-text); &:empty { @@ -39,17 +40,16 @@ .label { flex: 0 1 auto; max-height: 1.2em; - font-size: 1.3rem; + font-size: 1rem; font-weight: 500; - text-transform: uppercase; color: var(--color-placeholder-text); } .icon { flex: none; - height: 1.3rem; + height: 1rem; margin-left: 0.5rem; - fill: var(--color-placeholder-text); + color: var(--color-placeholder-text); } } } @@ -68,6 +68,7 @@ } .poster-container { + border-radius: var(--border-radius); padding-bottom: calc(100% * var(--poster-shape-ratio)); background-color: var(--color-placeholder-background); } @@ -76,12 +77,14 @@ display: flex; flex-direction: row; align-items: center; + justify-content: center; height: 2.8rem; .title-label { flex: none; width: 60%; height: 1.2rem; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } } diff --git a/src/common/MetaRow/styles.less b/src/common/MetaRow/styles.less index fdc543cb6..863601be8 100644 --- a/src/common/MetaRow/styles.less +++ b/src/common/MetaRow/styles.less @@ -12,13 +12,14 @@ align-items: center; justify-content: flex-end; padding: 0 1rem; - margin-bottom: 1rem; + margin-bottom: 0.25rem; .title-container { flex: 1; max-height: 2.4em; - font-size: 1.8rem; - color: @color-secondaryvariant2-light1-90; + font-size: 1.6rem; + font-weight: 500; + color: var(--primary-foreground-color); } .see-all-container { @@ -27,46 +28,40 @@ flex-direction: row; align-items: center; max-width: 12rem; - padding: 0.2rem; + height: 2.5rem; + padding: 0 0.5rem 0 1rem; + border-radius: 2.5rem; + opacity: 0.6; - &:focus { + &:hover, &:focus { outline: none; - background-color: @color-background-light3; - } - - &:hover { - .label { - color: @color-secondaryvariant2-light2-90; - } - - .icon { - fill: @color-secondaryvariant2-light2-90; - } + background-color: var(--overlay-color); + opacity: 1; } .label { flex: 0 1 auto; max-height: 1.2em; - font-size: 1.3rem; + font-size: 1rem; font-weight: 500; - text-transform: uppercase; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } .icon { flex: none; - height: 1.3rem; + height: 1.5rem; margin-left: 0.5rem; - fill: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } } .message-container { max-height: 3.6em; - padding: 0 1rem; + padding: 0 0.5rem; font-size: 1.3rem; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); + opacity: 0.6; } .meta-items-container { @@ -76,10 +71,6 @@ overflow: visible; .meta-item { - &:not(:first-child) { - margin-left: 0.5rem; - } - &.poster-shape-poster { flex: calc(1 / var(--poster-shape-ratio)); } diff --git a/src/common/ModalDialog/ModalDialog.js b/src/common/ModalDialog/ModalDialog.js index 9b711b5c3..e7e2e8056 100644 --- a/src/common/ModalDialog/ModalDialog.js +++ b/src/common/ModalDialog/ModalDialog.js @@ -5,7 +5,7 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useRouteFocused, useModalsContainer } = require('stremio-router'); const Button = require('stremio/common/Button'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Modal } = require('stremio-router'); const styles = require('./styles'); @@ -60,7 +60,7 @@ const ModalDialog = ({ className, title, buttons, children, dataset, onCloseRequ
{ typeof title === 'string' && title.length > 0 ? @@ -78,7 +78,7 @@ const ModalDialog = ({ className, title, buttons, children, dataset, onCloseRequ
- + } {children} diff --git a/src/common/Multiselect/styles.less b/src/common/Multiselect/styles.less index 69a175573..31b44182a 100644 --- a/src/common/Multiselect/styles.less +++ b/src/common/Multiselect/styles.less @@ -11,16 +11,14 @@ display: flex; flex-direction: row; align-items: center; - padding: 0 1rem; - background-color: @color-background; + height: 2.75rem; + padding: 0 1.5rem; + border-radius: 2.75rem; + background-color: var(--overlay-color); &:global(.active) { - .label { - color: @color-surface-light5-90; - } - .icon { - fill: @color-surface-light5-90; + transform: rotate(180deg); } } @@ -28,7 +26,7 @@ flex: 1; max-height: 2.4em; font-weight: 500; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } .icon { @@ -36,7 +34,8 @@ width: 1rem; height: 1rem; margin-left: 1rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); + opacity: 0.4; } .popup-menu-container { @@ -51,7 +50,6 @@ flex-direction: row; align-items: center; padding: 1rem; - background-color: @color-background; &:global(.selected) { .icon { @@ -60,13 +58,13 @@ } &:hover, &:focus { - background-color: @color-background-light2; + background-color: var(--overlay-color); } .label { flex: 1; max-height: 4.8em; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .icon { @@ -76,7 +74,8 @@ height: 0.5rem; border-radius: 100%; margin-left: 1rem; - background-color: @color-accent3-90; + background-color: var(--secondary-accent-color); + opacity: 1; } } diff --git a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js index e745d15c7..e1d6ee77a 100644 --- a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js +++ b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const Image = require('stremio/common/Image'); const useFullscreen = require('stremio/common/useFullscreen'); @@ -19,7 +19,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); const renderNavMenuLabel = React.useCallback(({ ref, className, onClick, children, }) => ( ), []); @@ -28,7 +28,7 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto { backButton ? :
@@ -45,36 +45,36 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto : null } -
{ searchBar ? : null } -
- { - addonsButton ? - - : - null - } - { - fullscreenButton ? - - : - null - } - { - navMenu ? - - : - null - } +
+ { + addonsButton ? + + : + null + } + { + fullscreenButton ? + + : + null + } + { + navMenu ? + + : + null + } +
); }); diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js index 459e39ee2..6c8acdf00 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { useServices } = require('stremio/services'); const Button = require('stremio/common/Button'); const useFullscreen = require('stremio/common/useFullscreen'); @@ -50,34 +50,36 @@ const NavMenuContent = ({ onClick }) => { `url('${require('/images/default_avatar.png')}')` }} /> -
-
{profile.auth === null ? t('ANONYMOUS_USER') : profile.auth.user.email}
+
+
+
{profile.auth === null ? t('ANONYMOUS_USER') : profile.auth.user.email}
+
+
-
diff --git a/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less b/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less index 45b6c8d34..8b58f3796 100644 --- a/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less +++ b/src/common/NavBar/HorizontalNavBar/NavMenu/styles.less @@ -4,100 +4,94 @@ @import (reference) '~stremio/common/screen-sizes.less'; .nav-menu-container { - width: 20rem; + width: 22rem; max-height: calc(100vh - var(--horizontal-nav-bar-size)); overflow-y: auto; - background-color: @color-background-dark1; + border-radius: var(--border-radius); + background-color: var(--modal-background-color); .user-info-container { - display: grid; - height: 7rem; - grid-template-columns: 7rem 1fr; - grid-template-rows: 50% 50%; - grid-template-areas: - "avatar-area email-area" - "avatar-area logout-button-area"; + display: flex; + padding: 1.5rem 1rem; .avatar-container { - grid-area: avatar-area; - padding: 1rem; + flex: none; + height: 4rem; + width: 4rem; border-radius: 50%; background-size: cover; background-repeat: no-repeat; background-position: center; background-origin: content-box; background-clip: content-box; + background-color: var(--primary-foreground-color); opacity: 0.9; } - .email-container { - grid-area: email-area; + .user-info-details { + flex: auto; display: flex; - flex-direction: row; - align-items: center; - padding: 1rem 1rem 0 0; + flex-direction: column; + justify-content: center; + margin-left: 1rem; - .email-label { - flex: 1; - max-height: 2.4em; - color: @color-surface-light5-90; - } - } + .email-container { + flex: none; + margin-bottom: 0.5rem; - .logout-button-container { - grid-area: logout-button-area; - display: flex; - flex-direction: row; - align-items: center; - padding: 0 1rem 1rem 0; - - &:hover, &:focus { - outline: none; - - .logout-label { - color: @color-surface-light5-90; - text-decoration: underline; + .email-label { + flex: 1; + color: var(--primary-foreground-color); } } - .logout-label { - flex: 1; - max-height: 2.4em; - color: @color-surface-light3-90; + .logout-button-container { + flex: none; + + &:hover, &:focus { + outline: none; + + .logout-label { + text-decoration: underline; + } + } + + .logout-label { + flex: 1; + font-size: 0.9rem; + font-weight: 500; + color: var(--primary-foreground-color); + } } } } .nav-menu-section { - border-top: thin solid @color-surface-light5-20; + border-top: thin solid var(--overlay-color); .nav-menu-option-container { display: flex; flex-direction: row; align-items: center; height: 4rem; + padding: 0 1.5rem; &:hover { - background-color: @color-background-light2; + background-color: var(--overlay-color); } .icon { flex: none; - width: 1.4rem; - height: 1.4rem; - margin: 1.3rem; - fill: @color-secondaryvariant2-light1-90; + width: 2rem; + height: 2rem; + margin-right: 1rem; + color: var(--primary-foreground-color); + opacity: 0.3; } .nav-menu-option-label { flex: 1; - max-height: 2.4em; - padding-right: 1.3rem; - color: @color-surface-light5-90; - - &:only-child { - padding-left: 1.3rem; - } + color: var(--primary-foreground-color); } } } diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js b/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js index 62e2fcc0b..742c7a692 100644 --- a/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js +++ b/src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { useRouteFocused } = require('stremio-router'); const Button = require('stremio/common/Button'); const TextInput = require('stremio/common/TextInput'); @@ -60,7 +60,7 @@ const SearchBar = ({ className, query, active }) => {
} ); @@ -80,7 +80,7 @@ const SearchBarFallback = ({ className }) => {
{ t('SEARCH_OR_PASTE_LINK') }
); diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less b/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less index d9d6f1a15..094e6de03 100644 --- a/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less +++ b/src/common/NavBar/HorizontalNavBar/SearchBar/styles.less @@ -3,16 +3,12 @@ @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; .search-bar-container { - --search-bar-size: calc(var(--horizontal-nav-bar-size) - 1.2rem); + --search-bar-size: 3.25rem; display: flex; flex-direction: row; height: var(--search-bar-size); border-radius: var(--search-bar-size); - background-color: @color-background-light2; - - &:hover { - background-color: @color-background-light3; - } + background-color: var(--overlay-color); .search-input { flex: 1; @@ -20,15 +16,16 @@ display: flex; flex-direction: row; align-items: center; - padding: 0 0.5rem 0 1.5rem; + padding: 0 0.5rem 0 2rem; font-weight: 500; - color: @color-secondaryvariant1-light1; + color: var(--primary-foreground-color); cursor: text; &::placeholder, .placeholder-label { max-height: 1.2em; opacity: 1; - color: @color-secondaryvariant1-light1-90; + color: var(--primary-foreground-color); + opacity: 0.6; } } @@ -38,20 +35,15 @@ flex-direction: row; justify-content: center; align-items: center; - width: var(--search-bar-size); height: var(--search-bar-size); - - &:hover { - .icon { - fill: @color-secondaryvariant2-light1-90; - } - } + padding: 0 1.5rem; .icon { flex: none; width: 1.7rem; height: 1.7rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); + opacity: 0.6; } } } \ No newline at end of file diff --git a/src/common/NavBar/HorizontalNavBar/styles.less b/src/common/NavBar/HorizontalNavBar/styles.less index 6577a408d..2be5ccf35 100644 --- a/src/common/NavBar/HorizontalNavBar/styles.less +++ b/src/common/NavBar/HorizontalNavBar/styles.less @@ -7,9 +7,10 @@ display: flex; flex-direction: row; align-items: center; + justify-content: space-between; height: var(--horizontal-nav-bar-size); padding-right: 1rem; - background-color: @color-background; + background-color: transparent; overflow: visible; .logo-container { @@ -30,8 +31,8 @@ } } - .spacing { - flex: 1 0 0; + .back-button-container { + margin-left: 1rem; } .title { @@ -44,19 +45,18 @@ white-space: nowrap; text-overflow: ellipsis; color: @color-secondaryvariant2-light1-90; - - &+.spacing { - display: none; - } } .search-bar { - flex: 2 0 9.5rem; - max-width: 30rem; + height: 3.25rem; + width: 30rem; + } - &+.spacing { - max-width: 11rem; - } + .buttons-container { + display: flex; + flex-direction: row; + gap: 0.5rem; + overflow: visible; } .button-container { @@ -64,31 +64,27 @@ display: flex; align-items: center; justify-content: center; - width: var(--horizontal-nav-bar-size); - height: var(--horizontal-nav-bar-size); - - &.back-button-container { - width: var(--vertical-nav-bar-size); - height: var(--horizontal-nav-bar-size); - } - - &:hover { - background-color: @color-background-light2; - } - - &:global(.active) { - background-color: @color-background-light3; - - .icon { - fill: @color-surface-light5-90; - } - } + width: 3.5rem; + height: 3.5rem; + border-radius: 0.75rem; + opacity: 0.4; .icon { flex: none; - width: 1.7rem; - height: 1.7rem; - fill: @color-secondaryvariant2-light1-90; + width: 2rem; + height: 2rem; + color: var(--primary-foreground-color); + opacity: 0.6; + } + + &:hover, &:global(.active) { + background-color: var(--overlay-color); + opacity: 1; + + .icon { + color: var(--primary-foreground-color); + opacity: 0.8; + } } } } @@ -102,16 +98,12 @@ width: var(--horizontal-nav-bar-size); } - .search-bar { - margin: 0 0.5rem; - } + .button-container { + margin: 0 1rem; - .spacing { - display: none; - } - - .button-container:not(.back-button-container):not(.menu-button-container) { - display: none; + &:not(.back-button-container):not(.menu-button-container) { + display: none; + } } } } \ No newline at end of file diff --git a/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js b/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js index 44c37814b..7ecef38c6 100644 --- a/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js +++ b/src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const Image = require('stremio/common/Image'); const styles = require('./styles'); @@ -11,7 +11,7 @@ const styles = require('./styles'); const NavTabButton = ({ className, logo, icon, label, href, selected, onClick }) => { const renderLogoFallback = React.useCallback(() => ( typeof icon === 'string' && icon.length > 0 ? - + : null ), [icon]); @@ -27,7 +27,7 @@ const NavTabButton = ({ className, logo, icon, label, href, selected, onClick }) /> : typeof icon === 'string' && icon.length > 0 ? - + : null } diff --git a/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less b/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less index e0d8cde09..95ed91c35 100644 --- a/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less +++ b/src/common/NavBar/VerticalNavBar/NavTabButton/styles.less @@ -1,50 +1,66 @@ // Copyright (C) 2017-2023 Smart code 203358507 @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; +@import (reference) '~stremio/common/screen-sizes.less'; .nav-tab-button-container { display: flex; flex-direction: column; align-items: center; justify-content: center; - background-color: @color-background-dark1; + background-color: transparent; + border-radius: 0.75rem; &:hover { - background-color: @color-background-light2; + background-color: var(--overlay-color); + + .label { + opacity: 0.6; + } } &:global(.selected) { - background-color: @color-secondaryvariant1-dark5; - - &:hover { - background-color: @color-secondaryvariant1-dark4; - } - .icon { - fill: @color-surface-light5-90; - } - - .label { - color: @color-surface-light5-90; + opacity: 1; + color: var(--primary-accent-color); } } .icon, .logo { flex: none; - width: 1.7rem; - height: 1.7rem; + width: 2.2rem; + height: 2.2rem; margin-bottom: 0.5rem; - fill: @color-secondary-light5-90; + } + + .icon { + color: var(--primary-foreground-color); + opacity: 0.2; } .label { flex: none; max-height: 2.4em; padding: 0 0.2rem; - font-size: 0.9rem; + font-size: 0.8rem; font-weight: 500; letter-spacing: 0.01rem; text-align: center; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); + opacity: 0; + } +} + +@media only screen and (max-width: @minimum) { + .nav-tab-button-container { + .label { + opacity: 0.2; + } + + &:global(.selected) { + .label { + opacity: 0.6; + } + } } } \ No newline at end of file diff --git a/src/common/NavBar/VerticalNavBar/styles.less b/src/common/NavBar/VerticalNavBar/styles.less index 9fafe847c..99e59be93 100644 --- a/src/common/NavBar/VerticalNavBar/styles.less +++ b/src/common/NavBar/VerticalNavBar/styles.less @@ -4,8 +4,12 @@ @import (reference) '~stremio/common/screen-sizes.less'; .vertical-nav-bar-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; width: var(--vertical-nav-bar-size); - background-color: @color-background-dark1; + background-color: transparent; overflow-y: auto; scrollbar-width: none; @@ -14,8 +18,8 @@ } .nav-tab-button { - width: var(--vertical-nav-bar-size); - height: var(--vertical-nav-bar-size); + width: calc(var(--vertical-nav-bar-size) - 1.5rem); + height: calc(var(--vertical-nav-bar-size) - 1.5rem); &:first-child { margin-top: 1rem; @@ -29,11 +33,12 @@ @media only screen and (max-width: @minimum) { .vertical-nav-bar-container { - display: flex; flex-direction: row; justify-content: space-between; + gap: 0; height: var(--vertical-nav-bar-size); width: 100%; + padding: 0 1rem; overflow-y: hidden; overflow-x: auto; diff --git a/src/common/PaginationInput/PaginationInput.js b/src/common/PaginationInput/PaginationInput.js index 51322e0a3..41d740b3f 100644 --- a/src/common/PaginationInput/PaginationInput.js +++ b/src/common/PaginationInput/PaginationInput.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const styles = require('./styles'); @@ -22,13 +22,13 @@ const PaginationInput = ({ className, label, dataset, onSelect, ...props }) => { return (
{label}
); diff --git a/src/common/PaginationInput/styles.less b/src/common/PaginationInput/styles.less index dda5e4d04..ecf6c56a4 100644 --- a/src/common/PaginationInput/styles.less +++ b/src/common/PaginationInput/styles.less @@ -5,17 +5,18 @@ .pagination-input-container { display: flex; flex-direction: row; + border-radius: var(--border-radius); .prev-button-container, .next-button-container { flex: none; display: flex; align-items: center; justify-content: center; - background-color: @color-background; + background-color: var(--overlay-color); .icon { display: block; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } @@ -25,7 +26,7 @@ display: flex; align-items: center; justify-content: center; - background-color: @color-background-dark1; + background-color: var(--overlay-color); .label { flex: none; @@ -35,7 +36,7 @@ text-overflow: ellipsis; text-align: center; font-weight: 500; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } } \ No newline at end of file diff --git a/src/common/Popup/styles.less b/src/common/Popup/styles.less index 902fd550f..e81de9033 100644 --- a/src/common/Popup/styles.less +++ b/src/common/Popup/styles.less @@ -13,8 +13,10 @@ .menu-container { position: absolute; z-index: 1; - overflow: visible; + overflow: hidden; visibility: hidden; + border-radius: var(--border-radius); + background-color: var(--modal-background-color); box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40, 0 1.1rem 0.85rem @color-background-dark5-20; cursor: auto; diff --git a/src/common/SearchBar/SearchBar.js b/src/common/SearchBar/SearchBar.js index c61d1b482..3b7013aa0 100644 --- a/src/common/SearchBar/SearchBar.js +++ b/src/common/SearchBar/SearchBar.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const TextInput = require('stremio/common/TextInput'); const SearchBarPlaceholder = require('./SearchBarPlaceholder'); const styles = require('./styles'); @@ -18,7 +18,7 @@ const SearchBar = ({ className, title, value, onChange }) => { value={value} onChange={onChange} /> - + ); }; diff --git a/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js index db239fc1a..7c32edaf8 100644 --- a/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js +++ b/src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js @@ -3,14 +3,14 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const styles = require('./styles'); const SearchBarPlaceholder = ({ className, title }) => { return (
{title}
- +
); }; diff --git a/src/common/SearchBar/SearchBarPlaceholder/styles.less b/src/common/SearchBar/SearchBarPlaceholder/styles.less index 8c177c49d..b27a8f0d8 100644 --- a/src/common/SearchBar/SearchBarPlaceholder/styles.less +++ b/src/common/SearchBar/SearchBarPlaceholder/styles.less @@ -22,6 +22,6 @@ flex: none; width: 1.5rem; height: 1.5rem; - fill: var(--color-placeholder-background); + color: var(--color-placeholder-background); } } \ No newline at end of file diff --git a/src/common/SearchBar/styles.less b/src/common/SearchBar/styles.less index 3df0451c8..265655970 100644 --- a/src/common/SearchBar/styles.less +++ b/src/common/SearchBar/styles.less @@ -6,31 +6,26 @@ display: flex; flex-direction: row; align-items: center; - height: 3.5rem; - padding: 0 1rem; - border-radius: 3.5rem; + height: 3rem; + padding: 0 1.5rem; + border-radius: 3rem; border: var(--focus-outline-size) solid transparent; - background-color: @color-background; + background-color: var(--overlay-color); cursor: text; - &:hover, &:focus-within { - background-color: @color-background-light1; - } - &:focus-within { - border: var(--focus-outline-size) solid @color-surface-light5; + border: var(--focus-outline-size) solid var(--primary-foreground-color); } .search-input { flex: 1; margin-right: 1rem; - font-size: 1.1rem; - color: @color-surface-light5; + font-size: 1rem; + color: var(--primary-foreground-color); &::placeholder { - max-height: 1.2em; - opacity: 1; - color: @color-secondaryvariant1-light1-90; + color: var(--primary-foreground-color); + opacity: 0.6; } } @@ -38,6 +33,7 @@ flex: none; width: 1.5rem; height: 1.5rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); + opacity: 0.6; } } \ No newline at end of file diff --git a/src/common/SharePrompt/SharePrompt.js b/src/common/SharePrompt/SharePrompt.js index 517dc09a9..685f19613 100644 --- a/src/common/SharePrompt/SharePrompt.js +++ b/src/common/SharePrompt/SharePrompt.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { useRouteFocused } = require('stremio-router'); const { useServices } = require('stremio/services'); const Button = require('stremio/common/Button'); @@ -44,11 +44,11 @@ const SharePrompt = ({ className, url }) => {
@@ -63,7 +63,7 @@ const SharePrompt = ({ className, url }) => { tabIndex={-1} />
diff --git a/src/common/SharePrompt/styles.less b/src/common/SharePrompt/styles.less index 6e80043df..c9953be50 100644 --- a/src/common/SharePrompt/styles.less +++ b/src/common/SharePrompt/styles.less @@ -23,7 +23,7 @@ flex: none; height: 1.2rem; margin-right: 1rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { @@ -34,13 +34,15 @@ font-size: 1.1rem; font-weight: 500; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } .facebook-button, .twitter-button { + border-radius: var(--border-radius); + &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } } @@ -57,7 +59,8 @@ display: flex; flex-direction: row; margin-top: 1rem; - background-color: @color-surface-light2; + border-radius: var(--border-radius); + background-color: var(--overlay-color); .url-text-input { flex: 1; @@ -65,7 +68,7 @@ padding: 1rem; font-size: 1.1rem; text-align: center; - color: @color-background-dark5; + color: var(--primary-foreground-color); } .copy-button { @@ -77,14 +80,16 @@ justify-content: center; width: 8rem; padding: 1rem; - background-color: @color-accent3; + border-radius: 0 var(--border-radius) var(--border-radius) 0; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } .icon { @@ -92,7 +97,7 @@ width: 1.2rem; height: 1.2rem; margin-right: 0.5rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { @@ -101,7 +106,7 @@ flex-basis: auto; max-height: 2.4em; font-size: 1.1rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } diff --git a/src/common/Slider/styles.less b/src/common/Slider/styles.less index c55be563f..858543931 100644 --- a/src/common/Slider/styles.less +++ b/src/common/Slider/styles.less @@ -16,26 +16,9 @@ html.active-slider-within { overflow: visible; cursor: pointer; - &:hover, &:global(.active) { - .track-after { - background-color: @color-primary-light5; - } - } - &:global(.disabled) { pointer-events: none; - - .track { - background-color: @color-surface-dark5; - } - - .track-after { - background-color: @color-surface; - } - - .thumb { - fill: @color-surface; - } + opacity: 0.5; } .layer { @@ -55,21 +38,24 @@ html.active-slider-within { z-index: 0; flex: 1; height: var(--track-size); - background-color: @color-surface-light5-20; + border-radius: var(--track-size); + background-color: var(--overlay-color); } .track-before { z-index: 1; flex: none; height: var(--track-size); - background-color: @color-surface-light5-10; + border-radius: var(--track-size); + background-color: var(--overlay-color); } .track-after { z-index: 2; flex: none; height: var(--track-size); - background-color: @color-primary-light3; + border-radius: var(--track-size); + background-color: var(--primary-foreground-color); } .thumb { @@ -78,6 +64,6 @@ html.active-slider-within { width: var(--thumb-size); height: var(--thumb-size); transform: translateX(-50%); - fill: @color-surface-light5; + fill: var(--primary-foreground-color); } } \ No newline at end of file diff --git a/src/common/Toast/ToastItem/ToastItem.js b/src/common/Toast/ToastItem/ToastItem.js index 39bafddfb..869aa224f 100644 --- a/src/common/Toast/ToastItem/ToastItem.js +++ b/src/common/Toast/ToastItem/ToastItem.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const Button = require('stremio/common/Button'); const styles = require('./styles'); @@ -16,8 +16,8 @@ const ToastItem = ({ title, message, dataset, onSelect, onClose, ...props }) => }, [props.type]); const icon = React.useMemo(() => { return typeof props.icon === 'string' ? props.icon : - type === 'success' ? 'ic_check' : - type === 'error' ? 'ic_warning' : + type === 'success' ? 'checkmark' : + type === 'error' ? 'warning' : null; }, [type, props.icon]); const toastOnClick = React.useCallback((event) => { @@ -54,7 +54,7 @@ const ToastItem = ({ title, message, dataset, onSelect, onClose, ...props }) => { typeof icon === 'string' && icon.length > 0 ?
- +
: null @@ -74,7 +74,7 @@ const ToastItem = ({ title, message, dataset, onSelect, onClose, ...props }) => }
); diff --git a/src/common/Toast/ToastItem/styles.less b/src/common/Toast/ToastItem/styles.less index 756930ac6..05bf68ec8 100644 --- a/src/common/Toast/ToastItem/styles.less +++ b/src/common/Toast/ToastItem/styles.less @@ -18,7 +18,7 @@ background-color: @color-accent3; .icon { - fill: @color-surface-light5-90; + color: @color-surface-light5-90; } } } @@ -28,7 +28,7 @@ background-color: @color-accent2; .icon { - fill: @color-surface-light5-90; + color: @color-surface-light5-90; } } } @@ -43,7 +43,7 @@ display: block; width: 100%; height: 100%; - fill: @color-background-dark5-90; + color: @color-background-dark5-90; } } diff --git a/src/common/roboto.css b/src/common/roboto.css deleted file mode 100644 index e451a2afa..000000000 --- a/src/common/roboto.css +++ /dev/null @@ -1,55 +0,0 @@ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 300; - src: url('/fonts/Roboto-LightItalic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 400; - src: url('/fonts/Roboto-RegularItalic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 500; - src: url('/fonts/Roboto-MediumItalic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 700; - src: url('/fonts/Roboto-BoldItalic.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: url('/fonts/Roboto-Light.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: url('/fonts/Roboto-Regular.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: url('/fonts/Roboto-Medium.ttf') format('truetype'); -} - -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: url('/fonts/Roboto-Bold.ttf') format('truetype'); -} \ No newline at end of file diff --git a/src/routes/Addons/Addon/Addon.js b/src/routes/Addons/Addon/Addon.js index 111519ec2..ae27dca51 100644 --- a/src/routes/Addons/Addon/Addon.js +++ b/src/routes/Addons/Addon/Addon.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button, Image } = require('stremio/common'); const styles = require('./styles'); @@ -51,7 +51,7 @@ const Addon = ({ className, id, name, version, logo, description, types, behavio } }, [onToggle, dataset]); const renderLogoFallback = React.useCallback(() => ( - + ), []); return ( : null @@ -113,7 +113,7 @@ const Addon = ({ className, id, name, version, logo, description, types, behavio
diff --git a/src/routes/Addons/Addon/styles.less b/src/routes/Addons/Addon/styles.less index f364bdce1..998baf53d 100644 --- a/src/routes/Addons/Addon/styles.less +++ b/src/routes/Addons/Addon/styles.less @@ -8,14 +8,14 @@ flex-direction: row; align-items: flex-start; padding: 1.5rem; - background-color: @color-background; + border-radius: var(--border-radius); + background-color: var(--overlay-color); cursor: inherit; .logo-container { flex: none; - width: 6rem; - height: 6rem; - background-color: @color-background-light1; + width: 8rem; + height: 8rem; .logo { display: block; @@ -31,7 +31,7 @@ width: 100%; height: 100%; padding: 1rem; - fill: @color-secondaryvariant1-light3; + color: var(--primary-foreground-color); } } @@ -52,7 +52,7 @@ padding: 0 0.5rem; max-height: 3.6em; font-size: 1.6rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .version-container { @@ -62,7 +62,8 @@ margin-top: 0.5rem; padding: 0 0.5rem; max-height: 2.4em; - color: @color-surface-light5-60; + color: var(--primary-foreground-color); + opacity: 0.6; } .types-container { @@ -72,8 +73,9 @@ margin-top: 0.5rem; padding: 0 0.5rem; max-height: 2.4em; - color: @color-surface-light5-40; + color: var(--primary-foreground-color); text-transform: capitalize; + opacity: 0.4; } .description-container { @@ -83,7 +85,7 @@ margin-top: 0.5rem; padding: 0 0.5rem; max-height: 4.8em; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } @@ -109,8 +111,9 @@ align-items: center; justify-content: center; gap: 1rem; - height: 4rem; + height: 3.5rem; padding: 0 1rem; + border-radius: 4rem; .icon { flex: none; @@ -123,68 +126,70 @@ flex-shrink: 1; flex-basis: auto; max-height: 2.4em; - font-size: 1.2rem; - font-weight: 500; + font-size: 1.1rem; + font-weight: 700; text-align: center; } } .install-button-container { - background-color: @color-accent3; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light2; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } .label { - color: @color-surface-light5; + color: var(--primary-foreground-color) } } .configure-button-container { flex: none; - background-color: @color-accent3; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light2; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } .icon { - fill: @color-surface-light5; + color: var(--primary-foreground-color) } } .uninstall-button-container { - outline-color: @color-background-light3; + outline-color: var(--primary-foreground-color); outline-style: solid; + opacity: 0.3; &:hover { - background-color: @color-background-light2; + opacity: 1; } .label { - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } .share-button-container { - &:hover { - .icon { - fill: @color-secondaryvariant1-light1; - } + opacity: 0.9; + &:hover { .label { text-decoration: underline; - color: @color-secondaryvariant1-light2; } } .icon { - fill: @color-secondaryvariant1-dark1-60; + height: 1.5rem; + width: 1.5rem; + color: var(--primary-foreground-color); } .label { - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } } diff --git a/src/routes/Addons/Addons.js b/src/routes/Addons/Addons.js index 31f823a1f..c4c99173a 100644 --- a/src/routes/Addons/Addons.js +++ b/src/routes/Addons/Addons.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { AddonDetailsModal, Button, Image, Multiselect, MainNavBars, TextInput, SearchBar, SharePrompt, ModalDialog, useBinaryState, withCoreSuspender } = require('stremio/common'); const Addon = require('./Addon'); const useInstalledAddons = require('./useInstalledAddons'); @@ -72,7 +72,7 @@ const Addons = ({ urlParams, queryParams }) => { ); }, [search]); const renderLogoFallback = React.useCallback(() => ( - + ), []); React.useLayoutEffect(() => { closeAddAddonModal(); @@ -83,10 +83,6 @@ const Addons = ({ urlParams, queryParams }) => {
- {selectInputs.map((selectInput, index) => ( { /> ))}
+ { onChange={searchInputOnChange} />
{ diff --git a/src/routes/Addons/styles.less b/src/routes/Addons/styles.less index f4f9d57f3..2f485c221 100644 --- a/src/routes/Addons/styles.less +++ b/src/routes/Addons/styles.less @@ -24,7 +24,7 @@ .addons-container { width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .addons-content { width: 100%; @@ -48,26 +48,27 @@ flex-direction: row; align-items: center; justify-content: center; - width: 10rem; - height: 3.5rem; + height: 3rem; margin-right: 1.5rem; - padding: 0 1rem; - background-color: @color-accent3; + padding: 0 1.5rem; + border-radius: 3rem; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light2; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } &:focus { - outline-color: @color-surface-light5; + outline-color: var(--primary-foreground-color); } .icon { flex: none; width: 1.2rem; height: 1.2rem; - margin-right: 1rem; - fill: @color-surface-light5; + margin-right: 0.5rem; + color: var(--primary-foreground-color); } .add-button-label { @@ -75,8 +76,9 @@ flex-shrink: 1; flex-basis: auto; max-height: 2.4em; - font-size: 1.1rem; - color: @color-surface-light5; + font-size: 1rem; + font-weight: 700; + color: var(--primary-foreground-color); } } @@ -84,7 +86,6 @@ flex-grow: 0; flex-shrink: 1; flex-basis: 15rem; - height: 3.5rem; margin-right: 1.5rem; .multiselect-menu-container { @@ -108,15 +109,16 @@ display: none; align-items: center; justify-content: center; - width: 3.5rem; - height: 3.5rem; - background-color: @color-background; + width: 3rem; + height: 3rem; + border-radius: var(--border-radius); + background-color: var(--overlay-color); .filter-icon { flex: none; width: 1.4rem; height: 1.4rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } } @@ -126,7 +128,7 @@ align-self: stretch; padding: 0 1.5rem; font-size: 2rem; - color: @color-surface-light5; + color: var(--primary-foreground-color); } .addons-list-container { @@ -152,7 +154,7 @@ overflow: visible; .select-input-container { - height: 3.5rem; + height: 3rem; &:not(:last-child) { margin-bottom: 1rem; @@ -169,39 +171,43 @@ .notice { margin-bottom: 1.5rem; font-size: 1rem; - color: @color-background-dark5-90; + color: var(--primary-foreground-color); } .addon-url-input { width: 100%; padding: 1rem; - color: @color-surface-dark5; - outline: var(--focus-outline-size) solid @color-surface-light2; + color: var(--primary-foreground-color); + border-radius: var(--border-radius); + background-color: var(--overlay-color); + outline: var(--focus-outline-size) solid var(--overlay-color); outline-offset: calc(-1 * var(--focus-outline-size)); &:hover { - outline-color: @color-surface-light4; + outline-color: var(--primary-foreground-color); } &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } } } .cancel-button { background-color: transparent; + opacity: 0.3; &:hover { - background-color: @color-surface-light3; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + opacity: 1; } &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } .cancel-button-label { - color: @color-surface-dark2; + color: var(--primary-foreground-color); } } } @@ -229,7 +235,7 @@ } .icon { - fill: @color-secondaryvariant1-light3; + color: var(--primary-foreground-color); } .name-container { @@ -247,7 +253,7 @@ flex-basis: auto; margin-right: 0.5rem; font-size: 1.6rem; - color: @color-background-dark5-90; + color: var(--primary-foreground-color); } .version { @@ -255,7 +261,7 @@ flex-shrink: 1; flex-basis: auto; margin-top: 0.5rem; - color: @color-background-dark5-60; + color: var(--primary-foreground-color); } } } @@ -271,11 +277,10 @@ .addons-content { .selectable-inputs-container { .add-button-container { + z-index: 1; position: fixed; right: 0; bottom: calc(3rem + var(--horizontal-nav-bar-size)); - box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40, - 0 1.1rem 0.85rem @color-background-dark5-20; } .select-input-container { diff --git a/src/routes/Board/styles.less b/src/routes/Board/styles.less index 4d60713cd..b949d8689 100644 --- a/src/routes/Board/styles.less +++ b/src/routes/Board/styles.less @@ -20,15 +20,17 @@ .board-content-container { flex: 1; align-self: stretch; - background-color: @color-background-dark2; + background: transparent; .board-content { width: 100%; height: 100%; + padding: 0 1rem; overflow-y: auto; .board-row { - margin: 4rem 2rem; + margin-top: 1rem; + margin-bottom: 2rem; } } } @@ -43,7 +45,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+10) { display: none; @@ -51,7 +53,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+9) { display: none; @@ -67,7 +69,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+9) { display: none; @@ -75,7 +77,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+8) { display: none; @@ -91,7 +93,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+8) { display: none; @@ -99,7 +101,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+7) { display: none; @@ -115,7 +117,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+7) { display: none; @@ -123,7 +125,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+6) { display: none; @@ -139,7 +141,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+6) { display: none; @@ -147,7 +149,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+5) { display: none; @@ -163,7 +165,7 @@ .board-container { .board-content-container { .board-content { - .board-row-poster, .board-row-square { + .board-row-poster, .board-row-square, .continue-watching-row { .meta-item, .meta-item-placeholder { &:nth-child(n+5) { display: none; @@ -171,7 +173,7 @@ } } - .board-row-landscape, .continue-watching-row { + .board-row-landscape { .meta-item, .meta-item-placeholder { &:nth-child(n+4) { display: none; @@ -199,7 +201,7 @@ height: calc(100% - 4rem); .board-row { - margin: 2rem 1rem; + margin-bottom: 1.5rem; } .board-row-poster, .board-row-square, .continue-watching-row { diff --git a/src/routes/Discover/Discover.js b/src/routes/Discover/Discover.js index a7fa51ba6..d27c976cf 100644 --- a/src/routes/Discover/Discover.js +++ b/src/routes/Discover/Discover.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { useServices } = require('stremio/services'); const { AddonDetailsModal, DelayedRenderer, Button, MainNavBars, MetaItem, Image, MetaPreview, Multiselect, ModalDialog, CONSTANTS, useBinaryState, useOnScrollToBottom, withCoreSuspender } = require('stremio/common'); const useDiscover = require('./useDiscover'); @@ -98,7 +98,7 @@ const Discover = ({ urlParams, queryParams }) => { /> ))}
{ @@ -148,7 +148,7 @@ const Discover = ({ urlParams, queryParams }) => { name={metaItem.name} poster={metaItem.poster} posterShape={metaItem.posterShape} - playIcon={selectedMetaItemIndex === index} + playname={selectedMetaItemIndex === index} deepLinks={metaItem.deepLinks} data-index={index} onClick={metaItemOnClick} @@ -169,8 +169,8 @@ const Discover = ({ urlParams, queryParams }) => { releaseInfo={selectedMetaItem.releaseInfo} released={selectedMetaItem.released} description={selectedMetaItem.description} - deepLinks={selectedMetaItem.deepLinks} links={selectedMetaItem.links} + deepLinks={selectedMetaItem.deepLinks} trailerStreams={selectedMetaItem.trailerStreams} inLibrary={selectedMetaItem.inLibrary} toggleInLibrary={selectedMetaItem.inLibrary ? removeFromLibrary : addToLibrary} diff --git a/src/routes/Discover/styles.less b/src/routes/Discover/styles.less index 50c4716c2..e0b6706d3 100644 --- a/src/routes/Discover/styles.less +++ b/src/routes/Discover/styles.less @@ -26,7 +26,7 @@ .discover-container { width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .discover-content { width: 100%; @@ -50,7 +50,6 @@ .select-input { flex: 0 1 15rem; - height: 3.5rem; &:not(:first-child) { margin-left: 1.5rem; @@ -75,16 +74,16 @@ display: none; align-items: center; justify-content: center; - width: 3.5rem; - height: 3.5rem; - margin-left: 1.5rem; - background-color: @color-background; + width: 3rem; + height: 3rem; + border-radius: var(--border-radius); + background-color: var(--overlay-color); .filter-icon { flex: none; width: 1.4rem; height: 1.4rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } } @@ -103,7 +102,7 @@ margin-bottom: 1rem; font-size: 1.4rem; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .install-button { @@ -111,17 +110,22 @@ min-width: 10rem; max-width: 15rem; padding: 1rem; - background-color: @color-accent3; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; + } + + &:focus { + outline-color: var(--primary-foreground-color); } .label { max-height: 2.4em; font-weight: 500; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } @@ -151,9 +155,10 @@ .message-label { flex: none; - font-size: 2.5rem; + font-size: 2rem; + font-weight: 400; text-align: center; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } @@ -174,18 +179,21 @@ .poster-container { padding-bottom: calc(100% * var(--poster-shape-ratio)); background-color: var(--color-placeholder-background); + border-radius: var(--border-radius); } .title-bar-container { display: flex; flex-direction: row; align-items: center; + justify-content: center; height: 2.8rem; .title-label { flex: none; width: 60%; height: 1.2rem; + border-radius: var(--border-radius); background-color: var(--color-placeholder-background); } } @@ -196,8 +204,10 @@ .meta-preview-container { flex: none; align-self: stretch; - width: 28rem; - background-color: @color-background-dark3; + width: 29rem; + padding: 2rem 2.5rem; + border-radius: var(--border-radius) 0 0 var(--border-radius); + background-color: var(--modal-background-color); } } } @@ -225,47 +235,6 @@ } } -.multiselect-modal-container { - .multiselect-menu-container { - width: 15rem; - max-height: calc(3.2rem * 7); - overflow-y: auto; - scrollbar-color: @color-surface-light1 @color-surface-light4; - - ::-webkit-scrollbar-thumb { - background-color: @color-surface-light1; - - &:hover { - background-color: @color-surface-light2; - } - } - - ::-webkit-scrollbar-track { - background-color: @color-surface-light4; - } - - .multiselect-option-container { - background: none; - - &:hover, &:focus { - background-color: @color-surface-light3; - } - - &:focus { - outline-color: @color-background-dark2; - } - - .multiselect-label { - color: @color-background-dark2-90; - } - - .multiselect-icon { - fill: @color-background-dark2-90; - } - } - } -} - @media only screen and (min-width: @xxlarge) { .discover-container { .discover-content { @@ -392,7 +361,7 @@ justify-content: space-between; .select-input { - &:nth-child(n+3) { + &:nth-child(n+2) { display: none; &~.filter-container { diff --git a/src/routes/Intro/ConsentCheckbox/styles.less b/src/routes/Intro/ConsentCheckbox/styles.less index de99038b5..2bf136924 100644 --- a/src/routes/Intro/ConsentCheckbox/styles.less +++ b/src/routes/Intro/ConsentCheckbox/styles.less @@ -10,29 +10,30 @@ display: flex; flex-direction: row; align-items: center; - padding: 0.5rem 1rem; + padding: 0.5rem 0; + border-radius: var(--border-radius); &:focus { outline: none; - background-color: @color-surface-light5-20; + background-color: var(--overlay-color); } - .checkbox-icon { - flex: none; - width: 1.2rem; - height: 1.2rem; - fill: @color-surface-dark5; + &:global(.checked) { + .label { + opacity: 1; + } } .label { flex: 1; - margin-left: 0.5rem; + margin-left: 1rem; font-size: 0.9rem; - color: @color-surface-90; + color: var(--primary-foreground-color); + opacity: 0.6; .link { font-size: 0.9rem; - color: @color-surface-light5-90; + color: var(--primary-accent-color); &:hover { text-decoration: underline; diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index 92dc3db5d..908499a8b 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Modal, useRouteFocused } = require('stremio-router'); const { useServices } = require('stremio/services'); const { Button, Image, useBinaryState } = require('stremio/common'); @@ -274,111 +274,121 @@ const Intro = ({ queryParams }) => { }, [routeFocused]); return (
-
+
+
- {' - + {' +
+
+ Freedom to Stream +
+
+ All the Video Content You Enjoy in One Place +
+
+
+
+ + + { + state.form === SIGNUP_FORM ? + + + + + + + : +
+ +
+ } + { + state.error.length > 0 ? +
{state.error}
+ : + null + } + +
+
+ + { + state.form === SIGNUP_FORM ? + + : + null + } + { + state.form === LOGIN_FORM ? + + : + null + } + { + state.form === SIGNUP_FORM ? + + : + null + }
- - { - state.form === SIGNUP_FORM ? - - : - null - } - - - { - state.form === SIGNUP_FORM ? - - - - - - - : -
- -
- } - { - state.error.length > 0 ? -
{state.error}
- : - null - } - - { - state.form === SIGNUP_FORM ? - - : - null - } - { - state.form === LOGIN_FORM ? - - : - null - }
{ passwordRestModalOpen ? @@ -390,7 +400,7 @@ const Intro = ({ queryParams }) => { loaderModalOpen ?
- +
Authenticating...
diff --git a/src/routes/Intro/PasswordResetModal/styles.less b/src/routes/Intro/PasswordResetModal/styles.less index 4f9cdf2c3..9a84b79c0 100644 --- a/src/routes/Intro/PasswordResetModal/styles.less +++ b/src/routes/Intro/PasswordResetModal/styles.less @@ -15,16 +15,13 @@ .credentials-text-input { width: 100%; padding: 1rem; - color: @color-surface-dark5; - outline: var(--focus-outline-size) solid @color-surface-light2-90; + border-radius: var(--border-radius); outline-offset: calc(-1 * var(--focus-outline-size)); - - &:hover { - outline-color: @color-surface-light4-90; - } - - &:focus { - outline-color: @color-background-dark5-90; + color: var(--primary-foreground-color); + background: var(--overlay-color); + + &:hover, &:focus { + outline: var(--focus-outline-size) solid var(--overlay-color); } } } @@ -39,16 +36,12 @@ .cancel-button { background-color: transparent; - &:hover { - background-color: @color-surface-light3; - } - - &:focus { - outline-color: @color-background-dark5-90; + &:hover, &:focus { + outline-color: var(--primary-foreground-color); } .cancel-button-label { - color: @color-surface-dark4-90; + color: var(--primary-foreground-color); } } } diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less index 138f73e0b..1b1200a7c 100644 --- a/src/routes/Intro/styles.less +++ b/src/routes/Intro/styles.less @@ -4,62 +4,92 @@ @import (reference) '~stremio/common/screen-sizes.less'; .intro-container { + position: relative; display: flex; - flex-direction: row; + flex-direction: column; + align-items: center; justify-content: center; - width: 100%; height: 100%; - background: - linear-gradient(@color-background-dark3-80, @color-background-dark3-80), - url('/images/intro_background.jpg'); - background-size: cover; - background-repeat: no-repeat; - background-position: center; - background-origin: border-box; overflow-y: auto; - .form-container { + .background-container { + z-index: -1; + position: fixed; + top: -1rem; + bottom: -1rem; + left: -1rem; + right: -1rem; + background: url('/images/background_1.svg'), url('/images/background_2.svg'); + background-color: var(--primary-background-color); + background-position: bottom left, top right; + background-size: 53%, 54%; + background-repeat: no-repeat; + filter: blur(6rem); + } + + .heading-container { flex: none; - width: 28rem; - margin: auto; - padding: 2rem 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-bottom: 5rem; .logo-container { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; + flex: none; margin-bottom: 3rem; .logo { - flex: none; - width: 4rem; - height: 4rem; - margin-right: 1rem; + height: 5rem; opacity: 0.9; } - - .name { - flex: none; - width: 8rem; - height: 4rem; - fill: @color-surface-dark4-90; - } } + .title-container, .slogan-container { + color: var(--primary-foreground-color); + } + + .title-container { + font-size: 3rem; + font-weight: 600; + margin-bottom: 0.5rem; + } + + .slogan-container { + font-size: 1.5rem; + font-weight: 400; + text-transform: lowercase; + opacity: 0.6; + + &::first-letter { + text-transform: uppercase; + } + } + } + + .content-container { + flex: none; + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: center; + width: 100%; + .form-button { display: flex; flex-direction: row; align-items: center; justify-content: center; - padding: 0.5rem 1rem; + height: 4rem; + border-radius: 3.5rem; + padding: 0 1rem; .icon { flex: none; - width: 1rem; height: 2rem; + width: 2rem; margin-right: 1rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { @@ -67,130 +97,92 @@ flex-shrink: 1; flex-basis: auto; font-size: 1.1rem; - font-weight: 500; - color: @color-surface-light5-90; + font-weight: 700; + color: var(--primary-foreground-color); text-align: center; } } - .facebook-button { - min-height: 4.5rem; - margin: 1rem 0; - background: var(--color-facebook); - - .label { - font-size: 1.2rem; - } - } - - .login-form-button { - display: block; - margin: 1rem 0; - text-align: center; - color: @color-surface-dark2-90; - - &:hover { - .login-label { - text-decoration: underline; - } - } - - &:focus { - outline: none; - background-color: @color-surface-light5-20; - } - - .login-label { - font-weight: 500; - color: @color-accent4-light1-90; - } - } - - .credentials-text-input { - display: block; - width: 100%; - margin: 1rem 0; - padding: 1rem; - border-bottom: thin solid @color-surface-90; - color: @color-surface-light5; - - &:hover { - background-color: @color-surface-light5-20; - } - - &:focus { - border-bottom-color: @color-secondaryvariant2-light1-90; - - &::placeholder { - color: @color-secondaryvariant2-light1-90; - } - } - - &::placeholder { - color: @color-surface-dark2-90; - } - } - - .forgot-password-link-container { - display: flex; - flex-direction: row; - justify-content: flex-end; - margin: 1rem 0; - text-align: right; - - .forgot-password-link { - flex-grow: 0; - flex-shrink: 1; - flex-basis: auto; - padding: 0.5rem 1rem; - color: @color-surface-light3-90; - - &:hover { - text-decoration: underline; - color: @color-secondaryvariant2-light1-90; - } - - &:focus { - outline: none; - background-color: @color-surface-light5-20; - } - } - } - - .error-message { - margin: 1rem 0; - padding: 0 1rem; - text-align: center; - color: @color-accent5-90; - } - - .submit-button { - min-height: 4rem; - margin: 1rem 0; - background-color: @color-accent3; - - &:hover { - background-color: @color-accent3-light1; - } - - .label { - font-size: 1.2rem; - } - } - - .guest-login-button, .signup-form-button { + .submit-button, .guest-login-button, .signup-form-button, .login-form-button { margin-top: 1rem; - padding: 1rem; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + background-color: transparent; + + .label { + color: var(--primary-foreground-color); + } &:hover { + background-color: var(--primary-foreground-color); + .label { - text-decoration: underline; + color: var(--secondary-foreground-color); + } + } + } + + .form-container { + flex: none; + position: relative; + width: 22rem; + margin-right: 2rem; + + .credentials-text-input { + display: block; + width: 100%; + margin-bottom: 1rem; + padding: 1rem; + border-radius: var(--border-radius); + outline-offset: calc(-1 * var(--focus-outline-size)); + color: var(--primary-foreground-color); + background: var(--overlay-color); + + &:hover, &:focus { + outline: var(--focus-outline-size) solid var(--overlay-color); } } - &:focus { - outline: none; - background-color: @color-surface-light5-20; + .forgot-password-link-container { + display: flex; + flex-direction: row; + justify-content: flex-end; + margin: 1rem 0; + text-align: right; + + .forgot-password-link { + flex-grow: 0; + flex-shrink: 1; + flex-basis: auto; + padding: 0.5rem 1rem; + color: var(--primary-foreground-color); + + &:hover { + text-decoration: underline; + } + } + } + + .error-message { + margin: 1rem 0; + padding: 0 1rem; + text-align: center; + color: var(--tertiary-accent-color); + } + } + + .options-container { + flex: none; + position: relative; + width: 22rem; + margin-left: 2rem; + + .facebook-button { + background: var(--color-facebook); + + &:hover, &:focus { + outline: var(--focus-outline-size) solid var(--color-facebook); + background-color: transparent; + } } } } @@ -209,7 +201,8 @@ align-items: center; justify-content: center; padding: 2rem; - background-color: @color-surface-light5; + border-radius: var(--border-radius); + background-color: var(--modal-background-color); @keyframes flash { 0% { @@ -226,13 +219,13 @@ width: 5rem; height: 5rem; margin-bottom: 1rem; - fill: @color-background-dark5-90; + color: var(--primary-foreground-color); animation: 1s linear infinite alternate flash; } .label { - font-size: 2rem; - color: @color-background-dark5-90; + font-size: 1.5rem; + color: var(--primary-foreground-color); animation: 1s linear infinite alternate flash; } } @@ -240,10 +233,39 @@ @media only screen and (max-width: @minimum) { .intro-container { - .form-container { - flex: 0 1 auto; - width: 100%; - padding: 2rem 1.5rem; + justify-content: initial; + padding: 3rem 1.5rem; + + .heading-container { + align-items: flex-start; + margin-bottom: 4rem; + + .logo-container { + .logo { + height: 4rem; + } + } + + .title-container { + font-size: 2.5rem; + } + + .slogan-container { + font-size: 1.5rem; + } + } + + .content-container { + flex-direction: column-reverse; + + .form-container, .options-container { + width: 100%; + margin: 0; + } + + .options-container { + margin-bottom: 4rem; + } } } } \ No newline at end of file diff --git a/src/routes/Library/Library.js b/src/routes/Library/Library.js index f739c8389..1479c9c5d 100644 --- a/src/routes/Library/Library.js +++ b/src/routes/Library/Library.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const NotFound = require('stremio/routes/NotFound'); const { Button, DelayedRenderer, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState, withCoreSuspender } = require('stremio/common'); const useLibrary = require('./useLibrary'); @@ -61,10 +61,10 @@ const Library = ({ model, urlParams, queryParams }) => { paginationInput !== null ? : - + null }
: @@ -78,10 +78,10 @@ const Library = ({ model, urlParams, queryParams }) => { src={require('/images/anonymous.png')} alt={' '} /> +
Library is only available for logged in users!
-
Library is only available for logged in users!
: library.selected === null ? diff --git a/src/routes/Library/styles.less b/src/routes/Library/styles.less index d3052d251..87062fb9b 100644 --- a/src/routes/Library/styles.less +++ b/src/routes/Library/styles.less @@ -22,7 +22,7 @@ .library-container { width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .library-content { width: 100%; @@ -42,7 +42,7 @@ flex-grow: 0; flex-shrink: 1; flex-basis: 15rem; - height: 3.5rem; + height: 2.75rem; &:not(:last-child) { margin-right: 1.5rem; @@ -59,15 +59,16 @@ display: none; align-items: center; justify-content: center; - width: 3.5rem; - height: 3.5rem; - background-color: @color-background; + width: 3rem; + height: 3rem; + border-radius: var(--border-radius); + background-color: var(--overlay-color); .filter-icon { flex: none; width: 1.4rem; height: 1.4rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } @@ -77,26 +78,12 @@ .pagination-input { flex: none; - height: 3.5rem; + height: 3rem; margin-left: 1.5rem; - &.pagination-input-placeholder { - pointer-events: none; - - .pagination-prev-button-container, .pagination-next-button-container { - .pagination-button-icon { - fill: @color-surface-dark5-90; - } - } - - .pagination-label { - color: @color-surface-dark5-90; - } - } - .pagination-prev-button-container, .pagination-next-button-container { - width: 3.5rem; - height: 3.5rem; + width: 3rem; + height: 3rem; .pagination-button-icon { width: 1rem; @@ -131,13 +118,15 @@ align-items: center; justify-content: center; width: 20rem; - min-height: 4rem; + height: 3.5rem; + border-radius: 3.5rem; padding: 0.5rem 1rem; margin-bottom: 1rem; - background-color: @color-accent3; + background-color: var(--secondary-accent-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } .label { @@ -147,7 +136,7 @@ max-height: 4.8em; font-size: 1.2rem; font-weight: 700; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); text-align: center; } } @@ -157,7 +146,7 @@ flex: none; width: 12rem; height: 12rem; - margin-bottom: 1rem; + margin-bottom: 2rem; object-fit: contain; object-position: center; opacity: 0.9; @@ -165,9 +154,11 @@ .message-label { flex: none; - font-size: 2.5rem; + margin-bottom: 2rem; + font-size: 2rem; + font-weight: 400; text-align: center; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index ead78d57d..d837f7cca 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button, Image, PlayIconCircleCentered, useProfile, platform, useStreamingServer, useToast } = require('stremio/common'); const { useServices } = require('stremio/services'); const StreamPlaceholder = require('./StreamPlaceholder'); @@ -73,7 +73,7 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio return href === deepLinks.externalPlayer.href ? deepLinks.externalPlayer.fileName : false; }, [href]); const renderThumbnailFallback = React.useCallback(() => ( - + ), []); return (
); diff --git a/src/routes/MetaDetails/StreamsList/styles.less b/src/routes/MetaDetails/StreamsList/styles.less index 3f4aa9e38..00f5ec11b 100644 --- a/src/routes/MetaDetails/StreamsList/styles.less +++ b/src/routes/MetaDetails/StreamsList/styles.less @@ -37,26 +37,25 @@ flex: none; font-size: 1.4rem; text-align: center; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } .select-input-container { flex: 0 0 auto; - height: 3.5rem; margin: 1em 1em 0 1em; background: none; &:hover, &:focus, &:global(.active) { - background-color: @color-background; + background-color: var(--overlay-color); } & >.multiselect-label { - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } & >.multiselect-icon { - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .multiselect-menu-container { @@ -66,9 +65,10 @@ } .streams-container { - flex: 0 1 auto; + flex: 1 1 auto; align-self: stretch; margin-top: 1rem; + padding: 0 1rem; overflow-y: auto; } @@ -81,10 +81,12 @@ justify-content: center; margin: 1rem; padding: 1.5rem 1rem; - background-color: @color-accent3; + border-radius: var(--border-radius); + background-color: var(--secondary-accent-color); - &:hover, &:focus { - background-color: @color-accent3-light1; + &:hover { + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } .icon { @@ -92,16 +94,16 @@ width: 2rem; height: 2rem; margin-right: 1rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { flex: 0 1 auto; font-size: 1.5rem; - font-weight: 500; + font-weight: 700; max-height: 3.6em; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js index 83323445f..59607711e 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js @@ -4,7 +4,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { t } = require('i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button, Multiselect } = require('stremio/common'); const SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder'); const styles = require('./styles'); @@ -49,7 +49,7 @@ const SeasonsBar = ({ className, seasons, season, onSelect }) => { return (
{ />
); diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js index 19c1eefc2..d767769ec 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js @@ -3,23 +3,23 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const styles = require('./styles'); 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 0f1a5afd4..711d1ab42 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less @@ -12,7 +12,7 @@ flex-direction: row; align-items: center; width: 6.5rem; - height: 3.5rem; + height: 3rem; padding: 0.5rem; &>:first-child { @@ -24,7 +24,7 @@ display: block; width: 1.5rem; height: 1.5rem; - fill: var(--color-placeholder-background); + color: var(--color-placeholder-background); } .label { @@ -54,7 +54,7 @@ width: 1rem; height: 1rem; margin-left: 1rem; - fill: var(--color-placeholder-background); + color: var(--color-placeholder-background); } } } \ No newline at end of file diff --git a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less index 42326acfc..7e58c7ec8 100644 --- a/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less +++ b/src/routes/MetaDetails/VideosList/SeasonsBar/styles.less @@ -13,6 +13,8 @@ display: flex; flex-direction: row; justify-content: space-between; + align-items: center; + padding: 1rem; overflow: visible; .prev-season-button, .next-season-button { @@ -21,21 +23,16 @@ flex-direction: row; align-items: center; width: 6.5rem; - height: 3.5rem; + height: 3rem; + border-radius: 3rem; padding: 0.5rem; &:hover, &:focus { - .label { - color: @color-surface-light2-90; - } - - .icon { - fill: @color-surface-light2-90; - } + background-color: var(--overlay-color); } &:focus { - background-color: @color-surface-light5-10; + background-color: var(--primary-foreground-color); } &>:first-child { @@ -47,32 +44,31 @@ max-height: 1.2em; font-weight: 500; text-align: center; - color: @color-surface-90; + color: var(--primary-foreground-color); } .icon { flex: none; width: 1.5rem; height: 1.5rem; - fill: @color-surface-90; + color: var(--primary-foreground-color); } } .seasons-popup-label-container { flex: 0 1 auto; - height: 3.5rem; background: none; &:hover, &:focus, &:global(.active) { - background-color: @color-background; + background-color: var(--overlay-color); } &>.multiselect-label { - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } &>.multiselect-icon { - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .multiselect-menu-container { @@ -84,7 +80,7 @@ @media only screen and (max-width: @minimum) { .seasons-bar-container { - padding-top: 0; + height: 6rem; .seasons-popup-label-container { .multiselect-menu-container { diff --git a/src/routes/MetaDetails/VideosList/Video/Video.js b/src/routes/MetaDetails/VideosList/Video/Video.js index aae6dab07..befcbfd3c 100644 --- a/src/routes/MetaDetails/VideosList/Video/Video.js +++ b/src/routes/MetaDetails/VideosList/Video/Video.js @@ -6,7 +6,7 @@ const classnames = require('classnames'); const { t } = require('i18next'); const { useServices } = require('stremio/services'); const { useRouteFocused } = require('stremio-router'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button, Image, Popup, useBinaryState } = require('stremio/common'); const VideoPlaceholder = require('./VideoPlaceholder'); const styles = require('./styles'); @@ -81,7 +81,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w renderFallback={() => ( )} /> @@ -120,6 +120,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w { watched ?
+
Watched
: diff --git a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less index 27fd51e34..8f6070c8a 100644 --- a/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less +++ b/src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less @@ -17,11 +17,13 @@ .name-container { width: 80%; height: 1.2rem; + border-radius: var(--border-radius); background: var(--color-placeholder-background); } .released-container { height: 1rem; + border-radius: var(--border-radius); background: var(--color-placeholder-background); } } diff --git a/src/routes/MetaDetails/VideosList/Video/styles.less b/src/routes/MetaDetails/VideosList/Video/styles.less index 0c63b960d..84e459d4d 100644 --- a/src/routes/MetaDetails/VideosList/Video/styles.less +++ b/src/routes/MetaDetails/VideosList/Video/styles.less @@ -15,34 +15,41 @@ display: flex; flex-direction: row; flex-wrap: wrap; - padding: 0.5rem 1rem; + align-items: center; + padding: 0.5rem; + margin-bottom: 0.5rem; + border-radius: var(--border-radius); &:hover, &:focus, &:global(.active) { - background-color: @color-background; + background-color: var(--overlay-color); } .thumbnail-container { flex: none; + position: relative; + border-radius: var(--border-radius); + overflow: hidden; .thumbnail { pointer-events: none; display: block; - width: 7.5rem; height: 5rem; - object-fit: contain; + width: 8rem; + object-fit: cover; object-position: center; opacity: 0.9; + background-color: var(--overlay-color); } .placeholder-icon { display: block; - width: 7.5rem; height: 5rem; + width: 8rem; padding: 1rem; - fill: @color-surface-light5; - background-color: @color-surface-light5-40; + color: var(--primary-foreground-color); + background-color: var(--overlay-color); opacity: 0.25; } } @@ -52,20 +59,15 @@ align-self: stretch; display: flex; flex-direction: column; - justify-content: space-between; - margin: 0.5rem 1rem; - - &:first-child { - height: 3rem; - - .title-container { - max-height: 1.2em; - } - } + justify-content: center; + padding: 0 0.5rem 0 1.5rem; .title-container { - max-height: 2.4em; - color: @color-surface-light5-90; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + margin-bottom: 1rem; + color: var(--primary-foreground-color); } .flex-row-container { @@ -83,13 +85,16 @@ white-space: nowrap; text-overflow: ellipsis; text-transform: uppercase; - color: @color-surface-dark5-90; + color: var(--primary-foreground-color); } .upcoming-watched-container { flex: 0 1 auto; display: flex; flex-direction: row; + align-items: center; + height: 1.6rem; + border-radius: 0.3rem; &>:nth-child(2) { margin-left: 0.5rem; @@ -98,29 +103,39 @@ .upcoming-container, .watched-container { flex: none; - padding: 0.2rem 0.4rem; + display: flex; + align-items: center; + height: 100%; + padding: 0 0.5rem; max-width: 10rem; &:not(:only-child) { max-width: 5rem; } + .flag-icon { + height: 1.15rem; + width: 1.15rem; + margin-right: 0.25rem; + color: var(--secondary-foreground-color); + } + .flag-label { font-size: 0.8rem; - font-weight: 500; + font-weight: 800; white-space: nowrap; text-overflow: ellipsis; text-transform: uppercase; - color: @color-background-90; + color: var(--secondary-foreground-color); } } .upcoming-container { - background-color: @color-accent4; + background-color: var(--secondary-accent-color); } .watched-container { - background-color: @color-accent5; + background-color: var(--tertiary-accent-color); } } } @@ -128,11 +143,11 @@ .progress-bar-container { flex: 0 0 100%; - background-color: @color-background-light2; + background-color: var(--primary-accent-color); .progress-bar { height: 0.5rem; - background-color: @color-primaryvariant1; + background-color: var(--primary-foreground-color); } } @@ -141,23 +156,22 @@ .context-menu-content { --spatial-navigation-contain: contain; - background-color: @color-background-dark1; .context-menu-option-container { display: flex; flex-direction: row; align-items: center; - padding: 0.5rem 1rem; + padding: 1rem 1.5rem; &:hover, &:focus { - background-color: @color-background; + background-color: var(--overlay-color); } .context-menu-option-label { font-size: 1rem; - max-height: 2.4em; - color: @color-surface-light5-90; + font-weight: 500; + color:var(--primary-foreground-color); } } } @@ -166,15 +180,7 @@ @media only screen and (max-width: @minimum) { .video-container { - - &:hover, - &:focus, - &:global(.active) { - background-color: @color-surface-light5-20; - } - .context-menu-container { - &.menu-direction-top-left, &.menu-direction-bottom-left { right: 1.5rem; diff --git a/src/routes/MetaDetails/VideosList/styles.less b/src/routes/MetaDetails/VideosList/styles.less index 103d8c139..3ef1ae2eb 100644 --- a/src/routes/MetaDetails/VideosList/styles.less +++ b/src/routes/MetaDetails/VideosList/styles.less @@ -32,7 +32,7 @@ flex: none; font-size: 1.4rem; text-align: center; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } @@ -67,6 +67,7 @@ .videos-container { flex: 1; align-self: stretch; + padding: 0 1rem; overflow-y: auto; } } diff --git a/src/routes/MetaDetails/styles.less b/src/routes/MetaDetails/styles.less index a906c7a99..e609b4bb4 100644 --- a/src/routes/MetaDetails/styles.less +++ b/src/routes/MetaDetails/styles.less @@ -17,9 +17,9 @@ flex-direction: column; width: 100%; height: 100%; - background-color: @color-background-dark2; .nav-bar { + z-index: 1; flex: none; align-self: stretch; } @@ -38,23 +38,13 @@ } .background-image-layer { - position: absolute; + position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; - - &::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - background: @color-background-dark2-70; - content: ""; - } + background-color: var(--modal-background-color); .background-image { pointer-events: none; @@ -63,7 +53,7 @@ height: 100%; object-fit: cover; object-position: top left; - opacity: 0.9; + opacity: 0.3; } } @@ -91,13 +81,14 @@ align-self: stretch; font-size: 2rem; text-align: center; - color: @color-secondaryvariant2-light1-90; + color: var(--primary-foreground-color); } } .meta-preview { - flex: 0 1 40rem; + flex: 0 1 auto; align-self: stretch; + padding: 0 4rem 2rem 4rem; } .spacing { @@ -105,9 +96,11 @@ } .videos-list, .streams-list { - flex: 0 0 26.5rem; + flex: 0 0 28rem; align-self: stretch; - background-color: @color-background-dark5-70; + border-radius: var(--border-radius) 0 0 var(--border-radius); + background-color: rgba(0, 0, 0, 0.4); + backdrop-filter: blur(15px); } } } @@ -130,25 +123,20 @@ @media only screen and (max-width: @minimum) { .metadetails-container { - position: relative; - z-index: 0; - .metadetails-content { display: block; - position: static; - z-index: initial; overflow-y: auto; .spacing { display: none; } - .background-image-layer { - top: var(--horizontal-nav-bar-size); + .meta-preview { + padding: 0 1.5rem 2rem; } .videos-list, .streams-list { - background-color: transparent; + border-radius: var(--border-radius) var(--border-radius) 0 0; } } } diff --git a/src/routes/MetaDetails/useMetaExtensionTabs.js b/src/routes/MetaDetails/useMetaExtensionTabs.js index b5b954700..c4ca2f10e 100644 --- a/src/routes/MetaDetails/useMetaExtensionTabs.js +++ b/src/routes/MetaDetails/useMetaExtensionTabs.js @@ -9,7 +9,7 @@ const useMetaExtensionTabs = (metaExtensions) => { id: extension.url, label: extension.addon.manifest.name, logo: extension.addon.manifest.logo, - icon: 'ic_addons', + icon: 'addons', onClick: () => setSelected(extension) })); }, [metaExtensions]); diff --git a/src/routes/NotFound/styles.less b/src/routes/NotFound/styles.less index 6b28f7cba..ce002bcca 100644 --- a/src/routes/NotFound/styles.less +++ b/src/routes/NotFound/styles.less @@ -7,7 +7,7 @@ flex-direction: column; width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .nav-bar { flex: none; diff --git a/src/routes/Player/BufferingLoader/styles.less b/src/routes/Player/BufferingLoader/styles.less index 400130737..5b60eee14 100644 --- a/src/routes/Player/BufferingLoader/styles.less +++ b/src/routes/Player/BufferingLoader/styles.less @@ -7,7 +7,7 @@ .buffering-loader { flex: none; - width: 17rem; - height: 17rem; + width: 10rem; + height: 10rem; } } \ No newline at end of file diff --git a/src/routes/Player/ControlBar/ControlBar.js b/src/routes/Player/ControlBar/ControlBar.js index 8d0c0364b..01e97f982 100644 --- a/src/routes/Player/ControlBar/ControlBar.js +++ b/src/routes/Player/ControlBar/ControlBar.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button } = require('stremio/common'); const { useServices } = require('stremio/services'); const SeekBar = require('./SeekBar'); @@ -146,12 +146,12 @@ const ControlBar = ({ />
{ nextVideo !== null ? : null @@ -159,12 +159,12 @@ const ControlBar = ({ @@ -175,34 +175,34 @@ const ControlBar = ({ />
{ metaItem?.content?.videos?.length > 0 ? : null }
diff --git a/src/routes/Player/ControlBar/SeekBar/styles.less b/src/routes/Player/ControlBar/SeekBar/styles.less index 456421abb..50abb455b 100644 --- a/src/routes/Player/ControlBar/SeekBar/styles.less +++ b/src/routes/Player/ControlBar/SeekBar/styles.less @@ -12,34 +12,14 @@ flex-direction: row; align-items: center; - &:hover, &:global(.active) { - .slider:not(:global(.disabled)) { - .slider-thumb { - fill: @color-surface-light5; - } - } - } - - &:hover { - .slider:not(:global(.disabled)) { - .slider-track-after { - transition: background-color 0s 100ms; - } - - .slider-thumb { - transition: fill 0s 100ms; - } - } - } - .label { flex: none; - max-width: 5rem; + width: 5rem; white-space: nowrap; text-overflow: ellipsis; direction: rtl; - text-align: left; - color: @color-surface-light5; + text-align: center; + color: var(--primary-foreground-color); } .slider { @@ -47,8 +27,12 @@ align-self: stretch; margin: 0 var(--thumb-size); + .slider-track-after { + background-color: var(--primary-accent-color); + } + .slider-thumb { - fill: transparent; + fill: var(--primary-accent-color); } } } \ No newline at end of file diff --git a/src/routes/Player/ControlBar/VolumeSlider/styles.less b/src/routes/Player/ControlBar/VolumeSlider/styles.less index b215198cc..98ec07142 100644 --- a/src/routes/Player/ControlBar/VolumeSlider/styles.less +++ b/src/routes/Player/ControlBar/VolumeSlider/styles.less @@ -9,16 +9,16 @@ .volume-slider:not(:global(.disabled)) { .slider-track { - background-color: @color-surface-dark5; + background-color: var(--overlay-color); } .slider-track-after { - background-color: @color-surface-light3; + background-color: var(--primary-foreground-color); } &:hover, &:global(.active) { .slider-track-after { - background-color: @color-surface-light5; + background-color: var(--primary-foreground-color); } } } \ No newline at end of file diff --git a/src/routes/Player/ControlBar/styles.less b/src/routes/Player/ControlBar/styles.less index efc08c02e..147a3f0a2 100644 --- a/src/routes/Player/ControlBar/styles.less +++ b/src/routes/Player/ControlBar/styles.less @@ -8,7 +8,7 @@ .seek-bar { --track-size: 0.5rem; - --thumb-size: 1.5rem; + --thumb-size: 1.3rem; height: 2.5rem; } @@ -21,31 +21,30 @@ .control-bar-button { flex: none; width: 4rem; - height: 4rem; + height: 5rem; display: flex; justify-content: center; align-items: center; &:global(.disabled) { .icon { - fill: @color-surface; + opacity: 0.5; } } .icon { flex: none; - width: 3rem; - height: 2rem; - fill: @color-surface-light5; + width: 2.5rem; + height: 2.5rem; + color: var(--primary-foreground-color); } } .volume-slider { - --track-size: 0.4rem; - --thumb-size: 1.3rem; + --track-size: 0.35rem; + --thumb-size: 1rem; - flex: 0 1 16rem; - min-width: 10rem; + flex: 0 1 10rem; height: 4rem; margin: 0 1rem; } @@ -64,9 +63,9 @@ .icon { flex: none; - width: 3rem; - height: 2rem; - fill: @color-surface-light5; + width: 2.5rem; + height: 2.5rem; + color: var(--primary-foreground-color); } } @@ -105,7 +104,8 @@ bottom: 4.5rem; flex-direction: column; padding: 0.5rem; - background-color: @color-background-dark1; + border-radius: var(--border-radius); + background-color: var(--modal-background-color); box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40, 0 1.1rem 0.85rem @color-background-dark5-20; diff --git a/src/routes/Player/InfoMenu/styles.less b/src/routes/Player/InfoMenu/styles.less index 7b0520349..32a72b77d 100644 --- a/src/routes/Player/InfoMenu/styles.less +++ b/src/routes/Player/InfoMenu/styles.less @@ -2,6 +2,7 @@ .info-menu-container { width: 30rem; + padding: 2rem; .stream { pointer-events: none; diff --git a/src/routes/Player/NextVideoPopup/NextVideoPopup.js b/src/routes/Player/NextVideoPopup/NextVideoPopup.js index 33eb3f73d..2b38d5a67 100644 --- a/src/routes/Player/NextVideoPopup/NextVideoPopup.js +++ b/src/routes/Player/NextVideoPopup/NextVideoPopup.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Image, Button, CONSTANTS } = require('stremio/common'); const styles = require('./styles'); @@ -26,7 +26,7 @@ const NextVideoPopup = ({ className, metaItem, nextVideo, onDismiss, onPlayNextV return metaItem !== null && typeof metaItem.type === 'string' ? : null; @@ -78,11 +78,11 @@ const NextVideoPopup = ({ className, metaItem, nextVideo, onDismiss, onPlayNextV
diff --git a/src/routes/Player/NextVideoPopup/styles.less b/src/routes/Player/NextVideoPopup/styles.less index a55381cd7..91709fed0 100644 --- a/src/routes/Player/NextVideoPopup/styles.less +++ b/src/routes/Player/NextVideoPopup/styles.less @@ -26,7 +26,7 @@ display: flex; justify-content: center; align-items: center; - background-color: @color-background; + background-color: var(--overlay-color); .poster-image { flex: none; @@ -40,7 +40,7 @@ flex: none; width: 80%; height: 50%; - fill: @color-background-light3-90; + color: var(--primary-foreground-color); } } @@ -57,13 +57,14 @@ flex: none; align-self: stretch; max-height: 2.4em; - font-weight: 600; + font-weight: 700; margin-bottom: 0.5rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .description { - color: @color-surface-light5-50; + color: var(--primary-foreground-color); + opacity: 0.5; } } @@ -84,18 +85,20 @@ height: 3.5rem; &.play-button { - background-color: @color-accent3; + border-radius: 0 0 var(--border-radius) 0; + background-color: var(--secondary-accent-color); .icon { - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } - &:hover, &:focus { - background-color: @color-accent3-light1; + &:hover { + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } } @@ -104,7 +107,7 @@ width: 1.4rem; height: 1.4rem; margin-right: 1rem; - fill: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } .label { @@ -112,11 +115,11 @@ max-height: 2.4em; font-size: 1.1rem; font-weight: 500; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } &:hover, &:focus { - background-color: @color-background-light2; + background-color: var(--overlay-color); } } } diff --git a/src/routes/Player/OptionsMenu/Option/Option.js b/src/routes/Player/OptionsMenu/Option/Option.js index 63e38cd68..f769fb476 100644 --- a/src/routes/Player/OptionsMenu/Option/Option.js +++ b/src/routes/Player/OptionsMenu/Option/Option.js @@ -3,7 +3,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Button } = require('stremio/common'); const styles = require('./styles'); @@ -15,7 +15,7 @@ const Option = ({ icon, label, deviceId, disabled, onClick }) => { }, [onClick, deviceId]); return ( ); diff --git a/src/routes/Player/OptionsMenu/Option/styles.less b/src/routes/Player/OptionsMenu/Option/styles.less index 499c4b4bc..88193d0ac 100644 --- a/src/routes/Player/OptionsMenu/Option/styles.less +++ b/src/routes/Player/OptionsMenu/Option/styles.less @@ -6,25 +6,32 @@ display: flex; flex-direction: row; align-items: center; - height: 4rem; + height: 3.5rem; + border-radius: var(--border-radius); + padding: 0 1rem; + margin-bottom: 0.5rem; + + &:last-child { + margin-bottom: 0; + } .icon { flex: none; width: 1.4rem; height: 1.4rem; - margin: 1.3rem; - fill: @color-surface-light5-90; + margin-right: 1rem; + color: var(--primary-foreground-color); } .label { flex: 1; max-height: 2.4em; font-weight: 400; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } &:hover { - background-color: @color-background-light2; + background-color: var(--overlay-color); } &:global(.disabled) { diff --git a/src/routes/Player/OptionsMenu/OptionsMenu.js b/src/routes/Player/OptionsMenu/OptionsMenu.js index a71ea3d96..6c50e1551 100644 --- a/src/routes/Player/OptionsMenu/OptionsMenu.js +++ b/src/routes/Player/OptionsMenu/OptionsMenu.js @@ -73,7 +73,7 @@ const OptionsMenu = ({ className, stream, playbackDevices }) => { { streamingUrl || downloadUrl ?
diff --git a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less index 2171ed591..2ceb41f80 100644 --- a/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less +++ b/src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less @@ -5,7 +5,7 @@ .discrete-input-container { &:global(.disabled) { .header { - color: @color-surface-90; + color: var(--primary-foreground-color); } .input-container { @@ -14,38 +14,39 @@ } .header { - max-height: 2.4em; margin-bottom: 0.5rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); + opacity: 0.6; } .input-container { display: flex; flex-direction: row; align-items: center; - background: @color-background; + border-radius: 3.5rem; + background: var(--overlay-color); .button-container { flex: none; - width: 3rem; - height: 3rem; + width: 3.5rem; + height: 3.5rem; padding: 1rem; - background-color: @color-background-light2; + border-radius: 100%; + background-color: var(--overlay-color); .icon { display: block; width: 100%; height: 100%; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } } .option-label { flex: 1; - max-height: 2.4em; font-weight: 500; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } \ No newline at end of file diff --git a/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js b/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js index bea30105e..0130c58e2 100644 --- a/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js +++ b/src/routes/Player/SubtitlesMenu/SubtitlesMenu.js @@ -277,8 +277,6 @@ const SubtitlesMenu = React.memo((props) => { } onChange={onSubtitlesOffsetChanged} /> -
-
); diff --git a/src/routes/Player/SubtitlesMenu/styles.less b/src/routes/Player/SubtitlesMenu/styles.less index b6e424740..3f397b068 100644 --- a/src/routes/Player/SubtitlesMenu/styles.less +++ b/src/routes/Player/SubtitlesMenu/styles.less @@ -3,7 +3,7 @@ @import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; .subtitles-menu-container { - height: 23rem; + height: 25rem; display: flex; flex-direction: row; @@ -16,32 +16,35 @@ .languages-header, .variants-header, .settings-header { flex: none; align-self: stretch; - max-height: 2.4em; - margin: 1rem; - font-weight: 600; - color: @color-surface-light5-90; + padding: 1.5rem 2rem; + font-weight: 700; + color: var(--primary-foreground-color); } .languages-list, .variants-list { flex: 1; align-self: stretch; overflow-y: auto; + padding: 0 1rem; .language-option, .variant-option { display: flex; flex-direction: row; align-items: center; - padding: 1rem 1.5rem; + height: 3.5rem; + padding: 0 1.5rem; + margin-bottom: 0.5rem; + border-radius: var(--border-radius); &:global(.selected), &:hover { - background-color: @color-background; + background-color: var(--overlay-color); } .language-label, .variant-label { flex: 1; max-height: 2.4em; font-size: 1.1rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .icon { @@ -50,18 +53,18 @@ height: 0.5rem; border-radius: 100%; margin-left: 1rem; - background-color: @color-accent3-90; + background-color: var(--secondary-accent-color); } } } } .languages-container { - width: 12rem; + width: 16rem; } .variants-container { - width: 12rem; + width: 16rem; .no-variants-container { flex: 1; @@ -71,38 +74,20 @@ .no-variants-label { max-height: 4.8em; font-weight: 500; - color: @color-surface-90; + color: var(--primary-foreground-color); } } } .subtitles-settings-container { - width: 16rem; + width: 17rem; .spacing { flex: 1; } .discrete-input { - margin: 0 1.5rem 1rem; - } - - .advanced-button { - flex: none; - align-self: flex-end; - max-width: calc(100% - 3rem); - margin: 0 1.5rem 1rem; - white-space: nowrap; - text-overflow: ellipsis; - color: @color-surface-light5-90; - - &:hover { - text-decoration: underline; - } - - &:global(.disabled) { - color: @color-surface-90; - } + padding: 0 1.5rem 1rem; } } } \ No newline at end of file diff --git a/src/routes/Player/VideosMenu/styles.less b/src/routes/Player/VideosMenu/styles.less index 80912dd33..8cc7e4805 100644 --- a/src/routes/Player/VideosMenu/styles.less +++ b/src/routes/Player/VideosMenu/styles.less @@ -2,4 +2,6 @@ .videos-menu-container { width: 30rem; + padding: 1rem; + padding-bottom: 0; } \ No newline at end of file diff --git a/src/routes/Player/styles.less b/src/routes/Player/styles.less index 284761937..01b6a05ae 100644 --- a/src/routes/Player/styles.less +++ b/src/routes/Player/styles.less @@ -12,6 +12,8 @@ nav-bar-icon: icon; } +@background-color: rgba(0, 0, 0, 1); + html:not(.active-slider-within) { .player-container.immersed { cursor: none; @@ -28,7 +30,7 @@ html:not(.active-slider-within) { z-index: 0; width: 100%; height: 100%; - background-color: @color-background-dark5; + background-color: @background-color; .layer { position: absolute; @@ -43,14 +45,14 @@ html:not(.active-slider-within) { flex-direction: column; align-items: center; justify-content: center; - background-color: @color-background-dark5; + background-color: @background-color; .error-label { flex: 0 1 auto; padding: 0 8rem; max-height: 4.8em; font-size: 2rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); text-align: center; } @@ -60,7 +62,7 @@ html:not(.active-slider-within) { max-height: 4.8em; font-size: 1.3rem; margin-top: 0.8rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); text-align: center; } @@ -70,13 +72,14 @@ html:not(.active-slider-within) { flex-direction: row; align-items: center; height: 3.5rem; - max-width: 16rem; + border-radius: 3.5rem; margin-top: 1.5rem; - padding: 0.5rem 1rem; - background-color: @color-accent3; + padding: 0 2rem; + background-color: var(--secondary-accent-color); - &:hover, &:focus { - background-color: @color-accent3-light1; + &:hover { + outline: var(--focus-outline-size) solid var(--secondary-accent-color); + background-color: transparent; } .icon { @@ -84,7 +87,7 @@ html:not(.active-slider-within) { width: 1.5rem; height: 1.5rem; margin-right: 1rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { @@ -92,7 +95,7 @@ html:not(.active-slider-within) { max-height: 2.4em; font-size: 1.1rem; font-weight: 500; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); text-align: center; } } @@ -119,12 +122,12 @@ html:not(.active-slider-within) { } .nav-bar-icon { - fill: @color-surface-light5; + color: var(--primary-foreground-color); } } .nav-bar-title { - color: @color-surface-light5; + color: var(--primary-foreground-color); } } @@ -150,9 +153,11 @@ html:not(.active-slider-within) { bottom: 8rem; max-height: calc(100% - 13.5rem); max-width: calc(100% - 4rem); - background-color: @color-background-dark1; + border-radius: var(--border-radius); + background-color: var(--modal-background-color); box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40, 0 1.1rem 0.85rem @color-background-dark5-20; + backdrop-filter: blur(15px); overflow: auto; } } diff --git a/src/routes/Search/Search.js b/src/routes/Search/Search.js index ace0a1f95..b6996258b 100644 --- a/src/routes/Search/Search.js +++ b/src/routes/Search/Search.js @@ -5,7 +5,7 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const debounce = require('lodash.debounce'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { Image, MainNavBars, MetaRow, MetaItem, withCoreSuspender, getVisibleChildrenRange } = require('stremio/common'); const useSearch = require('./useSearch'); const styles = require('./styles'); @@ -51,11 +51,11 @@ const Search = ({ queryParams }) => { query === null ?
- +
{ t('SEARCH_EXPLANATION_CONTENT') }
- +
{ t('SEARCH_EXPLANATION_PEOPLE') }
diff --git a/src/routes/Search/styles.less b/src/routes/Search/styles.less index aef6a1ec9..6ee49d356 100644 --- a/src/routes/Search/styles.less +++ b/src/routes/Search/styles.less @@ -14,7 +14,7 @@ .search-container { width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .search-content { width: 100%; @@ -48,7 +48,7 @@ width: 6rem; height: 6rem; margin-bottom: 2rem; - fill: @color-surface-light5-90; + color: @color-surface-light5-90; } .label { diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js index cd3c8bab1..2a2fdf721 100644 --- a/src/routes/Settings/Settings.js +++ b/src/routes/Settings/Settings.js @@ -4,7 +4,7 @@ const React = require('react'); const classnames = require('classnames'); const throttle = require('lodash.throttle'); const { useTranslation } = require('react-i18next'); -const Icon = require('@stremio/stremio-icons/dom'); +const { default: Icon } = require('@stremio/stremio-icons/react'); const { useRouteFocused } = require('stremio-router'); const { useServices } = require('stremio/services'); const { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, ModalDialog, useProfile, useStreamingServer, useBinaryState, withCoreSuspender, useToast } = require('stremio/common'); @@ -201,34 +201,35 @@ const Settings = () => {
-
{ t('SETTINGS_NAV_GENERAL') }
-
+
-
-
-
- {profile.auth === null ? 'Anonymous user' : profile.auth.user.email} + profile.auth.user.avatar ? + `url('${profile.auth.user.avatar}')` + : + `url('${require('/images/default_avatar.png')}')` + }} + /> +
+
+
+ {profile.auth === null ? 'Anonymous user' : profile.auth.user.email} +
+ { + profile.auth !== null ? + + : + null + }
- { - profile.auth !== null ? - - : - null - }
@@ -451,7 +452,7 @@ const Settings = () => {
{streamingServerUrlInput.value}
diff --git a/src/routes/Settings/styles.less b/src/routes/Settings/styles.less index 0373ba656..5ba96d442 100644 --- a/src/routes/Settings/styles.less +++ b/src/routes/Settings/styles.less @@ -20,7 +20,7 @@ .settings-container { width: 100%; height: 100%; - background-color: @color-background-dark2; + background-color: transparent; .settings-content { width: 100%; @@ -33,23 +33,32 @@ align-self: stretch; display: flex; flex-direction: column; - width: 20rem; - padding: 3rem; + width: 18rem; + padding: 3rem 1.5rem; .side-menu-button { flex: none; align-self: stretch; - padding: 1rem; + display: flex; + align-items: center; + height: 4rem; + border-radius: 4rem; + padding: 2rem; + margin-bottom: 0.5rem; font-size: 1.1rem; - color: @color-secondaryvariant1-90; + font-weight: 500; + color: var(--primary-foreground-color); + opacity: 0.4; &.selected { - background-color: @color-background; - color: @color-surface-light5-90; + font-weight: 600; + color: var(--primary-foreground-color); + background-color: var(--overlay-color); + opacity: 1; } &:hover { - background-color: @color-background-light1; + background-color: var(--overlay-color); } } @@ -60,14 +69,14 @@ .version-info-label { flex: 0 1 auto; margin: 0.5rem 0; - color: @color-secondaryvariant1-90; + color: var(--overlay-color); } } .sections-container { flex: 1; align-self: stretch; - padding: 0 2rem; + padding: 0 3rem; overflow-y: auto; .section-container { @@ -77,7 +86,7 @@ overflow: visible; &:not(:last-child) { - border-bottom: thin solid @color-secondaryvariant1-90; + border-bottom: thin solid var(--overlay-color); } .section-title { @@ -86,7 +95,7 @@ font-size: 1.8rem; line-height: 3.4rem; margin-bottom: 1rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } .option-container { @@ -104,62 +113,63 @@ } &.user-info-option-container { - height: 6rem; + gap: 1rem; - .avatar-container { - flex: none; - align-self: stretch; - width: 6rem; - margin-right: 1rem; - border-radius: 50%; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - background-origin: content-box; - background-clip: content-box; - opacity: 0.9; - } - - .email-logout-container { + .user-info-content { flex: 1; - align-self: stretch; display: flex; - flex-direction: column; - padding: 1rem 0; + flex-direction: row; + align-items: center; - .email-label-container, .logout-button-container { + .avatar-container { + flex: none; + align-self: stretch; + height: 5rem; + width: 5rem; + margin-right: 1rem; + border-radius: 50%; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + background-origin: content-box; + background-clip: content-box; + opacity: 0.9; + background-color: var(--primary-foreground-color); + } + + .email-logout-container { + flex: none; display: flex; - flex-direction: row; - align-items: center; - } + flex-direction: column; - .email-label-container { - flex: 1 0 auto; - - .email-label { - flex: 1; - font-size: 1.1rem; - max-height: 2.4em; - color: @color-surface-light5-90; + .email-label-container, .logout-button-container { + display: flex; + flex-direction: row; + align-items: center; } - } - .logout-button-container { - flex: 0 1 50%; - - &:hover, &:focus { - outline: none; - - .logout-label { - color: @color-surface-light5-90; - text-decoration: underline; + .email-label-container { + .email-label { + flex: 1; + font-size: 1.1rem; + color: var(--primary-foreground-color); + opacity: 0.7; } } - .logout-label { - flex: 1; - max-height: 1.2em; - color: @color-surface-90; + .logout-button-container { + &:hover, &:focus { + outline: none; + + .logout-label { + text-decoration: underline; + } + } + + .logout-label { + flex: 1; + color: var(--primary-accent-color); + } } } } @@ -171,11 +181,12 @@ align-items: center; width: 10rem; height: 3.5rem; - margin-left: 1rem; - background-color: @color-accent3; + border-radius: 3.5rem; + background-color: var(--overlay-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + background-color: transparent; } .user-panel-label { @@ -184,7 +195,7 @@ padding: 0 0.5rem; font-weight: 500; text-align: center; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } @@ -200,7 +211,7 @@ width: 1.5rem; height: 1.5rem; margin-right: 0.5rem; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } .label { @@ -208,7 +219,7 @@ flex-shrink: 1; flex-basis: auto; line-height: 1.5rem; - color: @color-surface-light5-90; + color: var(--primary-foreground-color); } } @@ -219,14 +230,17 @@ } .option-input-container { - padding: 1rem; + padding: 1rem 1.5rem; &.button-container { justify-content: center; - background-color: @color-accent3; + height: 3.5rem; + border-radius: 3.5rem; + background-color: var(--overlay-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + background-color: transparent; } .label { @@ -249,6 +263,10 @@ &.link-container { flex: 0 1 auto; padding: 1rem 0; + + .label { + color: var(--primary-accent-color); + } &:hover { .label { @@ -296,14 +314,16 @@ flex: none; width: 3rem; height: 3rem; + border-radius: 100%; display: flex; flex-direction: row; align-items: center; justify-content: center; - background-color: @color-accent3; + background-color: var(--overlay-color); &:hover { - background-color: @color-accent3-light1; + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + background-color: transparent; } .icon { @@ -311,7 +331,7 @@ width: 1rem; height: 1rem; margin: 0; - fill: @color-surface-light5-90; + color: var(--primary-foreground-color); } } } @@ -328,16 +348,16 @@ line-height: 2.5rem; padding: 0 1rem; font-weight: 500; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); border-radius: 0.25em; - box-shadow: 0 4px 0 1px @color-background-40; - background-color: @color-background; + box-shadow: 0 4px 0 1px var(--modal-background-color); + background-color: var(--overlay-color); } .label { margin: 0 1rem; white-space: nowrap; - color: @color-secondaryvariant1-90; + color: var(--primary-foreground-color); } } } @@ -354,33 +374,47 @@ .server-url-input { width: 100%; padding: 1rem; - color: @color-surface-dark5; - outline: var(--focus-outline-size) solid @color-surface-light2; + color: var(--primary-foreground-color); + border-radius: var(--border-radius); + background-color: var(--overlay-color); + outline: var(--focus-outline-size) solid var(--overlay-color); outline-offset: calc(-1 * var(--focus-outline-size)); &:hover { - outline-color: @color-surface-light4; + outline-color: var(--primary-foreground-color); } &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } } } .cancel-button { background-color: transparent; + opacity: 0.3; &:hover { - background-color: @color-surface-light3; + outline: var(--focus-outline-size) solid var(--primary-foreground-color) inset; + opacity: 1; } &:focus { - outline-color: @color-background-dark5; + outline-color: var(--primary-foreground-color); } .cancel-button-label { - color: @color-surface-dark2; + color: var(--primary-foreground-color); + } + } +} + +@media only screen and (max-width: @xsmall) { + .settings-container { + .settings-content { + .side-menu-container { + display: none; + } } } } @@ -391,6 +425,7 @@ flex-direction: column-reverse; .side-menu-container { + display: flex; width: 100%; padding: 0 1rem; @@ -403,6 +438,21 @@ text-align: end; } } + + .sections-container { + padding: 0 1.5rem; + + .section-container { + .user-info-option-container { + flex-direction: column; + align-items: flex-start; + + .user-panel-container { + width: 100% !important; + } + } + } + } } } diff --git a/webpack.config.js b/webpack.config.js index b0430f9e5..100aad971 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -125,7 +125,7 @@ module.exports = (env, argv) => ({ } }, { - test: /\.(png|jpe?g)$/, + test: /\.(png|jpe?g|svg)$/, exclude: /node_modules/, type: 'asset/resource', generator: {