public function makeComponent(array $attributes = [], string $innerHTML = '', string $tagName = 'component')
    {
        $app = App::get();
        if (self::$newComponentCache === null) {
            self::$newComponentCache = new \IvoPetkov\BearFramework\Addons\HTMLServerComponents\Internal\Component();
        }
        $component = clone(self::$newComponentCache);
        foreach ($attributes as $name => $value) {
            $component->setAttribute($name, $value);
        }
        $component->innerHTML = $innerHTML;
        $component->tagName = $tagName;
        if ($app->components->hasEventListeners('makeComponent')) {
            $app->components->dispatchEvent('makeComponent', new \IvoPetkov\BearFramework\Addons\HTMLServerComponents\MakeComponentEventDetails($component));
        }
        return $component;
    }