diff --git a/src/app/layouts/RootLayout.tsx b/src/app/layouts/RootLayout.tsx index aa4d97b..31ed5ef 100644 --- a/src/app/layouts/RootLayout.tsx +++ b/src/app/layouts/RootLayout.tsx @@ -34,6 +34,7 @@ const adminWorkspaceRoutes = [ routePaths.adminInternships, routePaths.adminCandidateFiltering, routePaths.adminShortlists, + routePaths.adminEligibleStudents, ] as const function isAdminWorkspacePath(pathname: string) { diff --git a/src/features/eligible-students/hooks/useEligibleStudents.ts b/src/features/eligible-students/hooks/useEligibleStudents.ts index 978c3a8..6fc1149 100644 --- a/src/features/eligible-students/hooks/useEligibleStudents.ts +++ b/src/features/eligible-students/hooks/useEligibleStudents.ts @@ -1,4 +1,5 @@ import { keepPreviousData, useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import { adminDashboardKeys } from '../../admin-dashboard/hooks/adminDashboardQueryKeys' import { eligibleStudentsApi } from '../api/eligibleStudentsApi' import type { EligibleStudentQuery, EligibleStudentRequest } from '../types/eligibleStudentTypes' @@ -17,7 +18,12 @@ export function useEligibleStudents(query: EligibleStudentQuery) { export function useEligibleStudentMutations() { const queryClient = useQueryClient() - const refresh = () => queryClient.invalidateQueries({ queryKey: keys.all }) + const refresh = () => { + void queryClient.invalidateQueries({ queryKey: keys.all }) + // The Admin Dashboard's "Total Students" / "Registered Students" metrics are derived from the + // eligible-students roster, so they go stale the moment a roster entry is added or removed. + return queryClient.invalidateQueries({ queryKey: adminDashboardKeys.all }) + } return { create: useMutation({ mutationFn: (values: EligibleStudentRequest) => eligibleStudentsApi.create(values), diff --git a/src/features/student-profile/components/ProfileIdentityCard.tsx b/src/features/student-profile/components/ProfileIdentityCard.tsx index 838f542..29fefec 100644 --- a/src/features/student-profile/components/ProfileIdentityCard.tsx +++ b/src/features/student-profile/components/ProfileIdentityCard.tsx @@ -39,7 +39,7 @@ export function ProfileIdentityCard({
Level {profile.studentLevel}
-
Cohort / Batch
+
Batch
{profile.cohortYear ?? 'Not available'}
diff --git a/src/index.css b/src/index.css index 589be7f..a7c6ae2 100644 --- a/src/index.css +++ b/src/index.css @@ -1604,6 +1604,7 @@ body.admin-mobile-drawer-open { .registered-students-controls, .registered-students-toolbar-heading { display: grid; + min-width: 0; gap: 18px; } @@ -1627,6 +1628,7 @@ body.admin-mobile-drawer-open { .registered-students-levels, .pagination-size-control { display: grid; + min-width: 0; gap: 8px; } @@ -5109,6 +5111,21 @@ body.dark-mode .s5-records-page { background: var(--color-card-muted); } +.s5-cv-always-included-list { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin: 4px 0; +} + +.s5-cv-always-included-list span { + padding: 4px 10px; + border: 1px solid var(--color-border); + border-radius: var(--radius-pill, 999px); + background: var(--color-card); + font-size: 0.85rem; +} + .s5-cv-source-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); diff --git a/src/styles/skeleton-system.css b/src/styles/skeleton-system.css index f9f16d3..0f6cd38 100644 --- a/src/styles/skeleton-system.css +++ b/src/styles/skeleton-system.css @@ -99,11 +99,13 @@ .loading-boundary { display: grid; + min-width: 0; } .loading-boundary__skeleton, .loading-boundary__content { grid-area: 1 / 1; + min-width: 0; } .loading-boundary__skeleton { diff --git a/src/styles/sprint78-wireframe-alignment.css b/src/styles/sprint78-wireframe-alignment.css index 668a2d6..eeda023 100644 --- a/src/styles/sprint78-wireframe-alignment.css +++ b/src/styles/sprint78-wireframe-alignment.css @@ -1639,6 +1639,7 @@ } .registered-students-page .registered-students-controls { + min-width: 0; grid-template-columns: minmax(280px, 1.35fr) minmax(220px, 0.65fr); }