Browse Source

bug-fixes

master
Silberengel 4 weeks ago
parent
commit
3836536858
  1. 46
      static/css/main.css
  2. 4
      templates/404.html
  3. 4
      templates/500.html
  4. 26
      templates/base.html
  5. 12
      templates/blog.html
  6. 14
      templates/components.html
  7. 44
      templates/contact.html
  8. 4
      templates/ebooks.html
  9. 8
      templates/landing.html
  10. 10
      templates/page.html
  11. 6
      templates/wiki.html

46
static/css/main.css

@ -961,3 +961,49 @@ textarea:focus {
color: var(--text-secondary); color: var(--text-secondary);
font-style: italic; font-style: italic;
} }
/* Icon styles for Lucide icons */
.icon-inline {
display: inline-block;
width: 1em;
height: 1em;
vertical-align: middle;
margin-right: 0.25em;
flex-shrink: 0;
}
/* Ensure icons align properly in flex containers */
a, button, span, p, h1, h2, h3, h4, h5, h6, li {
display: inline-flex;
align-items: center;
}
/* But preserve block display for certain elements */
p, h1, h2, h3, h4, h5, h6 {
display: block;
}
p.icon-inline, h1.icon-inline, h2.icon-inline, h3.icon-inline, h4.icon-inline, h5.icon-inline, h6.icon-inline {
display: inline-flex;
}
/* Navigation links should be flex */
.nav-menu a, .dropdown-menu a, .wiki-menu a {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
/* Buttons should be flex */
.btn, button {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
/* Feed items */
.feed-link, .feed-link-header {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}

4
templates/404.html

@ -1,8 +1,8 @@
{{define "content"}} {{define "content"}}
<article class="error-page"> <article class="error-page">
<h1>404</h1> <h1><i data-lucide="alert-circle" class="icon-inline"></i> 404</h1>
<p>The page you're looking for doesn't exist.</p> <p>The page you're looking for doesn't exist.</p>
<a href="/" class="btn">Go Home</a> <a href="/" class="btn"><i data-lucide="home" class="icon-inline"></i> Go Home</a>
</article> </article>
{{end}} {{end}}

4
templates/500.html

@ -1,8 +1,8 @@
{{define "content"}} {{define "content"}}
<article class="error-page"> <article class="error-page">
<h1>500</h1> <h1><i data-lucide="alert-triangle" class="icon-inline"></i> 500</h1>
<p>Something went wrong on our end. Please try again later.</p> <p>Something went wrong on our end. Please try again later.</p>
<a href="/" class="btn">Go Home</a> <a href="/" class="btn"><i data-lucide="home" class="icon-inline"></i> Go Home</a>
</article> </article>
{{end}} {{end}}

26
templates/base.html

@ -26,6 +26,7 @@
<link rel="stylesheet" href="/static/css/main.css"> <link rel="stylesheet" href="/static/css/main.css">
<link rel="stylesheet" href="/static/css/responsive.css"> <link rel="stylesheet" href="/static/css/responsive.css">
<link rel="stylesheet" href="/static/css/print.css" media="print"> <link rel="stylesheet" href="/static/css/print.css" media="print">
<script src="https://unpkg.com/lucide@latest"></script>
{{if .StructuredData}}<script type="application/ld+json">{{.StructuredData}}</script>{{end}} {{if .StructuredData}}<script type="application/ld+json">{{.StructuredData}}</script>{{end}}
</head> </head>
@ -47,18 +48,18 @@
</button> </button>
<ul class="nav-menu"> <ul class="nav-menu">
<li><a href="/">Home</a></li> <li><a href="/"><i data-lucide="home" class="icon-inline"></i> Home</a></li>
<li><a href="/wiki">About The Project</a></li> <li><a href="/wiki"><i data-lucide="book-open" class="icon-inline"></i> About The Project</a></li>
<li class="dropdown"> <li class="dropdown">
<a href="/blog" class="dropdown-toggle">Blog</a> <a href="/blog" class="dropdown-toggle"><i data-lucide="file-text" class="icon-inline"></i> Blog</a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
{{range .BlogItems}} {{range .BlogItems}}
<li><a href="/blog#{{.DTag}}">{{.Title}}</a></li> <li><a href="/blog#{{.DTag}}"><i data-lucide="file-text" class="icon-inline"></i> {{.Title}}</a></li>
{{end}} {{end}}
</ul> </ul>
</li> </li>
<li><a href="/ebooks">E-Books</a></li> <li><a href="/ebooks"><i data-lucide="book" class="icon-inline"></i> E-Books</a></li>
<li><a href="/contact">Contact</a></li> <li><a href="/contact"><i data-lucide="mail" class="icon-inline"></i> Contact</a></li>
</ul> </ul>
</div> </div>
</nav> </nav>
@ -68,11 +69,11 @@
{{if and .WikiPages (or (eq .CanonicalURL (printf "%s/wiki" .SiteURL)) (hasPrefix .CanonicalURL (printf "%s/wiki/" .SiteURL)))}} {{if and .WikiPages (or (eq .CanonicalURL (printf "%s/wiki" .SiteURL)) (hasPrefix .CanonicalURL (printf "%s/wiki/" .SiteURL)))}}
<aside class="wiki-sidebar" aria-label="About The Project navigation"> <aside class="wiki-sidebar" aria-label="About The Project navigation">
<nav class="wiki-nav"> <nav class="wiki-nav">
<h2>About The Project</h2> <h2><i data-lucide="book-open" class="icon-inline"></i> About The Project</h2>
<ul class="wiki-menu"> <ul class="wiki-menu">
<li><a href="/wiki"{{if eq .CanonicalURL (printf "%s/wiki" .SiteURL)}} class="active"{{end}}>Project Overview</a></li> <li><a href="/wiki"{{if eq .CanonicalURL (printf "%s/wiki" .SiteURL)}} class="active"{{end}}><i data-lucide="info" class="icon-inline"></i> Project Overview</a></li>
{{range .WikiPages}} {{range .WikiPages}}
<li><a href="/wiki/{{.DTag}}"{{if eq $.CanonicalURL (printf "%s/wiki/%s" $.SiteURL .DTag)}} class="active"{{end}}>{{.Title}}</a></li> <li><a href="/wiki/{{.DTag}}"{{if eq $.CanonicalURL (printf "%s/wiki/%s" $.SiteURL .DTag)}} class="active"{{end}}><i data-lucide="file-text" class="icon-inline"></i> {{.Title}}</a></li>
{{end}} {{end}}
</ul> </ul>
</nav> </nav>
@ -91,10 +92,15 @@
</div> </div>
<footer> <footer>
<p>&copy; 2026 GitCitadel All Rights Reserved | <a href="/contact">Contact</a></p> <p><i data-lucide="copyright" class="icon-inline"></i> 2026 GitCitadel All Rights Reserved | <a href="/contact"><i data-lucide="mail" class="icon-inline"></i> Contact</a></p>
</footer> </footer>
<script> <script>
// Initialize Lucide icons
if (typeof lucide !== 'undefined') {
lucide.createIcons();
}
// Mobile menu toggle (optional - menu works without JS) // Mobile menu toggle (optional - menu works without JS)
if (document.querySelector('.mobile-menu-toggle')) { if (document.querySelector('.mobile-menu-toggle')) {
document.querySelector('.mobile-menu-toggle').addEventListener('click', function() { document.querySelector('.mobile-menu-toggle').addEventListener('click', function() {

12
templates/blog.html

@ -4,7 +4,7 @@
<aside class="blog-sidebar"> <aside class="blog-sidebar">
<div class="blog-header"> <div class="blog-header">
{{if .BlogIndexAuthor}} {{if .BlogIndexAuthor}}
<div class="blog-author-handle">@{{.BlogIndexAuthor}}</div> <div class="blog-author-handle"><i data-lucide="user" class="icon-inline"></i> @{{.BlogIndexAuthor}}</div>
{{end}} {{end}}
{{if .BlogIndexImage}} {{if .BlogIndexImage}}
<div class="blog-image"> <div class="blog-image">
@ -29,12 +29,12 @@
{{range $index, $item := .BlogItems}} {{range $index, $item := .BlogItems}}
<li> <li>
<a href="#" class="article-link" data-dtag="{{$item.DTag}}" data-index="{{$index}}"{{if eq $index 0}} data-active="true"{{end}}> <a href="#" class="article-link" data-dtag="{{$item.DTag}}" data-index="{{$index}}"{{if eq $index 0}} data-active="true"{{end}}>
<div class="article-link-title">{{$item.Title}}</div> <div class="article-link-title"><i data-lucide="file-text" class="icon-inline"></i> {{$item.Title}}</div>
{{if $item.Time}} {{if $item.Time}}
<div class="article-link-meta"> <div class="article-link-meta">
<span class="article-date">{{$item.Time}}</span> <span class="article-date"><i data-lucide="clock" class="icon-inline"></i> {{$item.Time}}</span>
{{if $item.Author}} {{if $item.Author}}
<span class="article-author">{{$item.Author}}</span> <span class="article-author"><i data-lucide="user" class="icon-inline"></i> {{$item.Author}}</span>
{{end}} {{end}}
</div> </div>
{{end}} {{end}}
@ -61,10 +61,10 @@
{{else}} {{else}}
<article class="blog-article active"> <article class="blog-article active">
<header class="article-header"> <header class="article-header">
<h1 class="article-title">No Articles</h1> <h1 class="article-title"><i data-lucide="file-x" class="icon-inline"></i> No Articles</h1>
</header> </header>
<div class="article-content"> <div class="article-content">
<p>No blog articles available yet.</p> <p><i data-lucide="inbox" class="icon-inline"></i> No blog articles available yet.</p>
</div> </div>
</article> </article>
{{end}} {{end}}

14
templates/components.html

@ -1,21 +1,21 @@
{{/* Feed Component - Reusable feed sidebar */}} {{/* Feed Component - Reusable feed sidebar */}}
{{define "feed"}} {{define "feed"}}
<div class="feed-container"> <div class="feed-container">
<h3>Recent Notes <a href="https://aitherboard.imwald.eu/feed/relay/theforest.nostr1.com" target="_blank" rel="noopener noreferrer" class="feed-link-header">View Full Feed</a></h3> <h3><i data-lucide="rss" class="icon-inline"></i> Recent Notes <a href="https://aitherboard.imwald.eu/feed/relay/theforest.nostr1.com" target="_blank" rel="noopener noreferrer" class="feed-link-header"><i data-lucide="external-link" class="icon-inline"></i> View Full Feed</a></h3>
<div class="feed-items"> <div class="feed-items">
{{range .FeedItems}} {{range .FeedItems}}
<article class="feed-item"> <article class="feed-item">
<header class="feed-header"> <header class="feed-header">
<span class="feed-author">{{.Author}}</span> <span class="feed-author"><i data-lucide="user" class="icon-inline"></i> {{.Author}}</span>
<time class="feed-time" datetime="{{.TimeISO}}">{{.Time}}</time> <time class="feed-time" datetime="{{.TimeISO}}"><i data-lucide="clock" class="icon-inline"></i> {{.Time}}</time>
</header> </header>
<div class="feed-content">{{.Content}}</div> <div class="feed-content">{{.Content}}</div>
<footer class="feed-footer"> <footer class="feed-footer">
<a href="{{.Link}}" class="feed-link" target="_blank" rel="noopener noreferrer">View on Alexandria</a> <a href="{{.Link}}" class="feed-link" target="_blank" rel="noopener noreferrer"><i data-lucide="external-link" class="icon-inline"></i> View on Alexandria</a>
</footer> </footer>
</article> </article>
{{else}} {{else}}
<p class="feed-empty">No recent notes available.</p> <p class="feed-empty"><i data-lucide="inbox" class="icon-inline"></i> No recent notes available.</p>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -24,13 +24,13 @@
{{/* Alert Component - Success message */}} {{/* Alert Component - Success message */}}
{{define "alert-success"}} {{define "alert-success"}}
<div class="alert alert-success" role="alert"> <div class="alert alert-success" role="alert">
<strong>Success!</strong> {{.}} <strong><i data-lucide="check-circle" class="icon-inline"></i> Success!</strong> {{.}}
</div> </div>
{{end}} {{end}}
{{/* Alert Component - Error message */}} {{/* Alert Component - Error message */}}
{{define "alert-error"}} {{define "alert-error"}}
<div class="alert alert-error" role="alert"> <div class="alert alert-error" role="alert">
<strong>Error:</strong> {{.}} <strong><i data-lucide="alert-circle" class="icon-inline"></i> Error:</strong> {{.}}
</div> </div>
{{end}} {{end}}

44
templates/contact.html

@ -6,13 +6,13 @@
<h2 style="margin-top: 0; font-size: 1.2rem;">Find us elsewhere:</h2> <h2 style="margin-top: 0; font-size: 1.2rem;">Find us elsewhere:</h2>
<ul style="list-style: none; padding: 0; margin: 0;"> <ul style="list-style: none; padding: 0; margin: 0;">
<li style="margin-bottom: 0.5rem;"> <li style="margin-bottom: 0.5rem;">
<a href="https://aitherboard.imwald.eu/repos/naddr1qvzqqqrhnypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqq9xw6t5vd5hgctyv4kqde47kt?tab=about" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none;"> <a href="https://aitherboard.imwald.eu/repos/naddr1qvzqqqrhnypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqq9xw6t5vd5hgctyv4kqde47kt?tab=about" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none; display: inline-flex; align-items: center; gap: 0.5rem;">
📦 Aitherboard Repository <i data-lucide="package" class="icon-inline"></i> Aitherboard Repository
</a> </a>
</li> </li>
<li style="margin-bottom: 0.5rem;"> <li style="margin-bottom: 0.5rem;">
<a href="https://github.com/ShadowySupercode" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none;"> <a href="https://github.com/ShadowySupercode" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none; display: inline-flex; align-items: center; gap: 0.5rem;">
🐙 GitHub: ShadowySupercode <i data-lucide="github" class="icon-inline"></i> GitHub: ShadowySupercode
</a> </a>
</li> </li>
</ul> </ul>
@ -37,11 +37,15 @@
{{end}} {{end}}
{{if .Profile.Website}} {{if .Profile.Website}}
<p style="margin: 0.5rem 0 0 0;"> <p style="margin: 0.5rem 0 0 0;">
<a href="{{.Profile.Website}}" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none;">🌐 Website</a> <a href="{{.Profile.Website}}" target="_blank" rel="noopener noreferrer" style="color: #0066cc; text-decoration: none; display: inline-flex; align-items: center; gap: 0.5rem;">
<i data-lucide="globe" class="icon-inline"></i> Website
</a>
</p> </p>
{{end}} {{end}}
{{if .Profile.NIP05}} {{if .Profile.NIP05}}
<p style="margin: 0.5rem 0 0 0; color: #666; font-size: 0.9rem;">NIP-05: {{.Profile.NIP05}}</p> <p style="margin: 0.5rem 0 0 0; color: #666; font-size: 0.9rem; display: flex; align-items: center; gap: 0.5rem;">
<i data-lucide="check-circle" class="icon-inline" style="width: 16px; height: 16px;"></i> NIP-05: {{.Profile.NIP05}}
</p>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -52,9 +56,9 @@
{{if .Success}} {{if .Success}}
<div class="alert alert-success" role="alert"> <div class="alert alert-success" role="alert">
<strong>Success!</strong> Your message has been submitted. Thank you for contacting us! <strong><i data-lucide="check-circle" class="icon-inline"></i> Success!</strong> Your message has been submitted. Thank you for contacting us!
{{if .EventID}} {{if .EventID}}
<br><small>Issue ID: {{.EventID}}</small> <br><small><i data-lucide="hash" class="icon-inline"></i> Issue ID: {{.EventID}}</small>
{{end}} {{end}}
</div> </div>
{{end}} {{end}}
@ -91,8 +95,8 @@
</div> </div>
<div class="form-actions"> <div class="form-actions">
<button type="submit" id="submit-btn" class="btn btn-primary">Submit</button> <button type="submit" id="submit-btn" class="btn btn-primary"><i data-lucide="send" class="icon-inline"></i> Submit</button>
<button type="reset" class="btn btn-secondary">Clear</button> <button type="reset" class="btn btn-secondary"><i data-lucide="x" class="icon-inline"></i> Clear</button>
</div> </div>
</form> </form>
@ -152,7 +156,10 @@
// Disable submit button // Disable submit button
submitBtn.disabled = true; submitBtn.disabled = true;
submitBtn.textContent = 'Signing...'; submitBtn.innerHTML = '<i data-lucide="loader-2" class="icon-inline"></i> Signing...';
if (typeof lucide !== 'undefined') {
lucide.createIcons();
}
hideStatus(); hideStatus();
try { try {
@ -205,7 +212,10 @@
}; };
// Sign the event // Sign the event
submitBtn.textContent = 'Publishing...'; submitBtn.innerHTML = '<i data-lucide="loader-2" class="icon-inline"></i> Publishing...';
if (typeof lucide !== 'undefined') {
lucide.createIcons();
}
const signedEvent = await window.nostr.signEvent(unsignedEvent); const signedEvent = await window.nostr.signEvent(unsignedEvent);
// Send to API // Send to API
@ -225,13 +235,19 @@
} else { } else {
showStatus('Failed to publish issue: ' + (result.error || 'Unknown error'), true); showStatus('Failed to publish issue: ' + (result.error || 'Unknown error'), true);
submitBtn.disabled = false; submitBtn.disabled = false;
submitBtn.textContent = 'Submit'; submitBtn.innerHTML = '<i data-lucide="send" class="icon-inline"></i> Submit';
if (typeof lucide !== 'undefined') {
lucide.createIcons();
}
} }
} catch (error) { } catch (error) {
console.error('Error:', error); console.error('Error:', error);
showStatus('Error: ' + error.message, true); showStatus('Error: ' + error.message, true);
submitBtn.disabled = false; submitBtn.disabled = false;
submitBtn.textContent = 'Submit'; submitBtn.innerHTML = '<i data-lucide="send" class="icon-inline"></i> Submit';
if (typeof lucide !== 'undefined') {
lucide.createIcons();
}
} }
}); });
})(); })();

