This commit is contained in:
Ty Clifford
2026-07-03 07:31:09 -04:00
commit cebb0d3af1
800 changed files with 89782 additions and 0 deletions
+839
View File
@@ -0,0 +1,839 @@
:root {
--bg: #07090f;
--bg-2: #0c1018;
--surface: #111722;
--surface-2: #151d2a;
--surface-soft: rgba(17, 23, 34, 0.82);
--border: rgba(139, 166, 199, 0.18);
--border-strong: rgba(139, 166, 199, 0.32);
--text: #f4f8ff;
--text-soft: #b8c6d9;
--text-muted: #8190a6;
--neon-green: #00ff8a;
--neon-red: #ff3157;
--neon-pink: #ff4fd8;
--neon-orange: #ff9f1c;
--neon-blue: #24c8ff;
--shadow: 0 20px 60px rgba(0, 0, 0, 0.34);
--radius: 8px;
}
* {
box-sizing: border-box;
letter-spacing: 0;
}
html {
min-height: 100%;
scroll-behavior: smooth;
}
body {
min-height: 100%;
margin: 0;
background:
linear-gradient(90deg, rgba(36, 200, 255, 0.06) 1px, transparent 1px),
linear-gradient(0deg, rgba(0, 255, 138, 0.04) 1px, transparent 1px),
linear-gradient(180deg, #07090f 0%, #0a0d14 52%, #080a10 100%);
background-size: 64px 64px, 64px 64px, auto;
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
font-size: 1rem;
line-height: 1.65;
}
body::before {
position: fixed;
inset: 0;
z-index: -1;
content: "";
background:
linear-gradient(115deg, rgba(0, 255, 138, 0.08), transparent 26%),
linear-gradient(245deg, rgba(255, 49, 87, 0.08), transparent 28%),
linear-gradient(180deg, transparent 0%, rgba(7, 9, 15, 0.72) 72%);
pointer-events: none;
}
a {
color: var(--neon-blue);
text-decoration: none;
transition: color 0.18s ease, border-color 0.18s ease, background-color 0.18s ease, transform 0.18s ease;
}
a:hover,
a:focus {
color: var(--neon-green);
text-decoration: none;
}
a:focus,
button:focus,
input:focus,
textarea:focus,
select:focus {
outline: 2px solid var(--neon-blue);
outline-offset: 3px;
}
img {
max-width: 100%;
height: auto;
}
.skip-link {
position: absolute;
left: 1rem;
top: 0.75rem;
z-index: 2000;
padding: 0.5rem 0.75rem;
background: var(--neon-green);
color: #061009;
border-radius: var(--radius);
font-weight: 700;
transform: translateY(-150%);
}
.skip-link:focus {
transform: translateY(0);
color: #061009;
}
.site-main {
min-height: 60vh;
}
.neon-navbar {
position: sticky;
top: 0;
z-index: 1000;
padding: 0.65rem 0;
background: rgba(7, 9, 15, 0.94);
border-bottom: 1px solid var(--border);
box-shadow: 0 12px 38px rgba(0, 0, 0, 0.26);
backdrop-filter: blur(16px);
}
.navbar-brand {
display: inline-flex;
align-items: center;
gap: 0.6rem;
color: var(--text) !important;
font-size: 1.02rem;
font-weight: 800;
min-width: 0;
}
.brand-signal {
width: 0.85rem;
height: 0.85rem;
border-radius: 50%;
background: conic-gradient(from 90deg, var(--neon-green), var(--neon-blue), var(--neon-pink), var(--neon-orange), var(--neon-red), var(--neon-green));
box-shadow: 0 0 18px rgba(36, 200, 255, 0.7);
flex: 0 0 auto;
}
.navbar-toggler {
color: var(--text);
border: 1px solid var(--border-strong);
border-radius: var(--radius);
padding: 0.35rem 0.55rem;
}
.navbar-toggler i {
font-size: 1.35rem;
}
.navbar-nav {
align-items: center;
}
.navbar .nav-link {
color: var(--text-soft) !important;
border: 1px solid transparent;
border-radius: var(--radius);
font-size: 0.92rem;
font-weight: 650;
padding: 0.45rem 0.7rem;
}
.navbar .nav-link:hover,
.navbar .nav-link.active {
color: var(--text) !important;
background: rgba(36, 200, 255, 0.09);
border-color: rgba(36, 200, 255, 0.22);
}
.nav-icon-link {
display: inline-flex;
align-items: center;
gap: 0.35rem;
}
.nav-search {
margin-left: 0.8rem;
}
.nav-search-field,
.hero-search {
display: flex;
align-items: center;
gap: 0.55rem;
background: rgba(255, 255, 255, 0.045);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text-muted);
}
.nav-search-field {
min-width: 220px;
padding: 0.35rem 0.65rem;
}
.nav-search-field input,
.hero-search input {
width: 100%;
min-width: 0;
background: transparent;
color: var(--text);
border: 0;
font: inherit;
}
.nav-search-field input::placeholder,
.hero-search input::placeholder {
color: var(--text-muted);
}
.neon-hero {
padding: 4rem 0 2rem;
}
.hero-panel {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(260px, 420px);
gap: 2rem;
align-items: end;
padding: 2rem 0 2.3rem;
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
}
.accent-strip {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 0.45rem;
width: min(360px, 100%);
margin-bottom: 1.3rem;
}
.accent-strip span {
display: block;
height: 0.26rem;
border-radius: 99px;
box-shadow: 0 0 20px currentColor;
}
.accent-strip span:nth-child(1) { background: var(--neon-green); color: var(--neon-green); }
.accent-strip span:nth-child(2) { background: var(--neon-red); color: var(--neon-red); }
.accent-strip span:nth-child(3) { background: var(--neon-pink); color: var(--neon-pink); }
.accent-strip span:nth-child(4) { background: var(--neon-orange); color: var(--neon-orange); }
.accent-strip span:nth-child(5) { background: var(--neon-blue); color: var(--neon-blue); }
.hero-kicker {
color: var(--neon-green);
font-size: 0.9rem;
font-weight: 750;
margin: 0 0 0.65rem;
}
.hero-copy h1,
.page-header h1 {
color: var(--text);
font-size: 3rem;
font-weight: 850;
line-height: 1.08;
margin: 0;
max-width: 920px;
}
.hero-copy p:not(.hero-kicker),
.page-header p {
max-width: 720px;
margin: 1rem 0 0;
color: var(--text-soft);
font-size: 1.08rem;
}
.hero-search {
padding: 0.55rem;
align-self: center;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02), 0 0 34px rgba(36, 200, 255, 0.09);
}
.hero-search button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.35rem;
min-height: 2.55rem;
padding: 0.55rem 0.85rem;
background: var(--neon-blue);
color: #031017;
border: 0;
border-radius: var(--radius);
font-weight: 800;
white-space: nowrap;
cursor: pointer;
}
.hero-search button:hover {
background: var(--neon-green);
}
.content-band {
padding: 2.2rem 0 4rem;
}
.single-band {
padding-top: 3rem;
}
.post-list {
display: grid;
gap: 1.35rem;
}
.neon-post {
--post-accent: var(--neon-blue);
position: relative;
overflow: hidden;
background: var(--surface-soft);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: var(--shadow);
}
.post-list .neon-post:nth-child(5n+1) { --post-accent: var(--neon-green); }
.post-list .neon-post:nth-child(5n+2) { --post-accent: var(--neon-red); }
.post-list .neon-post:nth-child(5n+3) { --post-accent: var(--neon-pink); }
.post-list .neon-post:nth-child(5n+4) { --post-accent: var(--neon-orange); }
.post-list .neon-post:nth-child(5n+5) { --post-accent: var(--neon-blue); }
.neon-post::before {
position: absolute;
inset: 0 auto 0 0;
width: 4px;
content: "";
background: var(--post-accent);
box-shadow: 0 0 22px var(--post-accent);
}
.post-cover {
display: block;
overflow: hidden;
max-height: 360px;
border-bottom: 1px solid var(--border);
}
.post-cover img {
display: block;
width: 100%;
height: 100%;
max-height: 360px;
object-fit: cover;
filter: saturate(1.08) contrast(1.04);
transition: transform 0.24s ease;
}
.post-cover:hover img {
transform: scale(1.025);
}
.post-body {
padding: 1.45rem 1.45rem 1.35rem;
}
.post-meta {
display: flex;
flex-wrap: wrap;
gap: 0.55rem 0.95rem;
align-items: center;
color: var(--text-muted);
font-size: 0.88rem;
margin-bottom: 0.75rem;
}
.post-meta span,
.post-meta a {
display: inline-flex;
align-items: center;
gap: 0.35rem;
color: var(--text-muted);
}
.post-title {
font-size: 1.65rem;
line-height: 1.18;
margin: 0 0 0.85rem;
font-weight: 850;
}
.post-title a {
color: var(--text);
}
.post-title a:hover {
color: var(--post-accent);
}
.post-description,
.post-excerpt {
color: var(--text-soft);
}
.post-excerpt p:last-child {
margin-bottom: 0;
}
.taxonomy-list,
.page-taxonomy {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-top: 1rem;
}
.taxonomy-list a,
.page-taxonomy a {
display: inline-flex;
align-items: center;
gap: 0.3rem;
padding: 0.28rem 0.55rem;
background: rgba(255, 255, 255, 0.045);
border: 1px solid var(--border);
border-radius: 999px;
color: var(--text-soft);
font-size: 0.82rem;
font-weight: 700;
}
.taxonomy-list a:hover,
.page-taxonomy a:hover {
color: var(--bg);
background: var(--neon-green);
border-color: var(--neon-green);
}
.read-link,
.back-home,
.neon-pagination a {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.45rem;
min-height: 2.5rem;
padding: 0.48rem 0.75rem;
border: 1px solid rgba(36, 200, 255, 0.36);
border-radius: var(--radius);
color: var(--text);
background: rgba(36, 200, 255, 0.08);
font-weight: 800;
}
.read-link {
margin-top: 1.1rem;
}
.read-link:hover,
.back-home:hover,
.neon-pagination a:hover {
color: #041118;
background: var(--neon-blue);
border-color: var(--neon-blue);
transform: translateY(-1px);
}
.neon-pagination {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
align-items: center;
justify-content: center;
margin-top: 2rem;
}
.neon-sidebar {
position: sticky;
top: 5.25rem;
display: grid;
gap: 1rem;
}
.neon-sidebar .plugin,
.social-panel {
background: rgba(17, 23, 34, 0.76);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1rem;
box-shadow: var(--shadow);
}
.plugin-label,
.neon-sidebar h2 {
color: var(--text);
font-size: 1rem;
font-weight: 850;
margin: 0 0 0.8rem;
}
.plugin-content,
.plugin-content p,
.plugin-content li {
color: var(--text-soft);
}
.plugin-content ul {
padding-left: 1.1rem;
}
.social-links {
display: flex;
flex-wrap: wrap;
gap: 0.55rem;
}
.social-links a {
display: inline-flex;
align-items: center;
justify-content: center;
width: 2.35rem;
height: 2.35rem;
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text);
background: rgba(255, 255, 255, 0.045);
}
.social-links a:hover {
color: #051015;
background: var(--neon-pink);
border-color: var(--neon-pink);
}
.empty-state {
padding: 3rem 1rem;
text-align: center;
color: var(--text-soft);
border: 1px dashed var(--border-strong);
border-radius: var(--radius);
background: rgba(17, 23, 34, 0.5);
}
.empty-state i {
display: block;
color: var(--neon-orange);
font-size: 2rem;
margin-bottom: 0.5rem;
}
.empty-state h2 {
color: var(--text);
font-size: 1.35rem;
margin: 0;
}
.neon-page {
max-width: 920px;
margin: 0 auto;
}
.page-breadcrumb {
display: flex;
flex-wrap: wrap;
gap: 0.45rem;
align-items: center;
color: var(--text-muted);
font-size: 0.92rem;
margin-bottom: 1.5rem;
}
.page-breadcrumb a {
color: var(--text-soft);
}
.page-header {
padding-bottom: 1.5rem;
border-bottom: 1px solid var(--border);
}
.page-cover {
overflow: hidden;
margin: 2rem 0;
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: var(--shadow);
}
.page-cover img {
display: block;
width: 100%;
}
.page-content {
color: var(--text-soft);
font-size: 1.05rem;
}
.page-content h2,
.page-content h3,
.page-content h4 {
color: var(--text);
line-height: 1.2;
margin-top: 2rem;
margin-bottom: 0.8rem;
}
.page-content p,
.page-content ul,
.page-content ol {
margin-bottom: 1.1rem;
}
.page-content a {
border-bottom: 1px solid rgba(36, 200, 255, 0.42);
}
.page-content blockquote {
margin: 1.5rem 0;
padding: 1rem 1.15rem;
color: var(--text);
background: rgba(255, 79, 216, 0.08);
border-left: 4px solid var(--neon-pink);
border-radius: var(--radius);
}
.page-content pre,
.page-content code {
background: #05070b;
color: var(--neon-green);
border-radius: var(--radius);
}
.page-content code {
padding: 0.12rem 0.35rem;
}
.page-content pre {
padding: 1rem;
overflow-x: auto;
border: 1px solid rgba(0, 255, 138, 0.22);
}
.page-content table {
width: 100%;
margin: 1.5rem 0;
color: var(--text-soft);
border-collapse: collapse;
border: 1px solid var(--border);
}
.page-content th,
.page-content td {
padding: 0.75rem;
border-bottom: 1px solid var(--border);
}
.page-content th {
color: var(--text);
background: rgba(36, 200, 255, 0.1);
}
.page-taxonomy {
padding-top: 1.4rem;
margin-top: 1.8rem;
border-top: 1px solid var(--border);
}
.back-home {
margin-top: 1.4rem;
}
.site-footer {
padding: 2rem 0;
color: var(--text-muted);
border-top: 1px solid var(--border);
background: rgba(7, 9, 15, 0.72);
}
.footer-grid {
display: flex;
flex-wrap: wrap;
gap: 1rem;
align-items: center;
justify-content: space-between;
}
.footer-grid p {
margin: 0;
}
.footer-links {
display: flex;
flex-wrap: wrap;
gap: 0.8rem;
align-items: center;
}
.footer-links a {
display: inline-flex;
align-items: center;
gap: 0.35rem;
color: var(--text-soft);
}
body .search-results-header {
margin: 1.5rem 0 0;
padding: 1.5rem 0;
border-bottom: 1px solid var(--border);
}
body .search-results-header h1 {
color: var(--text);
font-size: 1.65rem;
}
body .search-results-header .search-query {
color: var(--neon-pink);
text-shadow: 0 0 18px rgba(255, 79, 216, 0.45);
}
body .search-results-header .search-count,
body .search-no-results p,
body .search-no-results .search-suggestions ul {
color: var(--text-soft);
}
body .search-no-results {
color: var(--text-soft);
}
body .search-no-results h2,
body .search-no-results h3 {
color: var(--text);
}
body .search-highlight {
background: rgba(255, 159, 28, 0.28);
color: var(--text);
border-radius: 4px;
box-shadow: 0 0 16px rgba(255, 159, 28, 0.18);
}
body .search-result-excerpt {
color: var(--text-soft);
}
body .search-inline-form input[type="search"],
body .plugin-search .search-plugin-form input[type="search"] {
width: 100%;
background: rgba(5, 7, 11, 0.78);
color: var(--text);
border: 1px solid var(--border-strong);
border-radius: var(--radius);
}
body .search-inline-form input[type="search"]:focus,
body .plugin-search .search-plugin-form input[type="search"]:focus {
border-color: var(--neon-blue);
box-shadow: 0 0 0 4px rgba(36, 200, 255, 0.14);
}
body .plugin-search .search-plugin-form button {
width: 100%;
background: var(--neon-blue);
color: #041118;
border: 0;
border-radius: var(--radius);
font-weight: 800;
}
body .plugin-search .search-plugin-form button:hover {
background: var(--neon-green);
}
@media (max-width: 991.98px) {
.navbar-nav {
align-items: stretch;
padding-top: 0.8rem;
}
.nav-search {
margin: 0.8rem 0 0;
}
.nav-search-field {
width: 100%;
}
.hero-panel {
grid-template-columns: 1fr;
gap: 1.35rem;
}
.neon-sidebar {
position: static;
margin-top: 1.5rem;
}
}
@media (max-width: 767.98px) {
.neon-hero {
padding: 2.6rem 0 1.3rem;
}
.hero-panel {
padding: 1.4rem 0 1.6rem;
}
.hero-copy h1,
.page-header h1 {
font-size: 2.15rem;
}
.hero-copy p:not(.hero-kicker),
.page-header p {
font-size: 1rem;
}
.hero-search {
align-items: stretch;
flex-wrap: wrap;
}
.hero-search input {
flex: 1 1 180px;
min-height: 2.55rem;
}
.hero-search button {
flex: 1 1 100%;
}
.post-body {
padding: 1.15rem;
}
.post-title {
font-size: 1.35rem;
}
.content-band,
.single-band {
padding-top: 1.5rem;
}
body .search-results-header h1 {
font-size: 1.35rem;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="<?php echo Theme::lang() ?>">
<head>
<?php include(THEME_DIR_PHP . 'head.php'); ?>
</head>
<body>
<a class="skip-link" href="#main-content"><?php echo $L->get('Skip to main content'); ?></a>
<?php include(THEME_DIR_PHP . 'navbar.php'); ?>
<?php Theme::plugins('siteBodyBegin'); ?>
<main id="main-content" class="site-main">
<?php
if ($WHERE_AM_I == 'page') {
include(THEME_DIR_PHP . 'page.php');
} else {
include(THEME_DIR_PHP . 'home.php');
}
?>
</main>
<?php include(THEME_DIR_PHP . 'footer.php'); ?>
<?php echo Theme::jquery(); ?>
<?php echo Theme::jsBootstrap(); ?>
<?php Theme::plugins('siteBodyEnd'); ?>
</body>
</html>
+18
View File
@@ -0,0 +1,18 @@
{
"theme-data":
{
"name": "Dark Neon",
"description": "A dark Bludit theme with green, red, pink, orange, and blue neon accents, built on Bludit theme hooks and Bootstrap assets."
},
"Back to home": "Back to home",
"Breadcrumb": "Breadcrumb",
"Connect": "Connect",
"Main navigation": "Main navigation",
"Open result": "Open result",
"Page navigation": "Page navigation",
"Read more": "Read more",
"Search": "Search",
"Sitemap": "Sitemap",
"Skip to main content": "Skip to main content",
"Toggle navigation": "Toggle navigation"
}
+10
View File
@@ -0,0 +1,10 @@
{
"author": "Bludit",
"email": "",
"website": "https://themes.bludit.com",
"version": "3.22.0",
"releaseDate": "2026-07-03",
"license": "MIT",
"compatible": "3.22",
"notes": ""
}
+18
View File
@@ -0,0 +1,18 @@
<footer class="site-footer">
<div class="container">
<div class="footer-grid">
<p><?php echo $site->footer(); ?></p>
<div class="footer-links">
<?php if (Theme::rssUrl()) : ?>
<a href="<?php echo Theme::rssUrl(); ?>"><i class="bi bi-rss" aria-hidden="true"></i>RSS</a>
<?php endif; ?>
<?php if (Theme::sitemapUrl()) : ?>
<a href="<?php echo Theme::sitemapUrl(); ?>"><i class="bi bi-diagram-3" aria-hidden="true"></i><?php echo $L->get('Sitemap'); ?></a>
<?php endif; ?>
<?php if (!defined('BLUDIT_PRO')) : ?>
<a href="https://www.bludit.com" target="_blank" rel="noopener">Bludit</a>
<?php endif; ?>
</div>
</div>
</div>
</footer>
+16
View File
@@ -0,0 +1,16 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="generator" content="Bludit">
<meta name="theme-color" content="#07090f">
<?php echo Theme::metaTagTitle(); ?>
<?php echo Theme::metaTagDescription(); ?>
<?php echo Theme::favicon('img/favicon.png'); ?>
<link rel="apple-touch-icon" href="<?php echo DOMAIN_THEME_IMG . 'favicon.png'; ?>">
<?php echo Theme::cssBootstrap(); ?>
<?php echo Theme::cssBootstrapIcons(); ?>
<?php echo Theme::css('css/style.css'); ?>
<?php Theme::plugins('siteHead'); ?>
+151
View File
@@ -0,0 +1,151 @@
<?php
$searchPlugin = pluginActivated('pluginSearch') ? getPlugin('pluginSearch') : false;
$sidebarHtml = '';
ob_start();
Theme::plugins('siteSidebar');
$sidebarHtml = trim(ob_get_clean());
$socialNetworks = Theme::socialNetworks();
$socialIconMap = array(
'github' => 'github',
'gitlab' => 'gitlab',
'twitter' => 'twitter-x',
'facebook' => 'facebook',
'instagram' => 'instagram',
'codepen' => 'codepen',
'linkedin' => 'linkedin',
'telegram' => 'telegram',
'youtube' => 'youtube',
'dribbble' => 'dribbble'
);
?>
<?php if ($WHERE_AM_I !== 'search') : ?>
<section class="neon-hero">
<div class="container">
<div class="hero-panel">
<div class="accent-strip" aria-hidden="true">
<span></span><span></span><span></span><span></span><span></span>
</div>
<div class="hero-copy">
<p class="hero-kicker"><?php echo htmlspecialchars($site->title(), ENT_QUOTES, 'UTF-8'); ?></p>
<h1><?php echo htmlspecialchars($site->slogan() ? $site->slogan() : $site->title(), ENT_QUOTES, 'UTF-8'); ?></h1>
<?php if ($site->description()) : ?>
<p><?php echo htmlspecialchars($site->description(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php endif; ?>
</div>
<?php if ($searchPlugin) : ?>
<form class="hero-search" role="search" onsubmit="return darkNeonSearch('dark-neon-hero-search');">
<label class="sr-only" for="dark-neon-hero-search"><?php echo $L->get('Search'); ?></label>
<i class="bi bi-search" aria-hidden="true"></i>
<input id="dark-neon-hero-search" type="search" placeholder="<?php echo htmlspecialchars($L->get('Search'), ENT_QUOTES, 'UTF-8'); ?>" autocomplete="off">
<button type="submit"><i class="bi bi-arrow-right" aria-hidden="true"></i><span><?php echo $L->get('Search'); ?></span></button>
</form>
<?php endif; ?>
</div>
</div>
</section>
<?php endif; ?>
<section class="content-band">
<div class="container">
<div class="row">
<div class="<?php echo (!empty($sidebarHtml) || !empty($socialNetworks)) ? 'col-lg-8' : 'col-lg-9 mx-auto'; ?>">
<?php if (empty($content)) : ?>
<div class="empty-state">
<i class="bi bi-stars" aria-hidden="true"></i>
<h2><?php $language->p('No pages found'); ?></h2>
</div>
<?php endif; ?>
<div class="post-list">
<?php foreach ($content as $page) : ?>
<article class="neon-post">
<?php Theme::plugins('pageBegin'); ?>
<?php if ($page->coverImage()) : ?>
<a class="post-cover" href="<?php echo $page->permalink(); ?>" aria-label="<?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?>">
<img src="<?php echo $page->coverImage(); ?>" alt="<?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?>" loading="lazy">
</a>
<?php endif; ?>
<div class="post-body">
<div class="post-meta">
<span><i class="bi bi-calendar3" aria-hidden="true"></i><?php echo $page->date(); ?></span>
<span><i class="bi bi-stopwatch" aria-hidden="true"></i><?php echo $page->readingTime(); ?></span>
<?php if ($page->categoryKey()) : ?>
<a href="<?php echo $page->categoryPermalink(); ?>"><i class="bi bi-folder2-open" aria-hidden="true"></i><?php echo htmlspecialchars($page->category(), ENT_QUOTES, 'UTF-8'); ?></a>
<?php endif; ?>
</div>
<h2 class="post-title">
<a href="<?php echo $page->permalink(); ?>"><?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?></a>
</h2>
<?php if ($page->description() && $WHERE_AM_I !== 'search') : ?>
<p class="post-description"><?php echo htmlspecialchars($page->description(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php endif; ?>
<div class="post-excerpt">
<?php echo $page->contentBreak(); ?>
</div>
<?php $tagsList = $page->tags(true); ?>
<?php if (!empty($tagsList)) : ?>
<div class="taxonomy-list">
<?php foreach ($tagsList as $tagKey => $tagName) : ?>
<a href="<?php echo DOMAIN_TAGS . $tagKey; ?>"><i class="bi bi-tag" aria-hidden="true"></i><?php echo htmlspecialchars($tagName, ENT_QUOTES, 'UTF-8'); ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if ($page->readMore() || $WHERE_AM_I === 'search') : ?>
<a class="read-link" href="<?php echo $page->permalink(); ?>">
<span><?php echo ($WHERE_AM_I === 'search') ? $L->get('Open result') : $L->get('Read more'); ?></span>
<i class="bi bi-arrow-right" aria-hidden="true"></i>
</a>
<?php endif; ?>
</div>
<?php Theme::plugins('pageEnd'); ?>
</article>
<?php endforeach; ?>
</div>
<?php if (Paginator::numberOfPages() > 1) : ?>
<nav class="neon-pagination" aria-label="<?php echo htmlspecialchars($L->get('Page navigation'), ENT_QUOTES, 'UTF-8'); ?>">
<?php if (Paginator::showPrev()) : ?>
<a href="<?php echo htmlspecialchars(Paginator::previousPageUrl(), ENT_QUOTES, 'UTF-8'); ?>"><i class="bi bi-chevron-left" aria-hidden="true"></i><?php echo $L->get('Previous'); ?></a>
<?php endif; ?>
<a href="<?php echo Theme::siteUrl(); ?>"><i class="bi bi-house" aria-hidden="true"></i><?php echo $L->get('Home'); ?></a>
<?php if (Paginator::showNext()) : ?>
<a href="<?php echo htmlspecialchars(Paginator::nextPageUrl(), ENT_QUOTES, 'UTF-8'); ?>"><?php echo $L->get('Next'); ?><i class="bi bi-chevron-right" aria-hidden="true"></i></a>
<?php endif; ?>
</nav>
<?php endif; ?>
</div>
<?php if (!empty($sidebarHtml) || !empty($socialNetworks)) : ?>
<aside class="col-lg-4">
<div class="neon-sidebar">
<?php echo $sidebarHtml; ?>
<?php if (!empty($socialNetworks)) : ?>
<div class="plugin social-panel">
<h2 class="plugin-label"><?php echo $L->get('Connect'); ?></h2>
<div class="plugin-content social-links">
<?php foreach ($socialNetworks as $key => $label) : ?>
<?php $icon = isset($socialIconMap[$key]) ? $socialIconMap[$key] : 'link-45deg'; ?>
<a href="<?php echo htmlspecialchars($site->{$key}(), ENT_QUOTES, 'UTF-8'); ?>" target="_blank" rel="noopener" aria-label="<?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?>">
<i class="bi bi-<?php echo $icon; ?>" aria-hidden="true"></i>
</a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</div>
</aside>
<?php endif; ?>
</div>
</div>
</section>
+80
View File
@@ -0,0 +1,80 @@
<?php
$searchPlugin = pluginActivated('pluginSearch') ? getPlugin('pluginSearch') : false;
$searchValue = ($searchPlugin && $WHERE_AM_I === 'search') ? $searchPlugin->getSearchTerm() : '';
$searchMinChars = $searchPlugin ? max(1, (int) $searchPlugin->getValue('minChars')) : 1;
$searchAction = json_encode(Theme::siteUrl() . 'search/');
$socialIconMap = array(
'github' => 'github',
'gitlab' => 'gitlab',
'twitter' => 'twitter-x',
'facebook' => 'facebook',
'instagram' => 'instagram',
'codepen' => 'codepen',
'linkedin' => 'linkedin',
'telegram' => 'telegram',
'youtube' => 'youtube',
'dribbble' => 'dribbble'
);
?>
<nav class="navbar navbar-expand-lg neon-navbar" aria-label="<?php echo htmlspecialchars($L->get('Main navigation'), ENT_QUOTES, 'UTF-8'); ?>">
<div class="container">
<a class="navbar-brand" href="<?php echo Theme::siteUrl(); ?>">
<span class="brand-signal" aria-hidden="true"></span>
<span><?php echo htmlspecialchars($site->title(), ENT_QUOTES, 'UTF-8'); ?></span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#darkNeonNavbar" aria-controls="darkNeonNavbar" aria-expanded="false" aria-label="<?php echo htmlspecialchars($L->get('Toggle navigation'), ENT_QUOTES, 'UTF-8'); ?>">
<i class="bi bi-list" aria-hidden="true"></i>
</button>
<div class="collapse navbar-collapse" id="darkNeonNavbar">
<ul class="navbar-nav ml-auto">
<?php if ($site->homepage()) : ?>
<li class="nav-item">
<a class="nav-link<?php echo ($WHERE_AM_I === 'blog') ? ' active' : ''; ?>" href="<?php echo DOMAIN_BASE . ltrim($url->filters('blog'), '/'); ?>"><?php echo $L->get('Blog'); ?></a>
</li>
<?php endif; ?>
<?php foreach ($staticContent as $staticPage) : ?>
<li class="nav-item">
<a class="nav-link<?php echo ($url->slug() == $staticPage->slug()) ? ' active' : ''; ?>" href="<?php echo $staticPage->permalink(); ?>"><?php echo htmlspecialchars($staticPage->title(), ENT_QUOTES, 'UTF-8'); ?></a>
</li>
<?php endforeach; ?>
<?php foreach (Theme::socialNetworks() as $key => $label) : ?>
<?php $icon = isset($socialIconMap[$key]) ? $socialIconMap[$key] : 'link-45deg'; ?>
<li class="nav-item">
<a class="nav-link nav-icon-link" href="<?php echo htmlspecialchars($site->{$key}(), ENT_QUOTES, 'UTF-8'); ?>" target="_blank" rel="noopener" aria-label="<?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?>">
<i class="bi bi-<?php echo $icon; ?>" aria-hidden="true"></i>
<span class="d-lg-none"><?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?></span>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php if ($searchPlugin) : ?>
<form class="form-inline nav-search" role="search" onsubmit="return darkNeonSearch('dark-neon-nav-search');">
<label class="sr-only" for="dark-neon-nav-search"><?php echo $L->get('Search'); ?></label>
<div class="nav-search-field">
<i class="bi bi-search" aria-hidden="true"></i>
<input id="dark-neon-nav-search" type="search" value="<?php echo htmlspecialchars($searchValue, ENT_QUOTES, 'UTF-8'); ?>" placeholder="<?php echo htmlspecialchars($L->get('Search'), ENT_QUOTES, 'UTF-8'); ?>" autocomplete="off">
</div>
</form>
<?php endif; ?>
</div>
</div>
</nav>
<?php if ($searchPlugin) : ?>
<script>
function darkNeonSearch(inputId) {
var input = document.getElementById(inputId);
if (!input) return false;
var value = input.value.trim();
if (value.length < <?php echo $searchMinChars; ?>) return false;
window.location.href = <?php echo $searchAction; ?> + encodeURIComponent(value);
return false;
}
</script>
<?php endif; ?>
+62
View File
@@ -0,0 +1,62 @@
<section class="content-band single-band">
<div class="container">
<article class="neon-page">
<?php Theme::plugins('pageBegin'); ?>
<nav class="page-breadcrumb" aria-label="<?php echo htmlspecialchars($L->get('Breadcrumb'), ENT_QUOTES, 'UTF-8'); ?>">
<a href="<?php echo Theme::siteUrl(); ?>"><?php echo htmlspecialchars($site->title(), ENT_QUOTES, 'UTF-8'); ?></a>
<?php if (!$page->isStatic() && $page->categoryKey()) : ?>
<span>/</span>
<a href="<?php echo $page->categoryPermalink(); ?>"><?php echo htmlspecialchars($page->category(), ENT_QUOTES, 'UTF-8'); ?></a>
<?php endif; ?>
</nav>
<header class="page-header">
<div class="accent-strip" aria-hidden="true">
<span></span><span></span><span></span><span></span><span></span>
</div>
<div class="post-meta">
<?php if (!$page->isStatic() && !$url->notFound()) : ?>
<span><i class="bi bi-calendar3" aria-hidden="true"></i><?php echo $page->date(); ?></span>
<span><i class="bi bi-stopwatch" aria-hidden="true"></i><?php echo $page->readingTime(); ?></span>
<?php if ($page->user('nickname')) : ?>
<span><i class="bi bi-person" aria-hidden="true"></i><?php echo htmlspecialchars($page->user('nickname'), ENT_QUOTES, 'UTF-8'); ?></span>
<?php endif; ?>
<?php endif; ?>
</div>
<h1><?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?></h1>
<?php if ($page->description()) : ?>
<p><?php echo htmlspecialchars($page->description(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php endif; ?>
</header>
<?php if ($page->coverImage()) : ?>
<figure class="page-cover">
<img src="<?php echo $page->coverImage(); ?>" alt="<?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?>" loading="lazy">
</figure>
<?php endif; ?>
<div class="page-content">
<?php echo $page->content(); ?>
</div>
<?php $tagsList = $page->tags(true); ?>
<?php if (!empty($tagsList) || $page->categoryKey()) : ?>
<footer class="page-taxonomy">
<?php if ($page->categoryKey()) : ?>
<a href="<?php echo $page->categoryPermalink(); ?>"><i class="bi bi-folder2-open" aria-hidden="true"></i><?php echo htmlspecialchars($page->category(), ENT_QUOTES, 'UTF-8'); ?></a>
<?php endif; ?>
<?php foreach ($tagsList as $tagKey => $tagName) : ?>
<a href="<?php echo DOMAIN_TAGS . $tagKey; ?>"><i class="bi bi-tag" aria-hidden="true"></i><?php echo htmlspecialchars($tagName, ENT_QUOTES, 'UTF-8'); ?></a>
<?php endforeach; ?>
</footer>
<?php endif; ?>
<?php if (!$page->isStatic()) : ?>
<a class="back-home" href="<?php echo Theme::siteUrl(); ?>"><i class="bi bi-arrow-left" aria-hidden="true"></i><?php echo $L->get('Back to home'); ?></a>
<?php endif; ?>
<?php Theme::plugins('pageEnd'); ?>
</article>
</div>
</section>