Lab4 thinks done

This commit is contained in:
leoevgeniy 2023-12-18 21:05:53 +04:00
parent 0e5d2349fd
commit c6f96fed5b
68 changed files with 2393 additions and 2877 deletions

24
.eslintrc.cjs Normal file
View File

@ -0,0 +1,24 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
settings: { react: { version: '18.2' } },
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
'indent': 'off',
'no-console': 'off',
'arrow-body-style': 'off',
'implicit-arrow-linebreak': 'off',
},
}

34
.gitignore vendored
View File

@ -1,14 +1,24 @@
# ---> VisualStudioCode # Logs
.vscode/* logs
!.vscode/settings.json *.log
!.vscode/tasks.json npm-debug.log*
!.vscode/launch.json yarn-debug.log*
!.vscode/extensions.json yarn-error.log*
!.vscode/*.code-snippets pnpm-debug.log*
lerna-debug.log*
node_modules node_modules
# Local History for Visual Studio Code dist
.history/ dist-ssr
*.local
# Built Visual Studio Code Extensions
*.vsix
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -1,2 +1,29 @@
# Internet-programming-Pibd-23-Tikhonenkov-Alexey-ULSTU #### Окружение:
- nodejs 18;
- VSCode;
- ESLint плагин для VSCode;
- для отладки необходимы бразузеры Chrome или Edge.
#### Создание пустого проекта:
```commandline
npm create vite@latest ./ -- --template react
```
#### Установка зависимостей:
```commandline
npm install
```
#### Запуск проекта:
```commandline
npm run dev
```
#### Сборка проекта:
```commandline
npm run build
```

View File

@ -1,94 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<main class="container-fluid p-2">
<h1 class="text-warning text-center font-weight-bold">Панель администратора</h1>
<div class="text-center">
<div class="btn-group" role="group">
<a class="btn btn-warning" href="/editpage.html">Добавить фильм</a>
</div>
</div>
<div>
<h2 class="text-warning text-center font-weight-bold" style="padding-top: 10px;">Таблица данных</h2>
<table id="items-table" class="table table-striped">
<thead>
<th scope="col"></th>
<th scope="col" class="w-25">Фильм</th>
<th scope="col" class="w-25">Жанр</th>
<th scope="col" class="w-10">Рейтинг</th>
<th scope="col" class="w-25">Дата производства</th>
<th scope="col" class="w-25">Режиссер</th>
<th scope="col"></th>
<th scope="col"></th>
</thead>
<tbody></tbody>
</table>
</div>
</main>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script type="module">
import validation from "./js/validation";
import { linesForm } from "./js/lines";
document.addEventListener('DOMContentLoaded', () => {
validation();
linesForm();
});
</script>
<script src="script.js"></script>
<script src="film.js"></script>
</body>
</html>

View File

@ -1,116 +0,0 @@
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
margin: 0;
padding: 0;
min-height: 500vh;
}
.header {
background: linear-gradient(to right, #000000, #434343);
padding: 20px;
color: #ffffff;
text-align: justify;
letter-spacing: 1px;
width: auto;
}
.header-logo img {
width: 100px;
height: auto;
margin-right: 10px;
background-color: transparent;
}
.navbar-nav .nav-link {
color: #ffffff;
text-decoration: none;
margin-left: 20px;
transition: color 0.3s;
font-size: 24px;
font-family: 'Arial Black', sans-serif;
}
.header-logo {
display: flex;
align-items: center;
font-family: 'Arial Black', sans-serif;
}
.header-links a {
color: #ffffff;
text-decoration: none;
margin-left: 20px;
transition: color 0.3s;
font-size: 24px;
font-family: 'Arial Black', sans-serif;
}
.header-links a:hover {
color: #ff4500;
}
.movie-container {
width: 80%;
margin: 0 auto;
overflow-x: auto;
white-space: nowrap;
gap: 20px;
}
.movie-card {
width: 300px;
height: 600px;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
margin: 0 auto;
margin-right: 20px;
border-radius: 5px;
background-color: #ffffff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.movie-card img {
width: 100%;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.movie-card-content {
padding: 20px;
}
.movie-card-content h2 {
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
}
h1 {
margin-left: 10px;
font-weight: bold;
}
h2 {
color: #333333;
margin-bottom: 10px;
}
p {
color: #666666;
font-size: 24px;
padding: 20px;
}
footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: #333;
color: white;
text-align: center;
padding: 10px;
}

86
dist/admin.html vendored
View File

@ -1,86 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div class="container mt-4">
<h1>Добавление нового фильма</h1>
<form id="movieForm">
<div class="mb-3">
<label for="title" class="form-label">Название фильма</label>
<input type="text" class="form-control" id="title" name="title" required>
</div>
<div class="mb-3">
<label for="genre" class="form-label">Жанр</label>
<input type="text" class="form-control" id="genre" name="genre" required>
</div>
<div class="mb-3">
<label for="rating" class="form-label">Рейтинг</label>
<input type="number" class="form-control" id="rating" name="rating" min="1" max="10" required>
</div>
<div class="mb-3">
<label for="releaseDate" class="form-label">Дата создания</label>
<input type="date" class="form-control" id="releaseDate" name="releaseDate" required>
</div>
<div class="mb-3">
<label for="director" class="form-label">Режиссер</label>
<input type="text" class="form-control" id="director" name="director" required>
</div>
<div class="mb-3">
<label for="coverImage" class="form-label">Фотография обложки</label>
<input type="file" class="form-control" id="coverImage" name="coverImage" accept="image/*" required>
</div>
<button type="submit" class="btn btn-primary">Добавить фильм</button>
</form>
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script src="script.js"></script>
<script src="film.js"></script>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1 +0,0 @@
#banner{margin:5px;display:flex;align-items:center;flex-direction:column;height:400px;overflow:hidden}#banner img{border:1px solid #3c3c3f;border-radius:5px;height:100%;object-fit:cover}#banner img.banner-show{width:100%;opacity:1;transition:opacity 1s,visibility 0s}#banner img.banner-hide{height:0;width:0;opacity:0;visibility:hidden;transition:opacity 1s,visibility 0s 1s}

View File

@ -1 +0,0 @@
/* empty css */(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))n(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const s of t.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function o(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function n(e){if(e.ep)return;e.ep=!0;const t=o(e);fetch(e.href,t)}})();function c(i){console.info("Loaded");const r=document.querySelectorAll(`${i} img`);for(let t=0;t<r.length;t+=1)r[t].setAttribute("class","banner-hide");let o=r.length-1,n=0;function e(){r[n].setAttribute("class","banner-show"),r[o].setAttribute("class","banner-hide"),console.info("Banner changed"),o=n,n+=1,n===r.length&&(n=0),setTimeout(e,5e3)}e()}document.addEventListener("DOMContentLoaded",()=>{c("#banner")});

