is_array($c) && empty($c['hidden']) && ($c['type'] ?? '') === 'tab')); $count = count($children); $active = max(1, (int) ($settings['active_index'] ?? 1)); $active = min($active, max($count, 1)) - 1; $vertical = ($settings['layout'] ?? 'horizontal') === 'vertical'; if ($vertical) { $attrs = preg_replace('/class="/', 'class="zx-tabs--vertical ', $attrs, 1); } $nav = ''; foreach ($children as $i => $child) { $child_settings = $renderer->settings($child); $zx_id = (string) ($child['id'] ?? ''); $zx_title = esc_html((string) ($child_settings['title'] ?? '')); if ($zx_title === '') { $zx_title = sprintf(esc_html(/* translators: %d: tab number. */ __('Tab %d', 'zadex')), $i + 1); } $panel_id = !empty($child_settings['_css_id']) && is_string($child_settings['_css_id']) ? sanitize_html_class($child_settings['_css_id']) : 'zx-tab-' . $zx_id; $icon = is_array($child_settings['icon'] ?? null) ? $child_settings['icon'] : []; $icon_html = ''; if (!empty($icon['svg'])) { $icon_html = ''; } elseif (!empty($icon['value'])) { $icon_html = ''; } $is_active = $i === $active; $nav .= ''; } // Tell each tab panel whether it starts visible (read by widgets/tab/render.php). $index = 0; foreach ($element['children'] ?? [] as $k => $child) { if (!is_array($child) || !empty($child['hidden']) || ($child['type'] ?? '') !== 'tab') { continue; } $element['children'][$k]['_zx_active'] = $index === $active; $index++; } echo wp_kses( '
' . $nav . '
' . '
' . $renderer->render_children($element) . '
', \Zadex\Frontend\Kses::allowed_html() );