public function module(string $name, string $icon, callable $definitionCallback)
    {
        $definition = new ContentModuleDefinition($name, $icon, $this->config);
        $definitionCallback($definition);

        $this->customModules([
            $name => function () use ($definition) {
                return $definition->loadModule(
                    $this->iocContainer->get(IContentGroupRepository::class),
                    $this->iocContainer->get(IAuthSystem::class),
                    $this->iocContainer->get(IClock::class)
                );
            },
        ]);
    }
public function module(string $name, string $icon, callable $definitionCallback)
    {
        $definition = new ContentModuleDefinition($name, $icon, $this->config);
        $definitionCallback($definition);

        $this->customModules([
            $name => function () use ($definition) {
                return $definition->loadModule(
                    $this->iocContainer->get(IContentGroupRepository::class),
                    $this->iocContainer->get(IAuthSystem::class),
                    $this->iocContainer->get(IClock::class)
                );
            },
        ]);
    }
public function module ( string $ name , string $ icon , callable $ definitionCallback ) { $ definition = new ContentModuleDefinition ( $ name , $ icon , $ this -> config ) ; $ definitionCallback ( $ definition ) ; $ this -> customModules ( [ $ name => function ( ) use ( $ definition ) { return $ definition -> loadModule ( $ this -> iocContainer -> get ( IContentGroupRepository :: class ) , $ this -> iocContainer -> get ( IAuthSystem :: class ) , $ this -> iocContainer -> get ( IClock :: class ) ) ; } , ] ) ; }
Defines a module within the content package.

Example:
<code>
$content->module('pages', 'file-text', function (ContentModuleDefinition $content) {
$content->group('template', 'Template')
->withImage('banner', 'Banner')
->withHtml('header', 'Header')
->withHtml('footer', 'Footer');

$content->page('home', 'Home')
->url(route('home'))
->withHtml('info', 'Info', '#info')
->withImage('banner', 'Banner')
->withMetadata('extra', 'Some Extra Metadata');
});

$content->module('emails', 'envelope', function (ContentModuleDefinition $content) {
$content->email('home', 'Home')
->withHtml('info', 'Info');
});
</code>

@param string   $name
@param string   $icon
@param callable $definitionCallback

@throws InvalidOperationException
Defines a module within the content package .