mirror of
				https://github.com/imfing/hextra.git
				synced 2025-10-31 08:54:51 -04:00 
			
		
		
		
	 363b1e50ff
			
		
	
	363b1e50ff
	
	
	
		
			
			* feat(navbar): language switcher * docs: add language-switch * chore: just for the demo * fix: drop conflicting CSS * fix: use constant * fix: pre-existing bug with rtl on mobile * docs: add comment to explain the algo * chore: more readable algo * review Co-authored-by: Xin <5097752+imfing@users.noreply.github.com> * feat: different icons * feat: icon as param * fix: inconsitency with rtl * fix: render inside the sidebar * chore: remove the demo --------- Co-authored-by: Xin <5097752+imfing@users.noreply.github.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{- $page := .context -}}
 | |
| {{- $iconName := .iconName | default "globe-alt" -}}
 | |
| {{- $iconHeight := .iconHeight | default 12 -}}
 | |
| {{- $location := .location -}}
 | |
| 
 | |
| {{- $class := .class | default "hx:h-7 hx:px-2 hx:text-xs hx:text-gray-600 hx:transition-colors hx:dark:text-gray-400 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50" -}}
 | |
| 
 | |
| {{- $grow := .grow -}}
 | |
| {{- $hideLabel := .hideLabel | default false -}}
 | |
| 
 | |
| {{- $changeLanguage := (T "changeLanguage") | default "Change language" -}}
 | |
| 
 | |
| {{- if hugo.IsMultilingual -}}
 | |
|   <div class="hx:flex hx:justify-items-start {{ if $grow }}hx:grow{{ end }}">
 | |
|     <button
 | |
|       title="{{ $changeLanguage }}"
 | |
|       data-state="closed"
 | |
|       data-location="{{ $location }}"
 | |
|       class="hextra-language-switcher hx:cursor-pointer hx:rounded-md hx:text-left hx:font-medium {{ $class }} hx:grow"
 | |
|       type="button"
 | |
|       aria-label="{{ $changeLanguage }}"
 | |
|     >
 | |
|       <div class="hx:flex hx:items-center hx:gap-2 hx:capitalize">
 | |
|         {{- partial "utils/icon" (dict "name" $iconName "attributes" (printf "height=%d" $iconHeight)) -}}
 | |
|         {{- if not $hideLabel }}<span>{{ site.Language.LanguageName }}</span>{{ end -}}
 | |
|       </div>
 | |
|     </button>
 | |
|     <ul
 | |
|       class="hextra-language-options hx:hidden hx:z-20 hx:max-h-64 hx:overflow-auto hx:rounded-md hx:ring-1 hx:ring-black/5 hx:bg-white hx:py-1 hx:text-sm hx:shadow-lg hx:dark:ring-white/20 hx:dark:bg-neutral-800"
 | |
|       style="position: fixed; inset: auto auto 0px 0px; margin: 0px; min-width: 100px;"
 | |
|     >
 | |
|       {{ range site.Languages }}
 | |
|         {{ $link := partial "utils/lang-link" (dict "lang" .Lang "context" $page) }}
 | |
|         <li class="hx:flex hx:flex-col">
 | |
|           <a
 | |
|             href="{{ $link }}"
 | |
|             class="hx:text-gray-800 hx:dark:text-gray-100 hx:hover:bg-primary-50 hx:hover:text-primary-600 hx:hover:dark:bg-primary-500/10 hx:hover:dark:text-primary-600 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9"
 | |
|           >
 | |
|             {{- .LanguageName -}}
 | |
|             {{- if eq .LanguageName site.Language.LanguageName -}}
 | |
|               <span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3">
 | |
|                 {{- partial "utils/icon" (dict "name" "check" "attributes" "height=1em width=1em") -}}
 | |
|               </span>
 | |
|             {{- end -}}
 | |
|           </a>
 | |
|         </li>
 | |
|       {{ end -}}
 | |
|     </ul>
 | |
|   </div>
 | |
| {{- end -}}
 |