diff --git a/lab5/package-lock.json b/lab5/package-lock.json
index 071be39..f82a5ce 100644
--- a/lab5/package-lock.json
+++ b/lab5/package-lock.json
@@ -1058,6 +1058,17 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
+ "node_modules/@types/node": {
+ "version": "20.11.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz",
+ "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "dev": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
"node_modules/@types/prop-types": {
"version": "15.7.9",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz",
@@ -5632,6 +5643,14 @@
"react": ">=15.0.0"
}
},
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
diff --git a/lab5/src/components/filmLogo/FilmLogo.css b/lab5/src/components/filmLogo/FilmLogo.css
index 5622628..cf7c428 100644
--- a/lab5/src/components/filmLogo/FilmLogo.css
+++ b/lab5/src/components/filmLogo/FilmLogo.css
@@ -2,4 +2,99 @@
width: 400px;
height: 600px;
object-fit: cover;
-}
\ No newline at end of file
+}
+
+ .logoimg {
+ background-size: cover;
+ background-position: center;
+ position: relative;
+ cursor: pointer;
+ outline: none;
+ transition: scale 100ms;
+ }
+
+ .logoimg .logoimg-front-image {
+ position: relative;
+ z-index: 2;
+ }
+
+ .logoimg .logoimg-image {
+ width: clamp(400px, 20vw, 600px);
+ aspect-ratio: 2 / 3;
+ border-radius: clamp(0.5rem, 0.75vw, 2rem);
+ }
+
+ .logoimg-faders {
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ z-index: 1;
+ opacity: 0;
+ transition: opacity 1500ms;
+ pointer-events: none;
+ }
+
+ .logoimg:hover .logoimg-faders {
+ opacity: 1;
+ }
+
+ .logoimg:active {
+ scale: 0.98;
+ }
+
+ .logoimg-fader {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ }
+
+ .logoimg-fader:nth-child(odd) {
+ animation: fade-left 3s linear infinite;
+ }
+
+ .logoimg-fader:nth-child(even) {
+ animation: fade-right 3s linear infinite;
+ }
+
+ .logoimg-fader:is(:nth-child(3), :nth-child(4)) {
+ animation-delay: 750ms;
+ }
+
+ .logoimg-fader:is(:nth-child(5), :nth-child(6)) {
+ animation-delay: 1500ms;
+ }
+
+ .logoimg-fader:is(:nth-child(7), :nth-child(8)) {
+ animation-delay: 2250ms;
+ }
+
+
+ @keyframes fade-left {
+ from {
+ scale: 1;
+ translate: 0%;
+ opacity: 1;
+ }
+
+ to {
+ scale: 0.8;
+ translate: -30%;
+ opacity: 0;
+ }
+ }
+
+ @keyframes fade-right {
+ from {
+ scale: 1;
+ translate: 0%;
+ opacity: 1;
+ }
+
+ to {
+ scale: 0.8;
+ translate: 30%;
+ opacity: 0;
+ }
+ }
\ No newline at end of file
diff --git a/lab5/src/components/filmLogo/FilmLogo.jsx b/lab5/src/components/filmLogo/FilmLogo.jsx
index ee9d449..52735f5 100644
--- a/lab5/src/components/filmLogo/FilmLogo.jsx
+++ b/lab5/src/components/filmLogo/FilmLogo.jsx
@@ -10,10 +10,12 @@ const FilmLogo = ({ id }) => {
const imag = item.image ?? imgPlaceholder;
return (
-
+
+ {/* Delete line below to disable animation */}
+ {Array.from({ length: 8 }, (_, index) => ()) }
);
diff --git a/lab5/src/components/genre/Genre.css b/lab5/src/components/genre/Genre.css
index e1703b0..db99db5 100644
--- a/lab5/src/components/genre/Genre.css
+++ b/lab5/src/components/genre/Genre.css
@@ -1,3 +1,9 @@
.bg-grey{
background-color: #D9D9D9;
- }
\ No newline at end of file
+ }
+.test{
+ display: block;
+ width: 100%;
+ text-decoration: none;
+ background-color: #D9D9D9;
+}
\ No newline at end of file
diff --git a/lab5/src/components/genre/Genre.jsx b/lab5/src/components/genre/Genre.jsx
index e7789e4..266b9f7 100644
--- a/lab5/src/components/genre/Genre.jsx
+++ b/lab5/src/components/genre/Genre.jsx
@@ -16,7 +16,7 @@ const Genre = ({ id }) => {
return (
{genreName}
diff --git a/lab5/src/components/header/Header.css b/lab5/src/components/header/Header.css
index 76885e6..8fc11f4 100644
--- a/lab5/src/components/header/Header.css
+++ b/lab5/src/components/header/Header.css
@@ -29,4 +29,15 @@ header a{
color: black;
text-wrap: pretty;
font-family: sans-serif;
-}
\ No newline at end of file
+}
+.hdr-btn{
+ transition: transform 100ms;
+ transition: background-color 300ms;
+}
+.hdr-btn:hover{
+ background-color:#2B82CF;
+ & a{
+ transform: scale(1.5,1.5);
+ transition-duration: 100ms;
+ }
+}
diff --git a/lab5/src/components/header/Header.jsx b/lab5/src/components/header/Header.jsx
index e5fe3c6..61a6f4c 100644
--- a/lab5/src/components/header/Header.jsx
+++ b/lab5/src/components/header/Header.jsx
@@ -55,10 +55,10 @@ const Header = () => {
-
+
{first}
-
+
{second}
diff --git a/lab5/src/components/searchbar/Search.js b/lab5/src/components/searchbar/Search.js
index 9cb73cd..510180c 100644
--- a/lab5/src/components/searchbar/Search.js
+++ b/lab5/src/components/searchbar/Search.js
@@ -10,7 +10,6 @@ const MovieSearch = (search, genreFilter) => {
expand = `${expand}&genreId=${genreFilter}&name_like=${name}`;
}
const data = await LinesApiService.getAll(expand);
- console.log(data);
setMovies(data ?? []);
};
useEffect(() => {
@@ -20,15 +19,6 @@ const MovieSearch = (search, genreFilter) => {
const handleSearch = async (e, setSearch) => {
setSearch(e.target.value);
};
- // const [searchResult, setSearchResult] = useState([]);
- // const handleSearch = async (e, setSearch) => {
- // if (e.target.value) {
- // const result = movies.filter((movie) =>
- // movie.name.toLowerCase().includes(e.target.value.toLowerCase()));
- // setSearchResult(result);
- // } else { setSearchResult(movies); }
- // setSearch(e.target.value);
- // };
return {
movies,
handleSearch,
diff --git a/lab5/src/components/searchbar/SearchBar.jsx b/lab5/src/components/searchbar/SearchBar.jsx
index 625897b..c4fdfd0 100644
--- a/lab5/src/components/searchbar/SearchBar.jsx
+++ b/lab5/src/components/searchbar/SearchBar.jsx
@@ -8,14 +8,12 @@ import './SearchBar.css';
import FilterContext from './FilterContext.jsx';
import MovieContext from './MovieContext.jsx';
import MovieSearch from './Search';
-import UserContext from '../users/UserContext.jsx';
const SearchBar = () => {
const [search, setSearch] = useState('');
const { genres, currentFilter, handleFilterChange } = useContext(FilterContext);
const { movies, handleSearch } = MovieSearch(search, currentFilter);
const { setLines } = useContext(MovieContext);
- const { currentUser } = useContext(UserContext);
const [fav, setFav] = useState(false);
if (window.location.pathname.includes('/favourite') && !fav) {
setFav(true);
diff --git a/lab5/src/pages/Page1.jsx b/lab5/src/pages/Page1.jsx
index 955e016..ea80b4c 100644
--- a/lab5/src/pages/Page1.jsx
+++ b/lab5/src/pages/Page1.jsx
@@ -28,8 +28,8 @@ const Page1 = () => {
}
-
-
+
+
{
genres.map((genre) =>