{{- /* Renders a tabbed interface with multiple tabs and their corresponding content. See https://fixit.lruihao.cn/docs/content-management/shortcodes/extended/tabs/ @param {Int} [defaultTab=0] - The index of the tab to be active by default (0-based) @param {String} [type="underline"] - The style type of the tabs ("underline", "pill", "card", "segment", etc.) @param {String} [placement="top"] - The placement of the tabs ("top", "bottom", "start", "end") Usage: {{< tabs defaultTab="1" type="card" placement="top" >}} {{% tab title="Tab 1" %}} Content for Tab 1 {{% /tab %}} {{% tab title="Tab 2" %}} Content for Tab 2 {{% /tab %}} {{< /tabs >}} Note: Tabs must be defined using the nested "tab" shortcode within the "tabs" shortcode. */ -}} {{- if ne hugo.Context.MarkupScope "home" -}} {{- $tabs := .Store.Get "tabs" -}} {{- if not $tabs -}} {{- errorf "No tabs found. Please add at least one tab to the tabs shortcode. See %s %s" .Name .Position -}} {{- end -}} {{- $lenTabs := len $tabs -}} {{- $defaultTab := .Get "defaultTab" | default 0 -}} {{- $type := .Get "type" | default "underline" -}} {{- $placementRaw := .Get "placement" | default "top" -}} {{- $placement := $placementRaw -}} {{- if or (eq $placementRaw "left") (eq $placementRaw "right") -}} {{- $newVal := cond (eq $placementRaw "left") "start" "end" -}} {{- warnf "The placement value %q is deprecated, use %q instead. See %s %s" $placementRaw $newVal .Name .Position -}} {{- $placement = $newVal -}} {{- end -}} {{- $placementMap := slice "top" "bottom" "start" "end" -}} {{- if ge $defaultTab $lenTabs -}} {{- warnf "The defaultTab value %v is out of range [0, %v]. See %s %s" $defaultTab (sub $lenTabs 1) .Name .Position -}} {{- $defaultTab = 0 -}} {{- end -}} {{- if not (in $placementMap $placement) -}} {{- warnf "The placement value %q is invalid. Supported values are: %v. See %s %s" $placement (delimit $placementMap ", ") .Name .Position -}} {{- $placement = "top" -}} {{- end -}} {{- /* Tabs Container */ -}}