<?php

use FluxCms\Core\Services\CmsContentService;

if (! function_exists('cms')) {
    /**
     * Resolve a CMS content value by dot-notation key.
     *
     * First segment is the group, rest is the key: "welcome.hero.heading"
     * Falls back to __() if no DB entry exists.
     *
     * @param  array<string, string>  $replace
     */
    function cms(string $key, array $replace = [], ?string $locale = null): mixed
    {
        return app(CmsContentService::class)->get($key, $replace, $locale);
    }
}

if (! function_exists('tcms')) {
    /**
     * CMS content with automatic tooltip replacement.
     *
     * @param  array<string, string>  $replace
     */
    function tcms(string $key, array $replace = [], ?string $locale = null): string
    {
        $text = cms($key, $replace, $locale);

        if (! is_string($text)) {
            $text = (string) $text;
        }

        return \App\Helpers\TooltipHelper::autoTooltip($text);
    }
}

if (! function_exists('t__')) {
    /**
     * Übersetzt einen Schlüssel und ersetzt automatisch alle bekannten Begriffe mit Tooltips
     *
     * @param  string  $key  Der Übersetzungsschlüssel (z.B. 'digitale-transformation.hero.description')
     * @param  array  $replace  Optionale Ersetzungen (z.B. ['name' => 'Max'])
     * @param  string|null  $locale  Optionale Locale (Standard: aktuelle Locale)
     * @return string Der übersetzte Text mit automatischen Tooltips
     */
    function t__(string $key, array $replace = [], ?string $locale = null): string
    {
        // Holt den übersetzten Text
        $text = __($key, $replace, $locale);

        // Wendet automatische Tooltip-Ersetzung an
        return \App\Helpers\TooltipHelper::autoTooltip($text);
    }
}

if (! function_exists('trans_tooltip')) {
    /**
     * Alias für t__() - Übersetzt einen Schlüssel und fügt automatisch Tooltips hinzu
     *
     * @param  string  $key  Der Übersetzungsschlüssel
     * @param  array  $replace  Optionale Ersetzungen
     * @param  string|null  $locale  Optionale Locale
     * @return string Der übersetzte Text mit automatischen Tooltips
     */
    function trans_tooltip(string $key, array $replace = [], ?string $locale = null): string
    {
        return t__($key, $replace, $locale);
    }
}

if (! function_exists('tooltip')) {
    /**
     * Alias für t__() - Übersetzt einen Schlüssel und fügt automatisch Tooltips hinzu
     *
     * @param  string  $key  Der Übersetzungsschlüssel
     * @param  array  $replace  Optionale Ersetzungen
     * @param  string|null  $locale  Optionale Locale
     * @return string Der übersetzte Text mit automatischen Tooltips
     */
    function tooltip(string $text): string
    {
        return \App\Helpers\TooltipHelper::autoTooltip($text);
    }
}
