import React, { useRef, useState, useEffect } from "react"; import { Check, BookOpen, AlertTriangle, Zap, Clock, Users, GitBranch, } from "lucide-react"; import { PracticeFromDataset } from "../../../components/lessons/LessonShell"; import { FORM_STRUCTURE_EASY, FORM_STRUCTURE_MEDIUM, } from "../../../data/rw/form-structure-sense"; import DecisionTreeWidget, { type TreeScenario, type TreeNode, } from "../../../components/lessons/DecisionTreeWidget"; import RevealCardGrid, { type RevealCard, } from "../../../components/lessons/RevealCardGrid"; import useScrollReveal from "../../../components/lessons/useScrollReveal"; interface LessonProps { onFinish?: () => void; } /* ── Data for RevealCardGrid widgets ── */ const SVA_DISGUISES: RevealCard[] = [ { label: "Prepositional Phrase Decoy", sublabel: "The list [of requirements] __ long.", content: 'Cross out the phrase. "List" is singular → IS long.', }, { label: "Inverted Order (There is/are)", sublabel: "There __ many reasons for the decision.", content: '"Many reasons" is the subject (plural) → THERE ARE. Flip: "Many reasons there are."', }, { label: "Gerund Subject", sublabel: "Studying the data __ essential.", content: "A gerund (-ing phrase) as subject is always singular → IS essential.", }, { label: "Collective Nouns", sublabel: "The committee __ voted unanimously.", content: "Committee = one group = singular → HAS voted. Same for team, group, family, audience, class.", }, { label: "Indefinite Pronouns", sublabel: "Each of the participants __ required.", content: "Each is always singular → IS required.", }, { label: "Neither/Nor Proximity", sublabel: "Neither the principal nor the teachers __", content: "Or/nor: agree with the NEAREST noun → teachers (plural) → ARE responsible.", }, ]; const PRONOUN_RULES: RevealCard[] = [ { label: "Number Agreement", content: 'Pronoun must match its antecedent in number. "Each student should bring their own materials" is accepted on SAT for singular "they."', }, { label: "This/That Must Have a Clear Referent", content: 'Always make sure "this" or "that" refers to a specific noun, not a vague idea. If unclear, replace with the noun.', }, { label: "Emphatic Pronouns", content: 'These (himself/herself/themselves) can NEVER be the subject. ✗ "Himself was the only one who knew." ✓ "He himself was the only one who knew."', }, { label: "Missing Antecedent", content: 'Every pronoun must refer to a specific named noun. If "they" could refer to two different nouns, replace it with the noun it means.', }, { label: "Person Consistency", content: 'Do not switch between "one," "you," and "we" within the same passage. Match the pronoun person already established.', }, ]; const SVA_TREE: TreeNode = { id: "sva-root", question: "Is there a prepositional phrase or interrupting clause BETWEEN the subject and verb?", hint: 'Cross out everything introduced by "of," "in," "with," "for," "by," "including," etc., up to the next punctuation.', yesLabel: "Yes — there is interrupting material", noLabel: "No — subject and verb are adjacent", yes: { id: "cross-out", question: "After crossing out the interrupting material, is the true subject singular or plural?", hint: "The true subject is the noun BEFORE the interrupting phrase. Ignore the noun inside the phrase.", yesLabel: "Singular subject", noLabel: "Plural subject", yes: { id: "singular-verb", question: "", result: "✓ Use a SINGULAR verb (is, was, has, does). The interrupting phrase cannot change the subject.", resultType: "correct", ruleRef: 'The list [of requirements] IS long — not "are"', }, no: { id: "plural-verb", question: "", result: "✓ Use a PLURAL verb (are, were, have, do). The interrupting phrase cannot change the subject.", resultType: "correct", ruleRef: 'The scientists [in the lab] ARE conducting — not "is"', }, }, no: { id: "no-interrupt", question: "Is the subject an indefinite pronoun (each, every, either, neither, anyone, everyone, someone, nobody)?", hint: "These pronouns are always grammatically singular even when they refer to groups.", yesLabel: "Yes — indefinite pronoun subject", noLabel: "No — regular noun or pronoun", yes: { id: "indefinite", question: "", result: "✓ Use a SINGULAR verb. Each, every, either, neither, anyone, everyone, someone, nobody are all grammatically singular.", resultType: "correct", ruleRef: 'Each of the students IS responsible — not "are"', }, no: { id: "regular-agree", question: "", result: "✓ Match the verb to the subject normally: singular noun = singular verb; plural noun = plural verb.", resultType: "info", ruleRef: "Standard agreement: The dog barks / The dogs bark", }, }, }; const TREE_SCENARIOS: TreeScenario[] = [ { label: "SVA 1", sentence: "The collection of ancient manuscripts were donated to the university library.", tree: SVA_TREE, }, { label: "SVA 2", sentence: "Neither of the proposed solutions address the root cause of the problem.", tree: SVA_TREE, }, { label: "SVA 3", sentence: "The team of researchers have published their findings in three separate journals.", tree: SVA_TREE, }, ]; const EBRWFormStructureSenseLesson: React.FC = ({ onFinish }) => { const [activeSection, setActiveSection] = useState(0); const sectionsRef = useRef<(HTMLElement | null)[]>([]); useEffect(() => { const observers: IntersectionObserver[] = []; sectionsRef.current.forEach((el, idx) => { if (!el) return; const obs = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) setActiveSection(idx); }, { threshold: 0.3 }, ); obs.observe(el); observers.push(obs); }); return () => observers.forEach((o) => o.disconnect()); }, []); useScrollReveal(); const scrollToSection = (index: number) => { setActiveSection(index); sectionsRef.current[index]?.scrollIntoView({ behavior: "smooth" }); }; const SectionMarker = ({ index, title, icon: Icon, }: { index: number; title: string; icon: React.ElementType; }) => { const isActive = activeSection === index; const isPast = activeSection > index; return ( ); }; return (
{/* ── Section 0: Subject-Verb Agreement ── */}
{ sectionsRef.current[0] = el; }} className="min-h-screen flex flex-col justify-center mb-24 pt-20 lg:pt-0" >
Standard English Conventions — Domain 3