File diff suppressed because one or more lines are too long

273
dist/index.html vendored
View File

@ -1,273 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script type="module" crossorigin src="/assets/main-29d200ed.js"></script>
<link rel="stylesheet" href="/assets/index-65f0d438.css">
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body class="h-100 d-flex flex-column">
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div id="banner">
<img class="banner-hide" src="/assets/1-afe0584b.jpg" alt="banner1">
<img class="banner-hide" src="/assets/2-9fadfb72.jpg" alt="banner1">
<img class="banner-hide" src="/assets/3-d6fa4130.jpg" alt="banner1">
</div>
<div class="movie-container">
<h1>Наиболее Популярное</h1>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Может быть интересно</h1>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Лучшие отзывы</h1>
<div class="movie-card" data-kinopoisk-id="61237">
<a href="#" class="movie-link" data-url=""></a>
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script src="js/script.js"></script>
<script src="js/film.js"></script>
</body>
</html>

250
dist/page2.html vendored
View File

@ -1,250 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Каталог</h1>
<div id="catalog" class="movie-container">
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="js/script.js"></script>
<script src="js/film.js"></script>
</body>
</html>

261
dist/page3.html vendored
View File

@ -1,261 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div class="movie-container">
<h1>Ужасы</h1>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Фентэзи</h1>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Боевик</h1>
<div class="movie-card" data-kinopoisk-id="61237">
<a href="#" class="movie-link" data-url=""></a>
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>

78
dist/page4.html vendored
View File

@ -1,78 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Информация</h1>
<p>Добро пожаловать на наш сайт для просмотра фильмов! Здесь вы найдете все необходимые сведения для насыщенного и удобного кинематографического опыта. Пожалуйста, ознакомьтесь с полезной информацией ниже:<br>
О нас:<br>
Мы предоставляем уникальную платформу для онлайн-просмотра широкого ассортимента фильмов различных жанров. Наша команда стремится создать место, где каждый кинолюбитель найдет что-то по своему вкусу.<br>
Как пользоваться сайтом:<br>
Поиск и Фильтрация: Воспользуйтесь удобным поиском, чтобы быстро найти нужный фильм. Фильтры по жанру, году выпуска и рейтингу помогут уточнить ваш выбор.<br>
Рейтинг и Обзоры: У нас есть система рейтингов, созданная пользователями, а также обзоры, чтобы вы могли сделать информированный выбор.<br>
Партнерство и Реклама:<br>
Если у вас есть интересные предложения по партнерству или рекламе на нашем сайте, свяжитесь с нами через контактную форму. Мы всегда открыты к новым идеям и сотрудничеству.<br>
Поддержка:<br>
В случае возникновения вопросов, проблем или предложений по улучшению сервиса, обращайтесь в нашу службу поддержки. Мы готовы вам помочь 24/7.<br>
Правила и Условия:<br>
Пожалуйста, ознакомьтесь с нашими правилами использования сайта и политикой конфиденциальности, чтобы быть в курсе важных моментов.<br>
Благодарим вас за выбор нашего сайта для вашего кинематографического опыта. Наслаждайтесь просмотром!</p>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>

