1.5 KiB
1.5 KiB
🏗️ Skill: Component Scoper (PlatformSistemas)
🎯 Objetivo
Manter a arquitetura limpa e modular, separando componentes puramente reutilizáveis (Shared) de componentes com lógica de negócio (Features).
🏛️ Estrutura de Pastas
🟢 src/components/shared/ (The Library)
- O que reside aqui: Botões, Tabelas genéricas, Modais, Inputs sem marca, Datetime pickers, Breadcrumbs.
- Regra: Devem ser funcionais apenas com Props. Não podem importar nada de
src/features/. - Exemplo:
DataTable.jsx,Modal.jsx.
📦 src/features/[feature]/components/ (The Business)
- O que reside aqui: Menus laterais, Dashboards, Formulários específicos (ex:
VehicleForm), Filtros complexos vinculados a uma entidade. - Regra: Podem conter lógica de negócio e usar o hook
useApiContract. - Exemplo:
PrafrotSidebar.jsx,TripRequestForm.jsx.
🚦 Regras de Enforcement
❌ PROIBIDO
- Criar componentes específicos de negócio dentro de
src/components/shared/. - Componentes em
shared/importarem hooks ou serviços defeatures/. - Cruzamento de imports entre features (ex:
features/rhimportando defeatures/fleet).
✅ OBRIGATÓRIO
- Usar a pasta
sharedapenas para componentes que seriam úteis em um projeto totalmente diferente. - Se um componente é compartilhado entre APENAS duas features, ele ainda deve morar em
sharedse for genérico, ou ser duplicado/refatorado se for de negócio.