Download the PHP package rahpt/ci4-module-theme without Composer
On this page you can find all versions of the php package rahpt/ci4-module-theme. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download rahpt/ci4-module-theme
More information about rahpt/ci4-module-theme
Files in rahpt/ci4-module-theme
Package ci4-module-theme
Short Description Theme and layout management system for CodeIgniter 4 modules
License MIT
Homepage https://github.com/rahpt/ci4-module-theme
Informations about the package ci4-module-theme
CodeIgniter 4 Module Theme Manager & Design System
Sistema corporativo de temas, layouts dinâmicos e biblioteca de componentes visuais (Design System) para módulos CodeIgniter 4. Possui fábrica completa de UI (UIComponentFactory / ui()), suporte a ViewComponent, bloqueio estrito de hosts externos não autorizados em produção, proteção CSP com Nonce criptográfico e suporte a Subresource Integrity (SRI).
🏛️ Filosofia de Design e Apresentação
Módulos fornecem dados e regras de negócio; o Tema fornece a apresentação.
Evite gerar HTML bruto espalhado em controllers ou models. O
ci4-module-themeoferece uma camada desacoplada de apresentação onde componentes visuais consistentes, acessíveis e padronizados são renderizados com segurança e isolamento.
📋 Índice
- Características
- Instalação
- Design System (UIComponentFactory)
- Componentes de View (ViewComponent)
- Segurança de Assets e Bloqueio em Produção
- Proteção CSP Nonce e Subresource Integrity (SRI)
- Uso Básico de Temas e Layouts
- Breadcrumbs e Hooks de Layout
- Helpers Disponíveis
- Histórico de Versões
- Licença
✨ Características
Design System & Componentes UI
- ✅ Fábrica de Componentes (
ui()) - Cards, Alertas acessíveis, Badges, Modais, Tabelas com suporte nativo a empty states e spinners de carregamento padronizados. - ✅ ViewComponent Desacoplado - Renderizador modular fluente com passagem de dados encapsulados e conversão automática para string (
__toString()). - ✅ Empty State Elegante - Componente padronizado para feedback visual quando listagens não possuem registros cadastrados.
Segurança em Produção & Zero-Trust
- ✅ Bloqueio Estrito de CDNs Não Autorizadas em Produção - Requisições para scripts ou estilos hospedados em origens não homologadas são bloqueadas sumariamente em ambiente de produção (
ThemeManager::validateAssetUrl()retornanull), emitindo o eventorahpt.asset.blocked. - ✅ Proteção Contra Injeção em Runtime (
AssetRegistry) - Inclusão de hosts permitidos viaallowHostFromConfig()a partir de configurações ou manifestos confiáveis, alertando e impedindo injeção dinâmica arbitrária em produção. - ✅ Bloqueio de Esquemas Maliciosos - URLs contendo
javascript:,data:ouvbscript:são neutralizadas antes da renderização. - ✅ Suporte a CSP Nonce - Injeção automática do atributo
nonce="..."em tags<script>e<link>para compatibilidade total com Content Security Policy estrita. - ✅ Subresource Integrity (SRI) - Suporte a hashes de integridade em recursos externos para evitar contaminação por supply-chain attacks.
Gerenciamento de Temas & Layouts
- ✅ Multi-Theme por Módulo - Cada módulo pode especificar seu tema independente (
adminlte,bootstrap,custom). - ✅ Hooks de Layout em Camadas - Injeção dinâmica de conteúdo e componentes antes e depois do layout (
hook()). - ✅ Assets Isolados por Módulo - Resolução segura de caminhos estáticos empacotados com
module_asset().
🚀 Instalação
🎨 Design System (UIComponentFactory)
O helper global ui() dá acesso à biblioteca de componentes de interface consistentes e acessíveis:
1. Cards
2. Alertas Acessíveis
3. Badges de Status
4. Tabelas Responsivas com Empty State
5. Telas de Estado Vazio (Empty State)
6. Modais Padronizados
7. Indicador de Carregamento (Loading)
🧩 Componentes de View (ViewComponent)
Para isolar blocos de interface complexos em views reutilizáveis com propriedades tipadas:
🛡️ Segurança de Assets e Bloqueio em Produção
Bloqueio Automático em Produção
Em ambiente de produção (ENVIRONMENT === 'production'), qualquer tentativa de carregar assets de domínios externos não homologados é rejeitada sumariamente:
- A tag
<link>ou<script>não é renderizada (retornanull). - É registrado um log de alerta no sistema.
- O evento
rahpt.asset.blockedé emitido para auditoria.
Registro Confiável de CDNs Permitidas
Para homologar origens externas seguras, utilize a via confiável em arquivos de configuração ou inicialização:
Aviso de Segurança: Chamar
AssetRegistry::allowHost()dinamicamente em runtime durante uma requisição web em produção emitirá avisos de auditoria, desencorajando injeções arbitrárias de código.
🔒 Proteção CSP Nonce e Subresource Integrity (SRI)
Nonce Criptográfico
Em seu filtro de segurança ou BaseController:
📖 Uso Básico de Temas e Layouts
Definir Tema no Módulo
No Controller
Na View
🪝 Breadcrumbs e Hooks de Layout
🛠️ Helpers Disponíveis
| Função | Descrição |
|---|---|
ui() |
Fábrica de componentes visuais do Design System (UIComponentFactory). |
theme_styles() |
Renderiza tags <link> dos estilos registrados com Nonce CSP. |
theme_scripts() |
Renderiza tags <script> dos scripts registrados com Nonce CSP. |
add_style(string $href) |
Registra folha de estilo para o layout atual com validação de host. |
add_script(string $src) |
Registra script JS para o layout atual com validação de host. |
module_asset(string $module, string $path) |
Gera URL segura para asset localizado na pasta do módulo. |
set_breadcrumb(string $label, ?string $url) |
Adiciona etapa à trilha de navegação contextual. |
render_breadcrumbs() |
Renderiza a trilha de breadcrumbs em HTML semântico. |
hook(string $name, array $params) |
Executa e renderiza os ouvintes do hook de view. |
register_hook(string $name, $content) |
Anexa conteúdo, callback ou ViewComponent a um hook de view. |
🕒 Histórico de Versões
[1.3.0] - 2026-09-26
- Segurança: Rejeição estrita de hosts externos não autorizados em ambiente de produção (bloqueio determinístico do asset).
- Segurança: Blindagem do
AssetRegistrycontra injeção dinâmica de origens externas em runtime (allowHostFromConfig). - Segurança: Disparo do evento
rahpt.asset.blockedao detectar tentativas de inclusão não homologada. - Melhoria: Design System expandido com
UIComponentFactorye helperui(). - Melhoria: Suporte a Content Security Policy (CSP) com tokens Nonce e Subresource Integrity (SRI).
[1.2.0] - 2026-09-26
- Novo: Suporte completo a
ViewComponentcom renderização isolada e fluente. - Novo: Allowlist de domínios seguros (
allowHost) e registro formal de vendors emAssetRegistry. - Novo: Helper
module_asset()para resolução de caminhos estáticos de módulos.
[1.0.1] - 2026-02-15
- Estabilização inicial dos layouts base.
📄 Licença
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
Desenvolvido por Rahpt
Mantido pela equipe Rahpt / CodeIgniter 4 Modular Platform.