29 lines
1002 B
Plaintext
29 lines
1002 B
Plaintext
package templates
|
|
|
|
import "mal/internal/jikan"
|
|
import "mal/internal/shared/ui"
|
|
import "fmt"
|
|
|
|
templ Catalog() {
|
|
@Layout("mal - catalog", true) {
|
|
<div class="grid grid-cols-[repeat(auto-fill,minmax(190px,1fr))] gap-4 max-[680px]:grid-cols-2 max-[680px]:gap-3" id="catalog-content">
|
|
<div class="col-span-full" hx-get="/api/catalog?page=1" hx-trigger="load" hx-swap="outerHTML">
|
|
@ui.LoadingIndicator("Loading catalog")
|
|
</div>
|
|
</div>
|
|
}
|
|
}
|
|
|
|
templ CatalogItems(animes []jikan.Anime, nextPage int, hasNext bool) {
|
|
@ui.InfiniteAnimeList(animes, hasNext, string(templ.URL(fmt.Sprintf("/api/catalog?page=%d", nextPage))), "catalog-content")
|
|
}
|
|
|
|
templ CatalogPlaceholderItems(count int) {
|
|
for i := 0; i < count; i++ {
|
|
<div class="pointer-events-none min-w-0" aria-hidden="true">
|
|
<div class="aspect-[2/3] max-h-[var(--poster-max-height)] w-full animate-pulse bg-[var(--surface-search)]"></div>
|
|
<div class="mt-2 h-[0.9rem] w-4/5 animate-pulse bg-[var(--surface-search)]"></div>
|
|
</div>
|
|
}
|
|
}
|