Initial commit: Interactives site
Astro-based site with 40+ interactive math games, puzzles, and explorations. Includes admin dashboard, todo system, blog, theme/subcategory navigation, and embed pages for iframe embedding. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
c5926b4213
265 changed files with 51899 additions and 0 deletions
46
src/lib/interactive-components.ts
Normal file
46
src/lib/interactive-components.ts
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import type { ComponentType } from "react";
|
||||
|
||||
type LazyImport = () => Promise<{ default: ComponentType<any> }>;
|
||||
|
||||
export const componentMap: Record<string, LazyImport> = {
|
||||
"binary-number-game": () => import("@/components/interactives/BinaryNumberGame"),
|
||||
"ternary-number-game": () => import("@/components/interactives/TernaryNumberGame"),
|
||||
"balanced-ternary-game": () => import("@/components/interactives/BalancedTernaryGame"),
|
||||
"zeckendorf-game": () => import("@/components/interactives/ZeckendorfGame"),
|
||||
"zeckendorf-search-trick": () => import("@/components/interactives/ZeckendorfSearchTrick"),
|
||||
"binary-search-trick": () => import("@/components/interactives/BinarySearchTrick"),
|
||||
"ternary-search-trick": () => import("@/components/interactives/TernarySearchTrick"),
|
||||
"game-of-sim": () => import("@/components/interactives/GameOfSim"),
|
||||
"northcotts-game": () => import("@/components/interactives/NorthcottsGame"),
|
||||
"nim-game": () => import("@/components/interactives/NimGame"),
|
||||
"assisted-nim-game": () => import("@/components/interactives/AssistedNimGame"),
|
||||
"gold-coin-game": () => import("@/components/interactives/GoldCoinGame"),
|
||||
"subtraction-game": () => import("@/components/interactives/SubtractionGame"),
|
||||
"craps-game": () => import("@/components/interactives/CrapsGame"),
|
||||
"bagchal-game": () => import("@/components/interactives/BagchalGame"),
|
||||
"guessing-game": () => import("@/components/interactives/GuessingGame"),
|
||||
"knights-puzzle": () => import("@/components/interactives/KnightsPuzzle"),
|
||||
"plate-swap-puzzle": () => import("@/components/interactives/PlateSwapPuzzle"),
|
||||
"chessboard-repaint-puzzle": () => import("@/components/interactives/ChessboardRepaintPuzzle"),
|
||||
"n-queens-puzzle": () => import("@/components/interactives/NQueensPuzzle"),
|
||||
"sikinia-parliament-puzzle": () => import("@/components/interactives/SikiniaParliamentPuzzle"),
|
||||
"bulgarian-solitaire": () => import("@/components/interactives/BulgarianSolitaire"),
|
||||
"pebble-placement-game": () => import("@/components/interactives/PebblePlacementGame"),
|
||||
"stacking-blocks": () => import("@/components/interactives/StackingBlocks"),
|
||||
"domino-retiling-puzzle": () => import("@/components/interactives/DominoRetilingPuzzle"),
|
||||
"asc-desc-grid-puzzle": () => import("@/components/interactives/AscDescGridPuzzle"),
|
||||
"ladybug-clock-puzzle": () => import("@/components/interactives/LadybugClockPuzzle"),
|
||||
"erdos-discrepancy-puzzle": () => import("@/components/interactives/ErdosDiscrepancyPuzzle"),
|
||||
"parity-bits-game": () => import("@/components/interactives/ParityBitsGame"),
|
||||
"rules-of-inference": () => import("@/components/interactives/RulesOfInferencePlayground"),
|
||||
"neighbor-sum-avoidance": () => import("@/components/interactives/NeighborSumAvoidance"),
|
||||
"burnsides-lemma": () => import("@/components/interactives/BurnsidesLemma"),
|
||||
"cube-coloring": () => import("@/components/interactives/CubeColoring"),
|
||||
"presents-puzzle": () => import("@/components/interactives/PresentsPuzzle"),
|
||||
"ferrers-rogers-ramanujan": () => import("@/components/interactives/FerrersRogersRamanujan"),
|
||||
"grid-tiling-puzzle": () => import("@/components/interactives/GridTilingPuzzle"),
|
||||
"sunny-lines-puzzle": () => import("@/components/interactives/SunnyLinesPuzzle"),
|
||||
"rent-division-puzzle": () => import("@/components/interactives/RentDivisionPuzzle"),
|
||||
"eternal-domination-game": () => import("@/components/interactives/EternalDominationGame"),
|
||||
"knights-and-knaves": () => import("@/components/interactives/KnightsAndKnavesI"),
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue