1
0
mirror of synced 2025-12-27 23:23:24 +00:00

design update and bug fix

This commit is contained in:
Valentin
2024-01-23 20:27:58 +01:00
parent 85082a7bd9
commit 90ed4195ae
42 changed files with 373 additions and 204 deletions

108
templates/dashboard.html Normal file
View File

@@ -0,0 +1,108 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>Dashboard - SMC</title>
<link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800&amp;display=swap">
</head>
<body>
<nav class="navbar navbar-light navbar-expand-md fixed-top navbar-shrink py-3" id="mainNav">
<div class="container"><a class="navbar-brand d-flex align-items-center" href="/"><img src="static/img/brands/logo.png" style="width: 64px;"></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navcol-1">
<ul class="navbar-nav mx-auto"></ul>
<ul class="navbar-nav">
<li class="nav-item"><a class="disabled nav-link">Home</a></li>
<li class="nav-item"><a class="nav-link active" href="">My teams</a></li>
<li class="nav-item"><a class="nav-link active" href="webcal://somycal.com/calendar/{{userId}}.ics">Sync. this device</a></li>
</ul>
</div><a class="btn btn-primary shadow" role="button" href="/logout">Logout</a>
</div>
</nav>
<header class="pt-5">
<div class="container pt-4 pt-xl-5">
<div class="row pt-5">
<div class="col-md-8 text-center text-md-start mx-auto">
<div class="text-center">
<h1 class="display-4 fw-bold mb-5">Welcome to your&nbsp;<span class="underline">dashboard</span>.</h1>
</div>
</div>
<div class="col-12 col-lg-10 mx-auto">
<div class="text-center position-relative"></div>
</div>
</div>
</div>
</header>
<section>
<div class="container py-4 py-xl-5">
<div class="row gy-4 row-cols-1 row-cols-md-2 row-cols-lg-3">
{% for team in userTeams %}
<div class="col">
<div class="card border-light border-1 d-flex justify-content-center p-4">
<div class="card-body">
<div class="d-flex justify-content-center align-items-center justify-content-md-start"><img src="{{ getTeamLogo(team.idTeam) }}" style="width: 100px;">
<h5 class="fw-bold mb-0 ms-2">{{ getTeamName(team.idTeam) }}</h5>
</div>
<div></div>
</div><a class="btn btn-primary" role="button" href="/del/{{ team.idTeam }}">Remove from calendar</a>
</div>
</div>
{% endfor %}
{% for team in otherTeams %}
<div class="col">
<div class="card border-light border-1 d-flex justify-content-center p-4">
<div class="card-body">
<div class="d-flex justify-content-center align-items-center justify-content-md-start"><img src="{{ getTeamLogo(team) }}" style="width: 100px;">
<h5 class="fw-bold mb-0 ms-2">{{ getTeamName(team) }}</h5>
</div>
<div></div>
</div><a class="btn btn-warning" role="button" href="/add/{{ team }}">Add to calendar</a>
</div>
</div>
{% endfor %}
</div>
</div>
</section>
<section class="py-4 py-xl-5 mb-5">
<div class="container">
<div class="row mb-2">
<div class="col-md-8 col-xl-6 text-center mx-auto">
<h2 class="display-6 fw-bold mb-5"><span class="pb-3 underline">Suggestions ?</span></h2>
<p class="text-muted mb-5">Send us your suggestions via our social networks </p>
</div>
</div>
</div>
</section>
<footer>
<div class="container py-4 py-lg-5">
<hr>
<div class="text-muted d-flex justify-content-between align-items-center pt-3">
<p class="mb-0">Copyright © 2024 So My Calendar</p>
<ul class="list-inline mb-0">
<li class="list-inline-item">
<a href="https://twitter.com/SoMy76ers" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-twitter">
<path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"></path>
</svg>
</a>
</li>
<li class="list-inline-item">
<a href="https://www.instagram.com/somymedia/" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-instagram">
<path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z"></path>
</svg>
</a>
</li>
</ul>
</div>
</div>
</footer>
<script src="static/bootstrap/js/bootstrap.min.js"></script>
<script src="static/js/script.min.js"></script>
</body>
</html>

View File

