Files
hugo_blog.awin.one/layouts/index.html
2022-05-10 01:13:38 +08:00

238 lines
8.4 KiB
HTML

{{- define "main" }}
{{ $homepage := .Site.GetPage "homepage" }}
{{ $widgets := $homepage.Resources }}
{{ range $widgets }}
{{ if .Params.widget.handler }}
{{ partial "widgets/load" . }}
{{ else }}
{{ errorf "Failed to find widget param in %q" .Path }}
{{ end }}
{{/* Deprecation warning(v1.0.0) starts */}}
{{ else }}
{{ warnf "Param 'hero' in params.toml is deprecated and will be removed in Eureka v1.0.0. See https://www.wangchucheng.com/en/docs/hugo-eureka/homepage-configuration/" }}
<div class="bg-secondary-bg pl-scrollbar">
<div class="mx-auto max-w-screen-xl">
<div class="h-(screen-16) grid grid-cols-9 grid-rows-5">
{{- $imgLeft := partial "utils/get-image" (dict "context" . "url" .Site.Params.hero.imgLeft) }}
{{- with $imgLeft }}
<div
class="z-10 col-span-4 col-start-2 row-span-2 row-start-3 bg-cover bg-local shadow-2xl"
style="background-image: url({{ . }});"
></div>
{{- end }}
<div class="z-20 col-span-5 col-start-3 row-span-3 row-start-2">
<div class="flex min-h-full flex-col items-center justify-center">
<div class="-m-12 bg-white bg-opacity-75 p-12 shadow-2xl">
<span
class="text-2xl font-bold text-black text-opacity-75 md:text-3xl"
>{{ .Site.Params.hero.slogan }}</span
>
</div>
</div>
</div>
{{- $imgRight := partial "utils/get-image" (dict "context" . "url" .Site.Params.hero.imgRight) }}
{{- with $imgRight }}
<div
class="col-span-4 col-start-5 row-span-2 row-start-2 bg-cover bg-local shadow-2xl"
style="background-image: url({{ . }});"
></div>
{{- end }}
</div>
</div>
</div>
<div class="pl-scrollbar">
<div class="mx-auto max-w-screen-xl">
<div class="pt-12 md:px-4 xl:px-8">
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- partial "components/masonry" $pages }}
</div>
</div>
</div>
{{/* Deprecation warning(v1.0.0) ends */}}
{{ end }}
{{- end }}
{{ define "partials/widgets/load" }}
{{ $widget := .Params.widget }}
{{ $fullScreenWidgets := slice "vintage" }}
{{/* background config */}}
{{ $backgroundClass := "" }}
{{ $backgroundStyle := "" }}
{{ if $widget.background.image }}
{{ $image := partial "utils/get-image.html" (dict "context" . "url" $widget.background.image) }}
{{ $backgroundStyle = print $backgroundStyle "background-image: url(" $image ");" }}
{{/* background size */}}
{{ $size := $widget.background.size }}
{{ $sizeOptions := dict "auto" "bg-auto" "cover" "bg-cover" "contain" "bg-contain" }}
{{ if $size }}
{{ $size = index $sizeOptions $size }}
{{ if $size }}
{{ $backgroundClass = print $backgroundClass " " $size }}
{{ else }}
{{/* TODO error */}}
{{ end }}
{{ end }}
{{/* background position */}}
{{ $position := $widget.background.position }}
{{ $positionOptions := dict "center" "bg-center" "top" "bg-top" "right" "bg-right" "bottom" "bg-bottom" "left" "bg-left" }}
{{ if $position }}
{{ $position = index $positionOptions $position }}
{{ if $position }}
{{ $backgroundClass = print $backgroundClass " " $position }}
{{ else }}
{{/* TODO error */}}
{{ end }}
{{ end }}
{{/* background position */}}
{{ $attachment := $widget.background.attachment }}
{{ $attachmentOptions := dict "fixed" "bg-fixed" "local" "bg-local" "scroll" "bg-scroll" }}
{{ if $attachment }}
{{ $attachment = index $attachmentOptions $attachment }}
{{ if $attachment }}
{{ $backgroundClass = print $backgroundClass " " $attachment }}
{{ else }}
{{/* TODO error */}}
{{ end }}
{{ end }}
{{ else }}
{{/* background color */}}
{{ $color := $widget.background.color }}
{{ $colorOptions := dict "primary" "bg-primary-bg" "secondary" "bg-secondary-bg" "tertiary" "bg-tertiary-bg" }}
{{ if $color }}
{{ $colorClass := index $colorOptions $color }}
{{ if $colorClass }}
{{ $backgroundClass = print $backgroundClass " " $colorClass }}
{{ else }}
{{ $backgroundStyle = print $backgroundStyle "background-color: " $color ";" }}
{{ end }}
{{ else }}
{{ $colorClass := index $colorOptions "primary" }}
{{ $backgroundClass = print $backgroundClass " " $colorClass }}
{{ end }}
{{ end }}
{{/* widget config */}}
{{ $widgetClass := "" }}
{{ if not (in $fullScreenWidgets $widget.handler) }}
{{/* widget width */}}
{{ $width := $widget.width }}
{{ $widthOptions := dict "sm" "lg:w-2/3" "md" "lg:w-3/4" "lg" "lg:w-4/5" "xl" "w-full" }}
{{ if $width }}
{{ $widthClass := index $widthOptions $width }}
{{ if $widthClass }}
{{ $widgetClass = print $widgetClass " " $widthClass }}
{{ end }}
{{ else }}
{{ $widthClass := index $widthOptions "md" }}
{{ $widgetClass = print $widgetClass " " $widthClass }}
{{ end }}
{{/* widget height */}}
{{ $height := $widget.height }}
{{ $heightOptions := dict "sm" "h-64" "md" "h-96" "lg" "h-128" "xl" "h-160" "screen" "h-(screen-16)" }}
{{ if $height }}
{{ $heightClass := index $heightOptions $height }}
{{ if $heightClass }}
{{ $widgetClass = print $widgetClass " " $heightClass }}
{{ end }}
{{ end }}
{{ $widgetClass = print $widgetClass " mx-auto px-6 md:px-8 xl:px-12 py-12" }}
{{ end }}
<div
class="pl-scrollbar {{ with $backgroundClass -}}
{{ partial "utils/standardize-classes" . }}
{{- end }}"
{{ with $backgroundStyle }}style="{{ . | safeCSS }}"{{ end }}
>
<div class="mx-auto max-w-screen-xl">
<div
id="{{ .File.BaseFileName }}"
class="{{ with $widgetClass -}}
{{ partial "utils/standardize-classes" . }}
{{- end }}"
>
{{ partial "widgets/load-sidebar" . }}
</div>
</div>
</div>
{{ end }}
{{ define "partials/widgets/load-sidebar" }}
{{ $sidebar := .Params.widget.sidebar }}
{{ if $sidebar.position }}
{{ $scaleClass := "" }}
{{/* widget width */}}
{{ $scale := $sidebar.scale }}
{{ $scaleOptions := dict "sm" "lg:w-1/5" "md" "lg:w-1/4" "lg" "lg:w-1/3" "xl" "lg:w-1/2" }}
{{ if $scale }}
{{ $scaleClass = index $scaleOptions $scale }}
{{ else }}
{{ $scaleClass = index $scaleOptions "md" }}
{{ end }}
<div
class="{{ if eq $sidebar.position "right" -}}
lg:flex-row-reverse
{{- else -}}
lg:flex-row
{{- end }} flex flex-col"
>
<div
class="{{ with $scaleClass -}}
{{ partial "utils/standardize-classes" . }}
{{- end }} {{ if eq $sidebar.position "left" -}}
lg:me-4
{{- else -}}
lg:ms-4
{{- end }} flex-none"
>
<h2 class="my-4 text-3xl font-bold">{{ .Params.Title }}</h2>
</div>
<div
class="{{ if eq $sidebar.position "right" -}}
lg:me-4
{{- else -}}
lg:ms-4
{{- end }} grow"
>
{{/* Deprecation warning(v1.0.0) starts */}}
{{- if eq .Params.widget.handler "experiences" }}
{{- warnf "Value `experiences` for `widget.handler` in %s is deprecated and will be removed in Eureka v1.0.0. Please use `experience` instead." .File.Path }}
{{ partial (printf "widgets/%s" "experience") . }}
{{- else }}
{{/* Deprecation warning(v1.0.0) ends */}}
{{ partial (printf "widgets/%s" .Params.widget.handler) . }}
{{/* Deprecation warning(v1.0.0) starts */}}
{{- end }}
{{/* Deprecation warning(v1.0.0) ends */}}
</div>
</div>
{{ else }}
{{/* Deprecation warning(v1.0.0) starts */}}
{{- if eq .Params.widget.handler "experiences" }}
{{- warnf "Value `experiences` for `widget.handler` in %s is deprecated and will be removed in Eureka v1.0.0. Please use `experience` instead." .File.Path }}
{{ partial (printf "widgets/%s" "experience") . }}
{{- else }}
{{/* Deprecation warning(v1.0.0) ends */}}
{{ partial (printf "widgets/%s" .Params.widget.handler) . }}
{{/* Deprecation warning(v1.0.0) starts */}}
{{- end }}
{{/* Deprecation warning(v1.0.0) ends */}}
{{ end }}
{{ end }}