4
templates/ebooks.html

@ -29,12 +29,12 @@
<time datetime="{{.TimeISO}}">{{.Time}}</time> <time datetime="{{.TimeISO}}">{{.Time}}</time>
</td> </td>
<td> <td>
<a href="https://alexandria.gitcitadel.eu/naddr/{{.Naddr}}" target="_blank" rel="noopener noreferrer" class="btn btn-sm">View</a> <a href="https://alexandria.gitcitadel.eu/naddr/{{.Naddr}}" target="_blank" rel="noopener noreferrer" class="btn btn-sm"><i data-lucide="external-link" class="icon-inline"></i> View</a>
</td> </td>
</tr> </tr>
{{else}} {{else}}
<tr> <tr>
<td colspan="5" class="text-center">No e-books found.</td> <td colspan="5" class="text-center"><i data-lucide="book-x" class="icon-inline"></i> No e-books found.</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>

8
templates/landing.html

@ -9,19 +9,19 @@
<h2>Explore Our Content</h2> <h2>Explore Our Content</h2>
<div class="feature-grid"> <div class="feature-grid">
<div class="feature-card"> <div class="feature-card">
<h3>Wiki</h3> <h3><i data-lucide="book-open" class="icon-inline"></i> Wiki</h3>
<p>Browse our comprehensive wiki documentation.</p> <p>Browse our comprehensive wiki documentation.</p>
<ul> <ul>
{{range .WikiPages}} {{range .WikiPages}}
<li><a href="/wiki/{{.DTag}}">{{.Title}}</a></li> <li><a href="/wiki/{{.DTag}}"><i data-lucide="file-text" class="icon-inline"></i> {{.Title}}</a></li>
{{end}} {{end}}
</ul> </ul>
</div> </div>
<div class="feature-card"> <div class="feature-card">
<h3>Blog</h3> <h3><i data-lucide="file-text" class="icon-inline"></i> Blog</h3>
<p>Read the latest articles and updates.</p> <p>Read the latest articles and updates.</p>
<a href="/blog" class="btn">View Blog</a> <a href="/blog" class="btn"><i data-lucide="arrow-right" class="icon-inline"></i> View Blog</a>
</div> </div>
</div> </div>
</section> </section>

