@almadar/ui 5.61.0 → 5.63.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/avl/index.cjs +3599 -1810
  2. package/dist/avl/index.js +2431 -642
  3. package/dist/components/core/atoms/Box.d.ts +2 -0
  4. package/dist/components/core/molecules/CalendarGrid.d.ts +9 -1
  5. package/dist/components/core/molecules/GraphCanvas.d.ts +4 -0
  6. package/dist/components/core/molecules/PositionedCanvas.d.ts +14 -1
  7. package/dist/components/core/molecules/ReplyTree.d.ts +13 -1
  8. package/dist/components/core/templates/index.d.ts +4 -0
  9. package/dist/components/game/molecules/CardHand.d.ts +35 -0
  10. package/dist/components/game/molecules/DialogueBox.d.ts +8 -2
  11. package/dist/components/game/molecules/index.d.ts +1 -0
  12. package/dist/components/game/molecules/three/index.cjs +283 -115
  13. package/dist/components/game/molecules/three/index.js +283 -115
  14. package/dist/components/game/organisms/CardBattlerBoard.d.ts +46 -0
  15. package/dist/components/game/organisms/CityBuilderBoard.d.ts +63 -0
  16. package/dist/components/game/organisms/TopDownShooterBoard.d.ts +64 -0
  17. package/dist/components/game/organisms/TowerDefenseBoard.d.ts +10 -1
  18. package/dist/components/game/organisms/TraitSlot.d.ts +1 -3
  19. package/dist/components/game/organisms/VisualNovelBoard.d.ts +53 -0
  20. package/dist/components/game/organisms/hooks/useCamera.d.ts +16 -0
  21. package/dist/components/game/organisms/index.d.ts +4 -0
  22. package/dist/components/game/templates/CardBattlerTemplate.d.ts +35 -0
  23. package/dist/components/game/templates/CityBuilderTemplate.d.ts +40 -0
  24. package/dist/components/game/templates/GameCanvas3DBattleTemplate.d.ts +5 -2
  25. package/dist/components/game/templates/GameCanvas3DCastleTemplate.d.ts +5 -2
  26. package/dist/components/game/templates/GameCanvas3DWorldMapTemplate.d.ts +5 -2
  27. package/dist/components/game/templates/TopDownShooterTemplate.d.ts +42 -0
  28. package/dist/components/game/templates/VisualNovelTemplate.d.ts +28 -0
  29. package/dist/components/game/templates/game3dAssetManifest.d.ts +50 -0
  30. package/dist/components/game/templates/index.d.ts +4 -0
  31. package/dist/components/index.cjs +3465 -1659
  32. package/dist/components/index.js +2444 -647
  33. package/dist/components/marketing/organisms/CaseStudyOrganism.d.ts +10 -1
  34. package/dist/components/marketing/organisms/FeatureGridOrganism.d.ts +10 -1
  35. package/dist/components/marketing/organisms/HeroOrganism.d.ts +24 -1
  36. package/dist/components/marketing/organisms/PricingOrganism.d.ts +14 -1
  37. package/dist/components/marketing/organisms/ShowcaseOrganism.d.ts +14 -1
  38. package/dist/components/marketing/organisms/StatsOrganism.d.ts +6 -1
  39. package/dist/components/marketing/organisms/StepFlowOrganism.d.ts +9 -1
  40. package/dist/components/marketing/organisms/TeamOrganism.d.ts +10 -1
  41. package/dist/docs/index.cjs +169 -1
  42. package/dist/docs/index.d.cts +2 -0
  43. package/dist/docs/index.js +169 -1
  44. package/dist/hooks/index.cjs +253 -1
  45. package/dist/hooks/index.d.ts +2 -0
  46. package/dist/hooks/index.js +252 -2
  47. package/dist/hooks/useCanvasGestures.d.ts +44 -0
  48. package/dist/hooks/useTapReveal.d.ts +32 -0
  49. package/dist/locales/index.cjs +315 -3
  50. package/dist/locales/index.js +315 -3
  51. package/dist/marketing/index.cjs +59 -0
  52. package/dist/marketing/index.d.cts +2 -0
  53. package/dist/marketing/index.js +59 -0
  54. package/dist/providers/index.cjs +3408 -1619
  55. package/dist/providers/index.js +2407 -618
  56. package/dist/runtime/index.cjs +3464 -1675
  57. package/dist/runtime/index.js +2411 -622
  58. package/locales/ar.json +105 -1
  59. package/locales/en.json +105 -1
  60. package/locales/sl.json +105 -1
  61. package/package.json +2 -2
