fix(home): make Att8 bar match its numbers and separate safeguarding
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m2s
PR Checks / Backend Smoke (pull_request) Successful in 6s
PR Checks / Build Backend (no push) (pull_request) Successful in 10s
PR Checks / Build Frontend (no push) (pull_request) Successful in 42s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 1m6s

Two internal-consistency fixes on the "What you'll see" mock:

- The Attainment 8 bar had drifted from the numbers beside it (fill 68%
  / line 57% vs a 54.8 score and 45.9 national avg). Restored the mock's
  original 1:1 value-to-percent mapping: fill 54.8%, national line 45.9%.
- The report card grouped "Safeguarding: Met" in the same five-point
  list as the graded areas, but safeguarding is a separate binary
  met/not-met judgement under the real framework. Moved it below the
  list behind a divider, with an outlined chip and a "separate check"
  label so it no longer reads as a graded area.

Verified with tsc --noEmit and next build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB
This commit is contained in:
Tudor
2026-07-21 10:01:10 +01:00
co-authored by Claude Opus 4.8
parent 13253116c2
commit 22e9eb2d48
2 changed files with 31 additions and 4 deletions
+23
View File
@@ -922,6 +922,29 @@
color: var(--accent-gold-text, #7a6800); color: var(--accent-gold-text, #7a6800);
} }
/* Safeguarding is a separate binary met/not-met judgement, not a graded area,
so it sits below the five-point list behind a divider with its own chip. */
.rcSafeguarding {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.5rem;
margin-top: 0.05rem;
padding-top: 0.35rem;
border-top: 1px dashed var(--border-color, #e5dfd5);
}
.rcSep {
color: var(--text-muted, #8a847a);
font-style: italic;
}
.rcChipMet {
background: transparent;
color: var(--accent-teal, #2d7d7d);
border: 1px solid rgba(45, 125, 125, 0.4);
}
.ofstedMeta { .ofstedMeta {
font-size: 0.6rem; font-size: 0.6rem;
color: var(--text-muted, #6d685f); color: var(--text-muted, #6d685f);
+8 -4
View File
@@ -19,12 +19,12 @@ export function HowItWorksSection() {
{ label: 'Ofsted', a: 'Outstanding', b: 'Good', aHi: true }, { label: 'Ofsted', a: 'Outstanding', b: 'Good', aHi: true },
]; ];
// Report card (Ofsted's framework from Nov 2025): one rating per area of // Report card (Ofsted's framework from Nov 2025): one rating per area of
// school life on a five-point scale, plus a stand-alone safeguarding outcome. // school life on a five-point scale. Safeguarding is judged separately, as a
// binary met/not-met outcome — kept out of this list and shown on its own.
const reportCard: Array<{ area: string; grade: string; good: boolean }> = [ const reportCard: Array<{ area: string; grade: string; good: boolean }> = [
{ area: 'Achievement', grade: 'Strong', good: true }, { area: 'Achievement', grade: 'Strong', good: true },
{ area: 'Curriculum & teaching', grade: 'Expected standard', good: false }, { area: 'Curriculum & teaching', grade: 'Expected standard', good: false },
{ area: 'Attendance & behaviour', grade: 'Strong', good: true }, { area: 'Attendance & behaviour', grade: 'Strong', good: true },
{ area: 'Safeguarding', grade: 'Met', good: true },
]; ];
return ( return (
@@ -62,8 +62,8 @@ export function HowItWorksSection() {
<div className={styles.att8BarWrap}> <div className={styles.att8BarWrap}>
<div className={styles.att8BarHead}><span>This school</span><span>National avg 45.9</span></div> <div className={styles.att8BarHead}><span>This school</span><span>National avg 45.9</span></div>
<div className={styles.att8Track}> <div className={styles.att8Track}>
<div className={styles.att8Fill} style={{ width: '68%' }} /> <div className={styles.att8Fill} style={{ width: '54.8%' }} />
<div className={styles.att8NatLine} style={{ left: '57%' }} /> <div className={styles.att8NatLine} style={{ left: '45.9%' }} />
</div> </div>
</div> </div>
<div className={styles.att8Score}> <div className={styles.att8Score}>
@@ -97,6 +97,10 @@ export function HowItWorksSection() {
</div> </div>
))} ))}
</div> </div>
<div className={styles.rcSafeguarding}>
<span className={styles.rcArea}>Safeguarding <span className={styles.rcSep}>· separate check</span></span>
<span className={`${styles.rcChip} ${styles.rcChipMet}`}>Met</span>
</div>
<div className={styles.ofstedMeta}>Full inspection · March 2026</div> <div className={styles.ofstedMeta}>Full inspection · March 2026</div>
</div> </div>
</div> </div>