From 088cc4179ddbe1860620e318c4c004f6e0fb8bf3 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 26 Jun 2026 21:58:25 +0000 Subject: [PATCH] Add 19 original animal doodle subjects for Early Beginner --- src/lib/curriculum.animals.ts | 405 ++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100644 src/lib/curriculum.animals.ts diff --git a/src/lib/curriculum.animals.ts b/src/lib/curriculum.animals.ts new file mode 100644 index 0000000..f210b58 --- /dev/null +++ b/src/lib/curriculum.animals.ts @@ -0,0 +1,405 @@ +/* AUTO-GENERATED by gen_animals.py — Early Beginner animals (original cute doodles). */ +import type { Lesson, LessonStep } from "./curriculum"; + +const LION_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The mane`, instruction:`Draw a big circle for the fluffy mane.`, lines:[``] }, + { n:2, title:`The face`, instruction:`Draw a round face inside.`, lines:[``] }, + { n:3, title:`The ears`, instruction:`Add two little ears.`, lines:[``,``] }, +]; + +const LION_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Eyes & nose`, instruction:`Add eyes and a nose.`, lines:[``,``,``] }, + { n:2, title:`Big smile`, instruction:`Add the mouth.`, lines:[``,``,``] }, + { n:3, title:`Mane fluff`, instruction:`Add fluffy lines around the mane.`, lines:[``,``,``,``,``,``,``,``] }, +]; + +const LION_OUTLINE_SVG = LION_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const LION_DETAIL_SVG = LION_OUTLINE_SVG + "\n" + LION_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const LION_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"lion", subjectName:`Lion`, subjectEmoji:`🦁`, emoji:`🦁`, order:20, sublevel:201, slug:"lion-outline", title:`Lion \u00b7 Outline`, subject:`lion outline`, intro:`Let\u2019s draw Lion\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Lion Legend`, phase:"outline", steps:LION_OUTLINE_STEPS }; +export const LION_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"lion", subjectName:`Lion`, subjectEmoji:`🦁`, emoji:`🦁`, order:20, sublevel:202, slug:"lion-detail", title:`Lion \u00b7 Details`, subject:`lion details`, intro:`Now add the details that bring your lion to life.`, badgeKey:"early-beginner-20-lion", badgeName:`Lion Legend`, phase:"detail", baseSvg:LION_OUTLINE_SVG, steps:LION_DETAIL_STEPS }; +export const LION_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"lion", subjectName:`Lion`, subjectEmoji:`🦁`, emoji:`🦁`, order:20, sublevel:203, slug:"lion-extra", title:`Lion \u00b7 Color it!`, subject:`color the lion`, intro:`Bring your lion to life! Color it in.`, badgeKey:"", badgeName:`Lion Legend`, phase:"extra", baseSvg:LION_DETAIL_SVG, steps:[] }; + +const ELEPHANT_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a big round body.`, lines:[``] }, + { n:2, title:`The head`, instruction:`Add a round head on the left.`, lines:[``] }, + { n:3, title:`The trunk`, instruction:`Curl a trunk down from the head.`, lines:[``] }, + { n:4, title:`The legs`, instruction:`Add chunky legs.`, lines:[``,``,``] }, +]; + +const ELEPHANT_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The ear`, instruction:`Add a big floppy ear.`, lines:[``] }, + { n:2, title:`Eye & tusk`, instruction:`Add an eye and a tusk.`, lines:[``,``] }, + { n:3, title:`The tail`, instruction:`Add a little tail.`, lines:[``] }, +]; + +const ELEPHANT_OUTLINE_SVG = ELEPHANT_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const ELEPHANT_DETAIL_SVG = ELEPHANT_OUTLINE_SVG + "\n" + ELEPHANT_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const ELEPHANT_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"elephant", subjectName:`Elephant`, subjectEmoji:`🐘`, emoji:`🐘`, order:21, sublevel:211, slug:"elephant-outline", title:`Elephant \u00b7 Outline`, subject:`elephant outline`, intro:`Let\u2019s draw Elephant\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Elephant Pal`, phase:"outline", steps:ELEPHANT_OUTLINE_STEPS }; +export const ELEPHANT_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"elephant", subjectName:`Elephant`, subjectEmoji:`🐘`, emoji:`🐘`, order:21, sublevel:212, slug:"elephant-detail", title:`Elephant \u00b7 Details`, subject:`elephant details`, intro:`Now add the details that bring your elephant to life.`, badgeKey:"early-beginner-21-elephant", badgeName:`Elephant Pal`, phase:"detail", baseSvg:ELEPHANT_OUTLINE_SVG, steps:ELEPHANT_DETAIL_STEPS }; +export const ELEPHANT_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"elephant", subjectName:`Elephant`, subjectEmoji:`🐘`, emoji:`🐘`, order:21, sublevel:213, slug:"elephant-extra", title:`Elephant \u00b7 Color it!`, subject:`color the elephant`, intro:`Bring your elephant to life! Color it in.`, badgeKey:"", badgeName:`Elephant Pal`, phase:"extra", baseSvg:ELEPHANT_DETAIL_SVG, steps:[] }; + +const GIRAFFE_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw an oval body.`, lines:[``] }, + { n:2, title:`The neck`, instruction:`Draw a long tall neck.`, lines:[``] }, + { n:3, title:`The head`, instruction:`Add a small head on top.`, lines:[``] }, + { n:4, title:`The legs`, instruction:`Add four long legs.`, lines:[``,``,``,``] }, +]; + +const GIRAFFE_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Horns & ear`, instruction:`Add little horns and an ear.`, lines:[``,``,``,``,``] }, + { n:2, title:`The face`, instruction:`Add an eye and a snout.`, lines:[``,``] }, + { n:3, title:`Spots`, instruction:`Add some spots.`, lines:[``,``,``,``,``] }, +]; + +const GIRAFFE_OUTLINE_SVG = GIRAFFE_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const GIRAFFE_DETAIL_SVG = GIRAFFE_OUTLINE_SVG + "\n" + GIRAFFE_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const GIRAFFE_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"giraffe", subjectName:`Giraffe`, subjectEmoji:`🦒`, emoji:`🦒`, order:22, sublevel:221, slug:"giraffe-outline", title:`Giraffe \u00b7 Outline`, subject:`giraffe outline`, intro:`Let\u2019s draw Giraffe\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Tall Giraffe`, phase:"outline", steps:GIRAFFE_OUTLINE_STEPS }; +export const GIRAFFE_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"giraffe", subjectName:`Giraffe`, subjectEmoji:`🦒`, emoji:`🦒`, order:22, sublevel:222, slug:"giraffe-detail", title:`Giraffe \u00b7 Details`, subject:`giraffe details`, intro:`Now add the details that bring your giraffe to life.`, badgeKey:"early-beginner-22-giraffe", badgeName:`Tall Giraffe`, phase:"detail", baseSvg:GIRAFFE_OUTLINE_SVG, steps:GIRAFFE_DETAIL_STEPS }; +export const GIRAFFE_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"giraffe", subjectName:`Giraffe`, subjectEmoji:`🦒`, emoji:`🦒`, order:22, sublevel:223, slug:"giraffe-extra", title:`Giraffe \u00b7 Color it!`, subject:`color the giraffe`, intro:`Bring your giraffe to life! Color it in.`, badgeKey:"", badgeName:`Tall Giraffe`, phase:"extra", baseSvg:GIRAFFE_DETAIL_SVG, steps:[] }; + +const ZEBRA_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw an oval body.`, lines:[``] }, + { n:2, title:`The head`, instruction:`Add a head up to the left.`, lines:[``] }, + { n:3, title:`The neck`, instruction:`Join the head to the body.`, lines:[``] }, + { n:4, title:`The legs`, instruction:`Add four legs.`, lines:[``,``,``,``] }, +]; + +const ZEBRA_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add an eye, snout and ear.`, lines:[``,``,``] }, + { n:2, title:`Mane & tail`, instruction:`Add a spiky mane and a tail.`, lines:[``,``,``] }, + { n:3, title:`Stripes`, instruction:`Add bold stripes.`, lines:[``,``,``] }, +]; + +const ZEBRA_OUTLINE_SVG = ZEBRA_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const ZEBRA_DETAIL_SVG = ZEBRA_OUTLINE_SVG + "\n" + ZEBRA_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const ZEBRA_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"zebra", subjectName:`Zebra`, subjectEmoji:`🦓`, emoji:`🦓`, order:23, sublevel:231, slug:"zebra-outline", title:`Zebra \u00b7 Outline`, subject:`zebra outline`, intro:`Let\u2019s draw Zebra\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Stripe Star`, phase:"outline", steps:ZEBRA_OUTLINE_STEPS }; +export const ZEBRA_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"zebra", subjectName:`Zebra`, subjectEmoji:`🦓`, emoji:`🦓`, order:23, sublevel:232, slug:"zebra-detail", title:`Zebra \u00b7 Details`, subject:`zebra details`, intro:`Now add the details that bring your zebra to life.`, badgeKey:"early-beginner-23-zebra", badgeName:`Stripe Star`, phase:"detail", baseSvg:ZEBRA_OUTLINE_SVG, steps:ZEBRA_DETAIL_STEPS }; +export const ZEBRA_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"zebra", subjectName:`Zebra`, subjectEmoji:`🦓`, emoji:`🦓`, order:23, sublevel:233, slug:"zebra-extra", title:`Zebra \u00b7 Color it!`, subject:`color the zebra`, intro:`Bring your zebra to life! Color it in.`, badgeKey:"", badgeName:`Stripe Star`, phase:"extra", baseSvg:ZEBRA_DETAIL_SVG, steps:[] }; + +const RHINO_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a big oval body.`, lines:[``] }, + { n:2, title:`The head`, instruction:`Add a big head on the left.`, lines:[``] }, + { n:3, title:`The horn`, instruction:`Add a pointy horn.`, lines:[``] }, + { n:4, title:`The legs`, instruction:`Add sturdy legs.`, lines:[``,``,``] }, +]; + +const RHINO_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Eye & ear`, instruction:`Add an eye and an ear.`, lines:[``,``] }, + { n:2, title:`Small horn & mouth`, instruction:`Add a second horn and mouth.`, lines:[``,``] }, + { n:3, title:`The tail`, instruction:`Add a little tail.`, lines:[``] }, +]; + +const RHINO_OUTLINE_SVG = RHINO_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const RHINO_DETAIL_SVG = RHINO_OUTLINE_SVG + "\n" + RHINO_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const RHINO_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"rhino", subjectName:`Rhino`, subjectEmoji:`🦏`, emoji:`🦏`, order:24, sublevel:241, slug:"rhino-outline", title:`Rhino \u00b7 Outline`, subject:`rhino outline`, intro:`Let\u2019s draw Rhino\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Rhino Rumble`, phase:"outline", steps:RHINO_OUTLINE_STEPS }; +export const RHINO_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"rhino", subjectName:`Rhino`, subjectEmoji:`🦏`, emoji:`🦏`, order:24, sublevel:242, slug:"rhino-detail", title:`Rhino \u00b7 Details`, subject:`rhino details`, intro:`Now add the details that bring your rhino to life.`, badgeKey:"early-beginner-24-rhino", badgeName:`Rhino Rumble`, phase:"detail", baseSvg:RHINO_OUTLINE_SVG, steps:RHINO_DETAIL_STEPS }; +export const RHINO_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"rhino", subjectName:`Rhino`, subjectEmoji:`🦏`, emoji:`🦏`, order:24, sublevel:243, slug:"rhino-extra", title:`Rhino \u00b7 Color it!`, subject:`color the rhino`, intro:`Bring your rhino to life! Color it in.`, badgeKey:"", badgeName:`Rhino Rumble`, phase:"extra", baseSvg:RHINO_DETAIL_SVG, steps:[] }; + +const LEOPARD_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a sitting body.`, lines:[``] }, + { n:4, title:`The paws`, instruction:`Add two front paws.`, lines:[``,``] }, +]; + +const LEOPARD_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes, nose and mouth.`, lines:[``,``,``,``] }, + { n:2, title:`Whiskers & tail`, instruction:`Add whiskers and a curvy tail.`, lines:[``,``,``] }, + { n:3, title:`Spots`, instruction:`Add leopard spots.`, lines:[``,``,``,``,``] }, +]; + +const LEOPARD_OUTLINE_SVG = LEOPARD_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const LEOPARD_DETAIL_SVG = LEOPARD_OUTLINE_SVG + "\n" + LEOPARD_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const LEOPARD_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"leopard", subjectName:`Leopard`, subjectEmoji:`🐆`, emoji:`🐆`, order:25, sublevel:251, slug:"leopard-outline", title:`Leopard \u00b7 Outline`, subject:`leopard outline`, intro:`Let\u2019s draw Leopard\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Spotty Leopard`, phase:"outline", steps:LEOPARD_OUTLINE_STEPS }; +export const LEOPARD_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"leopard", subjectName:`Leopard`, subjectEmoji:`🐆`, emoji:`🐆`, order:25, sublevel:252, slug:"leopard-detail", title:`Leopard \u00b7 Details`, subject:`leopard details`, intro:`Now add the details that bring your leopard to life.`, badgeKey:"early-beginner-25-leopard", badgeName:`Spotty Leopard`, phase:"detail", baseSvg:LEOPARD_OUTLINE_SVG, steps:LEOPARD_DETAIL_STEPS }; +export const LEOPARD_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"leopard", subjectName:`Leopard`, subjectEmoji:`🐆`, emoji:`🐆`, order:25, sublevel:253, slug:"leopard-extra", title:`Leopard \u00b7 Color it!`, subject:`color the leopard`, intro:`Bring your leopard to life! Color it in.`, badgeKey:"", badgeName:`Spotty Leopard`, phase:"extra", baseSvg:LEOPARD_DETAIL_SVG, steps:[] }; + +const TIGER_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a sitting body.`, lines:[``] }, +]; + +const TIGER_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes, nose and mouth.`, lines:[``,``,``,``,``,``] }, + { n:2, title:`Cheeks`, instruction:`Add fluffy cheeks.`, lines:[``,``] }, + { n:3, title:`Stripes`, instruction:`Add tiger stripes.`, lines:[``,``,``,``,``] }, +]; + +const TIGER_OUTLINE_SVG = TIGER_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const TIGER_DETAIL_SVG = TIGER_OUTLINE_SVG + "\n" + TIGER_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const TIGER_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"tiger", subjectName:`Tiger`, subjectEmoji:`🐯`, emoji:`🐯`, order:26, sublevel:261, slug:"tiger-outline", title:`Tiger \u00b7 Outline`, subject:`tiger outline`, intro:`Let\u2019s draw Tiger\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Tiger Power`, phase:"outline", steps:TIGER_OUTLINE_STEPS }; +export const TIGER_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"tiger", subjectName:`Tiger`, subjectEmoji:`🐯`, emoji:`🐯`, order:26, sublevel:262, slug:"tiger-detail", title:`Tiger \u00b7 Details`, subject:`tiger details`, intro:`Now add the details that bring your tiger to life.`, badgeKey:"early-beginner-26-tiger", badgeName:`Tiger Power`, phase:"detail", baseSvg:TIGER_OUTLINE_SVG, steps:TIGER_DETAIL_STEPS }; +export const TIGER_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"tiger", subjectName:`Tiger`, subjectEmoji:`🐯`, emoji:`🐯`, order:26, sublevel:263, slug:"tiger-extra", title:`Tiger \u00b7 Color it!`, subject:`color the tiger`, intro:`Bring your tiger to life! Color it in.`, badgeKey:"", badgeName:`Tiger Power`, phase:"extra", baseSvg:TIGER_DETAIL_SVG, steps:[] }; + +const MONKEY_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two big round ears.`, lines:[``,``] }, + { n:3, title:`The face`, instruction:`Add a face patch.`, lines:[``] }, +]; + +const MONKEY_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The eyes`, instruction:`Add two eyes.`, lines:[``,``,``,``] }, + { n:2, title:`Nose & mouth`, instruction:`Add a nose and a smile.`, lines:[``,``,``] }, + { n:3, title:`Ear insides`, instruction:`Add the inside of the ears.`, lines:[``,``] }, +]; + +const MONKEY_OUTLINE_SVG = MONKEY_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const MONKEY_DETAIL_SVG = MONKEY_OUTLINE_SVG + "\n" + MONKEY_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const MONKEY_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"monkey", subjectName:`Monkey`, subjectEmoji:`🐵`, emoji:`🐵`, order:27, sublevel:271, slug:"monkey-outline", title:`Monkey \u00b7 Outline`, subject:`monkey outline`, intro:`Let\u2019s draw Monkey\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Cheeky Monkey`, phase:"outline", steps:MONKEY_OUTLINE_STEPS }; +export const MONKEY_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"monkey", subjectName:`Monkey`, subjectEmoji:`🐵`, emoji:`🐵`, order:27, sublevel:272, slug:"monkey-detail", title:`Monkey \u00b7 Details`, subject:`monkey details`, intro:`Now add the details that bring your monkey to life.`, badgeKey:"early-beginner-27-monkey", badgeName:`Cheeky Monkey`, phase:"detail", baseSvg:MONKEY_OUTLINE_SVG, steps:MONKEY_DETAIL_STEPS }; +export const MONKEY_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"monkey", subjectName:`Monkey`, subjectEmoji:`🐵`, emoji:`🐵`, order:27, sublevel:273, slug:"monkey-extra", title:`Monkey \u00b7 Color it!`, subject:`color the monkey`, intro:`Bring your monkey to life! Color it in.`, badgeKey:"", badgeName:`Cheeky Monkey`, phase:"extra", baseSvg:MONKEY_DETAIL_SVG, steps:[] }; + +const CROCODILE_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a long body and snout.`, lines:[``] }, + { n:2, title:`The legs`, instruction:`Add short legs.`, lines:[``,``] }, + { n:3, title:`The tail tip`, instruction:`Point the tail.`, lines:[``] }, +]; + +const CROCODILE_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The eye`, instruction:`Add a bumpy eye.`, lines:[``,``] }, + { n:2, title:`Teeth`, instruction:`Add a toothy grin.`, lines:[``,``,``,``] }, + { n:3, title:`Back ridges`, instruction:`Add spikes on the back.`, lines:[``,``,``] }, +]; + +const CROCODILE_OUTLINE_SVG = CROCODILE_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const CROCODILE_DETAIL_SVG = CROCODILE_OUTLINE_SVG + "\n" + CROCODILE_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const CROCODILE_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"crocodile", subjectName:`Crocodile`, subjectEmoji:`🐊`, emoji:`🐊`, order:28, sublevel:281, slug:"crocodile-outline", title:`Crocodile \u00b7 Outline`, subject:`crocodile outline`, intro:`Let\u2019s draw Crocodile\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Snappy Croc`, phase:"outline", steps:CROCODILE_OUTLINE_STEPS }; +export const CROCODILE_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"crocodile", subjectName:`Crocodile`, subjectEmoji:`🐊`, emoji:`🐊`, order:28, sublevel:282, slug:"crocodile-detail", title:`Crocodile \u00b7 Details`, subject:`crocodile details`, intro:`Now add the details that bring your crocodile to life.`, badgeKey:"early-beginner-28-crocodile", badgeName:`Snappy Croc`, phase:"detail", baseSvg:CROCODILE_OUTLINE_SVG, steps:CROCODILE_DETAIL_STEPS }; +export const CROCODILE_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"crocodile", subjectName:`Crocodile`, subjectEmoji:`🐊`, emoji:`🐊`, order:28, sublevel:283, slug:"crocodile-extra", title:`Crocodile \u00b7 Color it!`, subject:`color the crocodile`, intro:`Bring your crocodile to life! Color it in.`, badgeKey:"", badgeName:`Snappy Croc`, phase:"extra", baseSvg:CROCODILE_DETAIL_SVG, steps:[] }; + +const FOX_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Draw a pointy fox face.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two pointy ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a sitting body.`, lines:[``] }, + { n:4, title:`The tail`, instruction:`Add a bushy tail.`, lines:[``] }, +]; + +const FOX_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes and a nose.`, lines:[``,``,``] }, + { n:2, title:`Cheeks`, instruction:`Add fluffy cheeks.`, lines:[``,``] }, + { n:3, title:`Ear insides`, instruction:`Color the ears.`, lines:[``,``] }, +]; + +const FOX_OUTLINE_SVG = FOX_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const FOX_DETAIL_SVG = FOX_OUTLINE_SVG + "\n" + FOX_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const FOX_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"fox", subjectName:`Fox`, subjectEmoji:`🦊`, emoji:`🦊`, order:29, sublevel:291, slug:"fox-outline", title:`Fox \u00b7 Outline`, subject:`fox outline`, intro:`Let\u2019s draw Fox\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Foxy Friend`, phase:"outline", steps:FOX_OUTLINE_STEPS }; +export const FOX_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"fox", subjectName:`Fox`, subjectEmoji:`🦊`, emoji:`🦊`, order:29, sublevel:292, slug:"fox-detail", title:`Fox \u00b7 Details`, subject:`fox details`, intro:`Now add the details that bring your fox to life.`, badgeKey:"early-beginner-29-fox", badgeName:`Foxy Friend`, phase:"detail", baseSvg:FOX_OUTLINE_SVG, steps:FOX_DETAIL_STEPS }; +export const FOX_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"fox", subjectName:`Fox`, subjectEmoji:`🦊`, emoji:`🦊`, order:29, sublevel:293, slug:"fox-extra", title:`Fox \u00b7 Color it!`, subject:`color the fox`, intro:`Bring your fox to life! Color it in.`, badgeKey:"", badgeName:`Foxy Friend`, phase:"extra", baseSvg:FOX_DETAIL_SVG, steps:[] }; + +const BEAR_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two round ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a cuddly body.`, lines:[``] }, +]; + +const BEAR_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The snout`, instruction:`Add a snout and nose.`, lines:[``,``] }, + { n:2, title:`The eyes`, instruction:`Add two eyes.`, lines:[``,``] }, + { n:3, title:`Ear insides & tummy`, instruction:`Add details.`, lines:[``,``,``] }, +]; + +const BEAR_OUTLINE_SVG = BEAR_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const BEAR_DETAIL_SVG = BEAR_OUTLINE_SVG + "\n" + BEAR_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const BEAR_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"bear", subjectName:`Bear`, subjectEmoji:`🐻`, emoji:`🐻`, order:30, sublevel:301, slug:"bear-outline", title:`Bear \u00b7 Outline`, subject:`bear outline`, intro:`Let\u2019s draw Bear\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Bear Hug`, phase:"outline", steps:BEAR_OUTLINE_STEPS }; +export const BEAR_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"bear", subjectName:`Bear`, subjectEmoji:`🐻`, emoji:`🐻`, order:30, sublevel:302, slug:"bear-detail", title:`Bear \u00b7 Details`, subject:`bear details`, intro:`Now add the details that bring your bear to life.`, badgeKey:"early-beginner-30-bear", badgeName:`Bear Hug`, phase:"detail", baseSvg:BEAR_OUTLINE_SVG, steps:BEAR_DETAIL_STEPS }; +export const BEAR_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"bear", subjectName:`Bear`, subjectEmoji:`🐻`, emoji:`🐻`, order:30, sublevel:303, slug:"bear-extra", title:`Bear \u00b7 Color it!`, subject:`color the bear`, intro:`Bring your bear to life! Color it in.`, badgeKey:"", badgeName:`Bear Hug`, phase:"extra", baseSvg:BEAR_DETAIL_SVG, steps:[] }; + +const DEER_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw an oval head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two ears.`, lines:[``,``] }, + { n:3, title:`The antlers`, instruction:`Add branchy antlers.`, lines:[``,``,``,``] }, + { n:4, title:`The body`, instruction:`Add a small body.`, lines:[``] }, +]; + +const DEER_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes and a nose.`, lines:[``,``,``] }, + { n:2, title:`The snout`, instruction:`Add the snout line.`, lines:[``] }, +]; + +const DEER_OUTLINE_SVG = DEER_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const DEER_DETAIL_SVG = DEER_OUTLINE_SVG + "\n" + DEER_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const DEER_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"deer", subjectName:`Deer`, subjectEmoji:`🦌`, emoji:`🦌`, order:31, sublevel:311, slug:"deer-outline", title:`Deer \u00b7 Outline`, subject:`deer outline`, intro:`Let\u2019s draw Deer\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Deer Dear`, phase:"outline", steps:DEER_OUTLINE_STEPS }; +export const DEER_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"deer", subjectName:`Deer`, subjectEmoji:`🦌`, emoji:`🦌`, order:31, sublevel:312, slug:"deer-detail", title:`Deer \u00b7 Details`, subject:`deer details`, intro:`Now add the details that bring your deer to life.`, badgeKey:"early-beginner-31-deer", badgeName:`Deer Dear`, phase:"detail", baseSvg:DEER_OUTLINE_SVG, steps:DEER_DETAIL_STEPS }; +export const DEER_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"deer", subjectName:`Deer`, subjectEmoji:`🦌`, emoji:`🦌`, order:31, sublevel:313, slug:"deer-extra", title:`Deer \u00b7 Color it!`, subject:`color the deer`, intro:`Bring your deer to life! Color it in.`, badgeKey:"", badgeName:`Deer Dear`, phase:"extra", baseSvg:DEER_DETAIL_SVG, steps:[] }; + +const RABBIT_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two tall ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a round body.`, lines:[``] }, +]; + +const RABBIT_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes, nose and mouth.`, lines:[``,``,``,``] }, + { n:2, title:`Ears & whiskers`, instruction:`Add ear insides and whiskers.`, lines:[``,``,``,``] }, +]; + +const RABBIT_OUTLINE_SVG = RABBIT_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const RABBIT_DETAIL_SVG = RABBIT_OUTLINE_SVG + "\n" + RABBIT_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const RABBIT_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"rabbit", subjectName:`Rabbit`, subjectEmoji:`🐰`, emoji:`🐰`, order:32, sublevel:321, slug:"rabbit-outline", title:`Rabbit \u00b7 Outline`, subject:`rabbit outline`, intro:`Let\u2019s draw Rabbit\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Hoppy Rabbit`, phase:"outline", steps:RABBIT_OUTLINE_STEPS }; +export const RABBIT_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"rabbit", subjectName:`Rabbit`, subjectEmoji:`🐰`, emoji:`🐰`, order:32, sublevel:322, slug:"rabbit-detail", title:`Rabbit \u00b7 Details`, subject:`rabbit details`, intro:`Now add the details that bring your rabbit to life.`, badgeKey:"early-beginner-32-rabbit", badgeName:`Hoppy Rabbit`, phase:"detail", baseSvg:RABBIT_OUTLINE_SVG, steps:RABBIT_DETAIL_STEPS }; +export const RABBIT_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"rabbit", subjectName:`Rabbit`, subjectEmoji:`🐰`, emoji:`🐰`, order:32, sublevel:323, slug:"rabbit-extra", title:`Rabbit \u00b7 Color it!`, subject:`color the rabbit`, intro:`Bring your rabbit to life! Color it in.`, badgeKey:"", badgeName:`Hoppy Rabbit`, phase:"extra", baseSvg:RABBIT_DETAIL_SVG, steps:[] }; + +const HEDGEHOG_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a round spiky body.`, lines:[``] }, + { n:2, title:`The snout`, instruction:`Add a pointy snout.`, lines:[``] }, +]; + +const HEDGEHOG_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The spikes`, instruction:`Add zig-zag spikes.`, lines:[``,``,``,``] }, + { n:2, title:`The face`, instruction:`Add an eye and a nose.`, lines:[``,``] }, + { n:3, title:`The feet`, instruction:`Add little feet.`, lines:[``,``,``] }, +]; + +const HEDGEHOG_OUTLINE_SVG = HEDGEHOG_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const HEDGEHOG_DETAIL_SVG = HEDGEHOG_OUTLINE_SVG + "\n" + HEDGEHOG_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const HEDGEHOG_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"hedgehog", subjectName:`Hedgehog`, subjectEmoji:`🦔`, emoji:`🦔`, order:33, sublevel:331, slug:"hedgehog-outline", title:`Hedgehog \u00b7 Outline`, subject:`hedgehog outline`, intro:`Let\u2019s draw Hedgehog\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Prickly Pal`, phase:"outline", steps:HEDGEHOG_OUTLINE_STEPS }; +export const HEDGEHOG_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"hedgehog", subjectName:`Hedgehog`, subjectEmoji:`🦔`, emoji:`🦔`, order:33, sublevel:332, slug:"hedgehog-detail", title:`Hedgehog \u00b7 Details`, subject:`hedgehog details`, intro:`Now add the details that bring your hedgehog to life.`, badgeKey:"early-beginner-33-hedgehog", badgeName:`Prickly Pal`, phase:"detail", baseSvg:HEDGEHOG_OUTLINE_SVG, steps:HEDGEHOG_DETAIL_STEPS }; +export const HEDGEHOG_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"hedgehog", subjectName:`Hedgehog`, subjectEmoji:`🦔`, emoji:`🦔`, order:33, sublevel:333, slug:"hedgehog-extra", title:`Hedgehog \u00b7 Color it!`, subject:`color the hedgehog`, intro:`Bring your hedgehog to life! Color it in.`, badgeKey:"", badgeName:`Prickly Pal`, phase:"extra", baseSvg:HEDGEHOG_DETAIL_SVG, steps:[] }; + +const OWL_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a rounded owl body.`, lines:[``] }, + { n:2, title:`Ear tufts`, instruction:`Add two ear tufts.`, lines:[``,``] }, + { n:3, title:`The wings`, instruction:`Add two wings.`, lines:[``,``] }, +]; + +const OWL_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Big eyes`, instruction:`Add two big eyes.`, lines:[``,``,``,``] }, + { n:2, title:`Beak & feet`, instruction:`Add a beak and feet.`, lines:[``,``,``,``,``] }, + { n:3, title:`The tummy`, instruction:`Add a tummy curve.`, lines:[``] }, +]; + +const OWL_OUTLINE_SVG = OWL_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const OWL_DETAIL_SVG = OWL_OUTLINE_SVG + "\n" + OWL_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const OWL_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"owl", subjectName:`Owl`, subjectEmoji:`🦉`, emoji:`🦉`, order:34, sublevel:341, slug:"owl-outline", title:`Owl \u00b7 Outline`, subject:`owl outline`, intro:`Let\u2019s draw Owl\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Wise Owl`, phase:"outline", steps:OWL_OUTLINE_STEPS }; +export const OWL_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"owl", subjectName:`Owl`, subjectEmoji:`🦉`, emoji:`🦉`, order:34, sublevel:342, slug:"owl-detail", title:`Owl \u00b7 Details`, subject:`owl details`, intro:`Now add the details that bring your owl to life.`, badgeKey:"early-beginner-34-owl", badgeName:`Wise Owl`, phase:"detail", baseSvg:OWL_OUTLINE_SVG, steps:OWL_DETAIL_STEPS }; +export const OWL_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"owl", subjectName:`Owl`, subjectEmoji:`🦉`, emoji:`🦉`, order:34, sublevel:343, slug:"owl-extra", title:`Owl \u00b7 Color it!`, subject:`color the owl`, intro:`Bring your owl to life! Color it in.`, badgeKey:"", badgeName:`Wise Owl`, phase:"extra", baseSvg:OWL_DETAIL_SVG, steps:[] }; + +const CAT_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The head`, instruction:`Draw a round head.`, lines:[``] }, + { n:2, title:`The ears`, instruction:`Add two pointy ears.`, lines:[``,``] }, + { n:3, title:`The body`, instruction:`Add a sitting body.`, lines:[``] }, + { n:4, title:`The tail`, instruction:`Add a curvy tail.`, lines:[``] }, +]; + +const CAT_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`The face`, instruction:`Add eyes, nose and mouth.`, lines:[``,``,``,``] }, + { n:2, title:`Whiskers`, instruction:`Add whiskers.`, lines:[``,``,``,``] }, +]; + +const CAT_OUTLINE_SVG = CAT_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const CAT_DETAIL_SVG = CAT_OUTLINE_SVG + "\n" + CAT_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const CAT_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"cat", subjectName:`Cat`, subjectEmoji:`🐱`, emoji:`🐱`, order:35, sublevel:351, slug:"cat-outline", title:`Cat \u00b7 Outline`, subject:`cat outline`, intro:`Let\u2019s draw Cat\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Cool Cat`, phase:"outline", steps:CAT_OUTLINE_STEPS }; +export const CAT_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"cat", subjectName:`Cat`, subjectEmoji:`🐱`, emoji:`🐱`, order:35, sublevel:352, slug:"cat-detail", title:`Cat \u00b7 Details`, subject:`cat details`, intro:`Now add the details that bring your cat to life.`, badgeKey:"early-beginner-35-cat", badgeName:`Cool Cat`, phase:"detail", baseSvg:CAT_OUTLINE_SVG, steps:CAT_DETAIL_STEPS }; +export const CAT_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"cat", subjectName:`Cat`, subjectEmoji:`🐱`, emoji:`🐱`, order:35, sublevel:353, slug:"cat-extra", title:`Cat \u00b7 Color it!`, subject:`color the cat`, intro:`Bring your cat to life! Color it in.`, badgeKey:"", badgeName:`Cool Cat`, phase:"extra", baseSvg:CAT_DETAIL_SVG, steps:[] }; + +const TURTLE_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The shell`, instruction:`Draw a dome shell.`, lines:[``] }, + { n:2, title:`Head & legs`, instruction:`Add a head, legs and tail.`, lines:[``,``,``,``] }, +]; + +const TURTLE_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Shell pattern`, instruction:`Add a shell pattern.`, lines:[``,``,``] }, + { n:2, title:`The eye`, instruction:`Add a friendly eye.`, lines:[``] }, +]; + +const TURTLE_OUTLINE_SVG = TURTLE_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const TURTLE_DETAIL_SVG = TURTLE_OUTLINE_SVG + "\n" + TURTLE_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const TURTLE_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"turtle", subjectName:`Turtle`, subjectEmoji:`🐢`, emoji:`🐢`, order:36, sublevel:361, slug:"turtle-outline", title:`Turtle \u00b7 Outline`, subject:`turtle outline`, intro:`Let\u2019s draw Turtle\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Turtle Buddy`, phase:"outline", steps:TURTLE_OUTLINE_STEPS }; +export const TURTLE_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"turtle", subjectName:`Turtle`, subjectEmoji:`🐢`, emoji:`🐢`, order:36, sublevel:362, slug:"turtle-detail", title:`Turtle \u00b7 Details`, subject:`turtle details`, intro:`Now add the details that bring your turtle to life.`, badgeKey:"early-beginner-36-turtle", badgeName:`Turtle Buddy`, phase:"detail", baseSvg:TURTLE_OUTLINE_SVG, steps:TURTLE_DETAIL_STEPS }; +export const TURTLE_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"turtle", subjectName:`Turtle`, subjectEmoji:`🐢`, emoji:`🐢`, order:36, sublevel:363, slug:"turtle-extra", title:`Turtle \u00b7 Color it!`, subject:`color the turtle`, intro:`Bring your turtle to life! Color it in.`, badgeKey:"", badgeName:`Turtle Buddy`, phase:"extra", baseSvg:TURTLE_DETAIL_SVG, steps:[] }; + +const BIRD_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw an egg-shaped body.`, lines:[``] }, + { n:2, title:`The head`, instruction:`Add a round head.`, lines:[``] }, + { n:3, title:`The tail`, instruction:`Add a pointy tail.`, lines:[``] }, + { n:4, title:`The wing`, instruction:`Add a wing.`, lines:[``] }, +]; + +const BIRD_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Beak & eye`, instruction:`Add a beak and an eye.`, lines:[``,``] }, + { n:2, title:`The legs`, instruction:`Add two legs.`, lines:[``,``] }, +]; + +const BIRD_OUTLINE_SVG = BIRD_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const BIRD_DETAIL_SVG = BIRD_OUTLINE_SVG + "\n" + BIRD_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const BIRD_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"bird", subjectName:`Bird`, subjectEmoji:`🐦`, emoji:`🐦`, order:37, sublevel:371, slug:"bird-outline", title:`Bird \u00b7 Outline`, subject:`bird outline`, intro:`Let\u2019s draw Bird\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Little Birdie`, phase:"outline", steps:BIRD_OUTLINE_STEPS }; +export const BIRD_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"bird", subjectName:`Bird`, subjectEmoji:`🐦`, emoji:`🐦`, order:37, sublevel:372, slug:"bird-detail", title:`Bird \u00b7 Details`, subject:`bird details`, intro:`Now add the details that bring your bird to life.`, badgeKey:"early-beginner-37-bird", badgeName:`Little Birdie`, phase:"detail", baseSvg:BIRD_OUTLINE_SVG, steps:BIRD_DETAIL_STEPS }; +export const BIRD_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"bird", subjectName:`Bird`, subjectEmoji:`🐦`, emoji:`🐦`, order:37, sublevel:373, slug:"bird-extra", title:`Bird \u00b7 Color it!`, subject:`color the bird`, intro:`Bring your bird to life! Color it in.`, badgeKey:"", badgeName:`Little Birdie`, phase:"extra", baseSvg:BIRD_DETAIL_SVG, steps:[] }; + +const BUTTERFLY_OUTLINE_STEPS: LessonStep[] = [ + { n:1, title:`The body`, instruction:`Draw a thin body.`, lines:[``] }, + { n:2, title:`Top wings`, instruction:`Add two big top wings.`, lines:[``,``] }, + { n:3, title:`Bottom wings`, instruction:`Add two bottom wings.`, lines:[``,``] }, +]; + +const BUTTERFLY_DETAIL_STEPS: LessonStep[] = [ + { n:1, title:`Antennae`, instruction:`Add two antennae.`, lines:[``,``] }, + { n:2, title:`Wing dots`, instruction:`Add pretty dots.`, lines:[``,``,``,``] }, +]; + +const BUTTERFLY_OUTLINE_SVG = BUTTERFLY_OUTLINE_STEPS.flatMap(x=>x.lines||[]).join("\n"); +const BUTTERFLY_DETAIL_SVG = BUTTERFLY_OUTLINE_SVG + "\n" + BUTTERFLY_DETAIL_STEPS.flatMap(x=>x.lines||[]).join("\n"); +export const BUTTERFLY_OUTLINE_LESSON: Lesson = { level:"early-beginner", subjectKey:"butterfly", subjectName:`Butterfly`, subjectEmoji:`🦋`, emoji:`🦋`, order:38, sublevel:381, slug:"butterfly-outline", title:`Butterfly \u00b7 Outline`, subject:`butterfly outline`, intro:`Let\u2019s draw Butterfly\u2019s outline, one line at a time. Watch each line, then trace it!`, badgeKey:"", badgeName:`Flutter By`, phase:"outline", steps:BUTTERFLY_OUTLINE_STEPS }; +export const BUTTERFLY_DETAIL_LESSON: Lesson = { level:"early-beginner", subjectKey:"butterfly", subjectName:`Butterfly`, subjectEmoji:`🦋`, emoji:`🦋`, order:38, sublevel:382, slug:"butterfly-detail", title:`Butterfly \u00b7 Details`, subject:`butterfly details`, intro:`Now add the details that bring your butterfly to life.`, badgeKey:"early-beginner-38-butterfly", badgeName:`Flutter By`, phase:"detail", baseSvg:BUTTERFLY_OUTLINE_SVG, steps:BUTTERFLY_DETAIL_STEPS }; +export const BUTTERFLY_EXTRA_LESSON: Lesson = { level:"early-beginner", subjectKey:"butterfly", subjectName:`Butterfly`, subjectEmoji:`🦋`, emoji:`🦋`, order:38, sublevel:383, slug:"butterfly-extra", title:`Butterfly \u00b7 Color it!`, subject:`color the butterfly`, intro:`Bring your butterfly to life! Color it in.`, badgeKey:"", badgeName:`Flutter By`, phase:"extra", baseSvg:BUTTERFLY_DETAIL_SVG, steps:[] }; + +export const ANIMAL_LESSONS: Lesson[] = [ + LION_OUTLINE_LESSON, + LION_DETAIL_LESSON, + LION_EXTRA_LESSON, + ELEPHANT_OUTLINE_LESSON, + ELEPHANT_DETAIL_LESSON, + ELEPHANT_EXTRA_LESSON, + GIRAFFE_OUTLINE_LESSON, + GIRAFFE_DETAIL_LESSON, + GIRAFFE_EXTRA_LESSON, + ZEBRA_OUTLINE_LESSON, + ZEBRA_DETAIL_LESSON, + ZEBRA_EXTRA_LESSON, + RHINO_OUTLINE_LESSON, + RHINO_DETAIL_LESSON, + RHINO_EXTRA_LESSON, + LEOPARD_OUTLINE_LESSON, + LEOPARD_DETAIL_LESSON, + LEOPARD_EXTRA_LESSON, + TIGER_OUTLINE_LESSON, + TIGER_DETAIL_LESSON, + TIGER_EXTRA_LESSON, + MONKEY_OUTLINE_LESSON, + MONKEY_DETAIL_LESSON, + MONKEY_EXTRA_LESSON, + CROCODILE_OUTLINE_LESSON, + CROCODILE_DETAIL_LESSON, + CROCODILE_EXTRA_LESSON, + FOX_OUTLINE_LESSON, + FOX_DETAIL_LESSON, + FOX_EXTRA_LESSON, + BEAR_OUTLINE_LESSON, + BEAR_DETAIL_LESSON, + BEAR_EXTRA_LESSON, + DEER_OUTLINE_LESSON, + DEER_DETAIL_LESSON, + DEER_EXTRA_LESSON, + RABBIT_OUTLINE_LESSON, + RABBIT_DETAIL_LESSON, + RABBIT_EXTRA_LESSON, + HEDGEHOG_OUTLINE_LESSON, + HEDGEHOG_DETAIL_LESSON, + HEDGEHOG_EXTRA_LESSON, + OWL_OUTLINE_LESSON, + OWL_DETAIL_LESSON, + OWL_EXTRA_LESSON, + CAT_OUTLINE_LESSON, + CAT_DETAIL_LESSON, + CAT_EXTRA_LESSON, + TURTLE_OUTLINE_LESSON, + TURTLE_DETAIL_LESSON, + TURTLE_EXTRA_LESSON, + BIRD_OUTLINE_LESSON, + BIRD_DETAIL_LESSON, + BIRD_EXTRA_LESSON, + BUTTERFLY_OUTLINE_LESSON, + BUTTERFLY_DETAIL_LESSON, + BUTTERFLY_EXTRA_LESSON +];