diff --git a/web/src/components/general/BgPig.tsx b/web/src/components/general/BgPig.tsx
index 1a29640..af6d6ea 100644
--- a/web/src/components/general/BgPig.tsx
+++ b/web/src/components/general/BgPig.tsx
@@ -1,17 +1,8 @@
"use client";
import { PIG_NAMES } from "@/lib/common";
+import { Illustration } from "./Illustration";
+import { PIG_FILES } from "./graphics/pigs";
import styles from "./pig.module.scss";
-import { ChillPig } from "./pigs/simple/ChillPig";
-import { DancePig } from "./pigs/simple/DancePig";
-import { DrinkPig } from "./pigs/simple/DrinkPig";
-import { GuardPig } from "./pigs/simple/GuardPig";
-import { KeyPig } from "./pigs/simple/KeyPig";
-import { ListenPig } from "./pigs/simple/ListenPig";
-import { LogoPig } from "./pigs/simple/LogoPig";
-import { MusicPig } from "./pigs/simple/MusicPig";
-import { PeekPig } from "./pigs/simple/PeekPig";
-import { PointPig } from "./pigs/simple/PointPig";
-import { StudentPig } from "./pigs/simple/StudentPig";
import { useInView } from "react-intersection-observer";
export const BgPig = ({
@@ -34,17 +25,7 @@ export const BgPig = ({
style={{ "--color-pig": color } as React.CSSProperties}
data-inview={IsInView}
>
- {type === "logo" && }
- {type === "music" && }
- {type === "drink" && }
- {type === "dance" && }
- {type === "point" && }
- {type === "student" && }
- {type === "listen" && }
- {type === "guard" && }
- {type === "key" && }
- {type === "chill" && }
- {type === "peek" && }
+
- {type === "pigHeadLogo" &&
-
-
-
-
- }
-
- {type === "key" && (
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "ticket" && (
-
-
-
-
-
-
-
-
- )}
-
- {type === "shield" && (
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "bottle" && (
-
-
-
-
-
- )}
-
- {type === "lostProperty" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "pigsty" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "wheelchair" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "clock" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "parking" && (
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "coins" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "studioMole" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "studioCalendar" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "studioDisco" && (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
- {type === "studioGuitar" && (
-
-
-
-
-
-
-
- )}
-
- {type === "studioNote" && (
-
-
-
- )}
-
- {type === "email" && (
-
-
-
- )}
+ {file &&
}
);
}
diff --git a/web/src/components/general/Illustration.tsx b/web/src/components/general/Illustration.tsx
new file mode 100644
index 0000000..e2d6c8f
--- /dev/null
+++ b/web/src/components/general/Illustration.tsx
@@ -0,0 +1,23 @@
+export type SvgFile = { src: string; width: number; height: number };
+
+// Draws artwork that lives in its own SVG file (see ./graphics). Inline, the
+// path data would travel with every page; as a file it is fetched once and
+// cached. `