mirror of
				https://github.com/imfing/hextra.git
				synced 2025-11-03 23:34:53 -05:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			v0.9.1
			...
			6b7a77ab14
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6b7a77ab14 | ||
| 
						 | 
					da56d153aa | ||
| 
						 | 
					5c0698c3c0 | ||
| 
						 | 
					ebdaf0fd4a | 
@@ -119,7 +119,6 @@ The following classes can be used to customize various parts of the theme.
 | 
				
			|||||||
#### Footer
 | 
					#### Footer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- `hextra-footer` - The footer element
 | 
					- `hextra-footer` - The footer element
 | 
				
			||||||
- `hextra-custom-footer` - The custom footer section container
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Search
 | 
					#### Search
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -185,21 +184,6 @@ You may add custom scripts to the end of the head for every page by adding the f
 | 
				
			|||||||
layouts/partials/custom/head-end.html
 | 
					layouts/partials/custom/head-end.html
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Custom Footer Section
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You can add a custom section the footer between the language/theme buttons and the "Copyright"/"Powered By" section by creating a file `layouts/partials/custom/footer.html` in your site.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```html {filename="layouts/partials/custom/footer.html"}
 | 
					 | 
				
			||||||
<!-- Your footer element here -->
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Available variables in the footer section are:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- `.switchesVisible`: `true` if the language/theme button(s) are visible above the footer along with a horizontal separator.
 | 
					 | 
				
			||||||
- `.copyrightVisible`: `true` if the "Copyright" and "Powered By" text are visible at the bottom of the footer.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_Note: The custom footer inherits the default footer background color text color and the `width` setting in `hugo.yaml#footer` section._
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Custom Layouts
 | 
					## Custom Layouts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The layouts of the theme can be overridden by creating a file with the same name in the `layouts` directory of your site.
 | 
					The layouts of the theme can be overridden by creating a file with the same name in the `layouts` directory of your site.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -173,4 +173,3 @@ params:
 | 
				
			|||||||
      # emitMetadata: 0
 | 
					      # emitMetadata: 0
 | 
				
			||||||
      # inputPosition: top
 | 
					      # inputPosition: top
 | 
				
			||||||
      # lang: en
 | 
					      # lang: en
 | 
				
			||||||
      # theme: noborder_dark
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -228,7 +228,6 @@
 | 
				
			|||||||
      "hextra-code-block",
 | 
					      "hextra-code-block",
 | 
				
			||||||
      "hextra-code-copy-btn",
 | 
					      "hextra-code-copy-btn",
 | 
				
			||||||
      "hextra-code-copy-btn-container",
 | 
					      "hextra-code-copy-btn-container",
 | 
				
			||||||
      "hextra-custom-footer",
 | 
					 | 
				
			||||||
      "hextra-feature-card",
 | 
					      "hextra-feature-card",
 | 
				
			||||||
      "hextra-feature-grid",
 | 
					      "hextra-feature-grid",
 | 
				
			||||||
      "hextra-filetree",
 | 
					      "hextra-filetree",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,17 +8,8 @@
 | 
				
			|||||||
   * This solution was created with reference to:
 | 
					   * This solution was created with reference to:
 | 
				
			||||||
   * https://github.com/giscus/giscus/issues/336#issuecomment-1214366281
 | 
					   * https://github.com/giscus/giscus/issues/336#issuecomment-1214366281
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  function getHugoTheme() {
 | 
					 | 
				
			||||||
    return localStorage.getItem("color-theme");
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  function getGiscusTheme() {
 | 
					  function getGiscusTheme() {
 | 
				
			||||||
    let giscusTheme = "{{ (string .theme) | default `light` }}";
 | 
					    return localStorage.getItem("color-theme");
 | 
				
			||||||
    if(getHugoTheme() == 'light') {
 | 
					 | 
				
			||||||
      return giscusTheme.replace('dark', 'light');
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      return giscusTheme.replace('light', 'dark');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function setGiscusTheme() {
 | 
					  function setGiscusTheme() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
{{- $enableFooterSwitches := .Scratch.Get "enableFooterSwitches" | default false -}}
 | 
					{{- $enableFooterSwitches := .Scratch.Get "enableFooterSwitches" | default false -}}
 | 
				
			||||||
{{- $displayThemeToggle := site.Params.theme.displayToggle | default true -}}
 | 
					{{- $displayThemeToggle := site.Params.theme.displayToggle | default true -}}
 | 
				
			||||||
{{- $footerSwitchesVisible := and $enableFooterSwitches (or hugo.IsMultilingual $displayThemeToggle) -}}
 | 
					 | 
				
			||||||
{{- $copyrightSectionVisible := or (.Site.Params.footer.displayPoweredBy | default true) .Site.Params.footer.displayCopyright -}}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{- $copyright := (T "copyright") | default "© 2024 Hextra." -}}
 | 
					{{- $copyright := (T "copyright") | default "© 2024 Hextra." -}}
 | 
				
			||||||
{{- $poweredBy := (T "poweredBy") | default "Powered by Hextra" -}}
 | 
					{{- $poweredBy := (T "poweredBy") | default "Powered by Hextra" -}}
 | 
				
			||||||
@@ -17,7 +15,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<footer class="hextra-footer hx-bg-gray-100 hx-pb-[env(safe-area-inset-bottom)] dark:hx-bg-neutral-900 print:hx-bg-transparent">
 | 
					<footer class="hextra-footer hx-bg-gray-100 hx-pb-[env(safe-area-inset-bottom)] dark:hx-bg-neutral-900 print:hx-bg-transparent">
 | 
				
			||||||
  {{- if $footerSwitchesVisible -}}
 | 
					  {{- if and $enableFooterSwitches (or hugo.IsMultilingual $displayThemeToggle) -}}
 | 
				
			||||||
    <div class="hx-mx-auto hx-flex hx-gap-2 hx-py-2 hx-px-4 {{ $footerWidth }}">
 | 
					    <div class="hx-mx-auto hx-flex hx-gap-2 hx-py-2 hx-px-4 {{ $footerWidth }}">
 | 
				
			||||||
      {{- partial "language-switch.html" (dict "context" .) -}}
 | 
					      {{- partial "language-switch.html" (dict "context" .) -}}
 | 
				
			||||||
      {{- with $displayThemeToggle }}{{ partial "theme-toggle.html" }}{{ end -}}
 | 
					      {{- with $displayThemeToggle }}{{ partial "theme-toggle.html" }}{{ end -}}
 | 
				
			||||||
@@ -26,21 +24,14 @@
 | 
				
			|||||||
      <hr class="dark:hx-border-neutral-800" />
 | 
					      <hr class="dark:hx-border-neutral-800" />
 | 
				
			||||||
    {{- end -}}
 | 
					    {{- end -}}
 | 
				
			||||||
  {{- end -}}
 | 
					  {{- end -}}
 | 
				
			||||||
    <div
 | 
					  <div
 | 
				
			||||||
      class="hextra-custom-footer {{ $footerWidth }} hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-right),1.5rem)] hx-text-gray-600 dark:hx-text-gray-400"
 | 
					    class="{{ $footerWidth }} hx-mx-auto hx-flex hx-justify-center hx-py-12 hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-right),1.5rem)] hx-text-gray-600 dark:hx-text-gray-400 md:hx-justify-start"
 | 
				
			||||||
    >
 | 
					  >
 | 
				
			||||||
      {{- partial "custom/footer.html" (dict "context" . "switchesVisible" $footerSwitchesVisible "copyrightVisible" $copyrightSectionVisible) -}}
 | 
					    <div class="hx-flex hx-w-full hx-flex-col hx-items-center sm:hx-items-start">
 | 
				
			||||||
 | 
					      {{- if (.Site.Params.footer.displayPoweredBy | default true) }}<div class="hx-font-semibold">{{ template "theme-credit" $poweredBy }}</div>{{ end }}
 | 
				
			||||||
 | 
					      {{- if .Site.Params.footer.displayCopyright }}<div class="hx-mt-6 hx-text-xs">{{ $copyright | markdownify }}</div>{{ end }}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    {{- if $copyrightSectionVisible -}}
 | 
					  </div>
 | 
				
			||||||
      <div
 | 
					 | 
				
			||||||
        class="{{ $footerWidth }} hx-mx-auto hx-flex hx-justify-center hx-py-12 hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-right),1.5rem)] hx-text-gray-600 dark:hx-text-gray-400 md:hx-justify-start"
 | 
					 | 
				
			||||||
      >
 | 
					 | 
				
			||||||
        <div class="hx-flex hx-w-full hx-flex-col hx-items-center sm:hx-items-start">
 | 
					 | 
				
			||||||
            {{- if (.Site.Params.footer.displayPoweredBy | default true) }}<div class="hx-font-semibold">{{ template "theme-credit" $poweredBy }}</div>{{- end -}}
 | 
					 | 
				
			||||||
            {{- if .Site.Params.footer.displayCopyright }}<div class="hx-mt-6 hx-text-xs">{{ $copyright | markdownify }}</div>{{- end -}}
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    {{- end -}}
 | 
					 | 
				
			||||||
</footer>
 | 
					</footer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{- define "theme-credit" -}}
 | 
					{{- define "theme-credit" -}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,8 @@
 | 
				
			|||||||
    {{- range .Site.Menus.main -}}
 | 
					    {{- range .Site.Menus.main -}}
 | 
				
			||||||
      {{- if eq .Params.type "search" -}}
 | 
					      {{- if eq .Params.type "search" -}}
 | 
				
			||||||
        {{- partial "search.html" (dict "params" .Params) -}}
 | 
					        {{- partial "search.html" (dict "params" .Params) -}}
 | 
				
			||||||
 | 
					      {{- else if eq .Params.type "theme-toggle" -}}
 | 
				
			||||||
 | 
					        {{- partial "theme-toggle.html" (dict "navbar" true "hideLabel" (.Params.hideLabel | default true)) -}}
 | 
				
			||||||
      {{- else -}}
 | 
					      {{- else -}}
 | 
				
			||||||
        {{- $link := .URL -}}
 | 
					        {{- $link := .URL -}}
 | 
				
			||||||
        {{- $external := strings.HasPrefix $link "http" -}}
 | 
					        {{- $external := strings.HasPrefix $link "http" -}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,10 @@
 | 
				
			|||||||
 | 
					{{- $navbar := .navbar | default false -}}
 | 
				
			||||||
 | 
					{{- $height_px := 12 -}}
 | 
				
			||||||
 | 
					{{- $height_tw := "hx-text-xs" -}}
 | 
				
			||||||
 | 
					{{- if $navbar -}}
 | 
				
			||||||
 | 
					  {{- $height_px = 24 -}}
 | 
				
			||||||
 | 
					  {{- $height_tw = "hx-text-sm" -}}
 | 
				
			||||||
 | 
					{{- end -}}
 | 
				
			||||||
{{- $hideLabel := .hideLabel | default false -}}
 | 
					{{- $hideLabel := .hideLabel | default false -}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{- $changeTheme := (T "changeTheme") | default "Change theme" -}}
 | 
					{{- $changeTheme := (T "changeTheme") | default "Change theme" -}}
 | 
				
			||||||
@@ -8,14 +15,14 @@
 | 
				
			|||||||
<button
 | 
					<button
 | 
				
			||||||
  title="{{ $changeTheme }}"
 | 
					  title="{{ $changeTheme }}"
 | 
				
			||||||
  data-theme="light"
 | 
					  data-theme="light"
 | 
				
			||||||
  class="theme-toggle hx-group hx-h-7 hx-rounded-md hx-px-2 hx-text-left hx-text-xs hx-font-medium hx-text-gray-600 hx-transition-colors dark:hx-text-gray-400 hover:hx-bg-gray-100 hover:hx-text-gray-900 dark:hover:hx-bg-primary-100/5 dark:hover:hx-text-gray-50"
 | 
					  class="theme-toggle hx-group hx-h-7 hx-rounded-md hx-px-2 hx-text-left {{ $height_tw }} hx-font-medium hx-text-gray-600 hx-transition-colors dark:hx-text-gray-400 hover:hx-bg-gray-100 hover:hx-text-gray-900 dark:hover:hx-bg-primary-100/5 dark:hover:hx-text-gray-50"
 | 
				
			||||||
  type="button"
 | 
					  type="button"
 | 
				
			||||||
  aria-label="{{ $changeTheme }}"
 | 
					  aria-label="{{ $changeTheme }}"
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
  <div class="hx-flex hx-items-center hx-gap-2 hx-capitalize">
 | 
					  <div class="hx-flex hx-items-center hx-gap-2 hx-capitalize">
 | 
				
			||||||
    {{- partial "utils/icon.html" (dict "name" "sun" "attributes" "height=12 class=\"group-data-[theme=light]:hx-hidden\"") -}}
 | 
					    {{- partial "utils/icon.html" (dict "name" "sun" "attributes" (printf "height=%d class=\"group-data-[theme=light]:hx-hidden\"" $height_px)) -}}
 | 
				
			||||||
    {{- if not $hideLabel }}<span class="group-data-[theme=light]:hx-hidden">{{ $light }}</span>{{ end -}}
 | 
					    {{- if not $hideLabel }}<span class="group-data-[theme=light]:hx-hidden">{{ $light }}</span>{{ end -}}
 | 
				
			||||||
    {{- partial "utils/icon.html" (dict "name" "moon" "attributes" "height=12 class=\"group-data-[theme=dark]:hx-hidden\"") -}}
 | 
					    {{- partial "utils/icon.html" (dict "name" "moon" "attributes" (printf "height=%d class=\"group-data-[theme=dark]:hx-hidden\"" $height_px)) -}}
 | 
				
			||||||
    {{- if not $hideLabel }}<span class="group-data-[theme=dark]:hx-hidden">{{ $dark }}</span>{{ end -}}
 | 
					    {{- if not $hideLabel }}<span class="group-data-[theme=dark]:hx-hidden">{{ $dark }}</span>{{ end -}}
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</button>
 | 
					</button>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user