import React, { useRef, useState, useEffect } from "react"; import { ArrowDown, Check, BookOpen, Scale, Calculator, ArrowLeftRight, Percent, } from "lucide-react"; import RatioVisualizerWidget from "../../../components/lessons/RatioVisualizerWidget"; import UnitConversionWidget from "../../../components/lessons/UnitConversionWidget"; import PercentChangeWidget from "../../../components/lessons/PercentChangeWidget"; import MultiStepPercentWidget from "../../../components/lessons/MultiStepPercentWidget"; import Quiz from "../../../components/lessons/Quiz"; import { PROPORTIONAL_QUIZ_DATA, PERCENTAGES_ADV_QUIZ, PERCENTAGES_QUIZ_DATA, } from "../../../utils/constants"; import { Frac } from "../../../components/Math"; interface LessonProps { onFinish?: () => void; } const ProportionalLesson: React.FC = ({ onFinish }) => { const [activeSection, setActiveSection] = useState(0); const sectionsRef = useRef<(HTMLElement | null)[]>([]); const scrollToSection = (index: number) => { setActiveSection(index); sectionsRef.current[index]?.scrollIntoView({ behavior: "smooth", block: "start", }); }; useEffect(() => { const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const index = sectionsRef.current.indexOf( entry.target as HTMLElement, ); if (index !== -1) { setActiveSection(index); } } }); }, { rootMargin: "-20% 0px -60% 0px" }, ); sectionsRef.current.forEach((section) => { if (section) observer.observe(section); }); return () => observer.disconnect(); }, []); const SectionMarker = ({ index, title, icon: Icon, }: { index: number; title: string; icon: any; }) => { const isActive = activeSection === index; const isPast = activeSection > index; return ( ); }; const allQuizzes = [ ...PROPORTIONAL_QUIZ_DATA, ...PERCENTAGES_ADV_QUIZ, ...PERCENTAGES_QUIZ_DATA, ]; return (
{/* Section 1: Ratios */}
{ sectionsRef.current[0] = el; }} className="min-h-screen flex flex-col justify-center mb-24 pt-20 lg:pt-0" >

Ratios & Proportions

A Ratio compares two quantities. A critical SAT skill is distinguishing between Part-to-Part and{" "} Part-to-Whole ratios, and knowing which one a question is asking for.

Part-to-Part

Compares one part of a whole to another part. Neither number is the total.

Boys : Girls = 3 : 2

Means: for every 3 boys there are 2 girls. Total parts = 5.

Part-to-Whole

Compares one part to the total. This is equivalent to a fraction or percentage.

Boys : Total = 3 : 5

Means: boys make up 3 out of 5 = 60% of the total group.

Cross-Multiplication for Proportions

When two ratios are equal (a proportion), cross-multiply to solve for an unknown:

= → a × d = b × c

Example: = → 3 × 20 = 4 × x → 60 = 4x → x = 15

The k-Multiplier Method

If a ratio is a : b, the actual amounts are ak{" "} and bk for some positive number k. Use this when you know the ratio and the total.

Ratio 3:2, Total = 25 → 3k + 2k = 25 → k = 5 → Parts: 15 and 10

Use the tool below to see how scaling a ratio (multiplying by{" "} k) keeps the proportions the same.

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

Dimensional Analysis

To convert units, multiply by conversion fractions equal to 1 (like 5280 ft per mile). Arrange the fractions so the units you don't want cancel out (top and bottom).

Step-by-Step Chain Multiplication

  1. Write the starting value as a fraction (e.g., 60 miles / 1 hour).
  2. Multiply by a conversion fraction that cancels the unit you want to remove.
  3. Repeat until only the desired units remain.
  4. Multiply all numerators, multiply all denominators, then divide.

Worked Example: Convert 60 miles/hour to feet/second

Step 1:{" "} Start with 60 miles/hr
Step 2: × (5280 ft / 1 mile) ← cancels "miles"
Step 3: × (1 hr / 3600 sec) ← cancels "hours"
Result:{" "} ={" "} ={" "} 88 feet per second

Notice how miles and hours both cancel, leaving only feet/second — exactly what was asked for.

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

Percent Increases & Decreases

The most important SAT skill for percentages is using{" "} multipliers — a single number that captures both the original value and the change.

Percent Increase

New = Original × (1 + r)

Where r is the rate as a decimal (e.g., 30% → r = 0.30)

Example: $200 increased by 15% → 200 × 1.15 ={" "} $230

Percent Decrease

New = Original × (1 − r)

Where r is the rate as a decimal (e.g., 25% → r = 0.25)

Example: $200 decreased by 25% → 200 × 0.75 ={" "} $150

Finding the Percent Change

% Change = × 100

Positive result = increase. Negative result = decrease.

Example: Old = 80, New = 100 → × 100 = 25% increase

{/* Section 4: Multi-Step Changes */}
{ sectionsRef.current[3] = el; }} className="min-h-screen flex flex-col justify-center mb-24" >

Multi-Step Percent Changes

Trap Alert: Percentages do not simply add up. An increase of 20% followed by a decrease of 20% does{" "} not bring you back to the start!

Why 20% Up then 20% Down ≠ 0%

Start: $100
+20%: 100 × 1.20 = $120
−20%: 120 × 0.80 = $96 ← not $100!

The decrease applies to the new (larger) amount, not the original.

The Multiplier Chain Method

For any sequence of percent changes, multiply all the multipliers together:

Final = Original × m₁ × m₂ × m₃ × ...
+20% then −20%: 1.20 × 0.80 = 0.96 →{" "} 4% net decrease
+50% then −50%: 1.50 × 0.50 = 0.75 →{" "} 25% net decrease

Compound Interest (Same Idea!)

A = P × (1 + r)ⁿ

P = principal, r = annual rate (decimal), n = number of years. This is just the multiplier chain with the same multiplier repeated n times.

Example: $1,000 at 5% for 3 years → 1000 × (1.05)³ ={" "} $1,157.63

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

Practice Time

{allQuizzes.map((quiz, idx) => (
))}

Topic Mastered!

); }; export default ProportionalLesson;