chore: use proper casing

This commit is contained in:
2026-04-08 16:00:49 +02:00
parent c9d34fd567
commit bffdcb5241
20 changed files with 131 additions and 131 deletions

View File

@@ -13,7 +13,7 @@ templ AnimeDetails(anime jikan.Anime, currentStatus string) {
if anime.ImageURL() != "" {
<img src={ anime.ImageURL() } alt={ anime.DisplayTitle() }/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</div>
<div class="anime-info">
@@ -41,32 +41,32 @@ templ AnimeDetails(anime jikan.Anime, currentStatus string) {
</div>
</div>
<section class="anime-synopsis">
<h3>synopsis</h3>
<h3>Synopsis</h3>
if anime.Synopsis != "" {
<p>{ anime.Synopsis }</p>
} else {
<p class="no-synopsis">no synopsis available.</p>
<p class="no-synopsis">No synopsis available.</p>
}
</section>
<section class="anime-relations">
<h3>related</h3>
<h3>Related</h3>
<div hx-get={ string(templ.URL(fmt.Sprintf("/api/anime/%d/relations", anime.MalID))) } hx-trigger="load">
<div class="loading-indicator">
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<span>loading relations</span>
<span>Loading relations</span>
</div>
</div>
</section>
<section class="anime-recommendations">
<h3>recommendations</h3>
<h3>Recommendations</h3>
<div hx-get={ string(templ.URL(fmt.Sprintf("/api/anime/%d/recommendations", anime.MalID))) } hx-trigger="load">
<div class="loading-indicator">
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<span>loading recommendations</span>
<span>Loading recommendations</span>
</div>
</div>
</section>
@@ -225,7 +225,7 @@ templ WatchlistDropdown(animeID int, animeTitle string, animeTitleEnglish string
hx-delete={ string(templ.URL(fmt.Sprintf("/api/watchlist/%d", animeID))) }
hx-target="#watchlist-dropdown"
hx-swap="outerHTML"
>remove from list</button>
>Remove from list</button>
}
</div>
</div>
@@ -264,15 +264,15 @@ templ statusOption(anime jikan.Anime, status string, currentStatus string) {
func formatStatus(status string) string {
switch status {
case "watching":
return "watching"
return "Watching"
case "completed":
return "completed"
return "Completed"
case "on_hold":
return "on hold"
return "On hold"
case "dropped":
return "dropped"
return "Dropped"
case "plan_to_watch":
return "plan to watch"
return "Plan to watch"
default:
return status
}
@@ -287,7 +287,7 @@ templ AnimeRelationsList(relations []jikan.RelationEntry) {
if rel.Anime.ImageURL() != "" {
<img src={ rel.Anime.ImageURL() } alt={ rel.Anime.DisplayTitle() } class="relation-thumb"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
<div class="relation-title">{ rel.Anime.DisplayTitle() }</div>
</div>
@@ -296,7 +296,7 @@ templ AnimeRelationsList(relations []jikan.RelationEntry) {
if rel.Anime.ImageURL() != "" {
<img src={ rel.Anime.ImageURL() } alt={ rel.Anime.DisplayTitle() } class="relation-thumb"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
<div class="relation-title">{ rel.Anime.DisplayTitle() }</div>
</a>
@@ -316,7 +316,7 @@ templ AnimeRecommendations(recs []jikan.Anime) {
if anime.ImageURL() != "" {
<img src={ anime.ImageURL() } alt={ anime.DisplayTitle() } class="relation-thumb"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
<div class="relation-title">{ anime.DisplayTitle() }</div>
</a>

View File

@@ -81,7 +81,7 @@ func AnimeDetails(anime jikan.Anime, currentStatus string) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -210,7 +210,7 @@ func AnimeDetails(anime jikan.Anime, currentStatus string) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</div></div></div><section class=\"anime-synopsis\"><h3>synopsis</h3>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</div></div></div><section class=\"anime-synopsis\"><h3>Synopsis</h3>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -233,12 +233,12 @@ func AnimeDetails(anime jikan.Anime, currentStatus string) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<p class=\"no-synopsis\">no synopsis available.</p>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<p class=\"no-synopsis\">No synopsis available.</p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</section><section class=\"anime-relations\"><h3>related</h3><div hx-get=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</section><section class=\"anime-relations\"><h3>Related</h3><div hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -251,7 +251,7 @@ func AnimeDetails(anime jikan.Anime, currentStatus string) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>loading relations</span></div></div></section><section class=\"anime-recommendations\"><h3>recommendations</h3><div hx-get=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Loading relations</span></div></div></section><section class=\"anime-recommendations\"><h3>Recommendations</h3><div hx-get=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -264,7 +264,7 @@ func AnimeDetails(anime jikan.Anime, currentStatus string) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>loading recommendations</span></div></div></section></div><aside class=\"anime-sidebar\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Loading recommendations</span></div></div></section></div><aside class=\"anime-sidebar\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -711,7 +711,7 @@ func WatchlistDropdown(animeID int, animeTitle string, animeTitleEnglish string,
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "\" hx-target=\"#watchlist-dropdown\" hx-swap=\"outerHTML\">remove from list</button>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "\" hx-target=\"#watchlist-dropdown\" hx-swap=\"outerHTML\">Remove from list</button>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -893,15 +893,15 @@ func statusOption(anime jikan.Anime, status string, currentStatus string) templ.
func formatStatus(status string) string {
switch status {
case "watching":
return "watching"
return "Watching"
case "completed":
return "completed"
return "Completed"
case "on_hold":
return "on hold"
return "On hold"
case "dropped":
return "dropped"
return "Dropped"
case "plan_to_watch":
return "plan to watch"
return "Plan to watch"
default:
return status
}
@@ -971,7 +971,7 @@ func AnimeRelationsList(relations []jikan.RelationEntry) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -1043,7 +1043,7 @@ func AnimeRelationsList(relations []jikan.RelationEntry) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -1072,7 +1072,7 @@ func AnimeRelationsList(relations []jikan.RelationEntry) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<p style=\"color: var(--text-muted); font-size: var(--text-sm);\">no related anime found.</p>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<p style=\"color: var(--text-muted); font-size: var(--text-sm);\">No related anime found.</p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -1157,7 +1157,7 @@ func AnimeRecommendations(recs []jikan.Anime) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -1185,7 +1185,7 @@ func AnimeRecommendations(recs []jikan.Anime) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "<p style=\"color: var(--text-muted); font-size: var(--text-sm);\">no recommendations available.</p>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "<p style=\"color: var(--text-muted); font-size: var(--text-sm);\">No recommendations available.</p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -3,21 +3,21 @@ package templates
templ Login() {
@Layout("Login") {
<div class="login-container">
<h2>sign in</h2>
<p class="login-subtitle">enter your credentials to continue</p>
<h2>Sign in</h2>
<p class="login-subtitle">Enter your credentials to continue.</p>
<form action="/login" method="POST" class="login-form">
<div class="form-group">
<label for="username">username / email</label>
<label for="username">Username / Email</label>
<input type="text" id="username" name="username" required placeholder="you@example.com"/>
</div>
<div class="form-group">
<label for="password">password</label>
<input type="password" id="password" name="password" required placeholder="your password"/>
<label for="password">Password</label>
<input type="password" id="password" name="password" required placeholder="Your password"/>
</div>
<button type="submit" class="login-button">sign in</button>
<button type="submit" class="login-button">Sign in</button>
</form>
<p style="margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);">
don't have an account? <a href="/register" style="color: var(--primary);">register</a>
Don't have an account? <a href="/register" style="color: var(--primary);">Register</a>
</p>
</div>
}
@@ -26,24 +26,24 @@ templ Login() {
templ Register() {
@Layout("Register") {
<div class="login-container">
<h2>register</h2>
<p class="login-subtitle">create a new account to track anime</p>
<h2>Register</h2>
<p class="login-subtitle">Create a new account to track anime.</p>
<form action="/register" method="POST" class="login-form">
<div class="form-group">
<label for="username">username / email</label>
<label for="username">Username / Email</label>
<input type="text" id="username" name="username" required placeholder="you@example.com"/>
</div>
<div class="form-group">
<label for="password">password</label>
<input type="password" id="password" name="password" required placeholder="minimum 12 chars"/>
<label for="password">Password</label>
<input type="password" id="password" name="password" required placeholder="Minimum 12 chars"/>
</div>
<p style="font-size: 0.75rem; color: var(--text-muted); margin-bottom: 1rem; line-height: 1.4;">
Password must be at least 12 characters and include an uppercase letter, lowercase letter, number, and special character.
</p>
<button type="submit" class="login-button">create account</button>
<button type="submit" class="login-button">Create account</button>
</form>
<p style="margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);">
already have an account? <a href="/login" style="color: var(--primary);">sign in</a>
Already have an account? <a href="/login" style="color: var(--primary);">Sign in</a>
</p>
</div>
}

View File

@@ -41,7 +41,7 @@ func Login() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"login-container\"><h2>sign in</h2><p class=\"login-subtitle\">enter your credentials to continue</p><form action=\"/login\" method=\"POST\" class=\"login-form\"><div class=\"form-group\"><label for=\"username\">username / email</label> <input type=\"text\" id=\"username\" name=\"username\" required placeholder=\"you@example.com\"></div><div class=\"form-group\"><label for=\"password\">password</label> <input type=\"password\" id=\"password\" name=\"password\" required placeholder=\"your password\"></div><button type=\"submit\" class=\"login-button\">sign in</button></form><p style=\"margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);\">don't have an account? <a href=\"/register\" style=\"color: var(--primary);\">register</a></p></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"login-container\"><h2>Sign in</h2><p class=\"login-subtitle\">Enter your credentials to continue.</p><form action=\"/login\" method=\"POST\" class=\"login-form\"><div class=\"form-group\"><label for=\"username\">Username / Email</label> <input type=\"text\" id=\"username\" name=\"username\" required placeholder=\"you@example.com\"></div><div class=\"form-group\"><label for=\"password\">Password</label> <input type=\"password\" id=\"password\" name=\"password\" required placeholder=\"Your password\"></div><button type=\"submit\" class=\"login-button\">Sign in</button></form><p style=\"margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);\">Don't have an account? <a href=\"/register\" style=\"color: var(--primary);\">Register</a></p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -88,7 +88,7 @@ func Register() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<div class=\"login-container\"><h2>register</h2><p class=\"login-subtitle\">create a new account to track anime</p><form action=\"/register\" method=\"POST\" class=\"login-form\"><div class=\"form-group\"><label for=\"username\">username / email</label> <input type=\"text\" id=\"username\" name=\"username\" required placeholder=\"you@example.com\"></div><div class=\"form-group\"><label for=\"password\">password</label> <input type=\"password\" id=\"password\" name=\"password\" required placeholder=\"minimum 12 chars\"></div><p style=\"font-size: 0.75rem; color: var(--text-muted); margin-bottom: 1rem; line-height: 1.4;\">Password must be at least 12 characters and include an uppercase letter, lowercase letter, number, and special character.</p><button type=\"submit\" class=\"login-button\">create account</button></form><p style=\"margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);\">already have an account? <a href=\"/login\" style=\"color: var(--primary);\">sign in</a></p></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<div class=\"login-container\"><h2>Register</h2><p class=\"login-subtitle\">Create a new account to track anime.</p><form action=\"/register\" method=\"POST\" class=\"login-form\"><div class=\"form-group\"><label for=\"username\">Username / Email</label> <input type=\"text\" id=\"username\" name=\"username\" required placeholder=\"you@example.com\"></div><div class=\"form-group\"><label for=\"password\">Password</label> <input type=\"password\" id=\"password\" name=\"password\" required placeholder=\"Minimum 12 chars\"></div><p style=\"font-size: 0.75rem; color: var(--text-muted); margin-bottom: 1rem; line-height: 1.4;\">Password must be at least 12 characters and include an uppercase letter, lowercase letter, number, and special character.</p><button type=\"submit\" class=\"login-button\">Create account</button></form><p style=\"margin-top: 1rem; text-align: center; color: var(--text-muted); font-size: var(--text-sm);\">Already have an account? <a href=\"/login\" style=\"color: var(--primary);\">Sign in</a></p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -11,7 +11,7 @@ templ Catalog() {
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<span>loading catalog</span>
<span>Loading catalog</span>
</div>
</div>
</div>
@@ -50,7 +50,7 @@ templ CatalogItem(anime jikan.Anime) {
if anime.ImageURL() != "" {
<img src={ anime.ImageURL() } alt={ anime.DisplayTitle() } class="catalog-thumb" loading="lazy"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</a>
<div class="catalog-title">

View File

@@ -44,7 +44,7 @@ func Catalog() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"catalog-grid\" id=\"catalog-content\"><div hx-get=\"/api/catalog?page=1\" hx-trigger=\"load\" hx-swap=\"outerHTML\" style=\"grid-column: 1 / -1;\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>loading catalog</span></div></div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"catalog-grid\" id=\"catalog-content\"><div hx-get=\"/api/catalog?page=1\" hx-trigger=\"load\" hx-swap=\"outerHTML\" style=\"grid-column: 1 / -1;\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Loading catalog</span></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -203,7 +203,7 @@ func CatalogItem(anime jikan.Anime) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -31,7 +31,7 @@ templ Discover() {
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<span>loading discover</span>
<span>Loading discover</span>
</div>
</div>
</div>

View File

@@ -44,7 +44,7 @@ func Discover() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"discover-container\"><div class=\"tabs\"><button class=\"tab active\" hx-get=\"/api/discover/airing?page=1\" hx-target=\"#discover-content\" hx-trigger=\"click\" onclick=\"document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); this.classList.add('active');\">airing now</button> <button class=\"tab\" hx-get=\"/api/discover/upcoming?page=1\" hx-target=\"#discover-content\" hx-trigger=\"click\" onclick=\"document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); this.classList.add('active');\">upcoming</button></div><div class=\"catalog-grid\" id=\"discover-content\" hx-get=\"/api/discover/airing?page=1\" hx-trigger=\"load\"><div class=\"loading-indicator\" style=\"grid-column: 1 / -1;\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>loading discover</span></div></div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"discover-container\"><div class=\"tabs\"><button class=\"tab active\" hx-get=\"/api/discover/airing?page=1\" hx-target=\"#discover-content\" hx-trigger=\"click\" onclick=\"document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); this.classList.add('active');\">airing now</button> <button class=\"tab\" hx-get=\"/api/discover/upcoming?page=1\" hx-target=\"#discover-content\" hx-trigger=\"click\" onclick=\"document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); this.classList.add('active');\">upcoming</button></div><div class=\"catalog-grid\" id=\"discover-content\" hx-get=\"/api/discover/airing?page=1\" hx-trigger=\"load\"><div class=\"loading-indicator\" style=\"grid-column: 1 / -1;\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Loading discover</span></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -28,8 +28,8 @@ templ Search(q string) {
templ SearchResultsWrapper(query string, animes []jikan.Anime, nextPage int, hasNext bool) {
if len(animes) == 0 {
<div class="empty-state">
<div class="empty-state-title">no results found</div>
<div class="empty-state-text">try a different search term</div>
<div class="empty-state-title">No results found.</div>
<div class="empty-state-text">Try a different search term.</div>
</div>
} else {
<div class="catalog-grid">

View File

@@ -103,7 +103,7 @@ func SearchResultsWrapper(query string, animes []jikan.Anime, nextPage int, hasN
}
ctx = templ.ClearChildren(ctx)
if len(animes) == 0 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<div class=\"empty-state\"><div class=\"empty-state-title\">no results found</div><div class=\"empty-state-text\">try a different search term</div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<div class=\"empty-state\"><div class=\"empty-state-title\">No results found.</div><div class=\"empty-state-text\">Try a different search term.</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -16,16 +16,16 @@ templ Layout(title string) {
<div class="header-left">
<a href="/" class="logo">/mal</a>
<div class="nav">
<a href="/">catalog</a>
<a href="/discover">discover</a>
<a href="/schedule">schedule</a>
<a href="/notifications">notifications</a>
<a href="/watchlist">watchlist</a>
<a href="/">Catalog</a>
<a href="/discover">Discover</a>
<a href="/schedule">Schedule</a>
<a href="/notifications">Notifications</a>
<a href="/watchlist">Watchlist</a>
</div>
</div>
<div class="header-search-wrapper">
<form action="/search" method="GET" class="header-search">
<input type="text" id="search-input" name="q" class="search-input" placeholder="search anime..." autocomplete="off"/>
<input type="text" id="search-input" name="q" class="search-input" placeholder="Search anime..." autocomplete="off"/>
<div id="search-dropdown" class="search-dropdown"></div>
</form>
</div>

View File

@@ -42,7 +42,7 @@ func Layout(title string) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><link rel=\"stylesheet\" href=\"/static/css/style.css\"><script src=\"https://unpkg.com/htmx.org@1.9.11\"></script></head><body><header><div class=\"header-top\"><div class=\"header-left\"><a href=\"/\" class=\"logo\">/mal</a><div class=\"nav\"><a href=\"/\">catalog</a> <a href=\"/discover\">discover</a> <a href=\"/schedule\">schedule</a> <a href=\"/notifications\">notifications</a> <a href=\"/watchlist\">watchlist</a></div></div><div class=\"header-search-wrapper\"><form action=\"/search\" method=\"GET\" class=\"header-search\"><input type=\"text\" id=\"search-input\" name=\"q\" class=\"search-input\" placeholder=\"search anime...\" autocomplete=\"off\"><div id=\"search-dropdown\" class=\"search-dropdown\"></div></form></div></div></header><main>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><link rel=\"stylesheet\" href=\"/static/css/style.css\"><script src=\"https://unpkg.com/htmx.org@1.9.11\"></script></head><body><header><div class=\"header-top\"><div class=\"header-left\"><a href=\"/\" class=\"logo\">/mal</a><div class=\"nav\"><a href=\"/\">Catalog</a> <a href=\"/discover\">Discover</a> <a href=\"/schedule\">Schedule</a> <a href=\"/notifications\">Notifications</a> <a href=\"/watchlist\">Watchlist</a></div></div><div class=\"header-search-wrapper\"><form action=\"/search\" method=\"GET\" class=\"header-search\"><input type=\"text\" id=\"search-input\" name=\"q\" class=\"search-input\" placeholder=\"Search anime...\" autocomplete=\"off\"><div id=\"search-dropdown\" class=\"search-dropdown\"></div></form></div></div></header><main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -12,13 +12,13 @@ type WatchingAnimeWithDetails struct {
templ Notifications(watching []WatchingAnimeWithDetails) {
@Layout("mal - notifications") {
<div class="notifications-page">
<h1>airing shows (tracking)</h1>
<p class="notifications-subtitle">shows you're currently watching or planning to watch</p>
<h1>Airing shows (tracking)</h1>
<p class="notifications-subtitle">Shows you're currently watching or planning to watch.</p>
if len(watching) == 0 {
<div class="no-notifications">
<p>no airing anime in your watching list</p>
<p class="hint">add currently airing shows to your watching list to see upcoming episodes here</p>
<p>No airing anime in your watching list.</p>
<p class="hint">Add currently airing shows to your watching list to see upcoming episodes here.</p>
</div>
} else {
<div class="notifications-list">
@@ -28,13 +28,13 @@ templ Notifications(watching []WatchingAnimeWithDetails) {
</div>
}
<h1 style="margin-top: var(--space-2xl);">discovered sequels</h1>
<p class="notifications-subtitle">because you've watched prequels</p>
<h1 style="margin-top: var(--space-2xl);">Discovered sequels</h1>
<p class="notifications-subtitle">Because you've watched prequels.</p>
<div hx-get="/notifications/upcoming" hx-trigger="load, every 15s" hx-swap="innerHTML">
<div class="loading-indicator">
<div class="loading-dot"></div><div class="loading-dot"></div><div class="loading-dot"></div>
<span>syncing sequel graphs...</span>
<span>Syncing sequel graphs...</span>
</div>
</div>
</div>
@@ -55,8 +55,8 @@ func splitUpcomingSeasons(items []database.GetUpcomingSeasonsRow) (airing []data
templ UpcomingSeasonsList(upcomingSeasons []database.GetUpcomingSeasonsRow) {
if len(upcomingSeasons) == 0 {
<div class="no-notifications">
<p>no upcoming seasons for anime you've watched</p>
<p class="hint">as you watch more shows, new seasons will appear here</p>
<p>No upcoming seasons for anime you've watched.</p>
<p class="hint">As you watch more shows, new seasons will appear here.</p>
</div>
} else {
@renderSplitSeasons(upcomingSeasons)
@@ -66,7 +66,7 @@ templ UpcomingSeasonsList(upcomingSeasons []database.GetUpcomingSeasonsRow) {
templ renderSplitSeasons(upcomingSeasons []database.GetUpcomingSeasonsRow) {
if airing, upcoming := splitUpcomingSeasons(upcomingSeasons); true {
if len(airing) > 0 {
<h2 style="font-size: var(--text-md); margin-bottom: var(--space-md); color: var(--text-muted);">airing now (not tracked)</h2>
<h2 style="font-size: var(--text-md); margin-bottom: var(--space-md); color: var(--text-muted);">Airing now (not tracked)</h2>
<div class="notifications-list" style="margin-bottom: var(--space-xl);">
for _, item := range airing {
@UpcomingSeasonCard(item)
@@ -75,7 +75,7 @@ templ renderSplitSeasons(upcomingSeasons []database.GetUpcomingSeasonsRow) {
}
if len(upcoming) > 0 {
<h2 style="font-size: var(--text-md); margin-bottom: var(--space-md); color: var(--text-muted);">announced & upcoming</h2>
<h2 style="font-size: var(--text-md); margin-bottom: var(--space-md); color: var(--text-muted);">Announced & upcoming</h2>
<div class="notifications-list">
for _, item := range upcoming {
@UpcomingSeasonCard(item)
@@ -91,7 +91,7 @@ templ UpcomingSeasonCard(item database.GetUpcomingSeasonsRow) {
if item.ImageUrl != "" {
<img src={ item.ImageUrl } alt={ displaySeasonTitle(item) } loading="lazy"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</div>
<div class="notification-content">
@@ -99,7 +99,7 @@ templ UpcomingSeasonCard(item database.GetUpcomingSeasonsRow) {
{ displaySeasonTitle(item) }
</div>
<div class="notification-meta">
<span class="notification-broadcast" style="color: var(--text-muted) !important;">because you watched { item.PrequelTitle }</span>
<span class="notification-broadcast" style="color: var(--text-muted) !important;">Because you watched { item.PrequelTitle }</span>
</div>
</div>
</a>
@@ -121,7 +121,7 @@ templ NotificationCard(item WatchingAnimeWithDetails) {
if item.Entry.ImageUrl != "" {
<img src={ item.Entry.ImageUrl } alt={ displayTitle(item.Entry) } loading="lazy"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</div>
<div class="notification-content">

View File

@@ -50,12 +50,12 @@ func Notifications(watching []WatchingAnimeWithDetails) templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"notifications-page\"><h1>airing shows (tracking)</h1><p class=\"notifications-subtitle\">shows you're currently watching or planning to watch</p>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"notifications-page\"><h1>Airing shows (tracking)</h1><p class=\"notifications-subtitle\">Shows you're currently watching or planning to watch.</p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if len(watching) == 0 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<div class=\"no-notifications\"><p>no airing anime in your watching list</p><p class=\"hint\">add currently airing shows to your watching list to see upcoming episodes here</p></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<div class=\"no-notifications\"><p>No airing anime in your watching list.</p><p class=\"hint\">Add currently airing shows to your watching list to see upcoming episodes here.</p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -75,7 +75,7 @@ func Notifications(watching []WatchingAnimeWithDetails) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<h1 style=\"margin-top: var(--space-2xl);\">discovered sequels</h1><p class=\"notifications-subtitle\">because you've watched prequels</p><div hx-get=\"/notifications/upcoming\" hx-trigger=\"load, every 15s\" hx-swap=\"innerHTML\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>syncing sequel graphs...</span></div></div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<h1 style=\"margin-top: var(--space-2xl);\">discovered sequels</h1><p class=\"notifications-subtitle\">Because you've watched prequels.</p><div hx-get=\"/notifications/upcoming\" hx-trigger=\"load, every 15s\" hx-swap=\"innerHTML\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Syncing sequel graphs...</span></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -122,7 +122,7 @@ func UpcomingSeasonsList(upcomingSeasons []database.GetUpcomingSeasonsRow) templ
}
ctx = templ.ClearChildren(ctx)
if len(upcomingSeasons) == 0 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<div class=\"no-notifications\"><p>no upcoming seasons for anime you've watched</p><p class=\"hint\">as you watch more shows, new seasons will appear here</p></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<div class=\"no-notifications\"><p>No upcoming seasons for anime you've watched.</p><p class=\"hint\">As you watch more shows, new seasons will appear here.</p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -269,7 +269,7 @@ func UpcomingSeasonCard(item database.GetUpcomingSeasonsRow) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -287,7 +287,7 @@ func UpcomingSeasonCard(item database.GetUpcomingSeasonsRow) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</div><div class=\"notification-meta\"><span class=\"notification-broadcast\" style=\"color: var(--text-muted) !important;\">because you watched ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</div><div class=\"notification-meta\"><span class=\"notification-broadcast\" style=\"color: var(--text-muted) !important;\">Because you watched ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -388,7 +388,7 @@ func NotificationCard(item WatchingAnimeWithDetails) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -7,17 +7,17 @@ import "strings"
templ Schedule() {
@Layout("mal - schedule") {
<div class="schedule-page">
<h1>weekly schedule</h1>
<p class="schedule-subtitle">airing times in JST</p>
<h1>Weekly schedule</h1>
<p class="schedule-subtitle">Airing times in JST</p>
<div class="schedule-tabs">
<button class="schedule-tab active" data-day="monday" onclick="loadDay('monday', this)">mon</button>
<button class="schedule-tab" data-day="tuesday" onclick="loadDay('tuesday', this)">tue</button>
<button class="schedule-tab" data-day="wednesday" onclick="loadDay('wednesday', this)">wed</button>
<button class="schedule-tab" data-day="thursday" onclick="loadDay('thursday', this)">thu</button>
<button class="schedule-tab" data-day="friday" onclick="loadDay('friday', this)">fri</button>
<button class="schedule-tab" data-day="saturday" onclick="loadDay('saturday', this)">sat</button>
<button class="schedule-tab" data-day="sunday" onclick="loadDay('sunday', this)">sun</button>
<button class="schedule-tab active" data-day="Monday" onclick="loadDay('monday', this)">Mon</button>
<button class="schedule-tab" data-day="Tuesday" onclick="loadDay('tuesday', this)">Tue</button>
<button class="schedule-tab" data-day="Wednesday" onclick="loadDay('wednesday', this)">Wed</button>
<button class="schedule-tab" data-day="Thursday" onclick="loadDay('thursday', this)">Thu</button>
<button class="schedule-tab" data-day="Friday" onclick="loadDay('friday', this)">Fri</button>
<button class="schedule-tab" data-day="Saturday" onclick="loadDay('saturday', this)">Sat</button>
<button class="schedule-tab" data-day="Sunday" onclick="loadDay('sunday', this)">Sun</button>
</div>
<div id="schedule-content" hx-get="/api/schedule?day=monday" hx-trigger="load">
@@ -25,7 +25,7 @@ templ Schedule() {
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<span>loading schedule</span>
<span>Loading schedule</span>
</div>
</div>
</div>
@@ -44,7 +44,7 @@ templ ScheduleDay(day string, animes []jikan.Anime) {
<div class="schedule-day">
<h2>{ strings.Title(day) }</h2>
if len(animes) == 0 {
<p class="no-anime">no anime scheduled</p>
<p class="no-anime">No anime scheduled.</p>
} else {
<div class="schedule-grid">
for _, anime := range animes {
@@ -61,7 +61,7 @@ templ ScheduleAnimeCard(anime jikan.Anime) {
if anime.ImageURL() != "" {
<img src={ anime.ImageURL() } alt={ anime.DisplayTitle() } loading="lazy"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</div>
<div class="schedule-card-info">

View File

@@ -45,7 +45,7 @@ func Schedule() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"schedule-page\"><h1>weekly schedule</h1><p class=\"schedule-subtitle\">airing times in JST</p><div class=\"schedule-tabs\"><button class=\"schedule-tab active\" data-day=\"monday\" onclick=\"loadDay('monday', this)\">mon</button> <button class=\"schedule-tab\" data-day=\"tuesday\" onclick=\"loadDay('tuesday', this)\">tue</button> <button class=\"schedule-tab\" data-day=\"wednesday\" onclick=\"loadDay('wednesday', this)\">wed</button> <button class=\"schedule-tab\" data-day=\"thursday\" onclick=\"loadDay('thursday', this)\">thu</button> <button class=\"schedule-tab\" data-day=\"friday\" onclick=\"loadDay('friday', this)\">fri</button> <button class=\"schedule-tab\" data-day=\"saturday\" onclick=\"loadDay('saturday', this)\">sat</button> <button class=\"schedule-tab\" data-day=\"sunday\" onclick=\"loadDay('sunday', this)\">sun</button></div><div id=\"schedule-content\" hx-get=\"/api/schedule?day=monday\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>loading schedule</span></div></div></div><script>\n\t\t\tfunction loadDay(day, btn) {\n\t\t\t\tdocument.querySelectorAll('.schedule-tab').forEach(t => t.classList.remove('active'));\n\t\t\t\tbtn.classList.add('active');\n\t\t\t\thtmx.ajax('GET', '/api/schedule?day=' + day, '#schedule-content');\n\t\t\t}\n\t\t</script>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"schedule-page\"><h1>Weekly schedule</h1><p class=\"schedule-subtitle\">Airing times in JST</p><div class=\"schedule-tabs\"><button class=\"schedule-tab active\" data-day=\"Monday\" onclick=\"loadDay('monday', this)\">Mon</button> <button class=\"schedule-tab\" data-day=\"Tuesday\" onclick=\"loadDay('tuesday', this)\">Tue</button> <button class=\"schedule-tab\" data-day=\"Wednesday\" onclick=\"loadDay('wednesday', this)\">Wed</button> <button class=\"schedule-tab\" data-day=\"Thursday\" onclick=\"loadDay('thursday', this)\">Thu</button> <button class=\"schedule-tab\" data-day=\"Friday\" onclick=\"loadDay('friday', this)\">Fri</button> <button class=\"schedule-tab\" data-day=\"Saturday\" onclick=\"loadDay('saturday', this)\">Sat</button> <button class=\"schedule-tab\" data-day=\"Sunday\" onclick=\"loadDay('sunday', this)\">Sun</button></div><div id=\"schedule-content\" hx-get=\"/api/schedule?day=monday\" hx-trigger=\"load\"><div class=\"loading-indicator\"><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><div class=\"loading-dot\"></div><span>Loading schedule</span></div></div></div><script>\n\t\t\tfunction loadDay(day, btn) {\n\t\t\t\tdocument.querySelectorAll('.schedule-tab').forEach(t => t.classList.remove('active'));\n\t\t\t\tbtn.classList.add('active');\n\t\t\t\thtmx.ajax('GET', '/api/schedule?day=' + day, '#schedule-content');\n\t\t\t}\n\t\t</script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -98,7 +98,7 @@ func ScheduleDay(day string, animes []jikan.Anime) templ.Component {
return templ_7745c5c3_Err
}
if len(animes) == 0 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<p class=\"no-anime\">no anime scheduled</p>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<p class=\"no-anime\">No anime scheduled.</p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -196,7 +196,7 @@ func ScheduleAnimeCard(anime jikan.Anime) templ.Component {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -10,18 +10,18 @@ type SortFilterOptions struct {
templ SortFilter(opts SortFilterOptions) {
<div class="sort-filter">
<div class="sort-filter-group">
<label for="sort-select">sort by</label>
<label for="sort-select">Sort by</label>
<select id="sort-select" class="sort-filter-select" onchange="document.getElementById('sort-input').value = this.value; document.getElementById('sort-form').submit()">
<option value="date" selected?={ opts.Sort == "date" }>date added</option>
<option value="title" selected?={ opts.Sort == "title" }>title</option>
<option value="score" selected?={ opts.Sort == "score" }>score</option>
<option value="date" selected?={ opts.Sort == "date" }>Date added</option>
<option value="title" selected?={ opts.Sort == "title" }>Title</option>
<option value="score" selected?={ opts.Sort == "score" }>Score</option>
</select>
</div>
<div class="sort-filter-group">
<label for="order-select">order</label>
<label for="order-select">Order</label>
<select id="order-select" class="sort-filter-select" onchange="document.getElementById('order-input').value = this.value; document.getElementById('sort-form').submit()">
<option value="desc" selected?={ opts.Order == "desc" }>descending</option>
<option value="asc" selected?={ opts.Order == "asc" }>ascending</option>
<option value="desc" selected?={ opts.Order == "desc" }>Descending</option>
<option value="asc" selected?={ opts.Order == "asc" }>Ascending</option>
</select>
</div>
</div>

View File

@@ -36,7 +36,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"sort-filter\"><div class=\"sort-filter-group\"><label for=\"sort-select\">sort by</label> <select id=\"sort-select\" class=\"sort-filter-select\" onchange=\"document.getElementById('sort-input').value = this.value; document.getElementById('sort-form').submit()\"><option value=\"date\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"sort-filter\"><div class=\"sort-filter-group\"><label for=\"sort-select\">Sort by</label> <select id=\"sort-select\" class=\"sort-filter-select\" onchange=\"document.getElementById('sort-input').value = this.value; document.getElementById('sort-form').submit()\"><option value=\"date\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -46,7 +46,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, ">date added</option> <option value=\"title\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, ">Date added</option> <option value=\"title\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -56,7 +56,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, ">title</option> <option value=\"score\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, ">Title</option> <option value=\"score\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -66,7 +66,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, ">score</option></select></div><div class=\"sort-filter-group\"><label for=\"order-select\">order</label> <select id=\"order-select\" class=\"sort-filter-select\" onchange=\"document.getElementById('order-input').value = this.value; document.getElementById('sort-form').submit()\"><option value=\"desc\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, ">Score</option></select></div><div class=\"sort-filter-group\"><label for=\"order-select\">Order</label> <select id=\"order-select\" class=\"sort-filter-select\" onchange=\"document.getElementById('order-input').value = this.value; document.getElementById('sort-form').submit()\"><option value=\"desc\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -76,7 +76,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, ">descending</option> <option value=\"asc\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, ">Descending</option> <option value=\"asc\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -86,7 +86,7 @@ func SortFilter(opts SortFilterOptions) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, ">ascending</option></select></div></div><form id=\"sort-form\" method=\"get\" style=\"display: none;\"><input type=\"hidden\" name=\"sort\" id=\"sort-input\" value=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, ">Ascending</option></select></div></div><form id=\"sort-form\" method=\"get\" style=\"display: none;\"><input type=\"hidden\" name=\"sort\" id=\"sort-input\" value=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -8,10 +8,10 @@ import (
templ Watchlist(entries []database.GetUserWatchListRow, layout string, currentStatus string, sortBy string, sortOrder string) {
@Layout("My Watchlist") {
<div class="watchlist-header">
<h2>watchlist</h2>
<h2>Watchlist</h2>
<div class="watchlist-controls">
<a href="/api/watchlist/export" class="text-link">export</a>
<button class="text-link" onclick="document.getElementById('import-file').click()">import</button>
<button class="text-link" onclick="document.getElementById('import-file').click()">Import</button>
<form id="import-form" hx-post="/api/watchlist/import" hx-encoding="multipart/form-data" style="display: none;">
<input type="file" id="import-file" name="file" accept=".json" onchange="htmx.trigger('#import-form', 'submit')"/>
</form>
@@ -23,12 +23,12 @@ templ Watchlist(entries []database.GetUserWatchListRow, layout string, currentSt
</div>
<div class="status-tabs">
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=all&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "all") }>all</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=watching&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "watching") }>watching</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=watching&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "watching") }>Watching</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=continuing&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "continuing") }>continuing</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=on_hold&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "on_hold") }>on hold</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=plan_to_watch&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "plan_to_watch") }>plan to watch</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=dropped&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "dropped") }>dropped</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=completed&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "completed") }>completed</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=on_hold&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "on_hold") }>On hold</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=plan_to_watch&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "plan_to_watch") }>Plan to watch</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=dropped&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "dropped") }>Dropped</a>
<a href={ templ.URL(fmt.Sprintf("/watchlist?view=%s&status=completed&sort=%s&order=%s", layout, sortBy, sortOrder)) } class={ tabClass(currentStatus == "completed") }>Completed</a>
</div>
@SortFilter(SortFilterOptions{Sort: sortBy, Order: sortOrder, View: layout, Status: currentStatus})
if len(entries) == 0 {
@@ -53,7 +53,7 @@ templ Watchlist(entries []database.GetUserWatchListRow, layout string, currentSt
if entry.ImageUrl != "" {
<img src={ entry.ImageUrl } alt={ entry.DisplayTitle() } class="catalog-thumb" loading="lazy"/>
} else {
<div class="no-image">no image</div>
<div class="no-image">No image</div>
}
</a>
<div class="catalog-title">{ entry.DisplayTitle() }</div>
@@ -71,7 +71,7 @@ templ Watchlist(entries []database.GetUserWatchListRow, layout string, currentSt
<thead>
<tr>
<th></th>
<th>title</th>
<th>Title</th>
<th></th>
</tr>
</thead>

View File

@@ -46,7 +46,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"watchlist-header\"><h2>watchlist</h2><div class=\"watchlist-controls\"><a href=\"/api/watchlist/export\" class=\"text-link\">export</a> <button class=\"text-link\" onclick=\"document.getElementById('import-file').click()\">import</button><form id=\"import-form\" hx-post=\"/api/watchlist/import\" hx-encoding=\"multipart/form-data\" style=\"display: none;\"><input type=\"file\" id=\"import-file\" name=\"file\" accept=\".json\" onchange=\"htmx.trigger('#import-form', 'submit')\"></form><div class=\"view-toggle\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"watchlist-header\"><h2>Watchlist</h2><div class=\"watchlist-controls\"><a href=\"/api/watchlist/export\" class=\"text-link\">export</a> <button class=\"text-link\" onclick=\"document.getElementById('import-file').click()\">Import</button><form id=\"import-form\" hx-post=\"/api/watchlist/import\" hx-encoding=\"multipart/form-data\" style=\"display: none;\"><input type=\"file\" id=\"import-file\" name=\"file\" accept=\".json\" onchange=\"htmx.trigger('#import-form', 'submit')\"></form><div class=\"view-toggle\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -186,7 +186,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\">watching</a> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\">Watching</a> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -256,7 +256,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\">on hold</a> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\">On hold</a> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -291,7 +291,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">plan to watch</a> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">Plan to watch</a> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -326,7 +326,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\">dropped</a> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\">Dropped</a> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -361,7 +361,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\">completed</a></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\">Completed</a></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -467,7 +467,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<div class=\"no-image\">no image</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<div class=\"no-image\">No image</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -521,7 +521,7 @@ func Watchlist(entries []database.GetUserWatchListRow, layout string, currentSta
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<table class=\"watchlist-table\"><thead><tr><th></th><th>title</th><th></th></tr></thead> <tbody>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<table class=\"watchlist-table\"><thead><tr><th></th><th>Title</th><th></th></tr></thead> <tbody>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}