55 lines
1.8 KiB
Plaintext
55 lines
1.8 KiB
Plaintext
package web
|
|
|
|
templ HelloForm() {
|
|
@Base() {
|
|
<button id="dark-mode-toggle">🌙</button>
|
|
<div id="search-container">
|
|
<input id="search_term" name="search_term" type="text" hx-post="/find" hx-trigger="keyup changed delay:0.25s" hx-target="#games-container"/>
|
|
<button type="button" id="clear" name="clear">Clear</button>
|
|
</div>
|
|
<div id="games-container"></div>
|
|
<script>
|
|
document.addEventListener('readystatechange', () => {
|
|
if (document.readyState == 'complete') {
|
|
htmx.ajax('POST', '/find', '#games-container');
|
|
document.getElementById("search_term").focus();
|
|
|
|
// Initialize dark mode from localStorage (default to dark)
|
|
const savedTheme = localStorage.getItem('theme') || 'dark';
|
|
if (savedTheme === 'dark') {
|
|
document.documentElement.setAttribute('data-theme', 'dark');
|
|
document.getElementById('dark-mode-toggle').textContent = '☀️';
|
|
}
|
|
}
|
|
});
|
|
|
|
// Dark mode toggle functionality
|
|
document.getElementById("dark-mode-toggle").addEventListener("click", function() {
|
|
const html = document.documentElement;
|
|
const currentTheme = html.getAttribute('data-theme');
|
|
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
|
|
|
html.setAttribute('data-theme', newTheme);
|
|
localStorage.setItem('theme', newTheme);
|
|
|
|
// Update toggle button text
|
|
this.textContent = newTheme === 'dark' ? '☀️' : '🌙';
|
|
});
|
|
|
|
document.getElementById("clear").addEventListener("click", function (event) {
|
|
document.getElementById("search_term").value = "";
|
|
htmx.ajax('POST', '/find', '#games-container');
|
|
document.getElementById("search_term").focus();
|
|
});
|
|
</script>
|
|
}
|
|
}
|
|
|
|
templ FoundGames(games []string) {
|
|
for _, game := range games {
|
|
<div class="bg-green-100 p-4 shadow-md rounded-lg mt-6">
|
|
<p class="game-text">{ game }</p>
|
|
</div>
|
|
}
|
|
}
|