|
65 | 65 | {{- partial "breadcrumbs.html" . }} |
66 | 66 | <h1 data-pagefind-weight="10" class="scroll-mt-36">{{ .Title }}</h1> |
67 | 67 | {{ .Content }} |
| 68 | + <h2>Featured</h2> |
| 69 | + <div class="not-prose py-4 grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-8"> |
| 70 | + {{- $featured := where .Pages "Params.featured" true }} |
| 71 | + {{- with $featured }} |
| 72 | + {{- range . }} |
| 73 | + <div class="flex flex-col h-full"> |
| 74 | + <a class="hover:underline" href="{{ .Permalink }}"> |
| 75 | + {{- $img := resources.Get (.Params.image | default "/images/thumbnail.webp") }} |
| 76 | + {{- $img = $img.Process "resize 600x" }} |
| 77 | + <img class="h-48 w-full object-cover rounded shadow" src="{{ $img.Permalink }}"> |
| 78 | + <p class="text-xl leading-snug my-4">{{ .Title }}</p> |
| 79 | + </a> |
| 80 | + <p class="flex-grow text-sm">{{ .Summary }}</p> |
| 81 | + <div class="mt-4"> |
| 82 | + {{ template "guide-metadata" . }} |
| 83 | + </div> |
| 84 | + </div> |
| 85 | + {{- end }} |
| 86 | + {{- end }} |
| 87 | + </div> |
| 88 | + </ul> |
| 89 | + <hr class="text-divider-light dark:text-divider-dark"> |
68 | 90 | {{- $taxonomies := slice "products" "subjects" "levels" "languages" }} |
69 | | - <div class="not-prose" |
| 91 | + <div class="not-prose min-h-screen" |
70 | 92 | x-data="{ |
71 | 93 | filters: { {{ delimit (apply $taxonomies "fmt.Printf" "%s: []," "." ) "" }} }, |
72 | 94 |
|
@@ -103,67 +125,38 @@ <h1 data-pagefind-weight="10" class="scroll-mt-36">{{ .Title }}</h1> |
103 | 125 | } |
104 | 126 | }" |
105 | 127 | x-cloak |
106 | | - @guide-filter.window="filters = $event.detail.filters; window.scrollTo({ top: 0 });"> |
107 | | - <div x-ref="container" class="pt-4 grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6"> |
108 | | - {{- $featured := where .Pages "Params.featured" true }} |
109 | | - {{- with $featured }} |
110 | | - {{- range . }} |
111 | | - {{- $opts := dict "page" . "taxonomies" $taxonomies }} |
112 | | - {{- $filters := partial "utils/filter-terms.html" $opts }} |
113 | | - <div x-show="showItem({{ jsonify $filters }});" class="flex flex-col h-full"> |
114 | | - <div class="text-xs font-semibold text-gray-light dark:text-gray-dark tracking-wider uppercase">Featured</div> |
115 | | - <a class="hover:underline" href="{{ .Permalink }}"> |
116 | | - {{- $img := resources.Get (.Params.image | default "/images/thumbnail.webp") }} |
117 | | - {{- $img = $img.Process "resize 600x" }} |
118 | | - <img class="h-48 w-full object-cover rounded shadow" src="{{ $img.Permalink }}"> |
119 | | - <p class="text-xl leading-snug my-4">{{ .Title }}</p> |
120 | | - </a> |
121 | | - <p class="flex-grow text-sm">{{ .Summary }}</p> |
122 | | - <hr class="text-divider-light dark:text-divider-dark"> |
123 | | - {{ template "guide-metadata" . }} |
124 | | - </div> |
125 | | - {{- end }} |
126 | | - {{- end }} |
127 | | - {{- range (collections.Complement $featured .Pages) }} |
128 | | - {{- $opts := dict "page" . "taxonomies" $taxonomies }} |
129 | | - {{- $filters := partial "utils/filter-terms.html" $opts }} |
130 | | - <a href="{{ .Permalink }}" x-show="showItem({{ jsonify $filters }});" x-transition |
131 | | - class="group flex flex-col justify-between p-4 rounded border-2 |
132 | | - border-gray-light-100 bg-white dark:bg-gray-dark-200 |
133 | | - dark:border-gray-dark-400 drop-shadow transition |
134 | | - hover:-translate-y-1 hover:border-blue-light-400 |
135 | | - dark:hover:border-blue-dark-500"> |
136 | | - <div> |
137 | | - <div class="text-lg mb-4 group-hover:underline">{{ .Title }}</div> |
138 | | - <div |
139 | | - class="text-sm line-clamp-5 group-hover:text-black dark:group-hover:text-white text-gray-light dark:text-gray-dark"> |
140 | | - {{- .Summary }} |
141 | | - </div> |
142 | | - </div> |
143 | | - <div> |
144 | | - <hr class="text-divider-light dark:text-divider-dark"> |
145 | | - {{ template "guide-metadata" . }} |
146 | | - </div> |
147 | | - </a> |
148 | | - {{- end }} |
149 | | - </div> |
150 | | - </ul> |
| 128 | + @guide-filter.window="filters = $event.detail.filters; document.getElementById('all-guides').scrollIntoView({ behavior: 'smooth' })"> |
| 129 | + <h2 id="all-guides" class="scroll-mt-36">All guides</h2> |
| 130 | + {{- range .Pages }} |
| 131 | + {{- $opts := dict "page" . "taxonomies" $taxonomies }} |
| 132 | + {{- $filters := partial "utils/filter-terms.html" $opts }} |
| 133 | + <a href="{{ .Permalink }}" x-show="showItem({{ jsonify $filters }});" x-transition |
| 134 | + class="group flex flex-col justify-between p-4 border-b |
| 135 | + border-divider-light hover:bg-white |
| 136 | + hover:dark:bg-gray-dark-200 dark:border-divider-dark |
| 137 | + drop-shadow transition"> |
| 138 | + <div class="flex flex-col xl:flex-row justify-between"> |
| 139 | + <div class="text-lg group-hover:underline mb-2 xl:mb-0 truncate">{{ .Title }}</div> |
| 140 | + {{ template "guide-metadata" . }} |
| 141 | + </div> |
| 142 | + </a> |
| 143 | + {{- end }} |
151 | 144 | </article> |
152 | 145 | </div> |
153 | 146 | {{ end }} |
154 | 147 |
|
155 | 148 | {{- define "guide-metadata" }} |
156 | | -<div class="flex items-center text-sm justify-between text-gray-light dark:text-gray-dark"> |
157 | | - <div class="flex flex-wrap gap-2"> |
| 149 | +<div class="flex gap-8 items-center text-sm justify-between text-gray-light dark:text-gray-dark"> |
| 150 | + <div class="flex flex-wrap md:flex-nowrap gap-2"> |
158 | 151 | {{- $taxoterms := .GetTerms "languages" }} |
159 | 152 | {{- $taxoterms = $taxoterms | append (.GetTerms "levels") }} |
160 | 153 | {{- $taxoterms = $taxoterms | append (.GetTerms "subjects") }} |
161 | 154 | {{- range $taxoterms }} |
162 | | - <span class="rounded bg-gray-light-200 dark:bg-gray-dark-300 px-2">{{- .Page.LinkTitle }}</span> |
| 155 | + <span class="rounded whitespace-nowrap bg-gray-light-200 dark:bg-gray-dark-300 px-2">{{- .Page.LinkTitle }}</span> |
163 | 156 | {{- end }} |
164 | 157 | </div> |
165 | 158 | {{- with .Params.time }} |
166 | | - <div class="flex whitespace-nowrap gap-2"> |
| 159 | + <div class="flex whitespace-nowrap flex-shrink gap-2"> |
167 | 160 | <span class="icon-svg">{{ partialCached "icon" "schedule" "schedule" }}</span> |
168 | 161 | <span>{{ . }}</span> |
169 | 162 | </div> |
|
0 commit comments