Files
hinode/layouts/shortcodes/image.html
2023-08-31 13:34:23 +02:00

63 lines
2.8 KiB
HTML

<!--
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The partial
supports the following arguments:
"src": Required relative url of the image, e.g. "img/example.jpg"
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". Leave empty to keep the
original aspect ratio of the image.
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
the crop area is adjusted.
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
"class": Optional class attribute of the inner img element, e.g. "rounded".
"title": Optional alternate text of the image.
"caption": Optional figure caption.
"mode": Optional flag indicating if the image should support color modes.
-->
{{- if isset .Params "src" -}}
{{ $url := .Get "src" | default "" -}}
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
{{ $ratio := .Get "ratio" | default "" -}}
{{ if $ratio -}}
{{ if not (in $validRatios $ratio) -}}
{{ errorf "Invalid value for param 'ratio': %s" .Position -}}
{{ end -}}
{{ end -}}
{{- $class := .Get "class" | default "" -}}
{{- $wrapper := .Get "wrapper" | default "" -}}
{{ $title := .Get "title" | default "" -}}
{{ $caption := .Get "caption" | default "" -}}
{{ $supportedFlags := slice "true" "false" -}}
{{ $modeParam := "false" -}}
{{ $mode := false -}}
{{ with .Get "mode" }}{{ $modeParam = . }}{{ end -}}
{{ if in $supportedFlags $modeParam -}}
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
{{ else -}}
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
{{ end -}}
{{ $portraitParam := "false" -}}
{{ $portrait := false -}}
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
{{ if in $supportedFlags $portraitParam -}}
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
{{ else -}}
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
{{ end -}}
{{- partial "assets/image.html" (dict
"url" $url
"ratio" $ratio
"outerClass" $wrapper
"innerClass" $class
"title" $title
"caption" $caption
"mode" $mode
"portrait" $portrait
"page" .Page)
-}}
{{ else -}}
{{ errorf "Missing value for param 'src': %s" .Position -}}
{{ end -}}