Form, Structure & Sense

Seven grammar skills: subject-verb agreement, verb forms, pronouns, apostrophes, modification, parallel structure, and comma usage.

{/* §8.1 SVA */}

Subject-Verb Agreement: All 6 Disguises

The SAT hides the subject behind phrases and structural tricks. Tap each disguise to see how to solve it:

Indefinite Pronoun Quick Reference

Always Singular Always Plural Context-Dependent
each, every, either, neither, one, anyone, everyone, someone, no one, nobody, somebody, everybody, anything, everything, something, nothing both, few, many, several, others all, any, more, most, none, some — match to the noun in the "of" phrase: "most of the water IS" / "most of the results ARE"
{/* ── Section 1: Verb Forms & Tense ── */}
{ sectionsRef.current[1] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

Verb Forms & Tense

The SAT tests specific verb form errors, not just tense consistency.

{/* Tense Table */}

Tense Consistency

{[ [ "Simple Present", "now, every day, always, usually, generally", "The study examines 500 participants.", ], [ "Simple Past", "yesterday, last year, in 1990, ago", "The study examined 500 participants.", ], [ "Present Perfect", "since, for, recently, already, yet", "Researchers have found new evidence.", ], [ "Past Perfect", "before, by the time, had already", "By 2020, scientists had confirmed the theory.", ], [ "Future", "tomorrow, next year, will", "The team will publish next month.", ], [ "Progressive", "currently, at the moment, was/is + -ing", "She was collecting data when the power failed.", ], ].map(([tense, signals, ex], i) => ( ))}
Tense Signal Words Example
{tense} {signals} {ex}
{/* Past Conditional */}

Past Conditional & Irregular Past Participles

Past Conditional (Counterfactual)

Use had + past participle in the "if" clause and{" "} would have + past participle{" "} in the result clause.

  • ✗ "If she would have studied harder, she would have passed."
  • ✓ "If she had studied harder, she{" "} would have passed."
  • The SAT frequently places "would have" in the if-clause — always wrong.
{[ ["go", "went", "gone (had gone ✓ / had went ✗)"], ["rise", "rose", "risen (had risen ✓ / had rose ✗)"], ["lie (recline)", "lay", "lain (had lain ✓)"], ["lay (place)", "laid", "laid (had laid ✓)"], ["choose", "chose", "chosen (had chosen ✓)"], ["swim", "swam", "swum (had swum ✓ / had swam ✗)"], ["begin", "began", "begun (had begun ✓ / had began ✗)"], ["see", "saw", "seen (had seen ✓ / had saw ✗)"], ].map(([base, past, participle], i) => ( ))}
Base Form Simple Past Past Participle (with have/had)
{base} {past} {participle}

To vs. -ing After Certain Verbs

{[ { label: "Verbs that take TO", words: "want, hope, plan, decide, need, agree, refuse, offer, expect, seem", }, { label: "Verbs that take -ING", words: "enjoy, avoid, finish, consider, deny, practice, suggest, admit, keep, quit", }, { label: "Meaning changes", words: "stop to do (pause) / stop doing (cease); remember to do / remember doing", }, ].map((v) => (

{v.label}

{v.words}

))}

Passive Voice

Passive voice reverses the usual subject-verb-object order: the receiver of the action becomes the grammatical subject. The SAT does not treat passive voice as inherently wrong — but it tests whether you can identify the correct form.

  • Active: "The researcher collected the data."
  • Passive: "The data was collected by the researcher."

Passive is formed with a form of 'be' + past participle. On the SAT, check whether the passive form matches the correct tense and whether the subject-verb agreement is correct in the passive construction.

{/* ── Section 2: Pronouns & Apostrophes ── */}
{ sectionsRef.current[2] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

Pronouns & Apostrophes

Pronoun errors are among the most commonly tested items in Form, Structure & Sense.

{/* Relative Pronouns */}

Pronoun Rules

{[ [ "who / whom", "People only", '"the researcher who discovered…" / "the scientist whom they selected…"', ], [ "which", "Things / non-people (non-essential)", '"the study, which examined 500 people…" — always gets a comma', ], [ "that", "Things / non-people (essential)", '"the study that confirmed the theory" — no comma', ], [ "where", "Places", '"the laboratory where the experiment occurred…"', ], ["when", "Times", '"the decade when the research began…"'], ].map(([pron, use, ex], i) => ( ))}
Pronoun Used For Example
{pron} {use} {ex}

Who vs. Whom — Substitution Test

  • Who = subject (substitutes he/she): "Who wrote the report?" → "He wrote it." ✓
  • Whom = object (substitutes him/her): "To whom did you give it?" → "You gave it to him." ✓

Additional Pronoun Rules — tap to reveal:

{/* Apostrophes */}

Apostrophes

Noun Apostrophes (Possession)

  • Singular noun: add 's → the scientist's data
  • Plural noun ending in s:{" "} add ' → the scientists' lab
  • Plural noun NOT ending in s: {" "} add 's → the children's results

Pronoun Apostrophes (Contractions Only)

{[ ["its", "possessive"], ["it's", "it is / it has"], ["their", "possessive"], ["they're", "they are"], ["whose", "possessive"], ["who's", "who is / who has"], ["your", "possessive"], ["you're", "you are"], ].map(([form, meaning]) => (
{form} = {meaning}
))}

Apostrophe Shortcut

If you can read the word as two words (it is → it's), it's a contraction — use the apostrophe. Pronouns{" "} never use apostrophes for possession (opposite of nouns).

{/* ── Section 3: Modifiers, Parallel Structure & Commas ── */}
{ sectionsRef.current[3] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

Modifiers, Parallel Structure & Commas

Three interrelated skills that test whether elements are correctly placed and balanced.

{/* §8.5 Modification */}

Modification Errors

Dangling Modifier

The modifier has no logical subject in the sentence, or the subject it should modify does not immediately follow it.

  • ✗ "Running quickly, the bus was missed." — The bus isn't running.
  • ✓ "Running quickly, she missed the bus." — She was running; subject appears right after comma.
  • Possessive Trap: "Wishing to pass,{" "} the student's exam…" — the possessive makes "exam" the subject. Use: "Wishing to pass,{" "} the student reviewed…"

Misplaced Modifier

The modifier is positioned too far from the noun it modifies.

  • ✗ "She only eats salad." — only implies she does nothing else?
  • ✓ "She eats only salad." — only modifies "salad."

Parenthetical Modifiers — Matching Punctuation

A non-essential phrase must be enclosed in matching punctuation: two commas, two dashes, or two parentheses. Never mix them.

  • ✗ "The researcher, who had published 40 papers— presented her findings."
  • ✓ "The researcher, who had published 40 papers, presented her findings."
  • ✓ "The researcher — who had published 40 papers — presented her findings."
{/* §8.6 Parallel Structure */}

Parallel Structure

{[ { type: "Lists", bad: "She enjoys hiking, to swim, and reading.", good: "She enjoys hiking, swimming, and reading.", note: "All items must be the same grammatical form.", }, { type: "Correlative Pairs (not only…but also, both…and, either…or)", bad: "He not only speaks French but also is fluent in German.", good: "He not only speaks French but also speaks German.", note: 'What follows "not only" must be parallel to what follows "but also."', }, { type: "Comparisons", bad: "Running is healthier than to sit all day.", good: "Running is healthier than sitting all day.", note: "Both sides of a comparison must be the same form.", }, { type: "Semicolon Lists", bad: "The study examined diet; the exercise habits; and their stress levels.", good: "The study examined diet; exercise habits; and stress levels.", note: "Items separated by semicolons must be parallel.", }, ].map((p) => (

{p.type}

✗ {p.bad}

✓ {p.good}

{p.note}

))}
{/* §8.7 Commas */}

Comma Rules

When a Comma IS Required

  • ✓ After an introductory element at the start of a sentence.
  • ✓ Before and after a non-essential (parenthetical) clause.
  • ✓ Before a FANBOYS joining two independent clauses.
  • ✓ Between items in a list of three or more.
  • ✓ Between coordinate adjectives that independently modify the noun.

When a Comma Is NOT Used

  • ✗ Between a subject and its verb.
  • ✗ Before a subordinate clause that follows the main clause ("left because she was tired" — no comma before "because").
  • ✗ Before a FANBOYS when one side is a phrase, not an IC.
  • ✗ After a FANBOYS conjunction.
  • ✗ Between a verb and its object or complement.

Golden Rule

For SVA: always cross out the material between subject and verb. For modifiers: the noun being modified must immediately follow the modifying phrase. For apostrophes: pronouns never use apostrophes for possession — only for contractions.

{/* ── Section 4: SVA Decision Tree ── */}
{ sectionsRef.current[4] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

SVA Decision Tree

Work through subject-verb agreement step by step. Find the true subject, then match the verb.

{/* ── Section 5: Practice ── */}
{ sectionsRef.current[5] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

Practice Questions

{FORM_STRUCTURE_EASY.slice(0, 2).map((q) => ( ))} {FORM_STRUCTURE_MEDIUM.slice(0, 1).map((q) => ( ))}
); }; export default EBRWFormStructureSenseLesson;