events->listen( $this->handle(), CompositionSavedEvent::class, CompositionSyncListener::class, 'onCompositionSaved', DeliveryMode::Deferred, ); } public function handle(): string { return 'mail'; } public function label(): string { return 'Mail'; } public function author(): string { return 'Ktrix'; } public function description(): string { return 'Email client interface - provides a 3-column responsive mail client for reading, composing, and managing email messages'; } public function version(): string { return '0.0.1'; } public function permissions(): array { return [ 'mail' => [ 'label' => 'Access Mail', 'description' => 'View and access the mail client', 'group' => 'Mail' ], 'mail.compose' => [ 'label' => 'Compose Mail', 'description' => 'Compose and send email messages', 'group' => 'Mail' ], 'mail.delete' => [ 'label' => 'Delete Mail', 'description' => 'Delete email messages', 'group' => 'Mail' ], 'mail.*' => [ 'label' => 'Full Mail Access', 'description' => 'All mail operations', 'group' => 'Mail' ], ]; } public function configure(ModuleContextInterface $context): void { if ($context instanceof BrowserModuleContextInterface) { $context->registerModule($this, 'Mail', 'static/module.mjs'); } } }