@@ -468,7 +468,111 @@ var en_default = {
468
468
  "stateMachine.legend.final": "Final",
469
469
  "stateMachine.legend.state": "State",
470
470
  "stateMachine.legend.multiEvent": "Multi-event",
471
- "relationSelect.selectPlaceholder": "Select..."
471
+ "relationSelect.selectPlaceholder": "Select...",
472
+ "battle.cancel": "Cancel",
473
+ "battle.defeat": "Defeat",
474
+ "battle.endTurn": "End Turn",
475
+ "battle.playAgain": "Play Again",
476
+ "battle.turnsPlayed": "Turns Played",
477
+ "battle.victory": "Victory",
478
+ "builder.allPlaced": "All placed",
479
+ "builder.blueprint": "Blueprint",
480
+ "builder.build": "Build",
481
+ "builder.components": "Components",
482
+ "builder.empty": "Empty",
483
+ "builder.reset": "Reset",
484
+ "builder.success": "Success",
485
+ "classifier.allCorrect": "All correct!",
486
+ "classifier.check": "Check",
487
+ "classifier.correct": "correct",
488
+ "classifier.itemsToSort": "Items to sort",
489
+ "classifier.reset": "Reset",
490
+ "common.error": "Error",
491
+ "debugger.allFound": "All bugs found!",
492
+ "debugger.bugsFound": "bugs found",
493
+ "debugger.findBugs": "Find {{count}} bugs",
494
+ "debugger.reset": "Reset",
495
+ "debugger.submit": "Submit",
496
+ "error.genericLoad": "Failed to load",
497
+ "error.loadingData": "Loading data",
498
+ "eventHandler.addRule": "Add Rule",
499
+ "eventHandler.chainComplete": "Chain complete!",
500
+ "eventHandler.clickObject": "Click objects",
501
+ "eventHandler.eventLog": "Event Log",
502
+ "eventHandler.heardEvent": "{{object}} heard {{event}} \u2192 {{action}}",
503
+ "eventHandler.noEvents": "No events yet",
504
+ "eventHandler.noListeners": "No listeners for {{event}}",
505
+ "eventHandler.rules": "{{count}}/{{max}} rules",
506
+ "eventHandler.simulationStarted": "Simulating: {{events}}",
507
+ "eventHandler.state": "State",
508
+ "eventHandler.then": "then",
509
+ "eventHandler.when": "When",
510
+ "game.goal": "Goal",
511
+ "game.hint": "Hint",
512
+ "game.play": "Play",
513
+ "game.reset": "Reset",
514
+ "game.runTests": "Run Tests",
515
+ "negotiator.chooseAction": "Choose an action",
516
+ "negotiator.failed": "Negotiation failed",
517
+ "negotiator.finalScore": "Final score",
518
+ "negotiator.history": "History",
519
+ "negotiator.opponent": "Opponent",
520
+ "negotiator.playAgain": "Play Again",
521
+ "negotiator.round": "Round {{current}} of {{total}}",
522
+ "negotiator.success": "Negotiation successful",
523
+ "negotiator.target": "Target",
524
+ "negotiator.you": "You",
525
+ "platformer.level": "Level",
526
+ "platformer.lost": "Game Over",
527
+ "platformer.nextLevel": "Next Level",
528
+ "platformer.noLives": "No lives left",
529
+ "platformer.playAgain": "Play Again",
530
+ "platformer.score": "Score",
531
+ "platformer.won": "You won!",
532
+ "puzzle.tryAgainButton": "Try Again",
533
+ "roguelike.atk": "ATK",
534
+ "roguelike.cleared": "Dungeon cleared! Depth reached: {{depth}}",
535
+ "roguelike.defeat": "Defeated!",
536
+ "roguelike.depth": "Depth",
537
+ "roguelike.enemy": "Enemy",
538
+ "roguelike.hp": "HP",
539
+ "roguelike.phase": "Phase",
540
+ "roguelike.playAgain": "Play Again",
541
+ "roguelike.player": "Hero",
542
+ "roguelike.victory": "Victory!",
543
+ "sequencer.actions": "Actions",
544
+ "sequencer.dragActions": "Drag actions here",
545
+ "sequencer.levelComplete": "Level complete!",
546
+ "sequencer.yourSequence": "Your sequence",
547
+ "simulator.correct": "Correct",
548
+ "simulator.incorrect": "Incorrect",
549
+ "simulator.parameters": "Parameters",
550
+ "simulator.reset": "Reset",
551
+ "simulator.simulate": "Simulate",
552
+ "simulator.target": "Target",
553
+ "stateArchitect.addTransition": "Add transition from {{state}}",
554
+ "stateArchitect.addTransitionPrompt": "Click target state",
555
+ "stateArchitect.allPassed": "All tests passed!",
556
+ "stateArchitect.clickTarget": "Click a target state (current: {{state}})",
557
+ "stateArchitect.gotState": "Got state: {{state}}",
558
+ "stateArchitect.graph": "Graph",
559
+ "stateArchitect.hideJson": "Hide JSON",
560
+ "stateArchitect.showJson": "Show JSON",
561
+ "stateArchitect.testResults": "Test Results",
562
+ "stateArchitect.transitions": "{{count}} transitions",
563
+ "stateArchitect.variables": "Variables: {{name}}",
564
+ "stateArchitect.viewCode": "View Code",
565
+ "td.defeat": "Defeat",
566
+ "td.gold": "Gold",
567
+ "td.lives": "Lives",
568
+ "td.livesReachedZero": "Your base was overrun",
569
+ "td.placeTower": "Place tower",
570
+ "td.playAgain": "Play Again",
571
+ "td.startWave": "Start Wave",
572
+ "td.survivedAllWaves": "Survived all waves!",
573
+ "td.victory": "Victory!",
574
+ "td.wave": "Wave",
575
+ "td.waveInProgress": "Wave in progress\u2026"
472
576
  };