249
dist/page5.html vendored
View File

@ -1,249 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" href="/assets/style-c0cb709f.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="/assets/icon-0a4ad84d.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Топ фильмов</h1>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 1</h2>
<p>Описание фильма 1.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 2</h2>
<p>Описание фильма 2.</p>
</div>
</div>
<div class="movie-card">
<img src="https://via.placeholder.com/300x400" alt="Movie Image">
<div class="movie-card-content">
<h2>Название фильма 3</h2>
<p>Описание фильма 3.</p>
</div>
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>

View File

@ -1,100 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div class="container mt-4">
<h1>Добавление нового фильма</h1>
<div class="text-center">
<img id="image-preview" src="https://via.placeholder.com/300x400" alt="placeholder">
</div>
<form id="items-form" class="needs-validation" novalidate>
<div class="mb-3">
<label for="item" class="form-label">Жанр</label>
<select id="item" class="form-select" name="selected" required>
</select>
</div>
<div class="mb-3">
<label for="title" class="form-label">Название фильма</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="mb-3">
<label for="rating" class="form-label">Рейтинг</label>
<input type="number" class="form-control" id="rating" name="rating" min="1" max="10" required>
</div>
<div class="mb-3">
<label for="releaseDate" class="form-label">Дата создания</label>
<input type="date" class="form-control" id="releaseDate" name="releaseDate" required>
</div>
<div class="mb-3">
<label for="director" class="form-label">Режиссер</label>
<input type="text" class="form-control" id="director" name="director" required>
</div>
<div class="mb-3">
<label for="image" class="form-label">Фотография обложки</label>
<input id="image" type="file" name="image" class="form-control" accept="image/*">
</div>
<a href="admin.html" class="btn btn-secondary">Назад</a>
<button type="submit" class="btn btn-primary">Добавить фильм</button>
</form>
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script type="module">
import validation from "./js/validation";
import { linesPageForm } from "./js/lines"
document.addEventListener('DOMContentLoaded', () => {
validation();
linesPageForm();
});
</script>
</body>
</html>

View File

@ -1,88 +1,15 @@
<!DOCTYPE html> <html lang="ru">
<html lang="ru" class="h-100">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>Просмотр фильмов</title> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Фильмы онлайн</title>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head> </head>
<body class="h-100 d-flex flex-column"> <body>
<div id="root" class="h-100 d-flex flex-column"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
<div class="header"> </html>
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div id="banner">
<img class="banner-hide" src="Images/1.jpg" alt="banner1">
<img class="banner-hide" src="Images/2.jpg" alt="banner1">
<img class="banner-hide" src="Images/3.jpg" alt="banner1">
</div>
<div class="movie-container">
<h1>Наиболее Популярное</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Может быть интересно</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Лучшие отзывы</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script type="module">
import myBanner from "./js/banner";
import "./js/film.js";
document.addEventListener('DOMContentLoaded', () => {
myBanner("#banner");
});
</script>
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View File

@ -56,11 +56,11 @@ function addMoviesByGenre(moviesData, itemTypes) {
} }
function addMovieCardsByContainer(container,movie) { function addMovieCardsByContainer(container,movie) {
var container = container
if (!container) { if (!container) {
console.error("Movie container not found"); console.error("Movie container not found");
return;"" return;
} }

View File

@ -3,7 +3,7 @@
"module": "ESNext", "module": "ESNext",
"moduleResolution": "Node", "moduleResolution": "Node",
"target": "ES2020", "target": "ES2020",
"jsx": "preserve", "jsx": "react",
"strictNullChecks": true, "strictNullChecks": true,
"strictFunctionTypes": true "strictFunctionTypes": true
}, },

