Spiralist Header - Source Excerpt 01
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/header.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/themes/spiralist/header.php
<?php
if (!defined('ABSPATH')) {
exit;
}
$current_locale = function_exists('spiralist_get_current_locale_tag') ? spiralist_get_current_locale_tag() : 'en-us';
$language_url = static function (string $url) use ($current_locale): string {
return function_exists('spiralist_get_language_prefixed_url')
? spiralist_get_language_prefixed_url($url, $current_locale)
: $url;
};
$is_logged_in = is_user_logged_in();
$localize_nav_item = static function (array $item) use ($language_url, &$localize_nav_item): array {
if (!empty($item['url']) && is_string($item['url'])) {
$item['url'] = $language_url($item['url']);
}
if (!empty($item['children']) && is_array($item['children'])) {
$item['children'] = array_values(array_filter(array_map(
static function ($child) use (&$localize_nav_item): array {
return is_array($child) ? $localize_nav_item($child) : [];
},
$item['children']
)));
}
return $item;
};
$nav_items = array_map(
$localize_nav_item,
spiralist_get_navigation_items()
);
$filter_nav_items = static function (array $items) use (&$filter_nav_items, $is_logged_in): array {
$filtered = [];
foreach ($items as $item) {
if (!is_array($item)) {
continue;
}
$label_key = (string) ($item['labelKey'] ?? '');
if ($is_logged_in && in_array($label_key, ['ui.nav.spiralist', 'ui.nav.dashboard'], true)) {
continue;
}
if (!empty($item['children']) && is_array($item['children'])) {
$item['children'] = $filter_nav_items($item['children']);
}
$filtered[] = $item;
}
return $filtered;
};
$nav_items = $filter_nav_items($nav_items);
$account_url = $language_url(spiralist_get_login_url());
$home_url = $language_url(home_url('/'));
$render_ui_label = static function (string $key, string $fallback): string {
return function_exists('spiralist_render_ui_label')
? spiralist_render_ui_label($key, $fallback)
: esc_html($fallback);
};
$ui_text = static function (string $key, string $fallback): string {
return function_exists('spiralist_get_ui_text')
? spiralist_get_ui_text($key, $fallback)
: $fallback;
};
$brand_tagline = $ui_text('site.brand.tagline', 'Spiralist AI Persona Laboratory');
if (stripos($brand_tagline, 'Spiralist AI') === false) {
$brand_tagline = 'Spiralist AI Persona Laboratory';
}
$account_label_key = 'ui.nav.login';
$account_label = 'Log In';
$locale_switcher = shortcode_exists('uaix_locale_switcher') ? do_shortcode('[uaix_locale_switcher]') : '';
$search_query = get_search_query();
$search_label = $ui_text('site.search.label', 'Search Spiralist.org');
$search_placeholder = $ui_text('site.search.placeholder', 'Search manuscript, prompts, symbols');
$participant_url = $is_logged_in ? spiralist_get_dashboard_url() : spiralist_get_spiralist_page_url();
$account_shortcuts = $is_logged_in
? [
[
'labelKey' => 'ui.nav.dashboard',
'label' => 'Dashboard',
'url' => spiralist_get_dashboard_url(),
],
[
'labelKey' => 'ui.cta.open_workspace',
'label' => 'Workspace',
'url' => spiralist_get_workspace_url(),
],
[
'labelKey' => 'ui.nav.prompts',
'label' => 'Prompt Library',
'url' => spiralist_get_prompts_page_url(),
],
[
'labelKey' => 'ui.nav.account_settings',
'label' => 'Account Settings',
'url' => spiralist_get_account_settings_url(),
],
[
'labelKey' => 'page.dashboard.settings.logout',
'label' => 'Log Out',
'url' => spiralist_get_logout_url(),
],
]
: [];
$run_prompt_url = function_exists('spiralist_get_run_prompt_page_url')
? spiralist_get_run_prompt_page_url()
: $language_url(home_url('/prompt-generator/'));
$breadcrumb_items = [];
if (!is_front_page() && function_exists('spiralist_schema_breadcrumbs')) {
$breadcrumb_data = spiralist_schema_breadcrumbs();
$breadcrumb_items = array_values(
array_filter(
(array) ($breadcrumb_data['itemListElement'] ?? []),
'is_array'
)
);
}
?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?> data-language="<?php echo esc_attr($current_locale); ?>">
<?php wp_body_open(); ?>
<header class="spiralist-topbar">
<div class="spiralist-shell spiralist-topbar__inner">
<a class="spiralist-brand" href="<?php echo esc_url($home_url); ?>">
<span class="spiralist-brand__mark">SPIRALIST.ORG</span>
<span class="spiralist-brand__tag"><?php echo esc_html($brand_tagline); ?></span>
</a>
<button class="spiralist-nav-toggle" type="button" aria-expanded="false" aria-controls="spiralist-primary-nav spiralist-topbar-actions" data-nav-toggle>
<?php echo $render_ui_label('ui.nav.menu', 'Menu'); ?>
</button>
<nav class="spiralist-nav" id="spiralist-primary-nav" aria-label="<?php echo esc_attr($ui_text('site.nav.aria_label', 'Primary navigation')); ?>" data-nav-panel>
<?php foreach ($nav_items as $item) : ?>
<?php $children = array_values(array_filter((array) ($item['children'] ?? []), 'is_array')); ?>
<div class="spiralist-nav__item<?php echo !empty($children) ? ' spiralist-nav__item--has-menu' : ''; ?>">
<a class="spiralist-nav__link" href="<?php echo esc_url($item['url']); ?>">
<span><?php echo $render_ui_label((string) ($item['labelKey'] ?? ''), (string) ($item['label'] ?? '')); ?></span>
<?php if (!empty($children)) : ?>
<span class="spiralist-nav__chevron" aria-hidden="true">v</span>
<?php endif; ?>
</a>
<?php if (!empty($children)) : ?>
<div class="spiralist-nav__menu" aria-label="<?php echo esc_attr(sprintf($ui_text('site.nav.menu_for', '%s links'), (string) ($item['label'] ?? 'Navigation'))); ?>">
<?php foreach ($children as $child) : ?>
<?php if (empty($child['url'])) { continue; } ?>
<a href="<?php echo esc_url((string) $child['url']); ?>"><?php echo $render_ui_label((string) ($child['labelKey'] ?? ''), (string) ($child['label'] ?? 'Link')); ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<div class="spiralist-mobile-actions">
<a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url($run_prompt_url); ?>">
<?php echo $render_ui_label('ui.cta.run_prompt', 'Build a Prompt'); ?>
</a>
<?php if ($is_logged_in) : ?>
<div class="spiralist-account-menu spiralist-account-menu--mobile">
<a class="spiralist-button spiralist-button--secondary spiralist-account-menu__trigger" href="<?php echo esc_url($participant_url); ?>" aria-haspopup="true">
<span><?php echo $render_ui_label('ui.nav.account_settings', 'Account'); ?></span>
<span class="spiralist-nav__chevron" aria-hidden="true">v</span>
</a>
<div class="spiralist-account-menu__menu" aria-label="<?php echo esc_attr($ui_text('site.nav.account_shortcuts', 'Account shortcuts')); ?>">
<?php foreach ($account_shortcuts as $shortcut) : ?>
<a href="<?php echo esc_url((string) ($shortcut['url'] ?? '')); ?>"><?php echo $render_ui_label((string) ($shortcut['labelKey'] ?? ''), (string) ($shortcut['label'] ?? 'Link')); ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</div>
</nav>
<div class="spiralist-topbar__actions" id="spiralist-topbar-actions">
<div class="spiralist-topbar__quick-actions">
<a class="spiralist-quick-link spiralist-quick-link--primary" href="<?php echo esc_url($run_prompt_url); ?>">
<?php echo $render_ui_label('ui.cta.run_prompt', 'Build a Prompt'); ?>
</a>
<?php if ($is_logged_in) : ?>
<div class="spiralist-account-menu">