32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# 🏗️ 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 de `features/`.
|
|
- Cruzamento de imports entre features (ex: `features/rh` importando de `features/fleet`).
|
|
|
|
### ✅ OBRIGATÓRIO
|
|
- Usar a pasta `shared` apenas para componentes que seriam úteis em um projeto totalmente diferente.
|
|
- Se um componente é compartilhado entre APENAS duas features, ele ainda deve morar em `shared` se for genérico, ou ser duplicado/refatorado se for de negócio.
|