diff --git a/package-lock.json b/package-lock.json
index 15a9be2f5..7bd2bd6ea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,20 +1,20 @@
{
"name": "stremio",
- "version": "5.0.0-beta.13",
+ "version": "5.0.0-beta.15",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "stremio",
- "version": "5.0.0-beta.13",
+ "version": "5.0.0-beta.15",
"license": "gpl-2.0",
"dependencies": {
"@babel/runtime": "7.26.0",
"@sentry/browser": "8.42.0",
"@stremio/stremio-colors": "5.2.0",
- "@stremio/stremio-core-web": "0.48.1",
- "@stremio/stremio-icons": "5.4.0",
- "@stremio/stremio-video": "0.0.46",
+ "@stremio/stremio-core-web": "0.48.3",
+ "@stremio/stremio-icons": "5.4.1",
+ "@stremio/stremio-video": "0.0.48",
"a-color-picker": "1.2.1",
"bowser": "2.11.0",
"buffer": "6.0.3",
@@ -67,6 +67,7 @@
"postcss-loader": "8.1.1",
"readdirp": "4.0.2",
"terser-webpack-plugin": "5.3.10",
+ "thread-loader": "^4.0.4",
"ts-loader": "^9.5.1",
"typescript": "^5.7.2",
"typescript-eslint": "^8.17.0",
@@ -1869,7 +1870,6 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
"integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
- "license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -1880,8 +1880,7 @@
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
"node_modules/@babel/template": {
"version": "7.25.9",
@@ -3261,7 +3260,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.42.0.tgz",
"integrity": "sha512-xzgRI0wglKYsPrna574w1t38aftuvo44gjOKFvPNGPnYfiW9y4m+64kUz3JFbtanvOrKPcaITpdYiB4DeJXEbA==",
- "license": "MIT",
"dependencies": {
"@sentry/core": "8.42.0"
},
@@ -3273,7 +3271,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.42.0.tgz",
"integrity": "sha512-dkIw5Wdukwzngg5gNJ0QcK48LyJaMAnBspqTqZ3ItR01STi6Z+6+/Bt5XgmrvDgRD+FNBinflc5zMmfdFXXhvw==",
- "license": "MIT",
"dependencies": {
"@sentry/core": "8.42.0"
},
@@ -3285,7 +3282,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.42.0.tgz",
"integrity": "sha512-oNcJEBlDfXnRFYC5Mxj5fairyZHNqlnU4g8kPuztB9G5zlsyLgWfPxzcn1ixVQunth2/WZRklDi4o1ZfyHww7w==",
- "license": "MIT",
"dependencies": {
"@sentry-internal/browser-utils": "8.42.0",
"@sentry/core": "8.42.0"
@@ -3298,7 +3294,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.42.0.tgz",
"integrity": "sha512-XrPErqVhPsPh/oFLVKvz7Wb+Fi2J1zCPLeZCxWqFuPWI2agRyLVu0KvqJyzSpSrRAEJC/XFzuSVILlYlXXSfgA==",
- "license": "MIT",
"dependencies": {
"@sentry-internal/replay": "8.42.0",
"@sentry/core": "8.42.0"
@@ -3311,7 +3306,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.42.0.tgz",
"integrity": "sha512-lStrEk609KJHwXfDrOgoYVVoFFExixHywxSExk7ZDtwj2YPv6r6Y1gogvgr7dAZj7jWzadHkxZ33l9EOSJBfug==",
- "license": "MIT",
"dependencies": {
"@sentry-internal/browser-utils": "8.42.0",
"@sentry-internal/feedback": "8.42.0",
@@ -3327,7 +3321,6 @@
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.42.0.tgz",
"integrity": "sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==",
- "license": "MIT",
"engines": {
"node": ">=14.18"
}
@@ -3375,13 +3368,12 @@
"node_modules/@stremio/stremio-colors": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@stremio/stremio-colors/-/stremio-colors-5.2.0.tgz",
- "integrity": "sha512-dYlPgu9W/H7c9s1zmW5tiDnRenaUa4Hg1QCyOg1lhOcgSfM/bVTi5nnqX+IfvGTTUNA0zgzh8hI3o3miwnZxTg==",
- "license": "MIT"
+ "integrity": "sha512-dYlPgu9W/H7c9s1zmW5tiDnRenaUa4Hg1QCyOg1lhOcgSfM/bVTi5nnqX+IfvGTTUNA0zgzh8hI3o3miwnZxTg=="
},
"node_modules/@stremio/stremio-core-web": {
- "version": "0.48.1",
- "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.48.1.tgz",
- "integrity": "sha512-bdWxBuuOOC0NdG1Mg60lEhpK7Bw/Ea6D89bRcvIvM3WnJrUpGA4jbx4xWj3KQRM08PM3WWCY9/FzctlWCxFMRg==",
+ "version": "0.48.3",
+ "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.48.3.tgz",
+ "integrity": "sha512-JL8pOLOEVACYG+33Dtp/mrB2/vuc7RoYZdxX1BQa5MPR8EzsODjpvL5uETmdxo/swgtMZyx2A6/e1B53eKA4oQ==",
"dependencies": {
"@babel/runtime": "7.24.1"
}
@@ -3405,9 +3397,9 @@
"license": "MIT"
},
"node_modules/@stremio/stremio-icons": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-5.4.0.tgz",
- "integrity": "sha512-rRWNER+wLgMjxd6sKT0MMq4lzXDOobY3GNdT3NDeeymBtB/CD0YmYqQuUOyYDjEZ1btIbNaniUOBoPW9d3ZQ8A==",
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/@stremio/stremio-icons/-/stremio-icons-5.4.1.tgz",
+ "integrity": "sha512-7g4JP7tPRT1UDZxbuH/Urq7fc6te3joy8qyx/NGWIW7wO169TTISO7ZWdejzESvUVgZ/7i6rzkRmXZ3wefWcBg==",
"workspaces": [
"react",
"react-native",
@@ -3416,9 +3408,10 @@
]
},
"node_modules/@stremio/stremio-video": {
- "version": "0.0.46",
- "resolved": "https://registry.npmjs.org/@stremio/stremio-video/-/stremio-video-0.0.46.tgz",
- "integrity": "sha512-U15CGB6CrUZKq3IKcEouAEH2RQoLy2+BI/hDStEYEACxlRlFaavKPI2opl37muh9TY089RnZVBYAM3yDidBZdg==",
+ "version": "0.0.48",
+ "resolved": "https://registry.npmjs.org/@stremio/stremio-video/-/stremio-video-0.0.48.tgz",
+ "integrity": "sha512-6ALGXCZC4NPsfhPcrwFWQzvH6UMMRsgSkHetnOhv9WmZ5ubiyUdbBzj9atGiGuuQz8pRcze66ztrub+dsaQbpw==",
+ "license": "MIT",
"dependencies": {
"buffer": "6.0.3",
"color": "4.2.3",
@@ -10161,6 +10154,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -13938,6 +13938,29 @@
"node": ">=0.2.6"
}
},
+ "node_modules/thread-loader": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-4.0.4.tgz",
+ "integrity": "sha512-tXagu6Hivd03wB2tiS1bqvw345sc7mKei32EgpYpq31ZLes9FN0mEK2nKzXLRFgwt3PsBB0E/MZDp159rDoqwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^4.1.0",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 16.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
diff --git a/package.json b/package.json
old mode 100755
new mode 100644
index f44b53702..d1709095e
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "stremio",
"displayName": "Stremio",
- "version": "5.0.0-beta.13",
+ "version": "5.0.0-beta.15",
"author": "Smart Code OOD",
"private": true,
"license": "gpl-2.0",
@@ -16,9 +16,9 @@
"@babel/runtime": "7.26.0",
"@sentry/browser": "8.42.0",
"@stremio/stremio-colors": "5.2.0",
- "@stremio/stremio-core-web": "0.48.1",
- "@stremio/stremio-icons": "5.4.0",
- "@stremio/stremio-video": "0.0.46",
+ "@stremio/stremio-core-web": "0.48.3",
+ "@stremio/stremio-icons": "5.4.1",
+ "@stremio/stremio-video": "0.0.48",
"a-color-picker": "1.2.1",
"bowser": "2.11.0",
"buffer": "6.0.3",
@@ -71,6 +71,7 @@
"postcss-loader": "8.1.1",
"readdirp": "4.0.2",
"terser-webpack-plugin": "5.3.10",
+ "thread-loader": "^4.0.4",
"ts-loader": "^9.5.1",
"typescript": "^5.7.2",
"typescript-eslint": "^8.17.0",
diff --git a/src/App/styles.less b/src/App/styles.less
index 6210a8bdf..edff6e66d 100644
--- a/src/App/styles.less
+++ b/src/App/styles.less
@@ -38,7 +38,7 @@
--quaternary-accent-color: rgba(18, 69, 166, 1);
--overlay-color: rgba(255, 255, 255, 0.05);
--modal-background-color: rgba(15, 13, 32, 1);
- --outer-glow: 0px 0px 30px rgba(123, 91, 245, 0.37);
+ --outer-glow: 0px 0px 15px rgba(123, 91, 245, 0.37);
--border-radius: 0.75rem;
}
@@ -112,7 +112,7 @@ html {
left: auto;
z-index: 1;
padding: 0 calc(0.5 * var(--horizontal-nav-bar-size));
- overflow-y: auto;
+ overflow: visible;
scrollbar-width: none;
pointer-events: none;
diff --git a/src/common/BottomSheet/BottomSheet.less b/src/common/BottomSheet/BottomSheet.less
index e0d756477..4ac68ead6 100644
--- a/src/common/BottomSheet/BottomSheet.less
+++ b/src/common/BottomSheet/BottomSheet.less
@@ -87,7 +87,13 @@
}
}
-@media only screen and (min-width: @xsmall) {
+@media only screen and (min-width: @small) and (orientation: portait) {
+ .bottom-sheet {
+ display: none;
+ }
+}
+
+@media only screen and (min-width: @xsmall) and (orientation: landscape) {
.bottom-sheet {
display: none;
}
diff --git a/src/common/Button/styles.less b/src/common/Button/styles.less
index 6a26b3b7f..6baf8b7aa 100644
--- a/src/common/Button/styles.less
+++ b/src/common/Button/styles.less
@@ -6,6 +6,7 @@
outline-width: var(--focus-outline-size);
outline-color: @color-surface-light5;
outline-offset: calc(-1 * var(--focus-outline-size));
+ -webkit-tap-highlight-color: transparent;
cursor: pointer;
&:focus {
diff --git a/src/common/ColorInput/styles.less b/src/common/ColorInput/styles.less
index 7ed494061..56bd1f601 100644
--- a/src/common/ColorInput/styles.less
+++ b/src/common/ColorInput/styles.less
@@ -17,7 +17,6 @@
align-items: center;
justify-content: center;
padding: 0 0.5rem;
- border: thin solid @color-surface-light5-20;
pointer-events: none;
.transparent-label {
diff --git a/src/common/EventModal/styles.less b/src/common/EventModal/styles.less
index 67cfabb34..b251175e5 100644
--- a/src/common/EventModal/styles.less
+++ b/src/common/EventModal/styles.less
@@ -19,26 +19,30 @@
flex-direction: column;
align-items: center;
overflow: visible;
+ position: relative;
- .modal-dialog-content {
+ .body-container {
overflow-y: visible;
}
-
+
.image {
- width: 100%;
- height: 100%;
- margin-top: -10rem;
+ position: absolute;
+ top: -10rem;
+ left: 50%;
+ transform: translateX(-50%);
+ object-fit: cover;
+ width: 30rem;
+ height: 30rem;
}
-
+
.info-container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 2.5rem;
- padding: 1rem 4rem;
- margin-top: -7rem;
-
+ padding: 10rem 4rem 0;
+
.title-container {
display: flex;
flex-direction: column;
@@ -50,7 +54,7 @@
text-align: center;
padding: 0 6rem;
}
-
+
.label {
color: var(--primary-foreground-color);
font-size: 1rem;
@@ -58,7 +62,7 @@
opacity: 0.5;
}
}
-
+
.addon-container {
display: flex;
align-items: center;
@@ -76,19 +80,19 @@
color: var(--primary-foreground-color);
}
}
-
+
.action-button {
background-color: var(--primary-foreground-color);
border: 2px solid var(--primary-foreground-color);
padding: 0.8rem 2rem;
border-radius: 2rem;
-
+
.button-label {
color: var(--primary-accent-color);
font-size: 1rem;
font-weight: 700;
}
-
+
&:hover {
background-color: transparent;
}
@@ -96,15 +100,34 @@
}
}
}
+}
- @media only screen and (max-width: @minimum) {
+@media (orientation: landscape) and (max-height: @minimum) {
+ .event-modal {
.modal-dialog-container {
.modal-dialog-content {
- .image {
- height: 125%;
- width: 125%;
+ overflow-y: auto;
+
+ .body-container {
+ overflow-y: auto;
}
+ .image {
+ display: none;
+ }
+
+ .info-container {
+ padding: 1rem 4rem 0;
+ }
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: @minimum) {
+ .event-modal {
+ .modal-dialog-container {
+ .modal-dialog-content {
.info-container {
.title-container {
.title {
@@ -120,4 +143,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/common/MainNavBars/MainNavBars.js b/src/common/MainNavBars/MainNavBars.js
index 3ccf200ec..6bcde9031 100644
--- a/src/common/MainNavBars/MainNavBars.js
+++ b/src/common/MainNavBars/MainNavBars.js
@@ -24,7 +24,6 @@ const MainNavBars = React.memo(({ className, route, query, children }) => {
query={query}
backButton={false}
searchBar={true}
- addonsButton={true}
fullscreenButton={true}
navMenu={true}
/>
diff --git a/src/common/MetaItem/styles.less b/src/common/MetaItem/styles.less
index c2d094ac9..17c7c4884 100644
--- a/src/common/MetaItem/styles.less
+++ b/src/common/MetaItem/styles.less
@@ -166,6 +166,7 @@
object-position: center;
object-fit: cover;
opacity: 0.9;
+ overflow-clip-margin: unset;
}
.placeholder-icon {
diff --git a/src/common/ModalDialog/styles.less b/src/common/ModalDialog/styles.less
index bde17932d..ce03cfa84 100644
--- a/src/common/ModalDialog/styles.less
+++ b/src/common/ModalDialog/styles.less
@@ -82,7 +82,7 @@
.body-container {
flex: 1;
align-self: stretch;
- overflow-y: auto;
+ overflow: visible;
padding: 2rem 0;
&:last-child {
diff --git a/src/common/Multiselect/styles.less b/src/common/Multiselect/styles.less
index b82fd06c5..cfb0c3234 100644
--- a/src/common/Multiselect/styles.less
+++ b/src/common/Multiselect/styles.less
@@ -7,6 +7,8 @@
popup-menu-container: menu-container;
}
+@parent-height: 10rem;
+
.label-container {
display: flex;
flex-direction: row;
@@ -48,6 +50,8 @@
.modal-container, .popup-menu-container {
.menu-container {
+ max-height: calc(3.2rem * 7);
+
.option-container {
display: flex;
flex-direction: row;
@@ -101,4 +105,12 @@
}
}
}
+}
+
+@media (orientation: landscape) and (max-width: @xsmall) {
+ .modal-container, .popup-menu-container {
+ .menu-container {
+ max-height: calc(100dvh - var(--horizontal-nav-bar-size) - @parent-height);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/common/MultiselectMenu/Dropdown/Dropdown.less b/src/common/MultiselectMenu/Dropdown/Dropdown.less
index 57840ca22..3bea17d22 100644
--- a/src/common/MultiselectMenu/Dropdown/Dropdown.less
+++ b/src/common/MultiselectMenu/Dropdown/Dropdown.less
@@ -2,6 +2,8 @@
@import (reference) '~stremio/common/screen-sizes.less';
+@parent-height: 10rem;
+
.dropdown {
background: var(--modal-background-color);
display: none;
@@ -16,7 +18,7 @@
&.open {
display: block;
- max-height: calc(3.2rem * 10);
+ max-height: calc(3.3rem * 7);
overflow: auto;
}
@@ -33,10 +35,10 @@
}
}
-@media only screen and (max-width: @minimum) {
+@media (orientation: landscape) and (max-width: @xsmall) {
.dropdown {
&.open {
- max-height: calc(3.2rem * 7);
+ max-height: calc(100dvh - var(--horizontal-nav-bar-size) - @parent-height);
}
}
}
\ No newline at end of file
diff --git a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js
index 7a992fb45..0df4e833f 100644
--- a/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js
+++ b/src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js
@@ -13,7 +13,7 @@ const NavMenu = require('./NavMenu');
const styles = require('./styles');
const { t } = require('i18next');
-const HorizontalNavBar = React.memo(({ className, route, query, title, backButton, searchBar, addonsButton, fullscreenButton, navMenu, ...props }) => {
+const HorizontalNavBar = React.memo(({ className, route, query, title, backButton, searchBar, fullscreenButton, navMenu, ...props }) => {
const backButtonOnClick = React.useCallback(() => {
window.history.back();
}, []);
@@ -54,14 +54,6 @@ const HorizontalNavBar = React.memo(({ className, route, query, title, backButto
null
}
- {
- addonsButton ?
-
- :
- null
- }
{
!isIOSPWA && fullscreenButton ?