37 lines
890 B
HTML
37 lines
890 B
HTML
{{- /*
|
|
Renders an image or video from a front matter map.
|
|
|
|
Usage:
|
|
{{ partial "media.html" (dict "media" .Params.banner "class" "w-full h-full object-cover") }}
|
|
|
|
Parameters:
|
|
media — map with keys: type (image|video), src, alt
|
|
class — CSS classes applied to the img/video element
|
|
lazy — set to false to disable lazy loading (default true)
|
|
*/ -}}
|
|
|
|
{{- $media := .media -}}
|
|
{{- $class := .class | default "" -}}
|
|
{{- $lazy := .lazy | default true -}}
|
|
|
|
{{- with $media -}}
|
|
{{- if eq .type "video" -}}
|
|
<video
|
|
class="{{ $class }}"
|
|
src="{{ .src }}"
|
|
autoplay
|
|
loop
|
|
muted
|
|
playsinline
|
|
{{- with .alt }} aria-label="{{ . }}"{{ end }}
|
|
></video>
|
|
{{- else -}}
|
|
<img
|
|
class="{{ $class }}"
|
|
src="{{ .src }}"
|
|
alt="{{ .alt | default "" }}"
|
|
{{- if $lazy }} loading="lazy" decoding="async"{{ end }}
|
|
>
|
|
{{- end -}}
|
|
{{- end -}}
|