473
577
 
474
578
  // locales/ar.json
@@ -941,7 +1045,111 @@ var ar_default = {
941
1045
  "common.showMore": "\u0639\u0631\u0636 \u0627\u0644\u0645\u0632\u064A\u062F",
942
1046
  "common.showLess": "\u0639\u0631\u0636 \u0623\u0642\u0644",
943
1047
  "common.noResults": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
944
- "relationSelect.selectPlaceholder": "\u0627\u062E\u062A\u0631..."
1048
+ "relationSelect.selectPlaceholder": "\u0627\u062E\u062A\u0631...",
1049
+ "battle.cancel": "\u0625\u0644\u063A\u0627\u0621",
1050
+ "battle.defeat": "\u0647\u0632\u064A\u0645\u0629",
1051
+ "battle.endTurn": "\u0625\u0646\u0647\u0627\u0621 \u0627\u0644\u062F\u0648\u0631",
1052
+ "battle.playAgain": "\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1053
+ "battle.turnsPlayed": "\u0627\u0644\u0623\u062F\u0648\u0627\u0631 \u0627\u0644\u0645\u0644\u0639\u0648\u0628\u0629",
1054
+ "battle.victory": "\u0627\u0646\u062A\u0635\u0627\u0631",
1055
+ "builder.allPlaced": "\u062A\u0645 \u0648\u0636\u0639 \u0627\u0644\u0643\u0644",
1056
+ "builder.blueprint": "\u0645\u062E\u0637\u0637",
1057
+ "builder.build": "\u0628\u0646\u0627\u0621",
1058
+ "builder.components": "\u0645\u0643\u0648\u0651\u0646\u0627\u062A",
1059
+ "builder.empty": "\u0641\u0627\u0631\u063A",
1060
+ "builder.reset": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1061
+ "builder.success": "\u0646\u062C\u0627\u062D",
1062
+ "classifier.allCorrect": "\u0643\u0644\u0647\u0627 \u0635\u062D\u064A\u062D\u0629!",
1063
+ "classifier.check": "\u062A\u062D\u0642\u0642",
1064
+ "classifier.correct": "\u0635\u062D\u064A\u062D",
1065
+ "classifier.itemsToSort": "\u0639\u0646\u0627\u0635\u0631 \u0644\u0644\u0641\u0631\u0632",
1066
+ "classifier.reset": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1067
+ "common.error": "\u062E\u0637\u0623",
1068
+ "debugger.allFound": "\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0643\u0644 \u0627\u0644\u0623\u062E\u0637\u0627\u0621!",
1069
+ "debugger.bugsFound": "\u0623\u062E\u0637\u0627\u0621 \u0645\u064F\u0639\u062B\u064E\u0631\u0629 \u0639\u0644\u064A\u0647\u0627",
1070
+ "debugger.findBugs": "\u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 {{count}} \u0623\u062E\u0637\u0627\u0621",
1071
+ "debugger.reset": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1072
+ "debugger.submit": "\u0625\u0631\u0633\u0627\u0644",
1073
+ "error.genericLoad": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0645\u064A\u0644",
1074
+ "error.loadingData": "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",
1075
+ "eventHandler.addRule": "\u0625\u0636\u0627\u0641\u0629 \u0642\u0627\u0639\u062F\u0629",
1076
+ "eventHandler.chainComplete": "\u0627\u0643\u062A\u0645\u0644 \u0627\u0644\u0633\u0644\u0633\u0644!",
1077
+ "eventHandler.clickObject": "\u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A",
1078
+ "eventHandler.eventLog": "\u0633\u062C\u0644 \u0627\u0644\u0623\u062D\u062F\u0627\u062B",
1079
+ "eventHandler.heardEvent": "{{object}} \u0627\u0633\u062A\u0642\u0628\u0644 {{event}} \u2192 {{action}}",
1080
+ "eventHandler.noEvents": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062D\u062F\u0627\u062B \u0628\u0639\u062F",
1081
+ "eventHandler.noListeners": "\u0644\u0627 \u064A\u0648\u062C\u062F \u0645\u0633\u062A\u0645\u0639\u0648\u0646 \u0644\u0640 {{event}}",
1082
+ "eventHandler.rules": "{{count}}/{{max}} \u0642\u0648\u0627\u0639\u062F",
1083
+ "eventHandler.simulationStarted": "\u0645\u062D\u0627\u0643\u0627\u0629: {{events}}",
1084
+ "eventHandler.state": "\u0627\u0644\u062D\u0627\u0644\u0629",
1085
+ "eventHandler.then": "\u062B\u0645",
1086
+ "eventHandler.when": "\u0639\u0646\u062F\u0645\u0627",
1087
+ "game.goal": "\u0627\u0644\u0647\u062F\u0641",
1088
+ "game.hint": "\u062A\u0644\u0645\u064A\u062D",
1089
+ "game.play": "\u062A\u0634\u063A\u064A\u0644",
1090
+ "game.reset": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1091
+ "game.runTests": "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631\u0627\u062A",
1092
+ "negotiator.chooseAction": "\u0627\u062E\u062A\u0631 \u0625\u062C\u0631\u0627\u0621\u064B",
1093
+ "negotiator.failed": "\u0641\u0634\u0644 \u0627\u0644\u062A\u0641\u0627\u0648\u0636",
1094
+ "negotiator.finalScore": "\u0627\u0644\u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0646\u0647\u0627\u0626\u064A\u0629",
1095
+ "negotiator.history": "\u0627\u0644\u062A\u0627\u0631\u064A\u062E",
1096
+ "negotiator.opponent": "\u0627\u0644\u062E\u0635\u0645",
1097
+ "negotiator.playAgain": "\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1098
+ "negotiator.round": "\u0627\u0644\u062C\u0648\u0644\u0629 {{current}} \u0645\u0646 {{total}}",
1099
+ "negotiator.success": "\u0646\u062C\u062D \u0627\u0644\u062A\u0641\u0627\u0648\u0636",
1100
+ "negotiator.target": "\u0627\u0644\u0647\u062F\u0641",
1101
+ "negotiator.you": "\u0623\u0646\u062A",
1102
+ "platformer.level": "\u0627\u0644\u0645\u0633\u062A\u0648\u0649",
1103
+ "platformer.lost": "\u0627\u0646\u062A\u0647\u062A \u0627\u0644\u0644\u0639\u0628\u0629",
1104
+ "platformer.nextLevel": "\u0627\u0644\u0645\u0633\u062A\u0648\u0649 \u0627\u0644\u062A\u0627\u0644\u064A",
1105
+ "platformer.noLives": "\u0644\u0645 \u062A\u062A\u0628\u0642\u064E \u0623\u0631\u0648\u0627\u062D",
1106
+ "platformer.playAgain": "\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1107
+ "platformer.score": "\u0627\u0644\u0646\u0642\u0627\u0637",
1108
+ "platformer.won": "\u0644\u0642\u062F \u0641\u0632\u062A!",
1109
+ "puzzle.tryAgainButton": "\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1110
+ "roguelike.atk": "\u0647\u062C\u0648\u0645",
1111
+ "roguelike.cleared": "\u062A\u0645 \u062A\u0637\u0647\u064A\u0631 \u0627\u0644\u0632\u0646\u0632\u0627\u0646\u0629! \u0627\u0644\u0639\u0645\u0642 \u0627\u0644\u0645\u064F\u062D\u0642\u0642: {{depth}}",
1112
+ "roguelike.defeat": "\u0647\u064F\u0632\u0645\u062A!",
1113
+ "roguelike.depth": "\u0627\u0644\u0639\u0645\u0642",
1114
+ "roguelike.enemy": "\u0639\u062F\u0648",
1115
+ "roguelike.hp": "\u0635\u062D\u0629",
1116
+ "roguelike.phase": "\u0627\u0644\u0645\u0631\u062D\u0644\u0629",
1117
+ "roguelike.playAgain": "\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1118
+ "roguelike.player": "\u0628\u0637\u0644",
1119
+ "roguelike.victory": "\u0627\u0646\u062A\u0635\u0627\u0631!",
1120
+ "sequencer.actions": "\u0625\u062C\u0631\u0627\u0621\u0627\u062A",
1121
+ "sequencer.dragActions": "\u0627\u0633\u062D\u0628 \u0627\u0644\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0647\u0646\u0627",
1122
+ "sequencer.levelComplete": "\u0627\u0643\u062A\u0645\u0644 \u0627\u0644\u0645\u0633\u062A\u0648\u0649!",
1123
+ "sequencer.yourSequence": "\u062A\u0633\u0644\u0633\u0644\u0643",
1124
+ "simulator.correct": "\u0635\u062D\u064A\u062D",
1125
+ "simulator.incorrect": "\u063A\u064A\u0631 \u0635\u062D\u064A\u062D",
1126
+ "simulator.parameters": "\u0645\u0639\u0627\u0645\u0644\u0627\u062A",
1127
+ "simulator.reset": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1128
+ "simulator.simulate": "\u0645\u062D\u0627\u0643\u0627\u0629",
1129
+ "simulator.target": "\u0627\u0644\u0647\u062F\u0641",
1130
+ "stateArchitect.addTransition": "\u0625\u0636\u0627\u0641\u0629 \u0627\u0646\u062A\u0642\u0627\u0644 \u0645\u0646 {{state}}",
1131
+ "stateArchitect.addTransitionPrompt": "\u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0645\u0633\u062A\u0647\u062F\u0641\u0629",
1132
+ "stateArchitect.allPassed": "\u0646\u062C\u062D\u062A \u062C\u0645\u064A\u0639 \u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631\u0627\u062A!",
1133
+ "stateArchitect.clickTarget": "\u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u062D\u0627\u0644\u0629 \u0645\u0633\u062A\u0647\u062F\u0641\u0629 (\u0627\u0644\u062D\u0627\u0644\u064A\u0629: {{state}})",
1134
+ "stateArchitect.gotState": "\u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0645\u0633\u062A\u0644\u0645\u0629: {{state}}",
1135
+ "stateArchitect.graph": "\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A",
1136
+ "stateArchitect.hideJson": "\u0625\u062E\u0641\u0627\u0621 JSON",
1137
+ "stateArchitect.showJson": "\u0625\u0638\u0647\u0627\u0631 JSON",
1138
+ "stateArchitect.testResults": "\u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0627\u062E\u062A\u0628\u0627\u0631\u0627\u062A",
1139
+ "stateArchitect.transitions": "{{count}} \u0627\u0646\u062A\u0642\u0627\u0644\u0627\u062A",
1140
+ "stateArchitect.variables": "\u0645\u062A\u063A\u064A\u0631\u0627\u062A: {{name}}",
1141
+ "stateArchitect.viewCode": "\u0639\u0631\u0636 \u0627\u0644\u0643\u0648\u062F",
1142
+ "td.defeat": "\u0647\u0632\u064A\u0645\u0629",
1143
+ "td.gold": "\u0630\u0647\u0628",
1144
+ "td.lives": "\u0623\u0631\u0648\u0627\u062D",
1145
+ "td.livesReachedZero": "\u062A\u0645 \u0627\u062C\u062A\u064A\u0627\u062D \u0642\u0627\u0639\u062F\u062A\u0643",
1146
+ "td.placeTower": "\u0636\u0639 \u0628\u0631\u062C\u064B\u0627",
1147
+ "td.playAgain": "\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
1148
+ "td.startWave": "\u0628\u062F\u0621 \u0627\u0644\u0645\u0648\u062C\u0629",
1149
+ "td.survivedAllWaves": "\u0646\u062C\u0648\u062A \u0645\u0646 \u062C\u0645\u064A\u0639 \u0627\u0644\u0645\u0648\u062C\u0627\u062A!",
1150
+ "td.victory": "\u0627\u0646\u062A\u0635\u0627\u0631!",
1151
+ "td.wave": "\u0645\u0648\u062C\u0629",
1152
+ "td.waveInProgress": "\u0627\u0644\u0645\u0648\u062C\u0629 \u0642\u064A\u062F \u0627\u0644\u062A\u0642\u062F\u0645\u2026"
945
1153
  };
