First commit for kiddy template
This commit is contained in:
		
							parent
							
								
									b0d7683e9c
								
							
						
					
					
						commit
						3367abd5fb
					
				
							
								
								
									
										7
									
								
								templates/kiddy/html/footer.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/kiddy/html/footer.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					<!-- Footer -->
 | 
				
			||||||
 | 
					<footer class="footer mt-auto">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <p>${copyright}</p>
 | 
				
			||||||
 | 
					    <p><a href="${privacy_policy}">Privacy Policy</a> | <a href="${terms_of_service}">Terms of Service</a></p>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</footer>
 | 
				
			||||||
							
								
								
									
										22
									
								
								templates/kiddy/html/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								templates/kiddy/html/index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					  <meta charset="UTF-8">
 | 
				
			||||||
 | 
					  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
 | 
					  <title>${title}</title>
 | 
				
			||||||
 | 
					  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
 | 
				
			||||||
 | 
					  <link href="/templates/kiddy/css/style.css" rel="stylesheet">
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body class="d-flex flex-column" style="min-height:100vh;">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ${navbar}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ${container}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ${footer}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
 | 
				
			||||||
 | 
					  <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
 | 
				
			||||||
 | 
					  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										22
									
								
								templates/kiddy/html/navbar.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								templates/kiddy/html/navbar.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<!-- Navbar -->
 | 
				
			||||||
 | 
					<nav class="navbar navbar-expand-lg navbar-light bg-light">
 | 
				
			||||||
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    <a class="navbar-brand" href="#">${title}</a>
 | 
				
			||||||
 | 
					    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
 | 
				
			||||||
 | 
					      <span class="navbar-toggler-icon"></span>
 | 
				
			||||||
 | 
					    </button>
 | 
				
			||||||
 | 
					    <div class="collapse navbar-collapse" id="navbarNav">
 | 
				
			||||||
 | 
					      <ul class="navbar-nav ml-auto">
 | 
				
			||||||
 | 
					        % for item in menu:
 | 
				
			||||||
 | 
					        % if any(role in item['roles'] for role in user_roles):
 | 
				
			||||||
 | 
					        <li class="nav-item ${'active' if item['name'] == active_page else ''}">
 | 
				
			||||||
 | 
					          <a class="nav-link" href="${item['href']}" target="${item['target']}">
 | 
				
			||||||
 | 
					            ${item['name']}
 | 
				
			||||||
 | 
					          </a>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        % endif
 | 
				
			||||||
 | 
					        % endfor
 | 
				
			||||||
 | 
					      </ul>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</nav>
 | 
				
			||||||
							
								
								
									
										18
									
								
								templates/kiddy/main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								templates/kiddy/main.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					from core import html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static = [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "route"	: "/templates/kiddy/css/<filepath:re:.*\.(css|sass|css.map)>",
 | 
				
			||||||
 | 
					        "root"	: "./templates/kiddy/static/css"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main(dir, page):
 | 
				
			||||||
 | 
					    html_template	= html.main.get_html("templates/kiddy/html")
 | 
				
			||||||
 | 
					    html_page		= html.main.get_html(dir)
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        "index"		: html_template	[ "index.html"	],
 | 
				
			||||||
 | 
					        "navbar"	: html_template	[ "navbar.html"	],
 | 
				
			||||||
 | 
					        "footer"	: html_template	[ "footer.html"	],
 | 
				
			||||||
 | 
					        "container"	: html_page	[f"{page}.html"	]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										179
									
								
								templates/kiddy/static/css/style.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								templates/kiddy/static/css/style.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,179 @@
 | 
				
			|||||||
 | 
					body {
 | 
				
			||||||
 | 
					  font-family: 'Arial', sans-serif;
 | 
				
			||||||
 | 
					  background-color: #f8f9fa;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.navbar {
 | 
				
			||||||
 | 
					  margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header {
 | 
				
			||||||
 | 
					  background: url('https://img.freepik.com/free-photo/little-cute-boy-proud-when-he-finish-drawing-with-happiness-raised-two-hands-his-head-smile_1150-15403.jpg') no-repeat center center;
 | 
				
			||||||
 | 
					  background-size: cover;
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					  padding: 100px 0;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  min-height: 400px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-overlay {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  background-color: rgba(0, 123, 255, 0.6);
 | 
				
			||||||
 | 
					  z-index: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-content {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  z-index: 2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header h1 {
 | 
				
			||||||
 | 
					  margin: 0;
 | 
				
			||||||
 | 
					  font-size: 3em;
 | 
				
			||||||
 | 
					  font-family: 'Comic Sans MS', cursive, sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header p {
 | 
				
			||||||
 | 
					  font-size: 1.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.packages {
 | 
				
			||||||
 | 
					  padding: 50px 0;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.packages h2 {
 | 
				
			||||||
 | 
					  font-size: 2.5em;
 | 
				
			||||||
 | 
					  margin-bottom: 50px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.package {
 | 
				
			||||||
 | 
					  border-radius: 15px;
 | 
				
			||||||
 | 
					  padding: 20px;
 | 
				
			||||||
 | 
					  margin: 20px 0;
 | 
				
			||||||
 | 
					  background-color: white;
 | 
				
			||||||
 | 
					  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
 | 
				
			||||||
 | 
					  transition: transform 0.2s;
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.package:hover {
 | 
				
			||||||
 | 
					  transform: scale(1.05);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.package:nth-child(1) { background-color: #FF6F61; }
 | 
				
			||||||
 | 
					.package:nth-child(2) { background-color: #6B5B95; }
 | 
				
			||||||
 | 
					.package:nth-child(3) { background-color: #FFA07A; }
 | 
				
			||||||
 | 
					.package:nth-child(4) { background-color: #88B04B; }
 | 
				
			||||||
 | 
					.package .btn {
 | 
				
			||||||
 | 
					  background-color: white;
 | 
				
			||||||
 | 
					  color: black;
 | 
				
			||||||
 | 
					  border: none;
 | 
				
			||||||
 | 
					  margin-top: 10px;
 | 
				
			||||||
 | 
					  padding: 10px 20px;
 | 
				
			||||||
 | 
					  border-radius: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.package .btn:hover {
 | 
				
			||||||
 | 
					  background-color: #f0f0f0;
 | 
				
			||||||
 | 
					  color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.package img {
 | 
				
			||||||
 | 
					  width: 80px;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.about-us {
 | 
				
			||||||
 | 
					  padding: 50px 0;
 | 
				
			||||||
 | 
					  background-color: #FFC857;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.about-us h2 {
 | 
				
			||||||
 | 
					  font-size: 2.5em;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.about-us p {
 | 
				
			||||||
 | 
					  font-size: 1.2em;
 | 
				
			||||||
 | 
					  max-width: 800px;
 | 
				
			||||||
 | 
					  margin: 0 auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-plan {
 | 
				
			||||||
 | 
					  padding: 50px 0;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-plan h2 {
 | 
				
			||||||
 | 
					  font-size: 2.5em;
 | 
				
			||||||
 | 
					  margin-bottom: 50px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card {
 | 
				
			||||||
 | 
					  border-radius: 15px;
 | 
				
			||||||
 | 
					  padding: 30px;
 | 
				
			||||||
 | 
					  margin: 20px;
 | 
				
			||||||
 | 
					  background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
 | 
				
			||||||
 | 
					  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
 | 
				
			||||||
 | 
					  transition: transform 0.2s;
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card:hover {
 | 
				
			||||||
 | 
					  transform: scale(1.05);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card::before {
 | 
				
			||||||
 | 
					  content: '';
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  background: rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					  z-index: 1;
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card h3 {
 | 
				
			||||||
 | 
					  font-size: 2em;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card p {
 | 
				
			||||||
 | 
					  font-size: 1.2em;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					  z-index: 2;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card .btn {
 | 
				
			||||||
 | 
					  margin-top: 20px;
 | 
				
			||||||
 | 
					  padding: 10px 20px;
 | 
				
			||||||
 | 
					  border-radius: 50px;
 | 
				
			||||||
 | 
					  z-index: 2;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  background-color: rgba(255, 255, 255, 0.9);
 | 
				
			||||||
 | 
					  color: #333;
 | 
				
			||||||
 | 
					  border: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.price-card .btn:hover {
 | 
				
			||||||
 | 
					  background-color: rgba(255, 255, 255, 1);
 | 
				
			||||||
 | 
					  color: #333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.get-started {
 | 
				
			||||||
 | 
					  padding: 50px 0;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  background-color: #f8f9fa;
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.get-started .content {
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					  font-size: 1.2em;
 | 
				
			||||||
 | 
					  margin-right: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.get-started .btn {
 | 
				
			||||||
 | 
					  font-size: 1.2em;
 | 
				
			||||||
 | 
					  padding: 15px 30px;
 | 
				
			||||||
 | 
					  border-radius: 50px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer {
 | 
				
			||||||
 | 
					  background-color: #343a40;
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					  padding: 20px 0;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer a {
 | 
				
			||||||
 | 
					  color: #ffc107;
 | 
				
			||||||
 | 
					  text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.footer a:hover {
 | 
				
			||||||
 | 
					  text-decoration: underline;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user