10
templates/page.html

@ -2,14 +2,14 @@
<article class="wiki-page"> <article class="wiki-page">
<nav class="breadcrumbs" aria-label="Breadcrumb"> <nav class="breadcrumbs" aria-label="Breadcrumb">
<ol> <ol>
<li><a href="/">Home</a></li> <li><a href="/"><i data-lucide="home" class="icon-inline"></i> Home</a></li>
<li><a href="/wiki">Wiki</a></li> <li><a href="/wiki"><i data-lucide="book-open" class="icon-inline"></i> Wiki</a></li>
<li aria-current="page">{{.Title}}</li> <li aria-current="page"><i data-lucide="file-text" class="icon-inline"></i> {{.Title}}</li>
</ol> </ol>
</nav> </nav>
<header class="page-header"> <header class="page-header">
<h1>{{.Title}}</h1> <h1><i data-lucide="file-text" class="icon-inline"></i> {{.Title}}</h1>
{{if .Summary}}<p class="page-summary">{{.Summary}}</p>{{end}} {{if .Summary}}<p class="page-summary">{{.Summary}}</p>{{end}}
</header> </header>
@ -19,7 +19,7 @@
{{if .TableOfContents}} {{if .TableOfContents}}
<aside class="table-of-contents"> <aside class="table-of-contents">
<h2>Table of Contents</h2> <h2><i data-lucide="list" class="icon-inline"></i> Table of Contents</h2>
{{.TableOfContents}} {{.TableOfContents}}
</aside> </aside>
{{end}} {{end}}

6
templates/wiki.html

@ -1,15 +1,15 @@
{{define "content"}} {{define "content"}}
<article class="wiki-index-page"> <article class="wiki-index-page">
<header class="page-header"> <header class="page-header">
<h1>Wiki</h1> <h1><i data-lucide="book-open" class="icon-inline"></i> Wiki</h1>
{{if .Summary}}<p class="page-summary">{{.Summary}}</p>{{end}} {{if .Summary}}<p class="page-summary">{{.Summary}}</p>{{end}}
</header> </header>
<div class="wiki-index-content"> <div class="wiki-index-content">
{{if .WikiPages}} {{if .WikiPages}}
<p>Select an article from the sidebar to get started.</p> <p><i data-lucide="arrow-right" class="icon-inline"></i> Select an article from the sidebar to get started.</p>
{{else}} {{else}}
<p>No wiki articles available yet.</p> <p><i data-lucide="inbox" class="icon-inline"></i> No wiki articles available yet.</p>
{{end}} {{end}}
</div> </div>
</article> </article>

Loading…
Cancel
Save