Compare commits
No commits in common. "a32956b4a20ab525bf603bf11760936ef01ec153" and "7b064eb6daea207685428734472b689743e6d40d" have entirely different histories.
a32956b4a2
...
7b064eb6da
@ -1,9 +0,0 @@
|
|||||||
<?php
|
|
||||||
$data = array_merge($data, [
|
|
||||||
'title' => 'Coming Soon',
|
|
||||||
'heading' => 'Coming Soon',
|
|
||||||
'countdown' => true,
|
|
||||||
'launch_date' => '2026-01-01T00:00:00'
|
|
||||||
]);
|
|
||||||
|
|
||||||
view('@novacore/coming-soon', $data);
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
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
|
|
||||||
@ -2,5 +2,4 @@
|
|||||||
@use 'abstracts' as *
|
@use 'abstracts' as *
|
||||||
@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,4 +1,16 @@
|
|||||||
<?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);
|
||||||
|
|||||||
@ -1,71 +0,0 @@
|
|||||||
<!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>
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
{% 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