diff --git a/frontend/src/screens/AiAssistant.jsx b/frontend/src/screens/AiAssistant.jsx index e4dbe2e..f972c8e 100644 --- a/frontend/src/screens/AiAssistant.jsx +++ b/frontend/src/screens/AiAssistant.jsx @@ -1,5 +1,6 @@ import { useState } from 'react' import Chat from '../app/ai/Chat' +import PageHeader from '../ui/PageHeader' import { Icon } from '../ui/primitives' export default function AiAssistant() { @@ -8,20 +9,18 @@ export default function AiAssistant() { return (
-
-
-

AI Assistant

-

Your recruiting copilot — powered by AI (interface preview)

-
-
+ Model endpoint · Not connected -
-
+ } + />
diff --git a/frontend/src/screens/AiStudio.jsx b/frontend/src/screens/AiStudio.jsx index 3a795ac..586d637 100644 --- a/frontend/src/screens/AiStudio.jsx +++ b/frontend/src/screens/AiStudio.jsx @@ -1,5 +1,6 @@ import { useState } from 'react' import Modal from '../ui/Modal' +import PageHeader from '../ui/PageHeader' import { Badge, Icon } from '../ui/primitives' import { useToast } from '../ui/Toast' import { aiModules } from '../data/seed' @@ -11,20 +12,16 @@ export default function AiStudio() { return (
-
-
-

AI Studio

-

- Next-generation AI modules — designed and API-ready for backend integration -

-
-
+ {betaCount} in Beta -
-
+ } + />
-
+

Everything is API-ready

diff --git a/frontend/src/screens/Analytics.jsx b/frontend/src/screens/Analytics.jsx index eec603d..e42ccaf 100644 --- a/frontend/src/screens/Analytics.jsx +++ b/frontend/src/screens/Analytics.jsx @@ -31,6 +31,7 @@ import { useMutation, useQueries, useQuery } from '@tanstack/react-query' import Chart, { ChartLegend } from '../ui/Chart' import Charts from '../lib/charts' import DataTable from '../ui/DataTable' +import PageHeader from '../ui/PageHeader' import { EmptyState, Icon } from '../ui/primitives' import { qk } from '../lib/queryKeys' import { friendlyAuthError } from '../lib/errors' @@ -396,12 +397,10 @@ export default function Analytics() { return (
-
-
-

Analytics

-

Deep-dive metrics across your recruitment funnel

-
-
+
{RANGES.map((r) => ( {r.name} ))} -
-
+ } + /> {kpisQuery.isError && (
diff --git a/frontend/src/screens/Assessments.jsx b/frontend/src/screens/Assessments.jsx index 3e57097..e9e54ec 100644 --- a/frontend/src/screens/Assessments.jsx +++ b/frontend/src/screens/Assessments.jsx @@ -13,6 +13,7 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import DataTable from '../ui/DataTable' import Modal from '../ui/Modal' +import PageHeader from '../ui/PageHeader' import { Avatar, Badge, EmptyState, FieldError, Icon, KpiCard, ProgressBar, ScoreChip } from '../ui/primitives' import { useToast } from '../ui/Toast' import { useAuth } from '../auth/AuthContext' @@ -168,10 +169,11 @@ export default function Assessments() { key: '_a', label: 'Actions', align: 'right', render: (a) => (
- + -
-
+ } + />
@@ -320,11 +320,9 @@ export default function Assessments() { )} ) : ( -
- -

Assessment not completed

-

Results will appear once the candidate submits.

-
+ + Results will appear once the candidate submits. + )} )} diff --git a/frontend/src/screens/Calendar.jsx b/frontend/src/screens/Calendar.jsx index b4516e4..0f0c1d8 100644 --- a/frontend/src/screens/Calendar.jsx +++ b/frontend/src/screens/Calendar.jsx @@ -16,6 +16,7 @@ import { useMemo, useState } from 'react' import { useNavigate } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' +import PageHeader from '../ui/PageHeader' import { Avatar, EmptyState, Icon } from '../ui/primitives' import { qk } from '../lib/queryKeys' import { friendlyAuthError } from '../lib/errors' @@ -122,15 +123,10 @@ export default function Calendar() { return (
-
-
-

Calendar

-

- Interview schedule at a glance - {monthQuery.isSuccess ? ` · ${events.length} this month` : ''} -

-
-
+
-
-
+ } + /> {monthQuery.isError ? (
diff --git a/frontend/src/screens/CvImport.jsx b/frontend/src/screens/CvImport.jsx index 590939e..5ae729b 100644 --- a/frontend/src/screens/CvImport.jsx +++ b/frontend/src/screens/CvImport.jsx @@ -12,6 +12,7 @@ import { useRef, useState } from 'react' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import PageHeader from '../ui/PageHeader' import { Badge, EmptyState, Icon, ScoreChip } from '../ui/primitives' import { useToast } from '../ui/Toast' import JobCandidates from './JobCandidates' @@ -124,25 +125,20 @@ export default function CvImport() { return (
-
-
-

CV Import

-

Upload resume PDFs — parsed, scored against a job, and saved automatically

-
-
- AI Resume Scoring · Live -
-
+ AI Resume Scoring · Live} + />
-
+
Score against setJobId(e.target.value)}> {jobs.map((j) => ( @@ -201,8 +200,8 @@ export default function Pipeline() { > Add Candidate -
-
+ } + /> {board.isError ? ( diff --git a/frontend/src/screens/Rbac.jsx b/frontend/src/screens/Rbac.jsx index 26e483b..492f045 100644 --- a/frontend/src/screens/Rbac.jsx +++ b/frontend/src/screens/Rbac.jsx @@ -23,6 +23,7 @@ import { useEffect, useMemo, useState } from 'react' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import Modal from '../ui/Modal' +import PageHeader from '../ui/PageHeader' import { Badge, EmptyState, FieldError, Icon } from '../ui/primitives' import { useToast } from '../ui/Toast' import { useFormState } from '../components/AuthLayout' @@ -129,19 +130,15 @@ export default function Rbac() { return (
-
-
-

Access Control

-

- Roles, permission bundles and the {totalTags || '104'}-tag vocabulary, live from the server -

-
-
+ Roles, permission bundles and the {totalTags || '104'}-tag vocabulary, live from the server} + actions={ -
-
+ } + /> {rolesQuery.isPending && (
diff --git a/frontend/src/screens/RecruiterHub.jsx b/frontend/src/screens/RecruiterHub.jsx index 8fdb848..523127f 100644 --- a/frontend/src/screens/RecruiterHub.jsx +++ b/frontend/src/screens/RecruiterHub.jsx @@ -26,6 +26,7 @@ import { useQuery } from '@tanstack/react-query' import Chart from '../ui/Chart' import Charts from '../lib/charts' +import PageHeader from '../ui/PageHeader' import { Avatar, EmptyState, Icon, KpiCard } from '../ui/primitives' import { qk } from '../lib/queryKeys' import { friendlyAuthError } from '../lib/errors' @@ -188,20 +189,18 @@ export default function RecruiterHub() { return (
-
-
-

Recruiter Hub

-

Per-recruiter performance, scoped server-side

-
-
+ setRecruiterId(e.target.value)}> {recruiters.map((x) => )} -
-
+ } + />
-
+
{name}
diff --git a/frontend/src/screens/Reports.jsx b/frontend/src/screens/Reports.jsx index 9b0aefa..a74ff7d 100644 --- a/frontend/src/screens/Reports.jsx +++ b/frontend/src/screens/Reports.jsx @@ -36,6 +36,7 @@ import Chart, { ChartLegend } from '../ui/Chart' import Charts from '../lib/charts' import DataTable from '../ui/DataTable' import Modal from '../ui/Modal' +import PageHeader from '../ui/PageHeader' import { EmptyState, Icon, KpiCard, ProgressBar } from '../ui/primitives' import { useToast } from '../ui/Toast' import { qk } from '../lib/queryKeys' @@ -461,17 +462,15 @@ export default function Reports() { return (
-
-
-

Reports

-

Recruitment metrics across the selected window

-
-
+ setRangeKey(e.target.value)}> {RANGES.map((r) => )} -
-
+ } + /> {kpisQuery.isError && (
diff --git a/frontend/src/screens/Talent.jsx b/frontend/src/screens/Talent.jsx index 5a51b45..24c389b 100644 --- a/frontend/src/screens/Talent.jsx +++ b/frontend/src/screens/Talent.jsx @@ -12,6 +12,7 @@ import { useEffect, useMemo, useRef, useState } from 'react' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import Modal from '../ui/Modal' +import PageHeader from '../ui/PageHeader' import { Badge, EmptyState, Icon } from '../ui/primitives' import { useToast } from '../ui/Toast' import { qk } from '../lib/queryKeys' @@ -186,6 +187,7 @@ function ProfileCard({ p, onView, onDismiss, dismissing }) { { e.stopPropagation(); onView(p) }} > @@ -203,6 +206,7 @@ function ProfileCard({ p, onView, onDismiss, dismissing }) {