# 🏗️ 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.