946
1154
 
947
1155
  // locales/sl.json
@@ -1414,7 +1622,111 @@ var sl_default = {
1414
1622
  "common.showMore": "Poka\u017Ei ve\u010D",
1415
1623
  "common.showLess": "Poka\u017Ei manj",
1416
1624
  "common.noResults": "Ni rezultatov",
1417
- "relationSelect.selectPlaceholder": "Izberi..."
1625
+ "relationSelect.selectPlaceholder": "Izberi...",
1626
+ "battle.cancel": "Prekli\u010Di",
1627
+ "battle.defeat": "Poraz",
1628
+ "battle.endTurn": "Kon\u010Daj potezo",
1629
+ "battle.playAgain": "Igraj znova",
1630
+ "battle.turnsPlayed": "Odigrane poteze",
1631
+ "battle.victory": "Zmaga",
1632
+ "builder.allPlaced": "Vse postavljeno",
1633
+ "builder.blueprint": "Na\u010Drt",
1634
+ "builder.build": "Zgradi",
1635
+ "builder.components": "Komponente",
1636
+ "builder.empty": "Prazno",
1637
+ "builder.reset": "Ponastavi",
1638
+ "builder.success": "Uspeh",
1639
+ "classifier.allCorrect": "Vse pravilno!",
1640
+ "classifier.check": "Preveri",
1641
+ "classifier.correct": "pravilno",
1642
+ "classifier.itemsToSort": "Elementi za razvr\u0161\u010Danje",
1643
+ "classifier.reset": "Ponastavi",
1644
+ "common.error": "Napaka",
1645
+ "debugger.allFound": "Vsi hro\u0161\u010Di najdeni!",
1646
+ "debugger.bugsFound": "najdenih hro\u0161\u010Dev",
1647
+ "debugger.findBugs": "Poi\u0161\u010Di {{count}} hro\u0161\u010Dev",
1648
+ "debugger.reset": "Ponastavi",
1649
+ "debugger.submit": "Po\u0161lji",
1650
+ "error.genericLoad": "Nalaganje ni uspelo",
1651
+ "error.loadingData": "Nalaganje podatkov",
1652
+ "eventHandler.addRule": "Dodaj pravilo",
1653
+ "eventHandler.chainComplete": "Veriga zaklju\u010Dena!",
1654
+ "eventHandler.clickObject": "Klikni predmete",
1655
+ "eventHandler.eventLog": "Dnevnik dogodkov",
1656
+ "eventHandler.heardEvent": "{{object}} je sli\u0161al {{event}} \u2192 {{action}}",
1657
+ "eventHandler.noEvents": "\u0160e ni dogodkov",
1658
+ "eventHandler.noListeners": "Ni poslu\u0161alcev za {{event}}",
1659
+ "eventHandler.rules": "{{count}}/{{max}} pravil",
1660
+ "eventHandler.simulationStarted": "Simulacija: {{events}}",
1661
+ "eventHandler.state": "Stanje",
1662
+ "eventHandler.then": "potem",
1663
+ "eventHandler.when": "Ko",
1664
+ "game.goal": "Cilj",
1665
+ "game.hint": "Namig",
1666
+ "game.play": "Predvajaj",
1667
+ "game.reset": "Ponastavi",
1668
+ "game.runTests": "Za\u017Eeni preizkuse",
1669
+ "negotiator.chooseAction": "Izberi dejanje",
1670
+ "negotiator.failed": "Pogajanje ni uspelo",
1671
+ "negotiator.finalScore": "Kon\u010Dni rezultat",
1672
+ "negotiator.history": "Zgodovina",
1673
+ "negotiator.opponent": "Nasprotnik",
1674
+ "negotiator.playAgain": "Igraj znova",
1675
+ "negotiator.round": "Krog {{current}} od {{total}}",
1676
+ "negotiator.success": "Pogajanje uspe\u0161no",
1677
+ "negotiator.target": "Cilj",
1678
+ "negotiator.you": "Ti",
1679
+ "platformer.level": "Raven",
1680
+ "platformer.lost": "Konec igre",
1681
+ "platformer.nextLevel": "Naslednja raven",
1682
+ "platformer.noLives": "Ni ve\u010D \u017Eivljenj",
1683
+ "platformer.playAgain": "Igraj znova",
1684
+ "platformer.score": "To\u010Dke",
1685
+ "platformer.won": "Zmagal si!",
1686
+ "puzzle.tryAgainButton": "Poskusi znova",
1687
+ "roguelike.atk": "NAP",
1688
+ "roguelike.cleared": "Klet o\u010Di\u0161\u010Dena! Dose\u017Eena globina: {{depth}}",
1689
+ "roguelike.defeat": "Pora\u017Een!",
1690
+ "roguelike.depth": "Globina",
1691
+ "roguelike.enemy": "Sovra\u017Enik",
1692
+ "roguelike.hp": "\u017DP",
1693
+ "roguelike.phase": "Faza",
1694
+ "roguelike.playAgain": "Igraj znova",
1695
+ "roguelike.player": "Junak",
1696
+ "roguelike.victory": "Zmaga!",
1697
+ "sequencer.actions": "Dejanja",
1698
+ "sequencer.dragActions": "Povleci dejanja sem",
1699
+ "sequencer.levelComplete": "Raven zaklju\u010Dena!",
1700
+ "sequencer.yourSequence": "Tvoje zaporedje",
1701
+ "simulator.correct": "Pravilno",
1702
+ "simulator.incorrect": "Nepravilno",
1703
+ "simulator.parameters": "Parametri",
1704
+ "simulator.reset": "Ponastavi",
1705
+ "simulator.simulate": "Simuliraj",
1706
+ "simulator.target": "Cilj",
1707
+ "stateArchitect.addTransition": "Dodaj prehod iz {{state}}",
1708
+ "stateArchitect.addTransitionPrompt": "Klikni ciljno stanje",
1709
+ "stateArchitect.allPassed": "Vsi preizkusi uspe\u0161ni!",
1710
+ "stateArchitect.clickTarget": "Klikni ciljno stanje (trenutno: {{state}})",
1711
+ "stateArchitect.gotState": "Prejeto stanje: {{state}}",
1712
+ "stateArchitect.graph": "Graf",
1713
+ "stateArchitect.hideJson": "Skrij JSON",
1714
+ "stateArchitect.showJson": "Poka\u017Ei JSON",
1715
+ "stateArchitect.testResults": "Rezultati preizkusov",
1716
+ "stateArchitect.transitions": "{{count}} prehodov",
1717
+ "stateArchitect.variables": "Spremenljivke: {{name}}",
1718
+ "stateArchitect.viewCode": "Prika\u017Ei kodo",
1719
+ "td.defeat": "Poraz",
1720
+ "td.gold": "Zlato",
1721
+ "td.lives": "\u017Divljenja",
1722
+ "td.livesReachedZero": "Va\u0161a baza je bila preplavljena",
1723
+ "td.placeTower": "Postavi stolp",
1724
+ "td.playAgain": "Igraj znova",
1725
+ "td.startWave": "Za\u010Dni val",
1726
+ "td.survivedAllWaves": "Pre\u017Eiveli vse valove!",
1727
+ "td.victory": "Zmaga!",
1728
+ "td.wave": "Val",
1729
+ "td.waveInProgress": "Val v teku\u2026"
1418
1730
  };
