You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

85 lines
3.7 KiB

{{/* Feed Component - Reusable feed sidebar */}}
{{define "feed"}}
<div class="feed-container">
<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">
{{range .FeedItems}}
<article class="feed-item">
<header class="feed-header">
<span class="feed-author">{{template "user-badge-simple" .Author}}</span>
<time class="feed-time" datetime="{{.TimeISO}}"><i data-lucide="clock" class="icon-inline"></i> {{.Time}}</time>
</header>
<div class="feed-content">{{.Content}}</div>
<footer class="feed-footer">
<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>
</article>
{{else}}
<p class="feed-empty"><i data-lucide="inbox" class="icon-inline"></i> No recent notes available.</p>
{{end}}
</div>
</div>
{{end}}
{{/* Alert Component - Success message */}}
{{define "alert-success"}}
<div class="alert alert-success" role="alert">
<strong><i data-lucide="check-circle" class="icon-inline"></i> Success!</strong> {{.}}
</div>
{{end}}
{{/* Alert Component - Error message */}}
{{define "alert-error"}}
<div class="alert alert-error" role="alert">
<strong><i data-lucide="alert-circle" class="icon-inline"></i> Error:</strong> {{.}}
</div>
{{end}}
{{/* Wiki Sidebar Component - Reusable wiki navigation */}}
{{define "wiki-sidebar"}}
<aside class="wiki-sidebar" aria-label="About The Project navigation">
<nav class="wiki-nav">
<h2><i data-lucide="book-open" class="icon-inline"></i> About The Project</h2>
<ul class="wiki-menu">
<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}}
<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}}
</ul>
</nav>
</aside>
{{end}}
{{/* User Badge Component - Displays user profile with picture, name, or shortened npub
Usage: {{template "user-badge" (dict "Pubkey" .Author "Picture" "" "DisplayName" "" "Name" "")}}
Or simpler: {{template "user-badge-simple" .Author}} for just pubkey
*/}}
{{define "user-badge"}}
<span class="user-badge" title="{{.Pubkey}}">
{{if .Picture}}
<img src="{{.Picture}}" alt="{{if .DisplayName}}{{.DisplayName}}{{else if .Name}}{{.Name}}{{else}}User{{end}}" class="user-badge-avatar" loading="lazy">
{{else}}
<span class="user-badge-avatar-placeholder"><i data-lucide="user" class="icon-inline"></i></span>
{{end}}
<span class="user-badge-name">
{{if .DisplayName}}
{{.DisplayName}}
{{else if .Name}}
{{.Name}}
{{else}}
{{shortenPubkey .Pubkey}}
{{end}}
</span>
{{if and .Name (not .DisplayName)}}
<span class="user-badge-handle">@{{.Name}}</span>
{{end}}
</span>
{{end}}
{{/* Simple user badge - just takes a pubkey string */}}
{{define "user-badge-simple"}}
<span class="user-badge" title="{{.}}">
<span class="user-badge-avatar-placeholder"><i data-lucide="user" class="icon-inline"></i></span>
<span class="user-badge-name">{{shortenPubkey .}}</span>
</span>
{{end}}