2268
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,33 @@
{ {
"name": "int-prog", "name": "internet-programming-pibd-23-tikhonenkov-alexey-ulstu",
"version": "1.0.0", "private": true,
"version": "0.0.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "vite", "dev": "vite",
"serve": "http-server -p 3000 ./dist/",
"build": "vite build", "build": "vite build",
"rest": "json-server --watch data.json -p 8081", "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"dev": "npm-run-all --parallel rest start", "preview": "vite preview"
"prod": "npm-run-all build --parallel serve rest"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "6.4.2", "bootstrap": "^5.3.2",
"bootstrap": "^5.3.2" "json-server": "^0.17.4",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-bootstrap": "^2.9.1",
"react-bootstrap-icons": "^1.10.3",
"react-dom": "^18.2.0",
"react-router-dom": "^6.18.0"
}, },
"devDependencies": { "devDependencies": {
"eslint": "8.50.0", "@types/react": "^18.2.15",
"eslint-config-airbnb-base": "15.0.0", "@types/react-dom": "^18.2.7",
"eslint-plugin-import": "2.28.1", "@vitejs/plugin-react": "^4.0.3",
"http-server": "14.1.1", "eslint": "^8.45.0",
"json-server": "0.17.4", "eslint-config-airbnb-base": "^15.0.0",
"npm-run-all": "4.1.5", "eslint-plugin-react": "^7.32.2",
"vite": "4.4.9" "eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"vite": "^4.5.1"
} }
} }

View File

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Каталог</h1>
<div id="movie-container" class="d-flex flex-wrap">
<!-- Здесь будут добавляться карточки фильмов -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
<a href="admin.html" class="nav-link">Admin</a>
</div>
</footer>
<script type="module" src="./js/film.js"></script>
</body>
</html>

View File

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<div class="movie-container">
<h1>Фантастика</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Фэнтези</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Романтика</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Экшн</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Драма</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Боевик</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<div class="movie-container">
<h1>Научная фантастика</h1>
<!-- Добавьте больше фильмов по вашему желанию -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="script.js"></script>
<script type="module" src="./js/film.js"></script>
</body>
</html>

View File

@ -1,77 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Информация</h1>
<p>Добро пожаловать на наш сайт для просмотра фильмов! Здесь вы найдете все необходимые сведения для насыщенного и удобного кинематографического опыта. Пожалуйста, ознакомьтесь с полезной информацией ниже:<br>
О нас:<br>
Мы предоставляем уникальную платформу для онлайн-просмотра широкого ассортимента фильмов различных жанров. Наша команда стремится создать место, где каждый кинолюбитель найдет что-то по своему вкусу.<br>
Как пользоваться сайтом:<br>
Поиск и Фильтрация: Воспользуйтесь удобным поиском, чтобы быстро найти нужный фильм. Фильтры по жанру, году выпуска и рейтингу помогут уточнить ваш выбор.<br>
Рейтинг и Обзоры: У нас есть система рейтингов, созданная пользователями, а также обзоры, чтобы вы могли сделать информированный выбор.<br>
Партнерство и Реклама:<br>
Если у вас есть интересные предложения по партнерству или рекламе на нашем сайте, свяжитесь с нами через контактную форму. Мы всегда открыты к новым идеям и сотрудничеству.<br>
Поддержка:<br>
В случае возникновения вопросов, проблем или предложений по улучшению сервиса, обращайтесь в нашу службу поддержки. Мы готовы вам помочь 24/7.<br>
Правила и Условия:<br>
Пожалуйста, ознакомьтесь с нашими правилами использования сайта и политикой конфиденциальности, чтобы быть в курсе важных моментов.<br>
Благодарим вас за выбор нашего сайта для вашего кинематографического опыта. Наслаждайтесь просмотром!</p>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>

View File

@ -1,61 +0,0 @@
<!DOCTYPE html>
<html lang="ru" class="h-100">
<head>
<meta charset="UTF-8">
<title>Просмотр фильмов</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body >
<div class="header">
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<div class="header-logo">
<img src="icon.png" alt="Logo">
<h2>Фильмы онлайн</h2>
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="index.html">Главная страница</a>
<a href="page2.html" class="nav-link">Каталог</a>
<a href="page3.html" class="nav-link">Категории</a>
<a href="page4.html" class="nav-link">Информация</a>
<a href="page5.html" class="nav-link">Популярное</a>
</div>
</div>
</div>
</div>
</nav>
</div>
<h1>Топ фильмов</h1>
<div id="movie-container" class="d-flex flex-wrap">
<!-- Здесь будут добавляться карточки фильмов -->
</div>
<footer class="footer mt-auto d-flex justify-content-center align-items-center">
<div class="container-fluid">
<p>© 2023 Просмотр фильмов.</p>
</div>
</footer>
<script type="module" src="./js/film.js"></script>
</body>
</html>

0
src/App.css Normal file
View File

24
src/App.jsx Normal file
View File

