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:
Neeldhara Misra 2026-04-17 03:09:40 +05:30
commit c5926b4213
265 changed files with 51899 additions and 0 deletions

View 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"),
};