1419
1731
 
1420
1732
  // locales/index.ts
@@ -2625,6 +2625,49 @@ function useEventBus() {
2625
2625
  };
2626
2626
  }, [baseBus, scope]);
2627
2627
  }
2628
+ function useTapReveal(options = {}) {
2629
+ const { onReveal, onDismiss, refs, enabled = true } = options;
2630
+ const [revealed, setRevealed] = React9.useState(false);
2631
+ const onRevealRef = React9.useRef(onReveal);
2632
+ const onDismissRef = React9.useRef(onDismiss);
2633
+ onRevealRef.current = onReveal;
2634
+ onDismissRef.current = onDismiss;
2635
+ const reveal = React9.useCallback(() => {
2636
+ setRevealed((wasRevealed) => {
2637
+ if (!wasRevealed) onRevealRef.current?.();
2638
+ return true;
2639
+ });
2640
+ }, []);
2641
+ const dismiss = React9.useCallback(() => {
2642
+ setRevealed((wasRevealed) => {
2643
+ if (wasRevealed) onDismissRef.current?.();
2644
+ return false;
2645
+ });
2646
+ }, []);
2647
+ const onPointerDown = React9.useCallback(
2648
+ (e) => {
2649
+ if (!enabled || e.pointerType === "mouse") return;
2650
+ if (revealed) dismiss();
2651
+ else reveal();
2652
+ },
2653
+ [enabled, revealed, reveal, dismiss]
2654
+ );
2655
+ React9.useEffect(() => {
2656
+ if (!revealed || typeof document === "undefined") return;
2657
+ const onDocDown = (ev) => {
2658
+ const target = ev.target;
2659
+ if (!(target instanceof Node)) return;
2660
+ const inside = (refs ?? []).some((r2) => r2.current?.contains(target));
2661
+ if (!inside) dismiss();
2662
+ };
2663
+ const id = setTimeout(() => document.addEventListener("pointerdown", onDocDown), 0);
2664
+ return () => {
2665
+ clearTimeout(id);
2666
+ document.removeEventListener("pointerdown", onDocDown);
2667
+ };
2668
+ }, [revealed, refs, dismiss]);
2669
+ return { revealed, triggerProps: { onPointerDown }, reveal, dismiss };
2670
+ }
2628
2671
 