@ -0,0 +1,24 @@
import PropTypes from 'prop-types';
import { Container } from 'react-bootstrap';
import { Outlet } from 'react-router-dom';
import './App.css';
import Footer from './components/footer/Footer.jsx';
import Navigation from './components/navigation/Navigation.jsx';
const App = ({ routes }) => {
return (
<>
<Navigation routes={routes}></Navigation>
<Container className='p-2' as="main" fluid>
<Outlet />
</Container>
<Footer />
</>
);
};
App.propTypes = {
routes: PropTypes.array,
};
export default App;

View File

@ -0,0 +1,21 @@
import PropTypes from 'prop-types';
const MovieCard = ({ title, description, imageUrl }) => {
return (
<div className="movie-card">
<img src={imageUrl || "https://via.placeholder.com/300x400"} alt="Movie Image" />
<div className="movie-card-content">
<h2>{title}</h2>
<p>{description}</p>
</div>
</div>
);
};
MovieCard.propTypes = {
title: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
imageUrl: PropTypes.string,
};
export default MovieCard;

View File

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 427 KiB

After

Width:  |  Height:  |  Size: 427 KiB

View File

Before

Width:  |  Height:  |  Size: 359 KiB

After

Width:  |  Height:  |  Size: 359 KiB

1
src/assets/react.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,40 @@
import { useEffect, useState } from 'react';
import banner1 from '../../assets/1.jpg';
import banner2 from '../../assets/2.jpg';
import banner3 from '../../assets/3.jpg';
import './Banner.css';
const Banner = () => {
const [currentBanner, setCurrentBanner] = useState(0);
const banners = [banner1, banner2, banner3];
const getBannerClass = (index) => {
return currentBanner === index ? 'banner-show' : 'banner-hide';
};
useEffect(() => {
const bannerInterval = setInterval(
() => {
console.info('Banner changed');
let current = currentBanner + 1;
if (current === banners.length) {
current = 0;
}
setCurrentBanner(current);
},
5000,
);
return () => clearInterval(bannerInterval);
});
return (
<div id="banner" >
{
banners.map((banner, index) =>
<img key={index} className={getBannerClass(index)} src={banner} alt={`banner${index}`} />)
}
</div >
);
};
export default Banner;

View File

@ -0,0 +1,5 @@
.my-footer {
background-color: #9c9c9c;
height: 32px;
color: #fff;
}

View File

@ -0,0 +1,18 @@
import './Footer.css';
import { Link } from 'react-router-dom'; // Импортируйте Link из библиотеки react-router-dom
const Footer = () => {
const year = new Date().getFullYear();
return (
<>
<footer className="footer mt-auto d-flex justify-content-center align-items-center">
<div className="container-fluid">
<p>© {year} Просмотр фильмов. <Link to="/adminpage">Администратор</Link></p>
</div>
</footer>
</>
);
};
export default Footer;

View File

@ -0,0 +1,37 @@
/* Navigation.css */
.header {
background-color: #343a40; /* Цвет фона шапки */
color: white; /* Цвет текста */
}
.header-logo {
display: flex;
align-items: center;
}
.header-logo img {
width: 30px; /* Задайте желаемую ширину для иконки */
margin-right: 10px; /* Расстояние между иконкой и текстом */
}
.header-logo h2 {
margin: 0; /* Убираем отступы у заголовка */
}
/* Размещаем иконку и заголовок слева */
.navbar-brand {
display: flex;
align-items: center;
}
/* Размещаем ссылки справа */
.ml-auto {
margin-left: auto;
}
/* Убираем отступы у ссылок */
.nav-link {
margin: 0;
}

View File

@ -0,0 +1,43 @@
import PropTypes from 'prop-types';
import { Container, Nav, Navbar } from 'react-bootstrap';
import { Link, useLocation } from 'react-router-dom';
import './Navigation.css';
const Navigation = ({ routes }) => {
const location = useLocation();
const pages = routes.filter((route) => Object.prototype.hasOwnProperty.call(route, 'title'));
return (
<div className="header">
<Navbar expand="md" variant="dark">
<Container fluid>
<Link to="/" className="navbar-brand">
<div className="header-logo">
<img src="icon.png" alt="Logo" />
<h2>Фильмы онлайн</h2>
</div>
</Link>
<Navbar.Toggle aria-controls='main-navbar' />
<Navbar.Collapse id='main-navbar'>
<Nav className='link ml-auto' activeKey={location.pathname}>
{
pages.map((page) => (
<Nav.Link as={Link} key={page.path} eventKey={page.path} to={page.path ?? '/'}>
{page.title}
</Nav.Link>
))
}
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
</div>
);
};
Navigation.propTypes = {
routes: PropTypes.array,
};
export default Navigation;

116
src/index.css Normal file
View File

