added coming soon page
This commit is contained in:
parent
7bf3dc6610
commit
a32956b4a2
94
sass/coming-soon/index.sass
Normal file
94
sass/coming-soon/index.sass
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
body#coming-soon
|
||||||
|
display: flex
|
||||||
|
justify-content: center
|
||||||
|
align-items: center
|
||||||
|
height: 100%
|
||||||
|
padding: 1rem
|
||||||
|
box-sizing: border-box
|
||||||
|
margin: 0
|
||||||
|
text-align: center
|
||||||
|
color: #eee
|
||||||
|
font-family: 'Segoe UI', Roboto, sans-serif
|
||||||
|
background-size: cover
|
||||||
|
background-repeat: no-repeat
|
||||||
|
background-position: center center
|
||||||
|
background-attachment: fixed
|
||||||
|
|
||||||
|
.container
|
||||||
|
max-width: 600px
|
||||||
|
background-color: rgba(30, 30, 30, 0.89)
|
||||||
|
padding: 2rem
|
||||||
|
border-radius: 8px
|
||||||
|
box-shadow: 0 0 20px rgba(0,0,0,0.5)
|
||||||
|
|
||||||
|
h1
|
||||||
|
font-size: 3rem
|
||||||
|
margin-bottom: 1rem
|
||||||
|
animation: pulse 1.5s infinite
|
||||||
|
|
||||||
|
p
|
||||||
|
font-size: 1.2rem
|
||||||
|
opacity: 0.85
|
||||||
|
margin-bottom: 1.5rem
|
||||||
|
|
||||||
|
.countdown
|
||||||
|
font-size: 2rem
|
||||||
|
font-weight: bold
|
||||||
|
margin: 1rem 0 2rem 0
|
||||||
|
|
||||||
|
form.newsletter
|
||||||
|
display: flex
|
||||||
|
flex-direction: column
|
||||||
|
gap: 0.5rem
|
||||||
|
margin-top: 1rem
|
||||||
|
|
||||||
|
input[type="email"]
|
||||||
|
padding: 0.5rem
|
||||||
|
font-size: 1rem
|
||||||
|
border: 1px solid #666
|
||||||
|
border-radius: 4px
|
||||||
|
background: rgba(255,255,255,0.05)
|
||||||
|
color: #eee
|
||||||
|
|
||||||
|
button
|
||||||
|
padding: 0.5rem
|
||||||
|
font-size: 1rem
|
||||||
|
border: 1px solid #1e90ff
|
||||||
|
border-radius: 4px
|
||||||
|
background: #1e90ff
|
||||||
|
color: #fff
|
||||||
|
cursor: pointer
|
||||||
|
transition: background 0.2s
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background: #1565c0
|
||||||
|
|
||||||
|
.social-icons
|
||||||
|
margin-top: 2rem
|
||||||
|
display: flex
|
||||||
|
justify-content: center
|
||||||
|
gap: 1rem
|
||||||
|
|
||||||
|
a
|
||||||
|
display: inline-flex
|
||||||
|
align-items: center
|
||||||
|
justify-content: center
|
||||||
|
width: 40px
|
||||||
|
height: 40px
|
||||||
|
font-size: 1.5rem
|
||||||
|
color: #eee
|
||||||
|
text-decoration: none
|
||||||
|
transition: color 0.2s
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color: #1e90ff
|
||||||
|
|
||||||
|
i
|
||||||
|
font-style: normal
|
||||||
|
|
||||||
|
|
||||||
|
@keyframes pulse
|
||||||
|
0%, 100%
|
||||||
|
opacity: 0.8
|
||||||
|
50%
|
||||||
|
opacity: 1
|
||||||
@ -3,3 +3,4 @@
|
|||||||
@use 'base' as *
|
@use 'base' as *
|
||||||
@use 'framework' as *
|
@use 'framework' as *
|
||||||
@use 'controlPanel' as *
|
@use 'controlPanel' as *
|
||||||
|
@use 'coming-soon' as *
|
||||||
File diff suppressed because one or more lines are too long
@ -1,16 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Novaconium Framework Entry Point
|
|
||||||
*
|
|
||||||
* This is the main entry point for the Novaconium framework.
|
|
||||||
* It sets up the environment, loads necessary components,
|
|
||||||
* and runs the application.
|
|
||||||
*
|
|
||||||
* @package Novaconium
|
|
||||||
* @author Nick Yeoman <dev@4lt.ca>
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Enable error reporting for development environments
|
// Enable error reporting for development environments
|
||||||
// error_reporting(E_ALL);
|
// error_reporting(E_ALL);
|
||||||
// ini_set('display_errors', 1);
|
// ini_set('display_errors', 1);
|
||||||
|
|||||||
71
twig/coming-soon/index.html.twig
Normal file
71
twig/coming-soon/index.html.twig
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{{ title | default('Coming Soon') }}</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="/css/novaconium.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background: url("{{ bg_image | default('https://w.wallhaven.cc/full/5y/wallhaven-5yymk9.jpg') }}") no-repeat center center fixed;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body id="coming-soon">
|
||||||
|
<div class="container">
|
||||||
|
<h1>{{ heading | default('Coming Soon') }}</h1>
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
|
{% if countdown %}
|
||||||
|
<div class="countdown" id="countdown"></div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# TODO: listmonk #}
|
||||||
|
<form class="newsletter" action="#" method="post">
|
||||||
|
<label for="email">Subscribe to our newsletter:</label>
|
||||||
|
<input type="email" id="email" name="email" placeholder="Your email address" required>
|
||||||
|
<button type="submit">Subscribe</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{# Social media icons using Font Awesome #}
|
||||||
|
<div class="social-icons">
|
||||||
|
{% block social %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if countdown %}
|
||||||
|
<script>
|
||||||
|
{% if countdown %}
|
||||||
|
{% set default_launch = "now"|date_modify("+30 days")|date("Y-m-d\TH:i:s") %}
|
||||||
|
const launchDate = new Date('{{ launch_date | default(default_launch) }}').getTime();
|
||||||
|
const countdownEl = document.getElementById('countdown');
|
||||||
|
|
||||||
|
function updateCountdown() {
|
||||||
|
const now = new Date().getTime();
|
||||||
|
const distance = launchDate - now;
|
||||||
|
|
||||||
|
if (distance <= 0) {
|
||||||
|
countdownEl.innerText = 'Launched!';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const days = Math.floor(distance / (1000*60*60*24));
|
||||||
|
const hours = Math.floor((distance % (1000*60*60*24)) / (1000*60*60));
|
||||||
|
const mins = Math.floor((distance % (1000*60*60)) / (1000*60));
|
||||||
|
const secs = Math.floor((distance % (1000*60)) / 1000);
|
||||||
|
|
||||||
|
countdownEl.innerText = `${days}d ${hours}h ${mins}m ${secs}s`;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCountdown();
|
||||||
|
setInterval(updateCountdown, 1000);
|
||||||
|
{% endif %}
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
views/coming-soon.html.twig
Normal file
32
views/coming-soon.html.twig
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{% extends '@novaconium/coming-soon/index.html.twig' %}
|
||||||
|
|
||||||
|
{% set bg_image = "https://i.4lt.ca/4lt/waterBubbles.webp" %}
|
||||||
|
{% set default_launch = "now"|date_modify("+30 days")|date("Y-m-d\TH:i:s") %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<p>Our website is under construction. We’re working hard to bring you a better experience.</p>
|
||||||
|
<p>Stay tuned for updates!</p>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block social %}
|
||||||
|
<a href="mailto:you@example.com" title="Email">
|
||||||
|
<i class="fa-solid fa-envelope"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="tel:+1234567890" title="Phone">
|
||||||
|
<i class="fa-solid fa-phone"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="#" title="Twitter">
|
||||||
|
<i class="fab fa-twitter"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="#" title="Facebook">
|
||||||
|
<i class="fab fa-facebook-f"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="#" title="Instagram">
|
||||||
|
<i class="fab fa-instagram"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
Loading…
x
Reference in New Issue
Block a user