2629
2672
  // components/core/atoms/Box.tsx
2630
2673
  var paddingStyles = {
@@ -2752,10 +2795,12 @@ var Box = React9__default.default.forwardRef(
2752
2795
  action,
2753
2796
  actionPayload,
2754
2797
  hoverEvent,
2798
+ tapReveal = true,
2755
2799
  maxWidth,
2756
2800
  onClick,
2757
2801
  onMouseEnter,
2758
2802
  onMouseLeave,
2803
+ onPointerDown,
2759
2804
  ...rest
2760
2805
  }, ref) => {
2761
2806
  const eventBus = useEventBus();
@@ -2778,6 +2823,19 @@ var Box = React9__default.default.forwardRef(
2778
2823
  }
2779
2824
  onMouseLeave?.(e);
2780
2825
  }, [hoverEvent, eventBus, onMouseLeave]);
2826
+ const { triggerProps } = useTapReveal({
2827
+ enabled: tapReveal && !!hoverEvent,
2828
+ onReveal: React9.useCallback(() => {
2829
+ if (hoverEvent) eventBus.emit(`UI:${hoverEvent}`, { hovered: true });
2830
+ }, [hoverEvent, eventBus]),
2831
+ onDismiss: React9.useCallback(() => {
2832
+ if (hoverEvent) eventBus.emit(`UI:${hoverEvent}`, { hovered: false });
2833
+ }, [hoverEvent, eventBus])
2834
+ });
2835
+ const handlePointerDown = React9.useCallback((e) => {
2836
+ if (hoverEvent && tapReveal) triggerProps.onPointerDown(e);
2837
+ onPointerDown?.(e);
2838
+ }, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
2781
2839
  const isClickable = action || onClick;
2782
2840
  return React9__default.default.createElement(
2783
2841
  Component,
@@ -2805,6 +2863,7 @@ var Box = React9__default.default.forwardRef(
2805
2863
  onClick: isClickable ? handleClick : void 0,
2806
2864
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
2807
2865
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
2866
+ onPointerDown: hoverEvent && tapReveal || onPointerDown ? handlePointerDown : void 0,
2808
2867
  style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
2809
2868
  ...rest
2810
2869
  },
@@ -55,6 +55,8 @@ interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
55
55
  actionPayload?: EventPayload;
56
56
  /** Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave */
57
57
  hoverEvent?: EventKey;
58
+ /** When true (default), a touch/pen tap also fires `hoverEvent` (toggling hovered) so hover-only reveals work on touch. */
59
+ tapReveal?: boolean;
58
60
  /** Maximum width (CSS value, e.g., "550px", "80rem") */
59
61
  maxWidth?: string;
60
62
  /** Children elements */
@@ -2601,6 +2601,49 @@ function useEventBus() {
2601
2601
  };
2602
2602
  }, [baseBus, scope]);