@ -0,0 +1,116 @@
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
margin: 0;
padding: 0;
min-height: 500vh;
}
.header {
background: linear-gradient(to right, #000000, #434343);
padding: 20px;
color: #ffffff;
text-align: justify;
letter-spacing: 1px;
width: auto;
}
.header-logo img {
width: 100px;
height: auto;
margin-right: 10px;
background-color: transparent;
}
.navbar-nav .nav-link {
color: #ffffff;
text-decoration: none;
margin-left: 20px;
transition: color 0.3s;
font-size: 24px;
font-family: 'Arial Black', sans-serif;
}
.header-logo {
display: flex;
align-items: center;
font-family: 'Arial Black', sans-serif;
}
.header-links a {
color: #ffffff;
text-decoration: none;
margin-left: 20px;
transition: color 0.3s;
font-size: 24px;
font-family: 'Arial Black', sans-serif;
}
.header-links a:hover {
color: #ff4500;
}
.movie-container {
width: 80%;
margin: 0 auto;
overflow-x: auto;
white-space: nowrap;
gap: 20px;
}
.movie-card {
width: 300px;
height: 600px;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
margin: 0 auto;
margin-right: 20px;
border-radius: 5px;
background-color: #ffffff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.movie-card img {
width: 100%;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.movie-card-content {
padding: 20px;
}
.movie-card-content h2 {
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
}
h1 {
margin-left: 10px;
font-weight: bold;
}
h2 {
color: #333333;
margin-bottom: 10px;
}
p {
color: #666666;
font-size: 24px;
padding: 20px;
}
footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: #333;
color: white;
text-align: center;
padding: 10px;
}

66
src/main.jsx Normal file
View File

@ -0,0 +1,66 @@
import 'bootstrap/dist/css/bootstrap.min.css';
import React from 'react';
import ReactDOM from 'react-dom/client';
import { RouterProvider, createBrowserRouter } from 'react-router-dom';
import App from './App.jsx';
import './index.css';
import ErrorPage from './pages/ErrorPage.jsx';
import MainPage from './pages/MainPage.jsx';
import AdminPage from './pages/AdminPage.jsx';
import Page1 from './pages/Page1.jsx';
import Page2 from './pages/Page2.jsx';
import Page3 from './pages/Page3.jsx';
import Page4 from './pages/Page4.jsx';
import PageEdit from './pages/PageEdit.jsx';
const routes = [
{
index: true,
path: '/',
element: <MainPage />,
title: 'Главная страница',
},
{
path: '/page1',
element: <Page1 />,
title: 'Каталог',
},
{
path: '/page2',
element: <Page2 />,
title: 'Категории',
},
{
path: '/page3',
element: <Page3 />,
title: 'Информация',
},
{
path: '/page4',
element: <Page4 />,
title: 'Лучшие фильмы',
},
{
path: '/adminpage',
element: <AdminPage />,
},
{
path: '/page-edit',
element: <PageEdit />,
},
];
const router = createBrowserRouter([
{
path: '/',
element: <App routes={routes} />,
children: routes,
errorElement: <ErrorPage />,
},
]);
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>,
);

32
src/pages/AdminPage.jsx Normal file
View File

@ -0,0 +1,32 @@
import { Button, ButtonGroup, Table } from 'react-bootstrap';
import { Link } from 'react-router-dom';
const AdminPage = () => {
return (
<>
<h1 className="text-Gray text-center font-weight-bold">Панель администратора</h1>
<div className="d-flex justify-content-center">
<ButtonGroup>
<Button as={Link} to="/page-edit" variant="secondary">Добавить фильм</Button>
</ButtonGroup>
</div>
<h2 className="text-Gray text-center font-weight-bold">Таблица данных</h2>
<Table className="mt-2" striped>
<thead>
<th scope="col"></th>
<th scope="col" className="w-25">Фильм</th>
<th scope="col" className="w-25">Жанр</th>
<th scope="col" className="w-15">Рейтинг</th>
<th scope="col" className="w-25">Дата производства</th>
<th scope="col" className="w-25">Режиссер</th>
<th scope="col"></th>
<th scope="col"></th>
</thead>
<tbody></tbody>
</Table>
</>
);
};
export default AdminPage;

19
src/pages/ErrorPage.jsx Normal file
View File

@ -0,0 +1,19 @@
import { Alert, Button, Container } from 'react-bootstrap';
import { useNavigate } from 'react-router-dom';
const ErrorPage = () => {
const navigate = useNavigate();
return (
<Container fluid className="p-2 row justify-content-center">
<Container className='col-md-6'>
<Alert variant="danger">
Страница не найдена
</Alert>
<Button className="w-25 mt-2" variant="primary" onClick={() => navigate(-1)}>Назад</Button>
</Container>
</Container>
);
};
export default ErrorPage;

