mirror of
				https://github.com/imfing/hextra.git
				synced 2025-10-30 10:10:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{- /*
 | |
| Create a tabbed interface with the given items.
 | |
| 
 | |
| @param {string} items The items to display in the tabs.
 | |
| @param {string} defaultIndex The index of the default tab.
 | |
| 
 | |
| @example {{< tabs items="JSON,YAML,TOML" >}}{{< /tabs >}}
 | |
| */ -}}
 | |
| 
 | |
| {{- $items := split (.Get "items") "," -}}
 | |
| {{- $defaultIndex := int ((.Get "defaultIndex") | default "0") -}}
 | |
| 
 | |
| {{- $enableSync := site.Params.page.tabs.sync | default false -}}
 | |
| 
 | |
| {{- if not (.Get "items") -}}
 | |
|   {{ errorf "tabs shortcode: 'items' parameter is required" }}
 | |
| {{- end -}}
 | |
| 
 | |
| {{- if not $items -}}
 | |
|   {{ errorf "tabs shortcode: 'items' parameter cannot be empty" }}
 | |
| {{- end -}}
 | |
| 
 | |
| {{- range $items -}}
 | |
|   {{- if eq (trim . " ") "" -}}
 | |
|     {{ errorf "tabs shortcode: empty item found in 'items' parameter" }}
 | |
|   {{- end -}}
 | |
| {{- end -}}
 | |
| 
 | |
| <div class="hextra-scrollbar hx:overflow-x-auto hx:overflow-y-hidden hx:overscroll-x-contain">
 | |
|   <div class="hx:mt-4 hx:flex hx:w-max hx:min-w-full hx:border-b hx:border-gray-200 hx:pb-px hx:dark:border-neutral-800"{{ if $enableSync }} data-tab-group="{{ delimit $items `,` }}"{{ end }}>
 | |
|     {{- range $i, $item := $items -}}
 | |
|       <button
 | |
|         class="hextra-tabs-toggle hx:cursor-pointer hx:data-[state=selected]:border-primary-500 hx:data-[state=selected]:text-primary-600 hx:data-[state=selected]:dark:border-primary-500 hx:data-[state=selected]:dark:text-primary-600 hx:mr-2 hx:rounded-t hx:p-2 hx:font-medium hx:leading-5 hx:transition-colors hx:-mb-0.5 hx:select-none hx:border-b-2 hx:border-transparent hx:text-gray-600 hx:hover:border-gray-200 hx:hover:text-black hx:dark:text-gray-200 hx:dark:hover:border-neutral-800 hx:dark:hover:text-white"
 | |
|         role="tab"
 | |
|         type="button"
 | |
|         aria-controls="tabs-panel-{{ $i }}"
 | |
|         {{- if eq $i $defaultIndex }} aria-selected="true" {{ end -}}
 | |
|         {{- if eq $i $defaultIndex }} tabindex="0" {{ end -}}
 | |
|         {{- if eq $i $defaultIndex }} data-state="selected"{{ end -}}
 | |
|       >
 | |
|         {{- $item -}}
 | |
|       </button>
 | |
|     {{- end -}}
 | |
|   </div>
 | |
| </div>
 | |
| <div>
 | |
|   {{- .Inner -}}
 | |
| </div>
 | |
| {{- /* Drop trailing newlines */ -}}
 | 