2603
2603
  }
2604
+ function useTapReveal(options = {}) {
2605
+ const { onReveal, onDismiss, refs, enabled = true } = options;
2606
+ const [revealed, setRevealed] = useState(false);
2607
+ const onRevealRef = useRef(onReveal);
2608
+ const onDismissRef = useRef(onDismiss);
2609
+ onRevealRef.current = onReveal;
2610
+ onDismissRef.current = onDismiss;
2611
+ const reveal = useCallback(() => {
2612
+ setRevealed((wasRevealed) => {
2613
+ if (!wasRevealed) onRevealRef.current?.();
2614
+ return true;
2615
+ });
2616
+ }, []);
2617
+ const dismiss = useCallback(() => {
2618
+ setRevealed((wasRevealed) => {
2619
+ if (wasRevealed) onDismissRef.current?.();
2620
+ return false;
2621
+ });
2622
+ }, []);
2623
+ const onPointerDown = useCallback(
2624
+ (e) => {
2625
+ if (!enabled || e.pointerType === "mouse") return;
2626
+ if (revealed) dismiss();
2627
+ else reveal();
2628
+ },
2629
+ [enabled, revealed, reveal, dismiss]
2630
+ );
2631
+ useEffect(() => {
2632
+ if (!revealed || typeof document === "undefined") return;
2633
+ const onDocDown = (ev) => {
2634
+ const target = ev.target;
2635
+ if (!(target instanceof Node)) return;
2636
+ const inside = (refs ?? []).some((r2) => r2.current?.contains(target));
2637
+ if (!inside) dismiss();
2638
+ };
2639
+ const id = setTimeout(() => document.addEventListener("pointerdown", onDocDown), 0);
2640
+ return () => {
2641
+ clearTimeout(id);
2642
+ document.removeEventListener("pointerdown", onDocDown);
2643
+ };
2644
+ }, [revealed, refs, dismiss]);
2645
+ return { revealed, triggerProps: { onPointerDown }, reveal, dismiss };
2646
+ }
2604
2647
 