61
src/pages/MainPage.jsx Normal file
View File

@ -0,0 +1,61 @@
import MovieCard from '../Moviecard/MovieCard';
import Banner from '../components/banner/Banner.jsx';
const MainPage = () => {
const movieData = {
title: 'Название фильма 1',
description: 'Описание фильма 1.',
imageUrl: 'https://via.placeholder.com/300x400',
};
return (
<>
<Banner />
<>
<div className="movie-container">
<h1>Наиболее Популярное</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Может быть интересно</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Лучшие отзывы</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
</>
</>
);
};
export default MainPage;

39
src/pages/Page1.jsx Normal file
View File

@ -0,0 +1,39 @@
import MovieCard from '../Moviecard/MovieCard';
const Page1 = () => {
const movieData = {
title: 'Название фильма 1',
description: 'Описание фильма 1.',
imageUrl: 'https://via.placeholder.com/300x400',
};
return (
<>
<h1>Каталог</h1>
<div id="movie-container">
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
</>
);
};
export default Page1;

83
src/pages/Page2.jsx Normal file
View File

@ -0,0 +1,83 @@
import MovieCard from '../Moviecard/MovieCard';
const Page2 = () => {
const movieData = {
title: 'Название фильма 1',
description: 'Описание фильма 1.',
imageUrl: 'https://via.placeholder.com/300x400',
};
return (
<>
<div className="movie-container">
<h1>Фантастика</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Фэнтези</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Романтика</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Экшн</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Драма</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Боевик</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
<div className="movie-container">
<h1>Научная фантастика</h1>
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
</>
);
};
export default Page2;

58
src/pages/Page3.jsx Normal file
View File

@ -0,0 +1,58 @@
const Page3 = () => {
return (
<>
<h1>Информация</h1>
<p>
Добро пожаловать на наш сайт для просмотра фильмов! Здесь вы найдете все
необходимые сведения для насыщенного и удобного кинематографического опыта.
Пожалуйста, ознакомьтесь с полезной информацией ниже:
<br />
<br />
<strong>О нас:</strong>
<br />
Мы предоставляем уникальную платформу для онлайн-просмотра широкого
ассортимента фильмов различных жанров. Наша команда стремится создать место,
где каждый кинолюбитель найдет что-то по своему вкусу.
<br />
<br />
<strong>Как пользоваться сайтом:</strong>
<br />
- Поиск и Фильтрация: Воспользуйтесь удобным поиском, чтобы быстро найти
нужный фильм. Фильтры по жанру, году выпуска и рейтингу помогут уточнить ваш
выбор.
<br />
- Рейтинг и Обзоры: У нас есть система рейтингов, созданная пользователями, а
также обзоры, чтобы вы могли сделать информированный выбор.
<br />
<br />
<strong>Партнерство и Реклама:</strong>
<br />
Если у вас есть интересные предложения по партнерству или рекламе на нашем
сайте, свяжитесь с нами через контактную форму. Мы всегда открыты к новым
идеям и сотрудничеству.
<br />
<br />
<strong>Поддержка:</strong>
<br />
В случае возникновения вопросов, проблем или предложений по улучшению
сервиса, обращайтесь в нашу службу поддержки. Мы готовы вам помочь 24/7.
<br />
<br />
<strong>Правила и Условия:</strong>
<br />
Пожалуйста, ознакомьтесь с нашими правилами использования сайта и политикой
конфиденциальности, чтобы быть в курсе важных моментов.
<br />
<br />
Благодарим вас за выбор нашего сайта для вашего кинематографического опыта.
Наслаждайтесь просмотром!
</p>
</>
);
};
export default Page3;

36
src/pages/Page4.jsx Normal file
View File

@ -0,0 +1,36 @@
import MovieCard from '../Moviecard/MovieCard';
const Page4 = () => {
const movieData = {
title: 'Название фильма 1',
description: 'Описание фильма 1.',
imageUrl: 'https://via.placeholder.com/300x400',
};
return (
<>
<h1>Топ фильмов</h1>
<div id="movie-container">
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
<MovieCard {...movieData} />
</div>
</>
);
};
export default Page4;

59
src/pages/PageEdit.jsx Normal file
View File

