soroban-abacus-flashcards/apps/web
Thomas Hallock fde5ae9164 feat: add function-based custom bead rendering and HTTP status code easter eggs
Add dynamic custom bead rendering system that allows beads to change appearance
based on their context (active state, position, place value, type, etc.).

Custom Bead Features:
- Add emoji-function, image-function, and svg-function types
- Functions receive CustomBeadContext with bead state and style info
- Support for dynamic rendering based on: active state, position, place value,
  bead type (heaven/earth), color, and size
- Enables creative visualizations like traffic lights, themed symbols, etc.

404 Page Easter Eggs:
- Create interactive 404 page with manipulable abacus
- Add 14 HTTP status code easter eggs (200, 201, 301, 400, 401, 403, 418,
  420, 451, 500, 503, 666, 777, 911)
- Each code triggers site-wide custom bead transformation
- Use function-based rendering for variety (different emojis per bead
  position/state)
- Easter eggs persist until page reload via global AbacusDisplayContext

Storybook Documentation:
- Add comprehensive custom bead stories showing static and function-based usage
- Include examples: active/inactive states, heaven/earth types, place value
  colors, traffic lights, color theming
- Document CustomBeadContext API and usage patterns

Technical Implementation:
- Extend CustomBeadContent union type in AbacusContext
- Update AbacusStaticBead and AbacusAnimatedBead to handle function types
- Pass bead context (type, value, active, position, placeValue, color, size)
  to custom render functions
- Maintain consistency across static (SSR) and animated (client) rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:28:58 -06:00
..
.claude fix(worksheets): Add "Practice" difficulty profile for scaffolded regrouping mastery 2025-11-08 14:28:58 -06:00
.storybook
__tests__
content/blog refactor(worksheets): extract ConfigPanel helper components (Phase 1) 2025-11-08 11:50:49 -06:00
data
docs fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
drizzle fix(worksheets): remove foreign key constraint to support guest users 2025-11-06 08:26:09 -06:00
e2e
public refactor(worksheets): extract ConfigPanel helper components (Phase 1) 2025-11-08 11:50:49 -06:00
scripts refactor(worksheets): extract ConfigPanel helper components (Phase 1) 2025-11-08 11:50:49 -06:00
src feat: add function-based custom bead rendering and HTTP status code easter eggs 2025-11-08 14:28:58 -06:00
.dockerignore.test chore: trigger Docker rebuild 2025-11-07 12:11:46 -06:00
.gitignore
CARD_SORTING_PORT_PLAN.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
COMPLEMENT_RACE_PORT_PLAN.md
DEVELOPMENT_STANDARDS.md
LINTING.md
README.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
biome.jsonc
drizzle.config.ts
eslint.config.js
next-env.d.ts
next.config.js
package.json refactor(worksheets): extract utility functions 2025-11-07 22:09:35 -06:00
panda.config.ts feat: implement light/dark theme system with semantic tokens 2025-11-07 16:47:04 -06:00
playwright.config.ts
pnpm-lock.yaml
server.js
svg-processing-test.js
test-arcade-api.sh
test-flashcards-final.pdf
test-flashcards.pdf
test-simplified.pdf
test_fullscreen_persistence.html
test_panda_simple.html
tsconfig.json
tsconfig.server.json
vitest.config.ts

README.md

Test deployment - Mon Nov 3 16:31:57 CST 2025