{{- $main_style := dict -}} {{- $assets_to_concat := collections.Slice -}} {{/* Custom CSS configuration with backwards-compatible deprecated fallback. */}} {{- $custom_css := collections.Slice -}} {{- $has_ananke_custom_css := false -}} {{- with site.Params.ananke -}} {{- $has_ananke_custom_css = collections.IsSet . "custom_css" -}} {{- if $has_ananke_custom_css -}} {{- $custom_css = .custom_css | default collections.Slice -}} {{- end -}} {{- end -}} {{- if not $has_ananke_custom_css -}} {{- if collections.IsSet site.Params "custom_css" -}} {{- fmt.Warnf "[ananke] %s" "Parameter site.Params.custom_css is deprecated. Use site.Params.ananke.custom_css instead." -}} {{- $custom_css = site.Params.custom_css | default collections.Slice -}} {{- end -}} {{- end -}} {{/* Tachyons Base Stylesheet */}} {{- with resources.Get "ananke/css/_tachyons.css" -}} {{- $assets_to_concat = $assets_to_concat | collections.Append . -}} {{- end -}} {{/* Theme CSS files */}} {{- range collections.Slice "_code.css" "_hugo-internal-templates.css" "_social-icons.css" "_styles.css" -}} {{- with partials.IncludeCached "AnankeGetResource.html" . . -}} {{- $assets_to_concat = $assets_to_concat | collections.Append . -}} {{- end -}} {{- end -}} {{/* Generated social network hover colours */}} {{- with site.Params.ananke.social -}} {{- $config := . -}} {{- $networks := $config.follow.networks | default collections.Slice -}} {{- $setups := collections.Where $config.networks "slug" "in" $networks -}} {{- with $setups -}} {{- $socials_rules := collections.Slice -}} {{- range $service := . -}} {{- with $service.color -}} {{- $rule := fmt.Printf ".ananke-socials a.%s:hover {\n color: %s !important;\n}" $service.slug . -}} {{- $socials_rules = $socials_rules | collections.Append $rule -}} {{- end -}} {{- end -}} {{- with $socials_rules -}} {{- $socials_css := collections.Delimit . "\n\n" | resources.FromString "ananke/css/generated_socials.css" -}} {{- $assets_to_concat = $assets_to_concat | collections.Append $socials_css -}} {{- end -}} {{- end -}} {{- end -}} {{/* Custom CSS files and CSS-generating partials */}} {{- with $custom_css -}} {{- range . -}} {{- $custom_css_entry := . -}} {{- $custom_css_entry_ext := path.Ext $custom_css_entry -}} {{- if compare.Eq $custom_css_entry_ext ".html" -}} {{- $partial_template_path := fmt.Print "_partials/" $custom_css_entry -}} {{- if templates.Exists $partial_template_path -}} {{- $partial_css := partials.Include $custom_css_entry site -}} {{- with $partial_css -}} {{- $partial_css_resource_path := printf "ananke/css/generated/%s.css" (replace $custom_css_entry "/" "-") -}} {{- $partial_css_resource := printf "%s" . | resources.FromString $partial_css_resource_path -}} {{- $assets_to_concat = $assets_to_concat | collections.Append $partial_css_resource -}} {{- else -}} {{- fmt.Warnf "[ananke] %s" (fmt.Printf "Stylesheet partial %q returned an empty value and was skipped." $custom_css_entry) -}} {{- end -}} {{- else -}} {{- fmt.Warnf "[ananke] %s" (fmt.Printf "Stylesheet partial %q was skipped because layouts/partials/%s does not exist." $custom_css_entry $custom_css_entry) -}} {{- end -}} {{- else -}} {{- with partials.IncludeCached "AnankeGetResource.html" $custom_css_entry $custom_css_entry -}} {{- $subtype := .MediaType.SubType -}} {{- if in (collections.Slice "x-scss" "x-sass" "scss" "sass") $subtype -}} {{- fmt.Warnf "[ananke] %s" (fmt.Printf "Stylesheet %q has type %q and was skipped. Sass/SCSS is no longer compiled by this template. Precompile it to CSS or replace it with a .css file." .Name $subtype) -}} {{- else -}} {{- $assets_to_concat = $assets_to_concat | collections.Append . -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{/* Build, optionally minify, and fingerprint the concatenated CSS bundle. */}} {{- with $assets_to_concat -}} {{- $style := . | resources.Concat "ananke/css/main.css" -}} {{- $build_options := dict "minify" (cond hugo.IsDevelopment false true) "sourceMap" (cond hugo.IsDevelopment "linked" "none") "targetPath" "ananke/css/main.css" -}} {{- $style = $style | css.Build $build_options -}} {{- if hugo.IsProduction -}} {{- $style = $style | resources.Fingerprint -}} {{- end -}} {{- $main_style = $style -}} {{- end -}} {{- with $main_style -}} {{- end -}} {{/* Fallback custom CSS links. If an ananke.custom_css entry is not found in assets/ananke/css/, it is assumed to be a static file or external URL and emitted as a separate stylesheet link. HTML entries are treated as CSS-generating partials and are never emitted as fallback stylesheet links. */}} {{- range $custom_css -}} {{- $custom_css_entry := . -}} {{- $custom_css_entry_ext := path.Ext $custom_css_entry -}} {{- if compare.Eq $custom_css_entry_ext ".html" -}} {{/* CSS-generating partials are handled above. */}} {{- else -}} {{- with partials.IncludeCached "AnankeGetResource.html" $custom_css_entry $custom_css_entry -}} {{/* Already handled in the asset bundle above, or skipped if unsupported. */}} {{- else -}} {{- end -}} {{- end -}} {{- end -}} {{ define "_partials/AnankeGetResource.html" }} {{- $resource := false -}} {{- with resources.Get (fmt.Print "ananke/css/" .) -}} {{- $resource = . -}} {{- end -}} {{- return $resource -}} {{ end }}