@ -0,0 +1,59 @@
import { useState } from 'react';
import { Button, Form } from 'react-bootstrap';
import { Link } from 'react-router-dom';
const PageEdit = () => {
const [validated, setValidated] = useState(false);
const handleSubmit = (event) => {
const form = event.currentTarget;
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
setValidated(true);
};
return (
<>
<div className="text-center">
<img id="image-preview" src="https://via.placeholder.com/300x400"
alt="placeholder" />
</div>
<Form id="items-form" noValidate validated={validated} onSubmit={handleSubmit}>
<Form.Group className="mb-3" controlId="item">
<Form.Label htmlFor="item" className="form-label">Жанр</Form.Label>
<Form.Select name='selected' required>
</Form.Select>
</Form.Group>
<Form.Group className="mb-3" controlId="name">
<Form.Label>Название фильма</Form.Label>
<Form.Control type="text" name="name" required />
</Form.Group>
<Form.Group className="mb-3" controlId="rating">
<Form.Label>Рейтинг</Form.Label>
<Form.Control type="number" name="rating" min="1" max="10" required />
</Form.Group>
<Form.Group className="mb-3" controlId="releaseDate">
<Form.Label>Дата создания</Form.Label>
<Form.Control type="date" name="releaseDate" required />
</Form.Group>
<Form.Group className="mb-3" controlId="director">
<Form.Label>Режиссер</Form.Label>
<Form.Control type="text" name="director" required />
</Form.Group>
<Form.Group className="mb-3" controlId="image">
<Form.Label>Обложка</Form.Label>
<Form.Control type="file" name="image" accept="image/*" />
</Form.Group>
<Form.Group className="d-flex flex-md-row flex-column justify-content-center">
<Button className="btn-mw me-md-3 mb-md-0 mb-2" as={Link} to="/adminpage" variant="secondary">Назад</Button>
<Button className="btn-mw me-md-3" type="submit" variant="primary">Сохранить</Button>
</Form.Group>
</Form>
</>
);
};
export default PageEdit;

View File

@ -1,24 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -1,9 +0,0 @@
export function setupCounter(element) {
let counter = 0
const setCounter = (count) => {
counter = count
element.innerHTML = `count is ${counter}`
}
element.addEventListener('click', () => setCounter(counter + 1))
setCounter(0)
}

View File

@ -1,13 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/main.js"></script>
</body>
</html>

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="#F7DF1E" d="M0 0h256v256H0V0Z"></path><path d="m67.312 213.932l19.59-11.856c3.78 6.701 7.218 12.371 15.465 12.371c7.905 0 12.89-3.092 12.89-15.12v-81.798h24.057v82.138c0 24.917-14.606 36.259-35.916 36.259c-19.245 0-30.416-9.967-36.087-21.996m85.07-2.576l19.588-11.341c5.157 8.421 11.859 14.607 23.715 14.607c9.969 0 16.325-4.984 16.325-11.858c0-8.248-6.53-11.17-17.528-15.98l-6.013-2.58c-17.357-7.387-28.87-16.667-28.87-36.257c0-18.044 13.747-31.792 35.228-31.792c15.294 0 26.292 5.328 34.196 19.247l-18.732 12.03c-4.125-7.389-8.591-10.31-15.465-10.31c-7.046 0-11.514 4.468-11.514 10.31c0 7.217 4.468 10.14 14.778 14.608l6.014 2.577c20.45 8.765 31.963 17.7 31.963 37.804c0 21.654-17.012 33.51-39.867 33.51c-22.339 0-36.774-10.654-43.819-24.574"></path></svg>

Before

Width:  |  Height:  |  Size: 995 B

View File

@ -1,24 +0,0 @@
import './style.css'
import javascriptLogo from './javascript.svg'
import viteLogo from '/vite.svg'
import { setupCounter } from './counter.js'
document.querySelector('#app').innerHTML = `
<div>
<a href="https://vitejs.dev" target="_blank">
<img src="${viteLogo}" class="logo" alt="Vite logo" />
</a>
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" target="_blank">
<img src="${javascriptLogo}" class="logo vanilla" alt="JavaScript logo" />
</a>
<h1>Hello Vite!</h1>
<div class="card">
<button id="counter" type="button"></button>
</div>
<p class="read-the-docs">
Click on the Vite logo to learn more
</p>
</div>
`
setupCounter(document.querySelector('#counter'))

View File

@ -1,14 +0,0 @@
{
"name": "vite-project",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^5.0.0"
}
}

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,96 +0,0 @@
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vanilla:hover {
filter: drop-shadow(0 0 2em #f7df1eaa);
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}

View File

@ -1,18 +1,12 @@
import { resolve } from 'path'
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
build: { plugins: [react()],
rollupOptions: { build: {
input: { sourcemap: true,
main: resolve(__dirname, 'index.html'), chunkSizeWarningLimit: 1024,
page2: resolve(__dirname, 'page2.html'), emptyOutDir: true,
page3: resolve(__dirname, 'page3.html'), },
page4: resolve(__dirname, 'page4.html'), })
page5: resolve(__dirname, 'page5.html'),
admin: resolve(__dirname, 'admin.html'),
editpage: resolve(__dirname, 'editpage.html')
},
},
},
})