<?php
/**
 * class/headers.php — títulos por ruta.
 *
 * Devuelve la clave i18n del título de una ruta module/section. La vista o el
 * layout traducen con App::t(). Si no hay entrada, cae a un título genérico.
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

class Headers
{
    /** Mapa "module/section" => clave i18n del título. */
    protected $titles = array(
        'home/index'     => 'home.title',
        'chat/index'     => 'chat.title',
        'chat/history'   => 'history.title',
        'code/index'     => 'code.title',
        'profile/index'    => 'profile.title',
        'profile/sessions' => 'profile.sessions',
        'profile/invites'  => 'invite.section',
        'profile/api'      => 'api.title',
        'admin/index'      => 'admin.config_title',
        'admin/usage'      => 'admin.usage_title',
        'admin/models'     => 'admin.models_title',
        'admin/users'      => 'user.title',
        'admin/plans'      => 'plan.title',
        'org/index'        => 'org.accounts',
        'org/usage'        => 'org.usage_title',
    );

    /** Clave i18n del título para una ruta dada. */
    public function titleKey($module, $section)
    {
        return $this->titles["$module/$section"] ?? 'app.name';
    }

    /** Título ya traducido (con el nombre de la app de sufijo). */
    public function title($module, $section)
    {
        $key = $this->titleKey($module, $section);
        $t   = App::t($key);
        $app = App::t('app.name');
        return $key === 'app.name' ? $app : "$t · $app";
    }
}
