From 156a129cc437fc8c22011c1a9ed7529326bfd4da Mon Sep 17 00:00:00 2001
From: kKaskak <117831817+kKaskak@users.noreply.github.com>
Date: Wed, 13 Dec 2023 15:41:51 +0100
Subject: [PATCH] feature: seasonal notfication - no logic
---
.../SeasonalNotification.js | 34 +++++++
src/common/SeasonalNotification/styles.less | 99 +++++++++++++++++++
src/routes/Board/Board.js | 2 +
3 files changed, 135 insertions(+)
create mode 100644 src/common/SeasonalNotification/SeasonalNotification.js
create mode 100644 src/common/SeasonalNotification/styles.less
diff --git a/src/common/SeasonalNotification/SeasonalNotification.js b/src/common/SeasonalNotification/SeasonalNotification.js
new file mode 100644
index 000000000..7adf96fbb
--- /dev/null
+++ b/src/common/SeasonalNotification/SeasonalNotification.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2017-2023 Smart code 203358507
+
+const React = require('react');
+const styles = require('./styles');
+const { default: Icon } = require('@stremio/stremio-icons/react');
+const PropTypes = require('prop-types');
+const Button = require('../Button');
+
+const SeasonalNotification = ({ imgUrl, altUrl }) => {
+
+ return (
+
+

+
+
+
+
Ho! Ho! Ho! Are you ready for a Silent Cinema Night?
+
Get into the festive spirit with our Christmas movie collection – where holiday magic meets the screen!
+
+
+
+
+ );
+};
+
+module.exports = SeasonalNotification;
+
+SeasonalNotification.propTypes = {
+ imgUrl: PropTypes.string.isRequired,
+ altUrl: PropTypes.string.isRequired,
+};
+
diff --git a/src/common/SeasonalNotification/styles.less b/src/common/SeasonalNotification/styles.less
new file mode 100644
index 000000000..f1729837a
--- /dev/null
+++ b/src/common/SeasonalNotification/styles.less
@@ -0,0 +1,99 @@
+// Copyright (C) 2017-2023 Smart code 203358507
+
+@import (reference) '~stremio/common/screen-sizes.less';
+
+.wrapper {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ padding: 2rem 1rem;
+ z-index: 99;
+ transform: translate(-50%, -50%);
+ background-color: var(--modal-background-color);
+ border-radius: var(--border-radius);
+ width: 40rem;
+ height: 40rem;
+ box-shadow: var(--outer-glow);
+ overflow: visible;
+
+ .notification-image {
+ width: 95%;
+ height: 95%;
+ margin: -10rem auto 0;
+ }
+
+ .back-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 1rem;
+ width: 2rem;
+ height: 2rem;
+ cursor: pointer;
+ opacity: 0.5;
+ color: var(--primary-foreground-color);
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+
+ .info-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 1rem 4rem;
+ margin-top: -7rem;
+
+ .title-container {
+ .title {
+ color: var(--primary-foreground-color);
+ font-size: 1.325rem;
+ text-align: center;
+ margin-bottom: 2rem;
+ padding: 0 4rem;
+ }
+
+ .label {
+ color: var(--primary-foreground-color);
+ font-size: 1rem;
+ text-align: center;
+ opacity: 0.5;
+ margin-bottom: 3rem;
+ }
+ }
+
+
+ .action-button {
+ background-color: var(--secondary-accent-color);
+ border: 2px solid var(--secondary-accent-color);
+ padding: 0.8rem 1.5rem;
+ border-radius: 2rem;
+
+ .label {
+ color: var(--primary-foreground-color);
+ font-size: 1rem;
+ }
+
+ &:hover {
+ background-color: transparent;
+ }
+ }
+ }
+
+ @media only screen and (max-width: @xsmall) {
+ width: 35rem;
+ height: 35rem;
+ }
+ @media only screen and (max-width: @xxsmall) {
+ width: 25rem;
+ height: 35rem;
+
+ .notification-image {
+ width: 25rem;
+ height: 25rem;
+ object-fit: cover;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/routes/Board/Board.js b/src/routes/Board/Board.js
index 6e92beea5..06859126b 100644
--- a/src/routes/Board/Board.js
+++ b/src/routes/Board/Board.js
@@ -8,6 +8,7 @@ const { MainNavBars, MetaRow, ContinueWatchingItem, MetaItem, StreamingServerWar
const useBoard = require('./useBoard');
const useContinueWatchingPreview = require('./useContinueWatchingPreview');
const styles = require('./styles');
+const SeasonalNotification = require('stremio/common/SeasonalNotification/SeasonalNotification');
const THRESHOLD = 5;
@@ -38,6 +39,7 @@ const Board = () => {
}, [board.catalogs, onVisibleRangeChange]);
return (