2605
2648
  // components/core/atoms/Box.tsx
2606
2649
  var paddingStyles = {
@@ -2728,10 +2771,12 @@ var Box = React9.forwardRef(
2728
2771
  action,
2729
2772
  actionPayload,
2730
2773
  hoverEvent,
2774
+ tapReveal = true,
2731
2775
  maxWidth,
2732
2776
  onClick,
2733
2777
  onMouseEnter,
2734
2778
  onMouseLeave,
2779
+ onPointerDown,
2735
2780
  ...rest
2736
2781
  }, ref) => {
2737
2782
  const eventBus = useEventBus();
@@ -2754,6 +2799,19 @@ var Box = React9.forwardRef(
2754
2799
  }
2755
2800
  onMouseLeave?.(e);
2756
2801
  }, [hoverEvent, eventBus, onMouseLeave]);
2802
+ const { triggerProps } = useTapReveal({
2803
+ enabled: tapReveal && !!hoverEvent,
2804
+ onReveal: useCallback(() => {
2805
+ if (hoverEvent) eventBus.emit(`UI:${hoverEvent}`, { hovered: true });
2806
+ }, [hoverEvent, eventBus]),
2807
+ onDismiss: useCallback(() => {
2808
+ if (hoverEvent) eventBus.emit(`UI:${hoverEvent}`, { hovered: false });
2809
+ }, [hoverEvent, eventBus])
2810
+ });
2811
+ const handlePointerDown = useCallback((e) => {
2812
+ if (hoverEvent && tapReveal) triggerProps.onPointerDown(e);
2813
+ onPointerDown?.(e);
2814
+ }, [hoverEvent, tapReveal, triggerProps, onPointerDown]);
2757
2815
  const isClickable = action || onClick;
2758
2816
  return React9.createElement(
2759
2817
  Component,
@@ -2781,6 +2839,7 @@ var Box = React9.forwardRef(
2781
2839
  onClick: isClickable ? handleClick : void 0,
2782
2840
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
2783
2841
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
2842
+ onPointerDown: hoverEvent && tapReveal || onPointerDown ? handlePointerDown : void 0,
2784
2843
  style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
2785
2844
  ...rest
2786
2845
  },