@@ -1,147 +1,139 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calendar settings</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous">
<style>
body {
background-color: #ffffff;
color: #000000;
margin: 0;
padding: 0;
}
.header {
background: rgba(255, 255, 255, 0.8);
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
width: 150px;
height: auto;
}
.header-links {
display: flex;
align-items: center;
}
.header-links a {
color: #000000;
margin-right: 20px;
text-decoration: none;
font-weight: bold;
}
.header-links a:hover {
color: #ffffff;
}
.container {
background: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), grey;
padding: 20px;
border-radius: 10px;
margin-top: 20px;
}
.list-group-item {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #343434;
color: #ffffff;
border: none;
margin-bottom: 5px;
}
.button-group a {
margin-right: 5px;
}
.team-logo {
width: 75px;
height: auto;
margin-right: 10px;
}
.list-group-item.d-none {
display: none !important;
}
</style>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>Welcome to SMC</title>
<link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800&amp;display=swap">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">
<img src="static/logo/logo.png" alt="Logo SC" class="logo">
</a>
<div class="navbar-nav header-links ml-auto">
<a class="nav-item nav-link" href="#">Accueil</a>
<a class="nav-item nav-link" href="webcal://somycal.com/calendar/{{userId}}.ics" target="_blank">S'abonner au calendrier</a>
<a class="nav-item nav-link" href="/logout">Déconnexion</a>
</div>
</nav>
<div class="container">
<div class="d-flex align-items-center mb-4">
<h2 class="mr-2">Equipes:</h2>&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" id="searchInput" class="form-control" oninput="filterTeams()">
</div>
<div class="row" id="teamList">
{% for team in userTeams %}
<div class="col-md-4 mb-3">
<li class="list-group-item">
<img src="{{ getTeamLogo(team.idTeam) }}" alt="Logo de l'équipe" class="team-logo">
{{ getTeamName(team.idTeam) }}
<div class="button-group">
<a class="btn btn-danger" href="/del/{{ team.idTeam }}">Retirer</a>
</div>
</li>
<nav class="navbar navbar-light navbar-expand-md fixed-top navbar-shrink py-3" id="mainNav">
<div class="container"><a class="navbar-brand d-flex align-items-center" href="/"><a class="navbar-brand d-flex align-items-center" href="/"><img src="static/img/brands/logo.png" style="width: 64px;"></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navcol-1">
<ul class="navbar-nav mx-auto"></ul>
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link active" href="">Home</a></li>
<li class="nav-item"><a class="disabled nav-link" href="">My teams</a></li>
<li class="nav-item"><a class="disabled nav-link" href="#">Sync. this device</a></li>
</ul>
</div><a class="btn btn-primary shadow" role="button" href="/login/google">Dashboard</a>
</div>
{% endfor %}
{% for team in otherTeams %}
<div class="col-md-4 mb-3">
<li class="list-group-item">
<img src="{{ getTeamLogo(team) }}" alt="Logo de l'équipe" class="team-logo">
{{ getTeamName(team) }}
<div class="button-group">
<a class="btn btn-success" href="/add/{{ team }}">Ajouter</a>
</nav>
<section class="py-5 mt-5">
<div class="container py-4 py-xl-5">
<div class="row gy-4 gy-md-0">
<div class="col-md-6 text-center text-md-start d-flex d-sm-flex d-md-flex justify-content-center align-items-center justify-content-md-start align-items-md-center justify-content-xl-center">
<div>
<h1 class="display-6 fw-bold mb-4">Your favourite teams, on a single&nbsp;<span class="underline">platform</span>.</h1>
<p class="my-4">Synchronize your favorite teams' calendars in just a few clicks from a simple, intuitive interface</p><a class="btn btn-outline-primary btn-lg" role="button" href="/login/google">Continue with Google</a>
</div>
</div>
</li>
<div class="col-md-6">
<div><img class="rounded img-fluid w-100 fit-cover" style="min-height: 300px;" src="static/img/illustrations/web-development.svg"></div>
</div>
</div>
<div class="text-center mt-5">
<p class="mb-4" style="font-size: 1.6rem;">Currently lists more than&nbsp;<span class="bg-warning p-1"><strong>2531</strong></span>&nbsp;events</p>
</div>
</div>
{% endfor %}
</div>
</div>
<footer class="footer mt-auto py-3">
<div class="container text-center">
<a href="https://github.com/itsmrval/nba-calendar" target="_blank" class="ml-3 text-muted text-decoration-none">
<i class="fab fa-github"></i> &copy; 2023 Sport Calendar
</a>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script>
function filterTeams() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("searchInput");
filter = input.value.toUpperCase();
ul = document.getElementById("teamList");
li = ul.getElementsByClassName("col-md-4");
for (i = 0; i < li.length; i++) {
a = li[i];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
a.classList.remove("d-none");
} else {
a.classList.add("d-none");
}
}
}
</script>
</section>
<section>
<div class="container py-4 py-xl-5">
<div class="row mb-5">
<div class="col-md-8 col-xl-6">
<h3 class="display-6 fw-bold pb-4 mb-4">Available&nbsp;<span class="underline">features</span></h3>
</div>
<div class="col-md-8 col-xl-6 pt-4">
<p class="text-muted">Here is a quick list of currently available features</p>
</div>
</div>
<div class="row gy-4 row-cols-1 row-cols-md-2 row-cols-xl-3">
<div class="col">
<div class="card border-light border-1 d-flex justify-content-center p-4">
<div class="card-body">
<div>
<div class="bs-icon-lg bs-icon-rounded bs-icon-secondary d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block mb-4 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icon-tabler-rss">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<circle cx="5" cy="19" r="1"></circle>
<path d="M4 4a16 16 0 0 1 16 16"></path>
<path d="M4 11a9 9 0 0 1 9 9"></path>
</svg></div>
<h4 class="fw-bold">Real time sync</h4>
<p class="text-muted">Real-time synchronization with official APIs</p>
</div>
</div>
</div>
</div>
<div class="col">
<div class="card border-light border-1 d-flex justify-content-center p-4">
<div class="card-body">
<div>
<div class="bs-icon-lg bs-icon-rounded bs-icon-secondary d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block mb-4 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icon-tabler-ruler">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M5 4h14a1 1 0 0 1 1 1v5a1 1 0 0 1 -1 1h-7a1 1 0 0 0 -1 1v7a1 1 0 0 1 -1 1h-5a1 1 0 0 1 -1 -1v-14a1 1 0 0 1 1 -1"></path>
<line x1="4" y1="8" x2="6" y2="8"></line>
<line x1="4" y1="12" x2="7" y2="12"></line>
<line x1="4" y1="16" x2="6" y2="16"></line>
<line x1="8" y1="4" x2="8" y2="6"></line>
<polyline points="12 4 12 7 "></polyline>
<polyline points="16 4 16 6 "></polyline>
</svg></div>
<h4 class="fw-bold">Quick changes</h4>
<p class="text-muted">Modify your subscriptions in just a few clicks</p>
</div>
</div>
</div>
</div>
<div class="col">
<div class="card border-light border-1 d-flex justify-content-center p-4">
<div class="card-body">
<div>
<div class="bs-icon-lg bs-icon-rounded bs-icon-secondary d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block mb-4 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icon-tabler-friends">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<circle cx="7" cy="5" r="2"></circle>
<path d="M5 22v-5l-1-1v-4a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4l-1 1v5"></path>
<circle cx="17" cy="5" r="2"></circle>
<path d="M15 22v-4h-2l2 -6a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1l2 6h-2v4"></path>
</svg></div>
<h4 class="fw-bold">Friend system</h4>
<p class="text-muted">Share your next matches with your friends</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<footer>
<div class="container py-4 py-lg-5">
<hr>
<div class="text-muted d-flex justify-content-between align-items-center pt-3">
<p class="mb-0">Copyright © 2024 So My Calendar</p>
<ul class="list-inline mb-0">
<li class="list-inline-item">
<a href="https://twitter.com/SoMy76ers" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-twitter">
<path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"></path>
</svg>
</a>
</li>
<li class="list-inline-item">
<a href="https://www.instagram.com/somymedia/" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-instagram">
<path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z"></path>
</svg>
</a>
</li>
</ul>
</div>
</div>
</footer>
<script src="static/bootstrap/js/bootstrap.min.js"></script>
<script src="static/js/script.min.js"></script>
</body>
</html>
</html>

View File

@@ -1,30 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<title>SportsCalendar</title> <!-- Add the title of the site here -->
</head>
<body>
<div class="container">
<div class="row justify-content-center align-items-center" style="height:100vh;">
<div class="col-md-4">
<div class="card">
<div class="card-body text-center">
<img src="static/logo/google.png" width="150px">
<h5 class="card-title">Login with Google</h5>
<p class="card-text">Click the button below to connect with Google</p>
<a href="/login/google" class="btn btn-danger btn-lg">Login with Google</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>