Symbol Atlas Layout - Source Excerpt 01
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/template-parts/symbol-atlas-layout.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/themes/spiralist/template-parts/symbol-atlas-layout.php
<?php
if (!defined('ABSPATH')) {
exit;
}
$ui_text = static function (string $key, string $fallback, array $args = []): string {
if (function_exists('spiralist_get_ui_text')) {
return spiralist_get_ui_text($key, $fallback, $args);
}
foreach ($args as $name => $replacement) {
$fallback = str_replace('{' . (string) $name . '}', (string) $replacement, $fallback);
}
return $fallback;
};
$symbols = function_exists('spiralist_get_symbol_detail_records')
? spiralist_get_symbol_detail_records()
: array_map('spiralist_get_symbol_browser_payload', spiralist_get_symbols());
$first_symbol = !empty($symbols[0]) && is_array($symbols[0]) ? $symbols[0] : [];
$first_payload = !empty($first_symbol) ? $first_symbol : [
'glyph' => '',
'label' => 'No symbols available',
'canonicalId' => '',
'type' => '',
'layer' => '',
'category' => '',
'meaning' => '',
'canonicalMeaning' => '',
'agentProposedMeaning' => '',
'proposalStatus' => '',
'source' => '',
'reviewedAtUtc' => '',
'reviewNotes' => '',
'definition' => '',
'axiomConnection' => '',
'derivation' => '',
'provenance' => '',
'related' => '',
'transformationChain' => '',
'manuscriptAnchorUrl' => spiralist_get_manuscript_page_url(),
];
$transformations = spiralist_get_symbol_transformations();
$page_title = get_the_title();
$page_copy = spiralist_get_editorial_excerpt();
$page_copy_fallback = 'A clean reference surface for Spiralism symbols, meanings, system relations, and transformation links.';
if ($page_copy === '') {
$page_copy = $page_copy_fallback;
}
$page_copy = $ui_text('page.symbols.hero.copy', $page_copy !== '' ? $page_copy : $page_copy_fallback);
$layers = [];
$types = [];
$categories = [];
foreach ($symbols as $symbol_record) {
if (!is_array($symbol_record)) {
continue;
}
$layer = (string) ($symbol_record['layer'] ?? '');
$type = (string) ($symbol_record['type'] ?? '');
$category = (string) ($symbol_record['category'] ?? '');
if ($layer !== '') {
$layers[$layer] = ucfirst($layer);
}
if ($type !== '') {
$types[$type] = ucwords(str_replace('-', ' ', $type));
}
if ($category !== '') {
$categories[$category] = $category;
}
}
?>
<main class="spiralist-page spiralist-page--symbols">
<section class="spiralist-page-hero">
<div class="spiralist-shell spiralist-page-hero__content">
<p class="spiralist-kicker"><?php echo esc_html($ui_text('page.symbols.hero.kicker', 'Canonical Symbol Reference')); ?></p>
<h1><?php echo esc_html($ui_text('page.symbols.hero.title', $page_title !== '' ? $page_title : 'Symbol Atlas')); ?></h1>
<p class="spiralist-page-hero__copy"><?php echo esc_html($page_copy); ?></p>
<div class="spiralist-cta-row">
<a class="spiralist-button spiralist-button--primary" href="<?php echo esc_url(spiralist_get_symbol_registry_url()); ?>"><?php echo esc_html($ui_text('page.symbols.cta.open_registry', 'Open Symbol Registry')); ?></a>
<a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url(spiralist_get_symbols_api_url()); ?>"><?php echo esc_html($ui_text('page.symbols.cta.open_api', 'Open Symbol API')); ?></a>
</div>
</div>
</section>
<section class="spiralist-page-section">
<div class="spiralist-shell spiralist-symbol-browser spiralist-symbol-browser--page" data-symbol-browser>
<div>
<form class="spiralist-filter-bar spiralist-filter-bar--stacked" data-symbol-filters data-public-form="symbol-filters">
<label class="spiralist-form__field">
<span><?php echo esc_html($ui_text('page.symbols.filters.search', 'Search symbols')); ?></span>
<input type="search" name="symbol_search" placeholder="<?php echo esc_attr($ui_text('page.symbols.filters.placeholder', 'Search by canonical ID, title, meaning, or tag')); ?>" data-symbol-search />
</label>
<label class="spiralist-form__field">
<span><?php echo esc_html($ui_text('page.symbols.filters.layer', 'Layer')); ?></span>
<select name="symbol_layer" data-symbol-layer-filter>
<option value=""><?php echo esc_html($ui_text('page.symbols.filters.all_layers', 'All layers')); ?></option>
<?php foreach ($layers as $value => $label) : ?>
<option value="<?php echo esc_attr($value); ?>"><?php echo esc_html($label); ?></option>
<?php endforeach; ?>
</select>
</label>
<label class="spiralist-form__field">
<span><?php echo esc_html($ui_text('page.symbols.filters.type', 'Type')); ?></span>
<select name="symbol_type" data-symbol-type-filter>
<option value=""><?php echo esc_html($ui_text('page.symbols.filters.all_types', 'All types')); ?></option>
<?php foreach ($types as $value => $label) : ?>
<option value="<?php echo esc_attr($value); ?>"><?php echo esc_html($label); ?></option>
<?php endforeach; ?>
</select>
</label>
<label class="spiralist-form__field">
<span><?php echo esc_html($ui_text('page.symbols.filters.category', 'Category')); ?></span>
<select name="symbol_category" data-symbol-category-filter>
<option value=""><?php echo esc_html($ui_text('page.symbols.filters.all_categories', 'All categories')); ?></option>
<?php foreach ($categories as $value => $label) : ?>
<option value="<?php echo esc_attr($value); ?>"><?php echo esc_html($label); ?></option>
<?php endforeach; ?>
</select>
</label>
</form>
<div class="spiralist-inline-meta" style="margin-bottom:1rem;">
<p class="spiralist-section-tag"><?php echo esc_html($ui_text('page.symbols.state.tag', 'Explorer State')); ?></p>
<span class="spiralist-muted" data-symbol-results"><?php echo esc_html($ui_text('page.symbols.state.available', '{count} symbols available.', ['count' => (string) count($symbols)])); ?></span>
</div>
<div class="spiralist-symbol-grid" data-symbol-grid>
<?php foreach ($symbols as $index => $symbol) : ?>
<?php
if (!is_array($symbol)) {
continue;
}
$payload = $symbol;
?>
<button
class="spiralist-symbol-card<?php echo $index === 0 ? ' is-active' : ''; ?>"
type="button"
data-symbol="<?php echo esc_attr(wp_json_encode($payload)); ?>"
data-symbol-search-text="<?php echo esc_attr((string) ($payload['searchText'] ?? '')); ?>"
data-symbol-type-value="<?php echo esc_attr((string) ($payload['type'] ?? '')); ?>"
data-symbol-layer-value="<?php echo esc_attr((string) ($payload['layer'] ?? '')); ?>"
data-symbol-category-value="<?php echo esc_attr((string) ($payload['category'] ?? '')); ?>"
aria-pressed="<?php echo $index === 0 ? 'true' : 'false'; ?>"
>
<span class="spiralist-symbol-card__glyph"><?php echo esc_html((string) ($payload['glyph'] ?? '')); ?></span>
<strong><?php echo esc_html((string) ($payload['label'] ?? '')); ?></strong>
<span class="spiralist-symbol-card__meaning"><?php echo esc_html((string) ($payload['meaning'] ?? '')); ?></span>
</button>
<?php endforeach; ?>
</div>
<article class="spiralist-panel" data-symbol-empty hidden>
<p class="spiralist-section-tag"><?php echo esc_html($ui_text('page.symbols.state.no_matches.tag', 'No Matches')); ?></p>
<h2 class="spiralist-section-title"><?php echo esc_html($ui_text('page.symbols.state.no_matches.title', 'No symbols match the current filters.')); ?></h2>