Loads of stuff
This commit is contained in:
parent
fd015bd52c
commit
a3b9bd2680
15 changed files with 2310 additions and 208 deletions
|
|
@ -23,36 +23,7 @@
|
|||
<div class="blog-summary">{{ .Content }}</div>
|
||||
</article>
|
||||
|
||||
<section class="blog-contact-section">
|
||||
<h2 class="contact-title">Contact</h2>
|
||||
<div class="contact-content">
|
||||
<p>
|
||||
If you found this interesting, have any comments, questions,
|
||||
corrections, or just fancy saying "hello" please feel free to get
|
||||
in touch.
|
||||
</p>
|
||||
<div class="contact-email">
|
||||
<span class="contact-label">Email:</span>
|
||||
<a href="mailto:dan@ritual.sh">dan@ritual.sh</a>
|
||||
</div>
|
||||
<div class="contact-pgp">
|
||||
<span class="contact-label">PGP Public Key:</span>
|
||||
<div class="pgp-actions">
|
||||
<a
|
||||
href="/publickey.asc"
|
||||
download
|
||||
class="pgp-button download-key"
|
||||
>
|
||||
<span class="button-icon">↓</span> Download
|
||||
</a>
|
||||
<button id="copy-pgp-key" class="pgp-button copy-key">
|
||||
<span class="button-icon">⎘</span> Copy to Clipboard
|
||||
</button>
|
||||
</div>
|
||||
<div id="copy-feedback" class="copy-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ partial "contact-section.html" . }}
|
||||
|
||||
<nav class="blog-post-navigation">
|
||||
<div class="post-nav-links">
|
||||
|
|
@ -80,36 +51,4 @@
|
|||
|
||||
<script src="/js/footnote-scroll.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const copyButton = document.getElementById("copy-pgp-key");
|
||||
const feedback = document.getElementById("copy-feedback");
|
||||
|
||||
if (copyButton) {
|
||||
copyButton.addEventListener("click", async function () {
|
||||
try {
|
||||
const response = await fetch("/publickey.asc");
|
||||
const pgpKey = await response.text();
|
||||
|
||||
await navigator.clipboard.writeText(pgpKey);
|
||||
|
||||
feedback.textContent = "PGP key copied to clipboard!";
|
||||
feedback.classList.add("show", "success");
|
||||
|
||||
setTimeout(() => {
|
||||
feedback.classList.remove("show");
|
||||
}, 3000);
|
||||
} catch (err) {
|
||||
feedback.textContent = "Failed to copy key";
|
||||
feedback.classList.add("show", "error");
|
||||
|
||||
setTimeout(() => {
|
||||
feedback.classList.remove("show");
|
||||
}, 3000);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
{{ end }}
|
||||
|
|
|
|||
30
layouts/partials/contact-section.html
Normal file
30
layouts/partials/contact-section.html
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<section class="contact-section">
|
||||
<h2 class="contact-title">Contact</h2>
|
||||
<div class="contact-content">
|
||||
<p>
|
||||
If you found this interesting, have any comments, questions,
|
||||
corrections, or just fancy saying "hello" please feel free to get
|
||||
in touch.
|
||||
</p>
|
||||
<div class="contact-email">
|
||||
<span class="contact-label">Email:</span>
|
||||
<a href="mailto:dan@ritual.sh">dan@ritual.sh</a>
|
||||
</div>
|
||||
<div class="contact-pgp">
|
||||
<span class="contact-label">PGP Public Key:</span>
|
||||
<div class="pgp-actions">
|
||||
<a
|
||||
href="/publickey.asc"
|
||||
download
|
||||
class="pgp-button download-key"
|
||||
>
|
||||
<span class="button-icon">↓</span> Download
|
||||
</a>
|
||||
<button class="pgp-button copy-key pgp-copy-trigger">
|
||||
<span class="button-icon">⎘</span> Copy to Clipboard
|
||||
</button>
|
||||
</div>
|
||||
<div class="copy-feedback pgp-copy-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -1,6 +1,17 @@
|
|||
{{ define "main" }}
|
||||
<div class="resources-page">
|
||||
<div class="resources-page portal-theme">
|
||||
<div class="portal-bg-elements">
|
||||
<div class="aperture-logo"></div>
|
||||
<div class="test-chamber-grid"></div>
|
||||
</div>
|
||||
|
||||
<div class="resources-container">
|
||||
<div class="portal-header">
|
||||
<div class="portal-icon blue-portal hidden-lg-down"></div>
|
||||
<h1 class="portal-title">Resources</h1>
|
||||
<div class="portal-icon orange-portal hidden-md-down"></div>
|
||||
</div>
|
||||
|
||||
<div class="whiteboard">
|
||||
<div class="whiteboard-header">
|
||||
<div class="whiteboard-description">{{ .Content }}</div>
|
||||
|
|
@ -10,6 +21,8 @@
|
|||
{{ range .Pages }} {{ .Render "summary" }} {{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="companion-cube"></div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,16 @@
|
|||
{{ define "main" }}
|
||||
<div class="resource-single">
|
||||
<div class="test-chamber-grid">
|
||||
</div>
|
||||
|
||||
<article class="resource-content">
|
||||
<!-- Aperture Science hazard stripes in corners -->
|
||||
|
||||
|
||||
<!-- Animated energy particles -->
|
||||
<div class="energy-particles"></div>
|
||||
|
||||
<header class="resource-header">
|
||||
<div class="resource-icon-large {{ .Params.icon }}"></div>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ if .Params.description }}
|
||||
<p class="lead">{{ .Params.description }}</p>
|
||||
|
|
@ -28,6 +36,8 @@
|
|||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
{{ partial "contact-section.html" . }}
|
||||
|
||||
<nav class="resource-navigation">
|
||||
{{ with .PrevInSection }}
|
||||
<a href="{{ .Permalink }}" class="nav-link prev">← {{ .Title }}</a>
|
||||
|
|
|
|||
51
layouts/shortcodes/lastfm-stats-form.html
Normal file
51
layouts/shortcodes/lastfm-stats-form.html
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<div id="lastfm-stats-app">
|
||||
<div class="stats-form">
|
||||
<div class="form-group">
|
||||
<label for="lastfm-username">Last.fm Username</label>
|
||||
<input
|
||||
type="text"
|
||||
id="lastfm-username"
|
||||
placeholder="Enter your username"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="time-period">Time Period</label>
|
||||
<select id="time-period">
|
||||
<option value="7day">Past Week (7 days)</option>
|
||||
<option value="1month">Past Month (30 days)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<button id="fetch-stats" class="btn-primary">Get Stats</button>
|
||||
</div>
|
||||
|
||||
<div id="stats-results" class="stats-results" style="display: none">
|
||||
<div id="stats-loading" class="loading" style="display: none">
|
||||
<p>Loading your stats...</p>
|
||||
</div>
|
||||
|
||||
<div id="stats-content" style="display: none">
|
||||
<h2>Your Last.fm Stats</h2>
|
||||
|
||||
<div class="stat-box">
|
||||
<h3>Total Tracks</h3>
|
||||
<p id="total-tracks" class="stat-number">-</p>
|
||||
</div>
|
||||
|
||||
<div class="stat-box">
|
||||
<h3>Top 5 Artists</h3>
|
||||
<ul id="top-artists" class="artist-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="export-buttons" class="export-buttons" style="display: none">
|
||||
<button id="copy-markdown" class="btn-export">Copy as Markdown</button>
|
||||
<button id="copy-plaintext" class="btn-export">Copy as Plain Text</button>
|
||||
</div>
|
||||
|
||||
<div id="stats-error" class="error" style="display: none">
|
||||
<p id="error-message"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue