Add list styles: Podium, Spotlight, Grid, List
- Each list picks a style in List settings (new lists default to Podium); existing lists keep Grid or List - Podium: top 3 on medal-colored steps (#1 center and raised), the rest behind a native <details> "Show N more"; stacks #1 over #2/#3 on phones - Spotlight: #1 as a feature card (art, why-note or description, play button), the rest as a numbered list - Visitors can switch styles on a list page (?style=), preserved across pages; later pages fall back to a plain list since they don't start at #1 - Entries' detail data now lives on a wrapper per list, so featured and collapsed entries all open the detail view Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b09533cc00
commit
ddf2157e63
15 files changed
+286
-65
No files matched your search
@@ -103,6 +103,17 @@ var funcs = template.FuncMap{
|
||||
},
|
||||
"add": func(a, b int) int { return a + b },
|
||||
"hasPrefix": strings.HasPrefix,
|
||||
// first and after split a ranked list: the podium/spotlight entries and
|
||||
// everything below them.
|
||||
"first": func(n int, items []ItemView) []ItemView { return items[:min(n, len(items))] },
|
||||
"after": func(n int, items []ItemView) []ItemView { return items[min(n, len(items)):] },
|
||||
// flatLayout is how a style shows entries that aren't featured.
|
||||
"flatLayout": func(style string) string {
|
||||
if style == "grid" {
|
||||
return "grid"
|
||||
}
|
||||
return "rows"
|
||||
},
|
||||
// dict builds a map for passing several values to a partial.
|
||||
"dict": func(kv ...any) map[string]any {
|
||||
m := map[string]any{}
|
||||
|
||||
Reference in new issue
Block a user