diff --git a/pages/SuperAdmin.tsx b/pages/SuperAdmin.tsx
index acc5014..281678e 100644
--- a/pages/SuperAdmin.tsx
+++ b/pages/SuperAdmin.tsx
@@ -49,8 +49,8 @@ export const SuperAdmin: React.FC = () => {
} label="Usuários" value={analytics?.totalUsers ?? users.length} />} label="Contas ativas" value={analytics?.activeUsers ?? activeUsers} />} label="Instrutores" value={instructorUsers} />} label="Cursos publicados" value={analytics?.publishedCourses ?? 0} />} label="Aulas concluídas" value={analytics?.completedLessons ?? 0} />
setActiveTab('courses')} label="Cursos" /> setActiveTab('trails')} label="Trilhas" /> setActiveTab('home')} label="Página inicial" /> setActiveTab('access')} label="Acessos" />
{activeTab === 'courses' && navigate('/gerenciar')} />}
- {activeTab === 'trails' && }
- {activeTab === 'home' && <>>}
+ {activeTab === 'trails' && <>>}
+ {activeTab === 'home' && <>>}
{activeTab === 'access' && }
{isPathEditorOpen && }
;
@@ -66,6 +66,10 @@ const TabButton: React.FC<{ active: boolean; onClick: () => void; label: string
const StatCard: React.FC<{ icon: React.ReactNode; label: string; value: number }> = ({ icon, label, value }) => ;
const DetailMetric: React.FC<{ label: string; value: string }> = ({ label, value }) => ;
+const CategoryManager: React.FC<{ categories: Array<{ id: string; name: string; position: number; isActive: boolean }>; newCategory: string; setNewCategory: (value: string) => void; onCreate: (event: React.FormEvent) => void; onToggle: (category: { id: string; name: string; position: number; isActive: boolean }) => void }> = ({ categories, newCategory, setNewCategory, onCreate, onToggle }) => Categorias das trilhas
Organize os temas disponíveis para cursos e trilhas.
{categories.map((category) => )}
;
+
+const HomepageConfigurationPanel: React.FC<{ homeConfiguration: HomeConfiguration | null; homeCourses: CourseOption[]; setHomeConfiguration: React.Dispatch>; onMoveHomeCourse: (courseId: string, direction: -1 | 1) => void; onSaveHome: () => void }> = ({ homeConfiguration, homeCourses, setHomeConfiguration, onMoveHomeCourse, onSaveHome }) => Vitrine de cursos
Defina a ordem dos cursos abaixo dos banners.
{homeConfiguration && {homeCourses.map((course, index) =>
{index + 1}{course.title} )}
};
+
const BannerManager: React.FC<{ courses: CourseOption[] }> = ({ courses }) => {
const { showToast } = useToast(); const [banners, setBanners] = useState([]); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const fileInput = useRef(null);
useEffect(() => { adminApi.homeBanners().then((response) => setBanners(response.data)).catch(() => showToast('Não foi possível carregar os banners.', 'error')).finally(() => setLoading(false)); }, []);