2025-02-14 22:37:52 -05:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2025-02-16 19:24:50 -05:00
< meta name = "description"
content = "ION Static Site Hosting offers effortless hosting and sharing of static sites with instant deployment, dark mode interface, and secure, private data handling!" >
< meta name = "keywords"
content = "static site hosting, instant deployment, dark mode, secure hosting, private data, file management, blazing fast" >
< meta name = "author" content = "ION606" >
< meta property = "og:title" content = "ION Static Site Hosting" >
< meta property = "og:description"
content = "Host and share your static sites effortlessly with ION Static Site Hosting. Enjoy instant deployment, a sleek dark mode interface, and secure, private data handling!" >
< meta property = "og:image" content = "{{ url_for('static', filename='hosting.png') }}" >
2025-02-17 15:41:48 -05:00
< meta property = "og:url" content = "https://{{ SERVERNAME }}/" >
2025-02-16 19:24:50 -05:00
< meta name = "twitter:card" content = "{{ url_for('static', filename='hosting.png') }}" >
< meta name = "twitter:title" content = "ION Static Site Hosting" >
< meta name = "twitter:description"
content = "Host and share your static sites effortlessly with ION Static Site Hosting. Enjoy instant deployment, a sleek dark mode interface, and secure, private data handling!" >
< meta name = "twitter:image" content = "{{ url_for('static', filename='hosting.png') }}" >
2025-02-16 16:07:55 -05:00
< title > ION Static Site Hosting - {% block title %}{% endblock %}< / title >
2025-02-14 22:37:52 -05:00
< link rel = "stylesheet" href = "{{ url_for('static', filename='styles.css') }}" id = "theme-style" >
2025-02-16 19:24:50 -05:00
< link rel = "icon" href = "{{ url_for('static', filename='favicon.ico') }}" >
2025-02-14 22:37:52 -05:00
< script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" > < / script >
< script >
document . addEventListener ( 'DOMContentLoaded' , ( ) => {
const themeToggle = document . querySelector ( '#theme-toggle' ) ;
const body = document . body ;
2025-02-17 22:40:50 -05:00
// get saved theme from localStorage
2025-02-14 22:37:52 -05:00
const savedTheme = localStorage . getItem ( 'theme' ) || 'dark' ;
body . setAttribute ( 'data-theme' , savedTheme ) ;
if ( ! savedTheme ) localStorage . setItem ( 'theme' , savedTheme ) ;
2025-02-17 22:40:50 -05:00
// set initial button text
themeToggle . textContent = savedTheme === 'dark' ? 'light mode' : 'dark mode' ;
2025-02-14 22:37:52 -05:00
themeToggle . addEventListener ( 'click' , ( ) => {
const isDark = body . getAttribute ( 'data-theme' ) === 'dark' ;
body . setAttribute ( 'data-theme' , isDark ? 'light' : 'dark' ) ;
localStorage . setItem ( 'theme' , isDark ? 'light' : 'dark' ) ;
2025-02-17 22:40:50 -05:00
themeToggle . textContent = isDark ? 'dark mode' : 'light mode' ;
2025-02-14 22:37:52 -05:00
} ) ;
} ) ;
< / script >
2025-02-17 22:18:29 -05:00
< style >
. navbar-toggle {
display : none ;
}
@ media ( max-width : 768px ) {
. navbar-toggle {
display : block ;
}
}
< / style >
2025-02-14 22:37:52 -05:00
< / head >
< body >
< nav class = "navbar" >
< div class = "container" >
2025-02-18 01:27:40 +00:00
< a href = "{{ url_for('main.home', _external=True) }}" > Home< / a >
2025-02-17 22:40:50 -05:00
< button id = "nav-toggle" class = "navbar-toggle" aria-label = "menu" > ☰ < / button >
2025-02-17 22:18:29 -05:00
< div id = "navbar-links" class = "navbar-links" >
{% if current_user.is_authenticated %}
< a href = "{{ url_for('main.dashboard', _external=True) }}" > Dashboard< / a >
< a href = "{{ url_for('main.logout', _external=True) }}" > Logout< / a >
{% else %}
< a href = "{{ url_for('main.login', _external=True) }}" > Login< / a >
< a href = "{{ url_for('main.register', _external=True) }}" > Register< / a >
{% endif %}
2025-02-17 22:40:50 -05:00
< button id = "theme-toggle" class = "btn" > toggle dark mode< / button >
2025-02-17 22:18:29 -05:00
< / div >
2025-02-14 22:37:52 -05:00
< / div >
< / nav >
< div class = "container" >
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
< div class = "flash-message flash-{{ category }}" >
{{ message }}
< / div >
{% endfor %}
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
< / div >
2025-02-17 22:40:50 -05:00
< script >
document . addEventListener ( 'DOMContentLoaded' , ( ) => {
const navToggle = document . querySelector ( '#nav-toggle' ) ;
const navbarLinks = document . querySelector ( '#navbar-links' ) ;
const navbar = document . querySelector ( '.navbar' ) ;
navToggle . addEventListener ( 'click' , ( ) => {
navbarLinks . classList . toggle ( 'active' ) ;
navToggle . classList . toggle ( 'active' ) ;
} ) ;
document . addEventListener ( 'click' , ( e ) => {
if ( ! navbar . contains ( e . target ) ) {
navbarLinks . classList . remove ( 'active' ) ;
navToggle . classList . remove ( 'active' ) ;
}
} ) ;
} ) ;
< / script >
2025-02-14 22:37:52 -05:00
< / body >
2025-02-17 22:44:03 -05:00
< / html >