@dreamboard-games/sdk 0.2.1-alpha.0 → 0.3.0-alpha.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 (363) hide show
  1. package/dist/{HandView-ncJIVLhN.d.ts → HandView-PYDmehVD.d.ts} +1 -1
  2. package/dist/{ResourceCounter-CTREyF73.d.ts → ResourceCounter-BTXklCEZ.d.ts} +1 -1
  3. package/dist/{ThemeProvider-fy0_QzgO.d.ts → ThemeProvider-DvMl17Ny.d.ts} +1 -1
  4. package/dist/attributes-BeRyboMS.d.ts +279 -0
  5. package/dist/browser-interaction.d.ts +708 -0
  6. package/dist/browser-interaction.js +106 -0
  7. package/dist/{chunk-KAELH4KC.js → chunk-3RQEICD3.js} +2 -2
  8. package/dist/{chunk-TDSWKVZ4.js → chunk-ADYH6PVT.js} +2457 -1265
  9. package/dist/chunk-ADYH6PVT.js.map +1 -0
  10. package/dist/{chunk-YFY3RL52.js → chunk-P7VMTJ5D.js} +2 -2
  11. package/dist/{chunk-YFY3RL52.js.map → chunk-P7VMTJ5D.js.map} +1 -1
  12. package/dist/chunk-QLG6VEMW.js +1691 -0
  13. package/dist/chunk-QLG6VEMW.js.map +1 -0
  14. package/dist/{chunk-WYPQ3GG5.js → chunk-QZ6X4B5P.js} +1177 -1106
  15. package/dist/chunk-QZ6X4B5P.js.map +1 -0
  16. package/dist/{chunk-GKKBPPSW.js → chunk-TXXLS3OI.js} +405 -309
  17. package/dist/chunk-TXXLS3OI.js.map +1 -0
  18. package/dist/{chunk-FDNZTDD6.js → chunk-W6SGFWXH.js} +48 -44
  19. package/dist/chunk-W6SGFWXH.js.map +1 -0
  20. package/dist/{chunk-MKXPVOUT.js → chunk-Y2AFYBMB.js} +48 -4
  21. package/dist/chunk-Y2AFYBMB.js.map +1 -0
  22. package/dist/{index-BwqPQtBu.d.ts → codegen.d.ts} +57 -565
  23. package/dist/{infrastructure/workspace-codegen.js → codegen.js} +3 -3
  24. package/dist/{components-D5ZRE2Hl.d.ts → components-DaIqi9QM.d.ts} +48 -37
  25. package/dist/{hex-board-view-D_07hO6O.d.ts → hex-board-view-UCUjMALd.d.ts} +3 -2
  26. package/dist/{infrastructure/reducer-bundle-abi.d.ts → index.d-BGqVifr_.d.ts} +289 -10
  27. package/dist/index.js +1 -1
  28. package/dist/package-set.d.ts +2 -2
  29. package/dist/package-set.js +1 -1
  30. package/dist/primitive-props-BNHDkgd7.d.ts +16 -0
  31. package/dist/reducer-contract.d.ts +3 -0
  32. package/dist/{infrastructure/reducer-bundle-abi.js → reducer-contract.js} +4 -4
  33. package/dist/reducer.d.ts +185 -179
  34. package/dist/reducer.js +1637 -1353
  35. package/dist/reducer.js.map +1 -1
  36. package/dist/runtime/primitives.d.ts +10 -9
  37. package/dist/runtime/primitives.js +8 -7
  38. package/dist/runtime/runtime-api.d.ts +2 -0
  39. package/dist/runtime/runtime-api.js +1 -0
  40. package/dist/runtime/workspace-contract.d.ts +63 -17
  41. package/dist/runtime/workspace-contract.js +5 -5
  42. package/dist/{runtime-api-DWxvTr-O.d.ts → runtime-api-tGL3ArsB.d.ts} +109 -4
  43. package/dist/runtime.d.ts +12 -57
  44. package/dist/runtime.js +487 -7
  45. package/dist/runtime.js.map +1 -1
  46. package/dist/testing.d.ts +4 -4
  47. package/dist/testing.js.map +1 -1
  48. package/dist/types.d.ts +1531 -85
  49. package/dist/types.js +1 -3
  50. package/dist/types.js.map +1 -1
  51. package/dist/ui/components.d.ts +7 -8
  52. package/dist/ui/components.js +1 -1
  53. package/dist/ui/defaults.d.ts +1 -1
  54. package/dist/ui/{types/player-state.d.ts → player-state.d.ts} +2 -2
  55. package/dist/{ui-contract-iQfTtUSL.d.ts → ui-contract-SctM4ibF.d.ts} +157 -150
  56. package/dist/ui.d.ts +10 -11
  57. package/dist/ui.js +2 -2
  58. package/package.json +35 -74
  59. package/dist/bundle-CDd5FKeD.d.ts +0 -283
  60. package/dist/cards-Sl3b40Mv.d.ts +0 -13
  61. package/dist/chunk-7YAHLYBR.js +0 -481
  62. package/dist/chunk-7YAHLYBR.js.map +0 -1
  63. package/dist/chunk-FDNZTDD6.js.map +0 -1
  64. package/dist/chunk-GKKBPPSW.js.map +0 -1
  65. package/dist/chunk-I46YJSOD.js +0 -1
  66. package/dist/chunk-MKXPVOUT.js.map +0 -1
  67. package/dist/chunk-T52J5RMF.js +0 -1
  68. package/dist/chunk-TDSWKVZ4.js.map +0 -1
  69. package/dist/chunk-U5C6BONG.js +0 -34
  70. package/dist/chunk-U5C6BONG.js.map +0 -1
  71. package/dist/chunk-WYPQ3GG5.js.map +0 -1
  72. package/dist/generated/runtime/primitives.d.ts +0 -12
  73. package/dist/generated/runtime/primitives.js +0 -180
  74. package/dist/generated/runtime/primitives.js.map +0 -1
  75. package/dist/generated/runtime-api.d.ts +0 -3
  76. package/dist/generated/runtime-api.js +0 -2
  77. package/dist/generated/runtime.d.ts +0 -14
  78. package/dist/generated/runtime.js +0 -18
  79. package/dist/generated/runtime.js.map +0 -1
  80. package/dist/generated/workspace-contract.d.ts +0 -14
  81. package/dist/generated/workspace-contract.js +0 -14
  82. package/dist/generated/workspace-contract.js.map +0 -1
  83. package/dist/infrastructure/reducer-bundle-abi.js.map +0 -1
  84. package/dist/infrastructure/workspace-codegen.d.ts +0 -53
  85. package/dist/infrastructure/workspace-codegen.js.map +0 -1
  86. package/dist/manifest-contract-BNHVGFtU.d.ts +0 -9
  87. package/dist/primitive-props-DpKs-GCr.d.ts +0 -11
  88. package/dist/runtime/types/runtime-api.d.ts +0 -1
  89. package/dist/runtime/types/runtime-api.js +0 -2
  90. package/dist/runtime-api-3dshj6kK.d.ts +0 -101
  91. package/dist/slots-1GPGihk8.d.ts +0 -8
  92. package/src/generated/reducer-contract/builders.ts +0 -90
  93. package/src/generated/reducer-contract/version.ts +0 -9
  94. package/src/generated/reducer-contract/wire.ts +0 -100
  95. package/src/generated/reducer-contract/zod.ts +0 -103
  96. package/src/generated/runtime/primitives.ts +0 -2
  97. package/src/generated/runtime-api.ts +0 -5
  98. package/src/generated/runtime.ts +0 -35
  99. package/src/generated/workspace-contract.ts +0 -2
  100. package/src/index.ts +0 -7
  101. package/src/infrastructure/reducer-bundle-abi.ts +0 -8
  102. package/src/infrastructure/reducer-contract/bundle.ts +0 -37
  103. package/src/infrastructure/workspace-codegen/hex-geometry.ts +0 -69
  104. package/src/infrastructure/workspace-codegen/index.ts +0 -64
  105. package/src/infrastructure/workspace-codegen/manifest-contract.ts +0 -6632
  106. package/src/infrastructure/workspace-codegen/manifest-validation.ts +0 -795
  107. package/src/infrastructure/workspace-codegen/ownership.ts +0 -131
  108. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +0 -169
  109. package/src/infrastructure/workspace-codegen/seeds.ts +0 -1705
  110. package/src/infrastructure/workspace-codegen.ts +0 -1
  111. package/src/package-set.ts +0 -19
  112. package/src/reducer/authoring/contract.ts +0 -157
  113. package/src/reducer/authoring/effect.ts +0 -224
  114. package/src/reducer/authoring/game.ts +0 -23
  115. package/src/reducer/authoring/interaction.ts +0 -98
  116. package/src/reducer/authoring/phase.ts +0 -300
  117. package/src/reducer/authoring/types.ts +0 -70
  118. package/src/reducer/authoring/validation.ts +0 -382
  119. package/src/reducer/authoring/view-stage.ts +0 -68
  120. package/src/reducer/authoring.ts +0 -29
  121. package/src/reducer/bundle/ingress-bundle.ts +0 -491
  122. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +0 -254
  123. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +0 -73
  124. package/src/reducer/bundle/trusted/instruction-runner.ts +0 -414
  125. package/src/reducer/bundle/trusted/interaction-authorization.ts +0 -137
  126. package/src/reducer/bundle/trusted/interaction-collectors.ts +0 -859
  127. package/src/reducer/bundle/trusted/interaction-decision.ts +0 -747
  128. package/src/reducer/bundle/trusted/interaction-resolver.ts +0 -95
  129. package/src/reducer/bundle/trusted/interaction-types.ts +0 -171
  130. package/src/reducer/bundle/trusted/lifecycle-runner.ts +0 -427
  131. package/src/reducer/bundle/trusted/projection-builder.ts +0 -356
  132. package/src/reducer/bundle/trusted/projection-context.ts +0 -39
  133. package/src/reducer/bundle/trusted/rng-sampler.ts +0 -150
  134. package/src/reducer/bundle/trusted/runtime-registry.ts +0 -120
  135. package/src/reducer/bundle/trusted/runtime-scope.ts +0 -336
  136. package/src/reducer/bundle/trusted/simultaneous-player.ts +0 -97
  137. package/src/reducer/bundle/trusted/stage-resolver.ts +0 -87
  138. package/src/reducer/bundle/trusted/static-projection.ts +0 -116
  139. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +0 -97
  140. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +0 -39
  141. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +0 -43
  142. package/src/reducer/bundle/trusted/trusted-state-codec.ts +0 -48
  143. package/src/reducer/bundle/trusted-bundle.ts +0 -97
  144. package/src/reducer/bundle/types.ts +0 -171
  145. package/src/reducer/bundle.ts +0 -2
  146. package/src/reducer/client-param-schemas.ts +0 -57
  147. package/src/reducer/compose.ts +0 -34
  148. package/src/reducer/core/runtime-input.ts +0 -30
  149. package/src/reducer/core/runtime-instruction.ts +0 -59
  150. package/src/reducer/core/types.ts +0 -62
  151. package/src/reducer/definition-index.ts +0 -277
  152. package/src/reducer/derived.ts +0 -106
  153. package/src/reducer/effects.ts +0 -92
  154. package/src/reducer/engine/runtime-instruction-engine.ts +0 -155
  155. package/src/reducer/ingress/decode-runtime-input.ts +0 -7
  156. package/src/reducer/ingress/decode-session-state.ts +0 -9
  157. package/src/reducer/ingress/encode-session-state.ts +0 -6
  158. package/src/reducer/ingress/input-codec.ts +0 -18
  159. package/src/reducer/ingress/phase-schemas.ts +0 -62
  160. package/src/reducer/ingress/raw-types.ts +0 -107
  161. package/src/reducer/ingress/runtime-codec.ts +0 -14
  162. package/src/reducer/ingress/runtime-payload.ts +0 -13
  163. package/src/reducer/ingress/session-codec.ts +0 -392
  164. package/src/reducer/ingress/types.ts +0 -6
  165. package/src/reducer/inputs/boardInput.ts +0 -217
  166. package/src/reducer/inputs/boardTarget.ts +0 -190
  167. package/src/reducer/inputs/cardInput.ts +0 -86
  168. package/src/reducer/inputs/cardTarget.ts +0 -101
  169. package/src/reducer/inputs/choiceTarget.ts +0 -104
  170. package/src/reducer/inputs/defineInputs.ts +0 -71
  171. package/src/reducer/inputs/formInput.ts +0 -809
  172. package/src/reducer/inputs/many.ts +0 -120
  173. package/src/reducer/inputs/promptInput.ts +0 -87
  174. package/src/reducer/inputs/rngInput.ts +0 -58
  175. package/src/reducer/inputs/targetRule.ts +0 -123
  176. package/src/reducer/inputs.ts +0 -41
  177. package/src/reducer/model/definition.ts +0 -1072
  178. package/src/reducer/model/extract.ts +0 -745
  179. package/src/reducer/model/manifest.ts +0 -570
  180. package/src/reducer/model/queries.ts +0 -641
  181. package/src/reducer/model/runtime.ts +0 -264
  182. package/src/reducer/model/spec.ts +0 -1386
  183. package/src/reducer/model/table.ts +0 -260
  184. package/src/reducer/model.ts +0 -7
  185. package/src/reducer/ops.ts +0 -1034
  186. package/src/reducer/parse-utils.ts +0 -28
  187. package/src/reducer/per-player.ts +0 -422
  188. package/src/reducer/rng.ts +0 -69
  189. package/src/reducer/schema-helpers.ts +0 -185
  190. package/src/reducer/setup-bootstrap-helpers.ts +0 -171
  191. package/src/reducer/setup-bootstrap.ts +0 -481
  192. package/src/reducer/table-ops.ts +0 -2671
  193. package/src/reducer/table-queries.ts +0 -372
  194. package/src/reducer/transaction.ts +0 -120
  195. package/src/reducer.ts +0 -314
  196. package/src/runtime/primitives.ts +0 -1
  197. package/src/runtime/types/runtime-api.ts +0 -1
  198. package/src/runtime/workspace-contract.ts +0 -32
  199. package/src/runtime-internal/components/InteractionForm.tsx +0 -1309
  200. package/src/runtime-internal/components/PluginRuntime.tsx +0 -103
  201. package/src/runtime-internal/components/board/target-layer.ts +0 -70
  202. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +0 -44
  203. package/src/runtime-internal/context/InteractionDraftContext.tsx +0 -279
  204. package/src/runtime-internal/context/PluginSessionContext.tsx +0 -47
  205. package/src/runtime-internal/context/PluginStateContext.tsx +0 -262
  206. package/src/runtime-internal/context/RuntimeContext.tsx +0 -96
  207. package/src/runtime-internal/defaults/components.tsx +0 -409
  208. package/src/runtime-internal/defaults/index.ts +0 -11
  209. package/src/runtime-internal/errors/ValidationError.ts +0 -29
  210. package/src/runtime-internal/hooks/useActivePlayers.ts +0 -33
  211. package/src/runtime-internal/hooks/useBoardInteractions.ts +0 -665
  212. package/src/runtime-internal/hooks/useGameSelector.ts +0 -105
  213. package/src/runtime-internal/hooks/useGameView.ts +0 -9
  214. package/src/runtime-internal/hooks/useInteractionByKey.ts +0 -354
  215. package/src/runtime-internal/hooks/useInteractionHandle.ts +0 -438
  216. package/src/runtime-internal/hooks/useIsMyTurn.ts +0 -20
  217. package/src/runtime-internal/hooks/useLobby.ts +0 -76
  218. package/src/runtime-internal/hooks/useMe.ts +0 -48
  219. package/src/runtime-internal/hooks/usePlayerInfo.ts +0 -28
  220. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +0 -23
  221. package/src/runtime-internal/hooks/usePluginRuntime.ts +0 -147
  222. package/src/runtime-internal/hooks/useSeatInbox.ts +0 -61
  223. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +0 -10
  224. package/src/runtime-internal/index.ts +0 -42
  225. package/src/runtime-internal/internal.ts +0 -43
  226. package/src/runtime-internal/plugin-styles.css +0 -250
  227. package/src/runtime-internal/primitives/board.tsx +0 -459
  228. package/src/runtime-internal/primitives/dialog-lifecycle.ts +0 -58
  229. package/src/runtime-internal/primitives/dice.tsx +0 -79
  230. package/src/runtime-internal/primitives/game-ui-provider.tsx +0 -35
  231. package/src/runtime-internal/primitives/game.tsx +0 -387
  232. package/src/runtime-internal/primitives/hand-intent-adapter.ts +0 -147
  233. package/src/runtime-internal/primitives/hand-surface.tsx +0 -594
  234. package/src/runtime-internal/primitives/index.ts +0 -196
  235. package/src/runtime-internal/primitives/interaction-form-binding.tsx +0 -56
  236. package/src/runtime-internal/primitives/interaction-submit.ts +0 -90
  237. package/src/runtime-internal/primitives/interaction.tsx +0 -987
  238. package/src/runtime-internal/primitives/phase.tsx +0 -43
  239. package/src/runtime-internal/primitives/player-roster.tsx +0 -302
  240. package/src/runtime-internal/primitives/primitive-props.tsx +0 -101
  241. package/src/runtime-internal/primitives/prompt.tsx +0 -255
  242. package/src/runtime-internal/primitives/ui.tsx +0 -60
  243. package/src/runtime-internal/primitives/zone.tsx +0 -791
  244. package/src/runtime-internal/reducer.ts +0 -30
  245. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +0 -605
  246. package/src/runtime-internal/types/plugin-state.ts +0 -508
  247. package/src/runtime-internal/types/reducer-state.ts +0 -24
  248. package/src/runtime-internal/types/runtime-api.ts +0 -114
  249. package/src/runtime-internal/ui-contract.ts +0 -519
  250. package/src/runtime-internal/utils/card-intent-adapter.ts +0 -546
  251. package/src/runtime-internal/utils/interaction-inputs.ts +0 -492
  252. package/src/runtime-internal/utils/interaction-labels.ts +0 -23
  253. package/src/runtime-internal/utils/interaction-router.ts +0 -273
  254. package/src/runtime-internal/utils/interaction-status.ts +0 -74
  255. package/src/runtime-internal/workspace-contract.ts +0 -1170
  256. package/src/runtime.ts +0 -34
  257. package/src/testing/create-expect-api.ts +0 -352
  258. package/src/testing/create-test-runtime.ts +0 -381
  259. package/src/testing/definitions.ts +0 -127
  260. package/src/testing/index.ts +0 -3
  261. package/src/testing.ts +0 -1
  262. package/src/type-stubs/manifest-contract.d.ts +0 -42
  263. package/src/type-stubs/manifest-contract.js +0 -72
  264. package/src/type-stubs/ui-contract.d.ts +0 -5
  265. package/src/type-stubs/ui-contract.js +0 -1
  266. package/src/types/authoring-card-properties.type-test.ts +0 -266
  267. package/src/types/authoring.ts +0 -1282
  268. package/src/types/cards.ts +0 -19
  269. package/src/types/contracts.ts +0 -1550
  270. package/src/types/generated-helpers.ts +0 -35
  271. package/src/types/index.ts +0 -147
  272. package/src/types/slots.ts +0 -11
  273. package/src/types.ts +0 -1
  274. package/src/ui/components/ActionButton.tsx +0 -97
  275. package/src/ui/components/ActionPanel.tsx +0 -315
  276. package/src/ui/components/Card.tsx +0 -378
  277. package/src/ui/components/CardDragSurface.tsx +0 -1076
  278. package/src/ui/components/ChromeSuppressionContext.tsx +0 -70
  279. package/src/ui/components/CostDisplay.tsx +0 -145
  280. package/src/ui/components/DiceRoller.tsx +0 -581
  281. package/src/ui/components/Drawer.tsx +0 -180
  282. package/src/ui/components/ErrorBoundary.tsx +0 -275
  283. package/src/ui/components/GameEndDisplay.tsx +0 -398
  284. package/src/ui/components/GameSkeleton.tsx +0 -260
  285. package/src/ui/components/Hand.tsx +0 -468
  286. package/src/ui/components/HandDock.tsx +0 -299
  287. package/src/ui/components/HandView.tsx +0 -441
  288. package/src/ui/components/MobileHandTray.tsx +0 -381
  289. package/src/ui/components/MoreActions.tsx +0 -143
  290. package/src/ui/components/PhaseIndicator.tsx +0 -341
  291. package/src/ui/components/PlayArea.tsx +0 -146
  292. package/src/ui/components/PrimaryActionButton.tsx +0 -336
  293. package/src/ui/components/PrimaryButton.tsx +0 -45
  294. package/src/ui/components/ResourceCounter.tsx +0 -270
  295. package/src/ui/components/StagingZone.tsx +0 -134
  296. package/src/ui/components/ThemedButton.tsx +0 -113
  297. package/src/ui/components/Toast.tsx +0 -264
  298. package/src/ui/components/board/HexGrid.tsx +0 -1294
  299. package/src/ui/components/board/NetworkGraph.tsx +0 -476
  300. package/src/ui/components/board/SlotSystem.tsx +0 -388
  301. package/src/ui/components/board/SquareGrid.tsx +0 -1165
  302. package/src/ui/components/board/TrackBoard.tsx +0 -496
  303. package/src/ui/components/board/ZoneMap.tsx +0 -448
  304. package/src/ui/components/board/hex-board-view.ts +0 -123
  305. package/src/ui/components/board/index.ts +0 -142
  306. package/src/ui/components/board/interaction-accessibility.ts +0 -21
  307. package/src/ui/components/board/target-layer.ts +0 -66
  308. package/src/ui/components/card-render-content.type-test.ts +0 -27
  309. package/src/ui/components/hand-layout-math.ts +0 -163
  310. package/src/ui/components/hand-pointer-engine.ts +0 -413
  311. package/src/ui/components/index.ts +0 -245
  312. package/src/ui/components.ts +0 -1
  313. package/src/ui/defaults/components.tsx +0 -106
  314. package/src/ui/defaults/index.ts +0 -8
  315. package/src/ui/defaults.ts +0 -1
  316. package/src/ui/errors/ValidationError.ts +0 -29
  317. package/src/ui/helpers/cards.ts +0 -19
  318. package/src/ui/helpers/track-board.ts +0 -211
  319. package/src/ui/hooks/useBoardTopology.ts +0 -316
  320. package/src/ui/hooks/useCards.ts +0 -10
  321. package/src/ui/hooks/useHandCardPointer.ts +0 -381
  322. package/src/ui/hooks/useHandLayout.ts +0 -378
  323. package/src/ui/hooks/useHandPresentation.ts +0 -121
  324. package/src/ui/hooks/useHexBoard.ts +0 -74
  325. package/src/ui/hooks/useHexGrid.ts +0 -185
  326. package/src/ui/hooks/useIsMobile.ts +0 -35
  327. package/src/ui/hooks/usePanZoom.ts +0 -278
  328. package/src/ui/hooks/useSquareBoard.ts +0 -124
  329. package/src/ui/hooks/useSquareGrid.ts +0 -328
  330. package/src/ui/index.ts +0 -98
  331. package/src/ui/internal/ui/alert.tsx +0 -51
  332. package/src/ui/internal/ui/button.tsx +0 -58
  333. package/src/ui/internal/ui/dialog.tsx +0 -134
  334. package/src/ui/internal/ui/input.tsx +0 -21
  335. package/src/ui/internal/ui/label.tsx +0 -21
  336. package/src/ui/internal/ui/select.tsx +0 -129
  337. package/src/ui/internal/ui/tooltip.tsx +0 -54
  338. package/src/ui/internal/ui/utils.ts +0 -5
  339. package/src/ui/plugin-styles.css +0 -250
  340. package/src/ui/primitives/dialog-lifecycle.ts +0 -58
  341. package/src/ui/primitives/dice.tsx +0 -79
  342. package/src/ui/primitives/primitive-props.tsx +0 -101
  343. package/src/ui/theme/ThemeProvider.tsx +0 -252
  344. package/src/ui/theme/board.ts +0 -61
  345. package/src/ui/theme/css-vars.ts +0 -105
  346. package/src/ui/theme/derive.ts +0 -240
  347. package/src/ui/theme/index.ts +0 -61
  348. package/src/ui/theme/presets/arcade.ts +0 -261
  349. package/src/ui/theme/presets/studio.ts +0 -261
  350. package/src/ui/theme/presets/tabletop.ts +0 -266
  351. package/src/ui/theme/tokens.ts +0 -392
  352. package/src/ui/types/hex-color.ts +0 -20
  353. package/src/ui/types/player-state.ts +0 -463
  354. package/src/ui/types/tiled-board.ts +0 -785
  355. package/src/ui/types/visual-state.ts +0 -137
  356. package/src/ui.ts +0 -1
  357. /package/dist/{chunk-I46YJSOD.js.map → browser-interaction.js.map} +0 -0
  358. /package/dist/{chunk-KAELH4KC.js.map → chunk-3RQEICD3.js.map} +0 -0
  359. /package/dist/{chunk-T52J5RMF.js.map → codegen.js.map} +0 -0
  360. /package/dist/{generated/runtime-api.js.map → reducer-contract.js.map} +0 -0
  361. /package/dist/runtime/{types/runtime-api.js.map → runtime-api.js.map} +0 -0
  362. /package/dist/ui/{types/player-state.js → player-state.js} +0 -0
  363. /package/dist/ui/{types/player-state.js.map → player-state.js.map} +0 -0
package/dist/types.js CHANGED
@@ -1,11 +1,9 @@
1
1
  import "./chunk-PZ5AY32C.js";
2
2
 
3
- // src/types/authoring.ts
3
+ // ../sdk-types/dist/index.js
4
4
  function defineTopologyManifest(manifest) {
5
5
  return manifest;
6
6
  }
7
-
8
- // src/types/generated-helpers.ts
9
7
  function buildTypedRecord(ids, initial) {
10
8
  const createValue = typeof initial === "function" ? initial : () => initial;
11
9
  return Object.fromEntries(ids.map((id) => [id, createValue(id)]));
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/authoring.ts","../src/types/generated-helpers.ts"],"sourcesContent":["import type {\n BoardEdgeRef,\n BoardVertexRef,\n DieTypeSpec as ApiDieTypeSpec,\n GameTopologyManifest as ApiGameTopologyManifest,\n JsonValue,\n PropertySchema,\n} from \"./contracts.js\";\n\ntype DieTypeSpec = Omit<ApiDieTypeSpec, \"sides\"> & {\n sides?: ApiDieTypeSpec[\"sides\"];\n};\n\ntype DeepReadonly<T> = T extends (...args: readonly unknown[]) => unknown\n ? T\n : T extends readonly (infer Item)[]\n ? ReadonlyArray<DeepReadonly<Item>>\n : T extends object\n ? { readonly [Key in keyof T]: DeepReadonly<T[Key]> }\n : T;\n\ntype GameTopologyManifest = DeepReadonly<\n Omit<ApiGameTopologyManifest, \"dieTypes\"> & {\n dieTypes?: readonly DieTypeSpec[];\n }\n>;\n\ntype ArrayItem<T> = T extends readonly (infer Item)[] ? Item : never;\ntype EntryId<T> = T extends { id: infer Id extends string } ? Id : never;\ntype IdsOf<T> = EntryId<ArrayItem<NonNullable<T>>>;\ntype RuntimeRecord = Record<string, JsonValue>;\n\ntype CardSetId<Manifest extends GameTopologyManifest> = IdsOf<\n Manifest[\"cardSets\"]\n>;\ntype ZoneId<Manifest extends GameTopologyManifest> = IdsOf<Manifest[\"zones\"]>;\ntype BoardId<Manifest extends GameTopologyManifest> = IdsOf<Manifest[\"boards\"]>;\ntype PerPlayerZoneId<Manifest extends GameTopologyManifest> = EntryId<\n Extract<ArrayItem<NonNullable<Manifest[\"zones\"]>>, { scope: \"perPlayer\" }>\n>;\ntype SharedZoneId<Manifest extends GameTopologyManifest> = Exclude<\n ZoneId<Manifest>,\n PerPlayerZoneId<Manifest>\n>;\ntype PerPlayerBoardId<Manifest extends GameTopologyManifest> = EntryId<\n Extract<ArrayItem<NonNullable<Manifest[\"boards\"]>>, { scope: \"perPlayer\" }>\n>;\ntype SharedBoardId<Manifest extends GameTopologyManifest> = Exclude<\n BoardId<Manifest>,\n PerPlayerBoardId<Manifest>\n>;\ntype ResourceId<Manifest extends GameTopologyManifest> = IdsOf<\n Manifest[\"resources\"]\n>;\ntype PieceTypeId<Manifest extends GameTopologyManifest> = IdsOf<\n Manifest[\"pieceTypes\"]\n>;\ntype DieTypeId<Manifest extends GameTopologyManifest> = IdsOf<\n Manifest[\"dieTypes\"]\n>;\ntype PieceSeedOf<Manifest extends GameTopologyManifest> = ArrayItem<\n NonNullable<Manifest[\"pieceSeeds\"]>\n>;\ntype DieSeedOf<Manifest extends GameTopologyManifest> = ArrayItem<\n NonNullable<Manifest[\"dieSeeds\"]>\n>;\ntype SetupOptionId<Manifest extends GameTopologyManifest> = IdsOf<\n Manifest[\"setupOptions\"]\n>;\ntype ManualCardSetOf<Manifest extends GameTopologyManifest> = Extract<\n ArrayItem<NonNullable<Manifest[\"cardSets\"]>>,\n { type: \"manual\" }\n>;\ntype CardOf<Manifest extends GameTopologyManifest> =\n ManualCardSetOf<Manifest> extends infer CardSet\n ? CardSet extends { cards: infer Cards extends readonly unknown[] }\n ? ArrayItem<Cards>\n : never\n : never;\n\ntype BoardOf<\n Manifest extends GameTopologyManifest,\n CurrentBoardId extends BoardId<Manifest>,\n> = Extract<ArrayItem<NonNullable<Manifest[\"boards\"]>>, { id: CurrentBoardId }>;\ntype BoardTemplateOf<\n Manifest extends GameTopologyManifest,\n CurrentTemplateId extends string,\n> = Extract<\n ArrayItem<NonNullable<Manifest[\"boardTemplates\"]>>,\n { id: CurrentTemplateId }\n>;\ntype ResolvedBoardLikeOf<\n Manifest extends GameTopologyManifest,\n CurrentBoardId extends BoardId<Manifest>,\n> =\n | BoardOf<Manifest, CurrentBoardId>\n | (BoardOf<Manifest, CurrentBoardId> extends {\n templateId: infer CurrentTemplateId extends string;\n }\n ? BoardTemplateOf<Manifest, CurrentTemplateId>\n : never);\n\ntype SpaceIdOf<BoardLike> = IdsOf<\n BoardLike extends { spaces?: infer Spaces } ? Spaces : never\n>;\ntype ContainerIdOf<BoardLike> = IdsOf<\n BoardLike extends { containers?: infer Containers } ? Containers : never\n>;\ntype SpaceOf<BoardLike> = ArrayItem<\n NonNullable<BoardLike extends { spaces?: infer Spaces } ? Spaces : never>\n>;\ntype SquareSpaceOf<BoardLike> = Extract<\n SpaceOf<BoardLike>,\n { row: number; col: number }\n>;\ntype HexSpaceOf<BoardLike> = Extract<\n SpaceOf<BoardLike>,\n { q: number; r: number }\n>;\ntype BoardEntryOf<Manifest extends GameTopologyManifest> = ArrayItem<\n NonNullable<Manifest[\"boards\"]>\n>;\ntype TemplateForBoardEntry<\n Manifest extends GameTopologyManifest,\n Entry,\n> = Entry extends {\n templateId: infer TemplateId extends string;\n layout: infer Layout;\n}\n ? Extract<BoardTemplateOf<Manifest, TemplateId>, { layout: Layout }>\n : never;\ntype BoardLikeForEntry<Manifest extends GameTopologyManifest, Entry> =\n Entry extends BoardEntryOf<Manifest>\n ? Entry extends { id: infer CurrentBoardId extends BoardId<Manifest> }\n ? ResolvedBoardLikeOf<Manifest, CurrentBoardId>\n : Entry\n : Entry;\n\ntype SpaceIdForBoard<\n Manifest extends GameTopologyManifest,\n CurrentBoardId extends BoardId<Manifest>,\n> = SpaceIdOf<ResolvedBoardLikeOf<Manifest, CurrentBoardId>>;\ntype ContainerIdForBoard<\n Manifest extends GameTopologyManifest,\n CurrentBoardId extends BoardId<Manifest>,\n> = ContainerIdOf<ResolvedBoardLikeOf<Manifest, CurrentBoardId>>;\n\ntype RuntimeIdsFromCount<BaseId extends string, Count> = Count extends number\n ? number extends Count\n ? BaseId | `${BaseId}-${number}`\n : Count extends 1\n ? BaseId\n : `${BaseId}-${OneTo<Count>}`\n : BaseId;\n\ntype CardRuntimeId<Card> = Card extends { type: infer TypeId extends string }\n ? RuntimeIdsFromCount<\n TypeId,\n Card extends { count: infer Count extends number } ? Count : never\n >\n : never;\ntype SeedRuntimeId<Seed> = Seed extends { typeId: infer TypeId extends string }\n ? RuntimeIdsFromCount<\n Seed extends { id: infer Id extends string } ? Id : TypeId,\n Seed extends { count: infer Count extends number } ? Count : never\n >\n : never;\ntype CardId<Manifest extends GameTopologyManifest> = CardRuntimeId<\n CardOf<Manifest>\n>;\ntype PieceId<Manifest extends GameTopologyManifest> = SeedRuntimeId<\n PieceSeedOf<Manifest>\n>;\ntype DieId<Manifest extends GameTopologyManifest> = SeedRuntimeId<\n DieSeedOf<Manifest>\n>;\n\ntype PieceTypeOf<\n Manifest extends GameTopologyManifest,\n CurrentTypeId extends PieceTypeId<Manifest>,\n> = Extract<\n ArrayItem<NonNullable<Manifest[\"pieceTypes\"]>>,\n { id: CurrentTypeId }\n>;\ntype DieTypeOf<\n Manifest extends GameTopologyManifest,\n CurrentTypeId extends DieTypeId<Manifest>,\n> = Extract<\n ArrayItem<NonNullable<Manifest[\"dieTypes\"]>>,\n { id: CurrentTypeId }\n>;\ntype SlotIdOf<TypeSpec> = IdsOf<\n TypeSpec extends { slots?: infer Slots } ? Slots : never\n>;\ntype SlotIdForPieceType<\n Manifest extends GameTopologyManifest,\n CurrentTypeId extends PieceTypeId<Manifest>,\n> = SlotIdOf<PieceTypeOf<Manifest, CurrentTypeId>>;\ntype SlotIdForDieType<\n Manifest extends GameTopologyManifest,\n CurrentTypeId extends DieTypeId<Manifest>,\n> = SlotIdOf<DieTypeOf<Manifest, CurrentTypeId>>;\n\ntype SingletonExplicitSeed<Seed> = Seed extends { id: infer _Id extends string }\n ? Seed extends { count: infer Count extends number }\n ? Count extends 1\n ? Seed\n : never\n : Seed\n : never;\ntype TypedPieceSlotHostSeed<Manifest extends GameTopologyManifest> =\n SingletonExplicitSeed<PieceSeedOf<Manifest>> extends infer Seed\n ? Seed extends { typeId: infer CurrentTypeId extends PieceTypeId<Manifest> }\n ? [SlotIdForPieceType<Manifest, CurrentTypeId>] extends [never]\n ? never\n : Seed\n : never\n : never;\ntype TypedDieSlotHostSeed<Manifest extends GameTopologyManifest> =\n SingletonExplicitSeed<DieSeedOf<Manifest>> extends infer Seed\n ? Seed extends { typeId: infer CurrentTypeId extends DieTypeId<Manifest> }\n ? [SlotIdForDieType<Manifest, CurrentTypeId>] extends [never]\n ? never\n : Seed\n : never\n : never;\n\ntype TypedPieceSlotHomeSpec<Manifest extends GameTopologyManifest> =\n TypedPieceSlotHostSeed<Manifest> extends infer Seed\n ? Seed extends {\n id: infer HostId extends string;\n typeId: infer CurrentTypeId extends PieceTypeId<Manifest>;\n }\n ? {\n type: \"slot\";\n host: {\n kind: \"piece\";\n id: HostId;\n };\n slotId: SlotIdForPieceType<Manifest, CurrentTypeId>;\n }\n : never\n : never;\ntype TypedDieSlotHomeSpec<Manifest extends GameTopologyManifest> =\n TypedDieSlotHostSeed<Manifest> extends infer Seed\n ? Seed extends {\n id: infer HostId extends string;\n typeId: infer CurrentTypeId extends DieTypeId<Manifest>;\n }\n ? {\n type: \"slot\";\n host: {\n kind: \"die\";\n id: HostId;\n };\n slotId: SlotIdForDieType<Manifest, CurrentTypeId>;\n }\n : never\n : never;\n\ntype RequiredSchemaKeys<Properties extends Readonly<Record<string, unknown>>> =\n {\n [Key in keyof Properties]: Properties[Key] extends { optional: true }\n ? never\n : Properties[Key] extends { default: unknown }\n ? never\n : Key;\n }[keyof Properties];\ntype OptionalSchemaKeys<Properties extends Readonly<Record<string, unknown>>> =\n {\n [Key in keyof Properties]: Properties[Key] extends { optional: true }\n ? Key\n : Properties[Key] extends { default: unknown }\n ? Key\n : never;\n }[keyof Properties];\n\ntype SchemaValueFromObjectProperties<\n Properties extends Readonly<Record<string, unknown>>,\n Manifest extends GameTopologyManifest,\n BoardLike = never,\n> = keyof Properties extends never\n ? RuntimeRecord\n : {\n [Key in RequiredSchemaKeys<Properties>]: SchemaValueForProperty<\n Properties[Key],\n Manifest,\n BoardLike\n >;\n } & {\n [Key in OptionalSchemaKeys<Properties>]?: SchemaValueForProperty<\n Properties[Key],\n Manifest,\n BoardLike\n >;\n };\n\ntype SchemaValueForObjectSchema<\n Schema,\n Manifest extends GameTopologyManifest,\n BoardLike = never,\n> = Schema extends {\n properties: infer Properties extends Readonly<Record<string, unknown>>;\n}\n ? SchemaValueFromObjectProperties<Properties, Manifest, BoardLike>\n : RuntimeRecord;\n\ntype MergeSharedProperties<Variant, Shared> = Variant extends {\n properties: infer VariantProperties extends Readonly<Record<string, unknown>>;\n}\n ? {\n properties: Shared extends Readonly<Record<string, unknown>>\n ? Omit<Shared, keyof VariantProperties> & VariantProperties\n : VariantProperties;\n }\n : Variant;\n\ntype BaseSchemaValueForProperty<\n Schema,\n Manifest extends GameTopologyManifest,\n BoardLike = never,\n> = Schema extends { type: \"string\" }\n ? string\n : Schema extends { type: \"integer\" | \"number\" }\n ? number\n : Schema extends { type: \"boolean\" }\n ? boolean\n : Schema extends { type: \"zoneId\" }\n ? ZoneId<Manifest>\n : Schema extends { type: \"cardId\" }\n ? CardId<Manifest>\n : Schema extends { type: \"playerId\" }\n ? PlayerId<Manifest>\n : Schema extends { type: \"boardId\" }\n ? BoardId<Manifest>\n : Schema extends { type: \"spaceId\" }\n ? [BoardLike] extends [never]\n ? string\n : SpaceIdOf<BoardLike>\n : Schema extends { type: \"edgeId\" }\n ? [BoardLike] extends [never]\n ? string\n : DerivedEdgeIdOf<BoardLike>\n : Schema extends { type: \"vertexId\" }\n ? [BoardLike] extends [never]\n ? string\n : DerivedVertexIdOf<BoardLike>\n : Schema extends { type: \"pieceId\" }\n ? PieceId<Manifest>\n : Schema extends { type: \"dieId\" }\n ? DieId<Manifest>\n : Schema extends { type: \"resourceId\" }\n ? ResourceId<Manifest>\n : Schema extends { type: \"enum\" }\n ? Schema extends {\n enums: infer Values extends readonly string[];\n }\n ? Values[number]\n : string\n : Schema extends { type: \"array\" }\n ? ReadonlyArray<\n SchemaValueForProperty<\n Schema extends {\n items?: infer Items;\n }\n ? Items\n : undefined,\n Manifest,\n BoardLike\n >\n >\n : Schema extends { type: \"object\" }\n ? SchemaValueForObjectSchema<\n Schema extends {\n properties?: infer Properties extends\n Record<string, unknown>;\n }\n ? {\n properties: Properties;\n }\n : undefined,\n Manifest,\n BoardLike\n >\n : Schema extends { type: \"record\" }\n ? Record<\n string,\n SchemaValueForProperty<\n Schema extends {\n values?: infer Values;\n }\n ? Values\n : undefined,\n Manifest,\n BoardLike\n >\n >\n : RuntimeRecord;\n\ntype SchemaValueForProperty<\n Schema,\n Manifest extends GameTopologyManifest,\n BoardLike = never,\n> = Schema extends { nullable: true }\n ? BaseSchemaValueForProperty<Schema, Manifest, BoardLike> | null\n : BaseSchemaValueForProperty<Schema, Manifest, BoardLike>;\n\ntype BuildTuple<\n Length extends number,\n Accumulator extends unknown[] = [],\n> = Accumulator[\"length\"] extends Length\n ? Accumulator\n : BuildTuple<Length, [...Accumulator, unknown]>;\n\ntype EnumerateInternal<\n Length extends number,\n Accumulator extends number[] = [],\n> = Accumulator[\"length\"] extends Length\n ? Accumulator[number]\n : EnumerateInternal<Length, [...Accumulator, Accumulator[\"length\"]]>;\n\ntype AddOne<Count extends number> = [...BuildTuple<Count>, unknown][\"length\"] &\n number;\ntype OneTo<Count extends number> = Exclude<EnumerateInternal<AddOne<Count>>, 0>;\ntype PlayerId<Manifest extends GameTopologyManifest> =\n Manifest[\"players\"][\"maxPlayers\"] extends infer MaxPlayers extends number\n ? `player-${OneTo<MaxPlayers>}`\n : `player-${number}`;\n\ntype ToNumber<Input extends string> =\n Input extends `${infer Value extends number}` ? Value : never;\ntype AbsoluteNumber<Count extends number> =\n `${Count}` extends `-${infer Value extends number}` ? Value : Count;\ntype IsNegative<Count extends number> = `${Count}` extends `-${string}`\n ? true\n : false;\ntype Negate<Count extends number> = Count extends 0\n ? 0\n : ToNumber<`${`${Count}` extends `-${infer Value extends number}`\n ? Value\n : `-${Count}`}`>;\ntype AddPositive<Left extends number, Right extends number> = number extends\n | Left\n | Right\n ? number\n : [...BuildTuple<Left>, ...BuildTuple<Right>][\"length\"] & number;\ntype ComparePositive<\n Left extends number,\n Right extends number,\n> = Left extends Right\n ? \"equal\"\n : number extends Left | Right\n ? \"unknown\"\n : BuildTuple<Left> extends [...BuildTuple<Right>, ...infer Rest]\n ? Rest extends []\n ? \"equal\"\n : \"greater\"\n : \"less\";\ntype SubtractPositive<\n Left extends number,\n Right extends number,\n> = number extends Left | Right\n ? number\n : BuildTuple<Left> extends [...BuildTuple<Right>, ...infer Rest]\n ? Rest[\"length\"] & number\n : never;\ntype AddSigned<Left extends number, Right extends number> = number extends\n | Left\n | Right\n ? number\n : IsNegative<Left> extends IsNegative<Right>\n ? IsNegative<Left> extends true\n ? Negate<AddPositive<AbsoluteNumber<Left>, AbsoluteNumber<Right>>>\n : AddPositive<AbsoluteNumber<Left>, AbsoluteNumber<Right>>\n : ComparePositive<\n AbsoluteNumber<Left>,\n AbsoluteNumber<Right>\n > extends \"equal\"\n ? 0\n : ComparePositive<\n AbsoluteNumber<Left>,\n AbsoluteNumber<Right>\n > extends \"greater\"\n ? IsNegative<Left> extends true\n ? Negate<\n SubtractPositive<AbsoluteNumber<Left>, AbsoluteNumber<Right>>\n >\n : SubtractPositive<AbsoluteNumber<Left>, AbsoluteNumber<Right>>\n : IsNegative<Right> extends true\n ? Negate<\n SubtractPositive<AbsoluteNumber<Right>, AbsoluteNumber<Left>>\n >\n : SubtractPositive<AbsoluteNumber<Right>, AbsoluteNumber<Left>>;\ntype MultiplyByThree<Count extends number> = AddSigned<\n Count,\n AddSigned<Count, Count>\n>;\ntype CharRank<Character extends string> = Character extends \",\"\n ? 0\n : Character extends \"-\"\n ? 1\n : Character extends \"0\"\n ? 2\n : Character extends \"1\"\n ? 3\n : Character extends \"2\"\n ? 4\n : Character extends \"3\"\n ? 5\n : Character extends \"4\"\n ? 6\n : Character extends \"5\"\n ? 7\n : Character extends \"6\"\n ? 8\n : Character extends \"7\"\n ? 9\n : Character extends \"8\"\n ? 10\n : Character extends \"9\"\n ? 11\n : never;\ntype CompareCharacters<\n Left extends string,\n Right extends string,\n> = Left extends Right\n ? \"equal\"\n : ComparePositive<CharRank<Left>, CharRank<Right>> extends \"less\"\n ? \"less\"\n : \"greater\";\ntype CompareStrings<\n Left extends string,\n Right extends string,\n> = Left extends `${infer LeftHead}${infer LeftTail}`\n ? Right extends `${infer RightHead}${infer RightTail}`\n ? LeftHead extends RightHead\n ? CompareStrings<LeftTail, RightTail>\n : CompareCharacters<LeftHead, RightHead>\n : \"greater\"\n : Right extends \"\"\n ? \"equal\"\n : \"less\";\ntype SortPair<Left extends string, Right extends string> =\n CompareStrings<Left, Right> extends \"greater\"\n ? `${Right}::${Left}`\n : `${Left}::${Right}`;\ntype SquareCornerGeometryKey<\n Space extends { row: number; col: number },\n Corner extends \"nw\" | \"ne\" | \"se\" | \"sw\",\n> = Corner extends \"nw\"\n ? `${Space[\"col\"]},${Space[\"row\"]}`\n : Corner extends \"ne\"\n ? `${AddSigned<Space[\"col\"], 1>},${Space[\"row\"]}`\n : Corner extends \"se\"\n ? `${AddSigned<Space[\"col\"], 1>},${AddSigned<Space[\"row\"], 1>}`\n : `${Space[\"col\"]},${AddSigned<Space[\"row\"], 1>}`;\ntype SquareEdgeGeometryKey<\n Space extends { row: number; col: number },\n Side extends \"north\" | \"east\" | \"south\" | \"west\",\n> = Side extends \"north\"\n ? `${Space[\"col\"]},${Space[\"row\"]}::${AddSigned<Space[\"col\"], 1>},${Space[\"row\"]}`\n : Side extends \"east\"\n ? `${AddSigned<Space[\"col\"], 1>},${Space[\"row\"]}::${AddSigned<\n Space[\"col\"],\n 1\n >},${AddSigned<Space[\"row\"], 1>}`\n : Side extends \"south\"\n ? `${Space[\"col\"]},${AddSigned<Space[\"row\"], 1>}::${AddSigned<\n Space[\"col\"],\n 1\n >},${AddSigned<Space[\"row\"], 1>}`\n : `${Space[\"col\"]},${Space[\"row\"]}::${Space[\"col\"]},${AddSigned<\n Space[\"row\"],\n 1\n >}`;\ntype HexCornerGeometryKey<\n Space extends { q: number; r: number },\n Corner extends \"ne-e\" | \"e-se\" | \"se-sw\" | \"sw-w\" | \"w-nw\" | \"nw-ne\",\n> = `${AddSigned<\n MultiplyByThree<Space[\"q\"]>,\n Corner extends \"ne-e\"\n ? 2\n : Corner extends \"e-se\"\n ? 1\n : Corner extends \"se-sw\"\n ? -1\n : Corner extends \"sw-w\"\n ? -2\n : Corner extends \"w-nw\"\n ? -1\n : 1\n>},${AddSigned<\n MultiplyByThree<Negate<AddSigned<Space[\"q\"], Space[\"r\"]>>>,\n Corner extends \"ne-e\"\n ? -1\n : Corner extends \"e-se\"\n ? -2\n : Corner extends \"se-sw\"\n ? -1\n : Corner extends \"sw-w\"\n ? 1\n : Corner extends \"w-nw\"\n ? 2\n : 1\n>},${AddSigned<\n MultiplyByThree<Space[\"r\"]>,\n Corner extends \"ne-e\"\n ? -1\n : Corner extends \"e-se\"\n ? 1\n : Corner extends \"se-sw\"\n ? 2\n : Corner extends \"sw-w\"\n ? 1\n : Corner extends \"w-nw\"\n ? -1\n : -2\n>}`;\ntype HexEdgeGeometryKey<\n Space extends { q: number; r: number },\n Side extends \"e\" | \"ne\" | \"nw\" | \"w\" | \"sw\" | \"se\",\n> = SortPair<\n HexCornerGeometryKey<\n Space,\n Side extends \"e\"\n ? \"ne-e\"\n : Side extends \"ne\"\n ? \"nw-ne\"\n : Side extends \"nw\"\n ? \"w-nw\"\n : Side extends \"w\"\n ? \"sw-w\"\n : Side extends \"sw\"\n ? \"se-sw\"\n : \"e-se\"\n >,\n HexCornerGeometryKey<\n Space,\n Side extends \"e\"\n ? \"e-se\"\n : Side extends \"ne\"\n ? \"ne-e\"\n : Side extends \"nw\"\n ? \"nw-ne\"\n : Side extends \"w\"\n ? \"w-nw\"\n : Side extends \"sw\"\n ? \"sw-w\"\n : \"se-sw\"\n >\n>;\ntype DerivedSquareEdgeIdOf<BoardLike> =\n SquareSpaceOf<BoardLike> extends infer Space\n ? Space extends { row: number; col: number }\n ?\n | `square-edge:${SquareEdgeGeometryKey<Space, \"north\">}`\n | `square-edge:${SquareEdgeGeometryKey<Space, \"east\">}`\n | `square-edge:${SquareEdgeGeometryKey<Space, \"south\">}`\n | `square-edge:${SquareEdgeGeometryKey<Space, \"west\">}`\n : never\n : never;\ntype DerivedSquareVertexIdOf<BoardLike> =\n SquareSpaceOf<BoardLike> extends infer Space\n ? Space extends { row: number; col: number }\n ?\n | `square-vertex:${SquareCornerGeometryKey<Space, \"nw\">}`\n | `square-vertex:${SquareCornerGeometryKey<Space, \"ne\">}`\n | `square-vertex:${SquareCornerGeometryKey<Space, \"se\">}`\n | `square-vertex:${SquareCornerGeometryKey<Space, \"sw\">}`\n : never\n : never;\ntype DerivedHexEdgeIdOf<BoardLike> =\n HexSpaceOf<BoardLike> extends infer Space\n ? Space extends { q: number; r: number }\n ?\n | `hex-edge:${HexEdgeGeometryKey<Space, \"e\">}`\n | `hex-edge:${HexEdgeGeometryKey<Space, \"ne\">}`\n | `hex-edge:${HexEdgeGeometryKey<Space, \"nw\">}`\n | `hex-edge:${HexEdgeGeometryKey<Space, \"w\">}`\n | `hex-edge:${HexEdgeGeometryKey<Space, \"sw\">}`\n | `hex-edge:${HexEdgeGeometryKey<Space, \"se\">}`\n : never\n : never;\ntype DerivedHexVertexIdOf<BoardLike> =\n HexSpaceOf<BoardLike> extends infer Space\n ? Space extends { q: number; r: number }\n ?\n | `hex-vertex:${HexCornerGeometryKey<Space, \"ne-e\">}`\n | `hex-vertex:${HexCornerGeometryKey<Space, \"e-se\">}`\n | `hex-vertex:${HexCornerGeometryKey<Space, \"se-sw\">}`\n | `hex-vertex:${HexCornerGeometryKey<Space, \"sw-w\">}`\n | `hex-vertex:${HexCornerGeometryKey<Space, \"w-nw\">}`\n | `hex-vertex:${HexCornerGeometryKey<Space, \"nw-ne\">}`\n : never\n : never;\ntype DerivedEdgeIdOf<BoardLike> = BoardLike extends { layout: \"square\" }\n ? DerivedSquareEdgeIdOf<BoardLike>\n : BoardLike extends { layout: \"hex\" }\n ? DerivedHexEdgeIdOf<BoardLike>\n : never;\ntype DerivedVertexIdOf<BoardLike> = BoardLike extends { layout: \"square\" }\n ? DerivedSquareVertexIdOf<BoardLike>\n : BoardLike extends { layout: \"hex\" }\n ? DerivedHexVertexIdOf<BoardLike>\n : never;\n\ntype SetupOptionChoiceId<Option> = IdsOf<\n Option extends { choices?: infer Choices } ? Choices : never\n>;\ntype SetupOptionOf<Manifest extends GameTopologyManifest> = ArrayItem<\n NonNullable<Manifest[\"setupOptions\"]>\n>;\ntype SetupOptionChoiceIdFor<\n Manifest extends GameTopologyManifest,\n OptionId extends SetupOptionId<Manifest>,\n> = SetupOptionChoiceId<Extract<SetupOptionOf<Manifest>, { id: OptionId }>>;\n\ntype TypedSharedSpaceHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in SharedBoardId<Manifest>]: {\n type: \"space\";\n boardId: CurrentBoardId;\n spaceId: SpaceIdForBoard<Manifest, CurrentBoardId>;\n };\n}[SharedBoardId<Manifest>];\n\ntype TypedPerPlayerSpaceHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in PerPlayerBoardId<Manifest>]: {\n type: \"space\";\n boardId: CurrentBoardId;\n spaceId: SpaceIdForBoard<Manifest, CurrentBoardId>;\n };\n}[PerPlayerBoardId<Manifest>];\n\ntype TypedSharedContainerHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in SharedBoardId<Manifest>]: {\n type: \"container\";\n boardId: CurrentBoardId;\n containerId: ContainerIdForBoard<Manifest, CurrentBoardId>;\n };\n}[SharedBoardId<Manifest>];\n\ntype TypedPerPlayerContainerHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in PerPlayerBoardId<Manifest>]: {\n type: \"container\";\n boardId: CurrentBoardId;\n containerId: ContainerIdForBoard<Manifest, CurrentBoardId>;\n };\n}[PerPlayerBoardId<Manifest>];\n\ntype TypedSharedEdgeHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in SharedBoardId<Manifest>]: {\n type: \"edge\";\n boardId: CurrentBoardId;\n ref: BoardEdgeRef;\n };\n}[SharedBoardId<Manifest>];\n\ntype TypedPerPlayerEdgeHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in PerPlayerBoardId<Manifest>]: {\n type: \"edge\";\n boardId: CurrentBoardId;\n ref: BoardEdgeRef;\n };\n}[PerPlayerBoardId<Manifest>];\n\ntype TypedSharedVertexHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in SharedBoardId<Manifest>]: {\n type: \"vertex\";\n boardId: CurrentBoardId;\n ref: BoardVertexRef;\n };\n}[SharedBoardId<Manifest>];\n\ntype TypedPerPlayerVertexHomeSpec<Manifest extends GameTopologyManifest> = {\n [CurrentBoardId in PerPlayerBoardId<Manifest>]: {\n type: \"vertex\";\n boardId: CurrentBoardId;\n ref: BoardVertexRef;\n };\n}[PerPlayerBoardId<Manifest>];\n\ntype TypedSharedZoneHomeSpec<Manifest extends GameTopologyManifest> = {\n type: \"zone\";\n zoneId: SharedZoneId<Manifest>;\n};\n\ntype TypedPerPlayerZoneHomeSpec<Manifest extends GameTopologyManifest> = {\n type: \"zone\";\n zoneId: PerPlayerZoneId<Manifest>;\n};\n\ntype TypedPlayerScopedComponentHomeSpec<Manifest extends GameTopologyManifest> =\n\n | TypedPerPlayerZoneHomeSpec<Manifest>\n | TypedPerPlayerSpaceHomeSpec<Manifest>\n | TypedPerPlayerContainerHomeSpec<Manifest>\n | TypedPerPlayerEdgeHomeSpec<Manifest>\n | TypedPerPlayerVertexHomeSpec<Manifest>;\n\ntype TypedSharedComponentHomeSpec<Manifest extends GameTopologyManifest> =\n | { type: \"detached\" }\n | TypedSharedZoneHomeSpec<Manifest>\n | TypedSharedSpaceHomeSpec<Manifest>\n | TypedSharedContainerHomeSpec<Manifest>\n | TypedSharedEdgeHomeSpec<Manifest>\n | TypedSharedVertexHomeSpec<Manifest>\n | TypedPieceSlotHomeSpec<Manifest>\n | TypedDieSlotHomeSpec<Manifest>;\n\ntype TypedComponentHomeSpec<Manifest extends GameTopologyManifest> =\n | TypedSharedComponentHomeSpec<Manifest>\n | TypedPlayerScopedComponentHomeSpec<Manifest>;\n\ntype TypedSeedLocationSpec<\n Seed,\n Manifest extends GameTopologyManifest,\n> = Seed extends { home: infer Home }\n ? Home extends TypedPlayerScopedComponentHomeSpec<Manifest>\n ? Omit<Seed, \"ownerId\" | \"home\"> & {\n ownerId: PlayerId<Manifest>;\n home: TypedPlayerScopedComponentHomeSpec<Manifest>;\n }\n : Omit<Seed, \"ownerId\" | \"home\"> & {\n ownerId?: PlayerId<Manifest>;\n home?: TypedComponentHomeSpec<Manifest>;\n }\n : Omit<Seed, \"ownerId\" | \"home\"> & {\n ownerId?: PlayerId<Manifest>;\n home?: TypedComponentHomeSpec<Manifest>;\n };\n\ntype TypedVisibilitySpec<Manifest extends GameTopologyManifest> = {\n faceUp?: boolean;\n visibleTo?: readonly PlayerId<Manifest>[];\n};\ntype TypedVisibility<T, Manifest extends GameTopologyManifest> = T extends {\n visibility?: unknown;\n}\n ? Omit<T, \"visibility\"> & {\n visibility?: TypedVisibilitySpec<Manifest>;\n }\n : T;\ntype TypedFields<\n T,\n Schema,\n Manifest extends GameTopologyManifest,\n BoardLike = never,\n> = T extends { fields?: unknown }\n ? Omit<T, \"fields\"> & {\n fields?: SchemaValueForObjectSchema<Schema, Manifest, BoardLike>;\n }\n : T;\ntype TypedBoardContainerHost<Host, BoardLike> = Host extends {\n type: \"space\";\n spaceId: string;\n}\n ? Omit<Host, \"spaceId\"> & {\n spaceId: SpaceIdOf<BoardLike>;\n }\n : Host;\ntype TypedBoardContainer<\n Container,\n Manifest extends GameTopologyManifest,\n BoardLike,\n ContainerSchema,\n> = Container extends { host: infer Host }\n ? Omit<\n TypedFields<\n TypedAllowedCardSetIds<Container, Manifest>,\n ContainerSchema,\n Manifest,\n BoardLike\n >,\n \"host\"\n > & {\n host: TypedBoardContainerHost<Host, BoardLike>;\n }\n : TypedFields<\n TypedAllowedCardSetIds<Container, Manifest>,\n ContainerSchema,\n Manifest,\n BoardLike\n >;\ntype TypedBoardRelation<\n Relation,\n Manifest extends GameTopologyManifest,\n BoardLike,\n RelationSchema,\n> = Relation extends object\n ? Omit<\n TypedFields<Relation, RelationSchema, Manifest, BoardLike>,\n \"fromSpaceId\" | \"toSpaceId\"\n > & {\n fromSpaceId: SpaceIdOf<BoardLike>;\n toSpaceId: SpaceIdOf<BoardLike>;\n }\n : Relation;\ntype TypedOptionalArray<\n Base,\n Source,\n Key extends string,\n Item,\n> = Source extends { [Property in Key]?: readonly unknown[] }\n ? Base & {\n [Property in Key]?: ReadonlyArray<Item>;\n }\n : Base;\ntype EffectiveSchemaForEntry<\n Manifest extends GameTopologyManifest,\n Entry,\n Key extends string,\n> = Key extends keyof Entry\n ? Entry[Key]\n : TemplateForBoardEntry<Manifest, Entry> extends infer Template\n ? Key extends keyof Template\n ? Template[Key]\n : undefined\n : undefined;\ntype TypedGenericBoardLike<\n Entry,\n Manifest extends GameTopologyManifest,\n BoardLike,\n> = TypedOptionalArray<\n TypedOptionalArray<\n TypedOptionalArray<\n TypedFields<\n Omit<Entry, \"spaces\" | \"relations\" | \"containers\">,\n EffectiveSchemaForEntry<Manifest, Entry, \"boardFieldsSchema\">,\n Manifest,\n BoardLike\n >,\n Entry,\n \"spaces\",\n TypedFields<\n ArrayItem<\n NonNullable<Entry extends { spaces?: infer Spaces } ? Spaces : never>\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"spaceFieldsSchema\">,\n Manifest,\n BoardLike\n >\n >,\n Entry,\n \"relations\",\n TypedBoardRelation<\n ArrayItem<\n NonNullable<\n Entry extends { relations?: infer Relations } ? Relations : never\n >\n >,\n Manifest,\n BoardLike,\n EffectiveSchemaForEntry<Manifest, Entry, \"relationFieldsSchema\">\n >\n >,\n Entry,\n \"containers\",\n TypedBoardContainer<\n ArrayItem<\n NonNullable<\n Entry extends { containers?: infer Containers } ? Containers : never\n >\n >,\n Manifest,\n BoardLike,\n EffectiveSchemaForEntry<Manifest, Entry, \"containerFieldsSchema\">\n >\n>;\ntype TypedHexBoardLike<\n Entry,\n Manifest extends GameTopologyManifest,\n BoardLike,\n> = TypedOptionalArray<\n TypedOptionalArray<\n TypedOptionalArray<\n TypedFields<\n Omit<Entry, \"spaces\" | \"edges\" | \"vertices\">,\n EffectiveSchemaForEntry<Manifest, Entry, \"boardFieldsSchema\">,\n Manifest,\n BoardLike\n >,\n Entry,\n \"spaces\",\n TypedFields<\n ArrayItem<\n NonNullable<Entry extends { spaces?: infer Spaces } ? Spaces : never>\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"spaceFieldsSchema\">,\n Manifest,\n BoardLike\n >\n >,\n Entry,\n \"edges\",\n TypedFields<\n ArrayItem<\n NonNullable<Entry extends { edges?: infer Edges } ? Edges : never>\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"edgeFieldsSchema\">,\n Manifest,\n BoardLike\n >\n >,\n Entry,\n \"vertices\",\n TypedFields<\n ArrayItem<\n NonNullable<\n Entry extends { vertices?: infer Vertices } ? Vertices : never\n >\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"vertexFieldsSchema\">,\n Manifest,\n BoardLike\n >\n>;\ntype TypedSquareBoardLike<\n Entry,\n Manifest extends GameTopologyManifest,\n BoardLike,\n> = TypedOptionalArray<\n TypedOptionalArray<\n TypedOptionalArray<\n TypedOptionalArray<\n TypedOptionalArray<\n TypedFields<\n Omit<\n Entry,\n \"spaces\" | \"relations\" | \"containers\" | \"edges\" | \"vertices\"\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"boardFieldsSchema\">,\n Manifest,\n BoardLike\n >,\n Entry,\n \"spaces\",\n TypedFields<\n ArrayItem<\n NonNullable<\n Entry extends { spaces?: infer Spaces } ? Spaces : never\n >\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"spaceFieldsSchema\">,\n Manifest,\n BoardLike\n >\n >,\n Entry,\n \"relations\",\n TypedBoardRelation<\n ArrayItem<\n NonNullable<\n Entry extends { relations?: infer Relations } ? Relations : never\n >\n >,\n Manifest,\n BoardLike,\n EffectiveSchemaForEntry<Manifest, Entry, \"relationFieldsSchema\">\n >\n >,\n Entry,\n \"containers\",\n TypedBoardContainer<\n ArrayItem<\n NonNullable<\n Entry extends { containers?: infer Containers } ? Containers : never\n >\n >,\n Manifest,\n BoardLike,\n EffectiveSchemaForEntry<Manifest, Entry, \"containerFieldsSchema\">\n >\n >,\n Entry,\n \"edges\",\n TypedFields<\n ArrayItem<\n NonNullable<Entry extends { edges?: infer Edges } ? Edges : never>\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"edgeFieldsSchema\">,\n Manifest,\n BoardLike\n >\n >,\n Entry,\n \"vertices\",\n TypedFields<\n ArrayItem<\n NonNullable<\n Entry extends { vertices?: infer Vertices } ? Vertices : never\n >\n >,\n EffectiveSchemaForEntry<Manifest, Entry, \"vertexFieldsSchema\">,\n Manifest,\n BoardLike\n >\n>;\ntype TypedBoardLikeEntry<\n Entry,\n Manifest extends GameTopologyManifest,\n> = Entry extends { layout: \"generic\" }\n ? TypedGenericBoardLike<Entry, Manifest, BoardLikeForEntry<Manifest, Entry>>\n : Entry extends { layout: \"hex\" }\n ? TypedHexBoardLike<Entry, Manifest, BoardLikeForEntry<Manifest, Entry>>\n : Entry extends { layout: \"square\" }\n ? TypedSquareBoardLike<\n Entry,\n Manifest,\n BoardLikeForEntry<Manifest, Entry>\n >\n : Entry;\n\ntype TypedCard<\n Card,\n Manifest extends GameTopologyManifest,\n CardSchema,\n> = Card extends { type: infer CardType extends string }\n ? Omit<TypedVisibility<Card, Manifest>, \"home\" | \"properties\"> & {\n home?: TypedComponentHomeSpec<Manifest>;\n properties: CardSchema extends {\n variants: infer Variants extends Record<string, unknown>;\n shared?: infer Shared;\n }\n ? CardType extends keyof Variants\n ? SchemaValueForObjectSchema<\n MergeSharedProperties<Variants[CardType], Shared>,\n Manifest\n >\n : never\n : SchemaValueForObjectSchema<CardSchema, Manifest>;\n }\n : Card;\n\ntype TypedCardSet<\n CardSet,\n Manifest extends GameTopologyManifest,\n> = CardSet extends {\n type: \"manual\";\n cardSchema: infer CardSchema;\n cards: infer Cards extends readonly unknown[];\n}\n ? Omit<CardSet, \"cards\"> & {\n cards: ReadonlyArray<TypedCard<ArrayItem<Cards>, Manifest, CardSchema>>;\n }\n : CardSet;\n\ntype TypedAllowedCardSetIds<\n T,\n Manifest extends GameTopologyManifest,\n> = T extends object\n ? Omit<T, \"allowedCardSetIds\"> & {\n allowedCardSetIds?: readonly CardSetId<Manifest>[];\n }\n : T;\n\ntype TypedZone<\n Zone,\n Manifest extends GameTopologyManifest,\n> = TypedAllowedCardSetIds<Zone, Manifest>;\n\ntype TypedPieceSeed<\n Seed,\n Manifest extends GameTopologyManifest,\n> = Seed extends { typeId: infer CurrentTypeId }\n ? CurrentTypeId extends PieceTypeId<Manifest>\n ? Omit<\n TypedSeedLocationSpec<TypedVisibility<Seed, Manifest>, Manifest>,\n \"typeId\" | \"ownerId\" | \"home\" | \"fields\"\n > & {\n typeId: CurrentTypeId;\n fields?: SchemaValueForObjectSchema<\n PieceTypeOf<Manifest, CurrentTypeId> extends {\n fieldsSchema?: infer FieldsSchema;\n }\n ? FieldsSchema\n : undefined,\n Manifest\n >;\n } & Pick<\n TypedSeedLocationSpec<TypedVisibility<Seed, Manifest>, Manifest>,\n \"ownerId\" | \"home\"\n >\n : Omit<Seed, \"typeId\"> & {\n typeId: PieceTypeId<Manifest>;\n }\n : never;\n\ntype TypedDieSeed<Seed, Manifest extends GameTopologyManifest> = Seed extends {\n typeId: infer CurrentTypeId;\n}\n ? CurrentTypeId extends DieTypeId<Manifest>\n ? Omit<\n TypedSeedLocationSpec<TypedVisibility<Seed, Manifest>, Manifest>,\n \"typeId\" | \"ownerId\" | \"home\" | \"fields\"\n > & {\n typeId: CurrentTypeId;\n fields?: SchemaValueForObjectSchema<\n DieTypeOf<Manifest, CurrentTypeId> extends {\n fieldsSchema?: infer FieldsSchema;\n }\n ? FieldsSchema\n : undefined,\n Manifest\n >;\n } & Pick<\n TypedSeedLocationSpec<TypedVisibility<Seed, Manifest>, Manifest>,\n \"ownerId\" | \"home\"\n >\n : Omit<Seed, \"typeId\"> & {\n typeId: DieTypeId<Manifest>;\n }\n : never;\n\ntype TypedSetupOptionValues<Manifest extends GameTopologyManifest> = Partial<{\n [OptionId in SetupOptionId<Manifest>]: SetupOptionChoiceIdFor<\n Manifest,\n OptionId\n >;\n}>;\n\ntype TypedSetupProfile<\n Profile,\n Manifest extends GameTopologyManifest,\n> = Profile extends object\n ? Omit<Profile, \"optionValues\"> & {\n optionValues?: TypedSetupOptionValues<Manifest>;\n }\n : Profile;\n\nexport type TypedTopologyManifest<Manifest extends GameTopologyManifest> = Omit<\n Manifest,\n | \"cardSets\"\n | \"zones\"\n | \"boardTemplates\"\n | \"boards\"\n | \"pieceSeeds\"\n | \"dieSeeds\"\n | \"setupProfiles\"\n> & {\n cardSets: ReadonlyArray<\n TypedCardSet<ArrayItem<Manifest[\"cardSets\"]>, Manifest>\n >;\n zones?: Manifest[\"zones\"] extends readonly unknown[]\n ? ReadonlyArray<TypedZone<ArrayItem<Manifest[\"zones\"]>, Manifest>>\n : Manifest[\"zones\"];\n boardTemplates?: Manifest[\"boardTemplates\"] extends readonly unknown[]\n ? ReadonlyArray<\n TypedBoardLikeEntry<ArrayItem<Manifest[\"boardTemplates\"]>, Manifest>\n >\n : Manifest[\"boardTemplates\"];\n boards: Manifest[\"boards\"] extends readonly unknown[]\n ? ReadonlyArray<\n TypedBoardLikeEntry<ArrayItem<Manifest[\"boards\"]>, Manifest>\n >\n : Manifest[\"boards\"];\n pieceSeeds?: Manifest[\"pieceSeeds\"] extends readonly unknown[]\n ? ReadonlyArray<TypedPieceSeed<ArrayItem<Manifest[\"pieceSeeds\"]>, Manifest>>\n : Manifest[\"pieceSeeds\"];\n dieSeeds?: Manifest[\"dieSeeds\"] extends readonly unknown[]\n ? ReadonlyArray<TypedDieSeed<ArrayItem<Manifest[\"dieSeeds\"]>, Manifest>>\n : Manifest[\"dieSeeds\"];\n setupProfiles?: Manifest[\"setupProfiles\"] extends readonly unknown[]\n ? ReadonlyArray<\n TypedSetupProfile<ArrayItem<Manifest[\"setupProfiles\"]>, Manifest>\n >\n : Manifest[\"setupProfiles\"];\n};\n\ntype TopologyManifestValidation<Manifest> =\n Manifest extends GameTopologyManifest\n ? TypedTopologyManifest<Manifest>\n : GameTopologyManifest;\n\ntype DefinedTopologyManifest<Manifest> = Manifest extends GameTopologyManifest\n ? Manifest\n : GameTopologyManifest;\n\nexport function defineTopologyManifest<const Manifest>(\n manifest: Manifest & TopologyManifestValidation<NoInfer<Manifest>>,\n): DefinedTopologyManifest<Manifest> {\n return manifest as DefinedTopologyManifest<Manifest>;\n}\n","type RecordInitializer<Id extends string, Value> = Value | ((id: Id) => Value);\n\nexport function buildTypedRecord<Id extends string, Value>(\n ids: readonly Id[],\n initial: RecordInitializer<Id, Value>,\n): Record<Id, Value> {\n const createValue =\n typeof initial === \"function\"\n ? (initial as (id: Id) => Value)\n : () => initial;\n\n return Object.fromEntries(ids.map((id) => [id, createValue(id)])) as Record<\n Id,\n Value\n >;\n}\n\nexport function isTypedId<Id extends string>(\n ids: readonly Id[],\n value: string,\n): value is Id {\n return (ids as readonly string[]).includes(value);\n}\n\nexport function expectTypedId<Id extends string>(\n ids: readonly Id[],\n value: string,\n description: string,\n): Id {\n if (isTypedId(ids, value)) {\n return value;\n }\n\n throw new Error(`Unknown ${description} '${value}'.`);\n}\n"],"mappings":";;;AA6vCO,SAAS,uBACd,UACmC;AACnC,SAAO;AACT;;;AC/vCO,SAAS,iBACd,KACA,SACmB;AACnB,QAAM,cACJ,OAAO,YAAY,aACd,UACD,MAAM;AAEZ,SAAO,OAAO,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;AAIlE;AAEO,SAAS,UACd,KACA,OACa;AACb,SAAQ,IAA0B,SAAS,KAAK;AAClD;AAEO,SAAS,cACd,KACA,OACA,aACI;AACJ,MAAI,UAAU,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,WAAW,WAAW,KAAK,KAAK,IAAI;AACtD;","names":[]}
1
+ {"version":3,"sources":["../../sdk-types/dist/index.js"],"sourcesContent":["// src/authoring.ts\nfunction defineTopologyManifest(manifest) {\n return manifest;\n}\n\n// src/generated-helpers.ts\nfunction buildTypedRecord(ids, initial) {\n const createValue = typeof initial === \"function\" ? initial : () => initial;\n return Object.fromEntries(ids.map((id) => [id, createValue(id)]));\n}\nfunction isTypedId(ids, value) {\n return ids.includes(value);\n}\nfunction expectTypedId(ids, value, description) {\n if (isTypedId(ids, value)) {\n return value;\n }\n throw new Error(`Unknown ${description} '${value}'.`);\n}\nexport {\n buildTypedRecord,\n defineTopologyManifest,\n expectTypedId,\n isTypedId\n};\n"],"mappings":";;;AACA,SAAS,uBAAuB,UAAU;AACxC,SAAO;AACT;AAGA,SAAS,iBAAiB,KAAK,SAAS;AACtC,QAAM,cAAc,OAAO,YAAY,aAAa,UAAU,MAAM;AACpE,SAAO,OAAO,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;AAClE;AACA,SAAS,UAAU,KAAK,OAAO;AAC7B,SAAO,IAAI,SAAS,KAAK;AAC3B;AACA,SAAS,cAAc,KAAK,OAAO,aAAa;AAC9C,MAAI,UAAU,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,WAAW,WAAW,KAAK,KAAK,IAAI;AACtD;","names":[]}
@@ -1,10 +1,9 @@
1
- export { A as ActionButton, a as ActionButtonProps, b as ActionGroup, c as ActionGroupProps, d as ActionPanel, e as ActionPanelProps, C as CardDragSurface, g as CardDragSurfaceContextValue, h as CardDragSurfaceController, i as CardDragSurfaceProps, j as CardDropTargetView, k as CardDropTargetViewProps, l as CardFace, m as CardFaceProps, p as ChromeSuppressionProvider, q as CostDisplay, r as CostDisplayProps, D as DefaultChessPiece, s as DefaultChessPieceProps, t as DefaultEmptySlot, u as DefaultEmptySlotProps, v as DefaultGridCell, w as DefaultGridCellProps, x as DefaultGridPiece, y as DefaultGridPieceProps, z as DefaultNetworkEdge, E as DefaultNetworkEdgeProps, F as DefaultNetworkNode, G as DefaultNetworkNodeProps, H as DefaultNetworkPiece, I as DefaultNetworkPieceProps, J as DefaultSlotItem, K as DefaultSlotItemProps, L as DefaultSlotOccupant, M as DefaultSlotOccupantProps, N as DefaultTrackConnection, O as DefaultTrackConnectionProps, P as DefaultTrackJump, Q as DefaultTrackJumpProps, R as DefaultTrackPiece, S as DefaultTrackPieceProps, T as DefaultTrackSpace, U as DefaultTrackSpaceProps, V as DefaultZone, W as DefaultZonePiece, X as DefaultZonePieceProps, Y as DefaultZonePieces, Z as DefaultZonePiecesProps, _ as DefaultZoneProps, $ as Dialog, a0 as DialogClose, a1 as DialogContent, a2 as DialogDescription, a3 as DialogFooter, a4 as DialogHeader, a5 as DialogOverlay, a6 as DialogPortal, a7 as DialogTitle, a8 as DialogTrigger, a9 as DiceRoller, aa as DiceRollerProps, ab as DragPhase, ac as Drawer, ad as DrawerClose, ae as DrawerContent, af as DrawerDescription, ag as DrawerFooter, ah as DrawerHeader, ai as DrawerOverlay, aj as DrawerPortal, ak as DrawerTitle, al as DrawerTrigger, am as ErrorBoundary, an as ErrorBoundaryProps, ao as GameEndDisplay, ap as GameEndDisplayProps, aq as GameSkeleton, ar as GameSkeletonProps, as as Hand, at as HandDock, au as HandDockMode, av as HandDockPlacement, aw as HandDockPresentation, ax as HandDockProps, ay as HandDockToggleContext, aA as HandProps, aB as Input, aC as InteractiveSquareEdge, aD as InteractiveSquareVertex, aE as Label, aF as MoreActions, aG as MoreActionsProps, aH as NetworkEdge, aI as NetworkGraph, aJ as NetworkGraphProps, aK as NetworkNode, aL as NetworkPiece, aM as PhaseIndicator, aN as PhaseIndicatorProps, aO as PlayArea, aP as PlayAreaProps, aQ as PlayerScore, aR as PrimaryActionAttention, aS as PrimaryActionButton, aT as PrimaryActionButtonProps, aU as PrimaryButton, aV as PrimaryButtonProps, aW as ResourceDefinition, aX as Select, aY as SelectContent, aZ as SelectItem, a_ as SelectTrigger, a$ as SlotDefinition, b0 as SlotOccupant, b1 as SlotSystem, b2 as SlotSystemProps, b3 as SquareEdgePosition, b4 as SquareGrid, b5 as SquareGridBoardProps, b6 as SquareGridProps, b7 as SquareVertexPosition, b8 as StagingZone, b9 as StagingZoneProps, ba as ThemedButton, bb as ThemedButtonProps, bc as Toast, bd as ToastActions, be as ToastActionsProps, bf as ToastActionsValue, bg as ToastNotification, bh as ToastProvider, bi as ToastType, bj as TrackBoard, bk as TrackBoardProps, bl as TrackPiece, bm as TrackSpace, bp as ZoneDefinition, bq as ZoneHighlightType, br as ZoneMap, bs as ZoneMapProps, bt as ZonePiece, bu as ZoneShape, bB as toAlgebraic, bC as toNumeric, bD as useCardDragSurface, bE as useChromeSuppression } from '../components-D5ZRE2Hl.js';
2
- export { H as HandInteractionPolicy, b as HandLayoutKind, c as HandLayoutPolicy, d as HandView, e as HandViewProps } from '../HandView-ncJIVLhN.js';
3
- export { B as BoundResourceCounterRootProps, H as HandRole, M as MobileHandRegistration, a as MobileHandTrayProvider, R as ResourceCounter, b as ResourceCounterComponents, c as ResourceCounterCount, d as ResourceCounterIcon, e as ResourceCounterItem, f as ResourceCounterItemState, g as ResourceCounterLabel, h as ResourceCounterPartProps, i as ResourceCounterProps, j as ResourceCounterRoot, k as ResourceCounterRootProps, l as ResourceDisplayConfig, m as ResourceIconProps, n as createResourceCounter, u as useMobileHandTrayActive, o as useRegisterMobileHand } from '../ResourceCounter-CTREyF73.js';
4
- export { D as DefaultHexEdge, g as DefaultHexEdgeProps, h as DefaultHexTile, i as DefaultHexTileProps, j as DefaultHexVertex, k as DefaultHexVertexProps, E as EdgePosition, r as HexBoardView, s as HexBoardViewTile, t as HexGrid, u as HexGridBoardProps, v as HexGridProps, w as HexOrientation, x as HexTileGeometry, y as InteractiveHexEdge, z as InteractiveHexVertex, J as InteractiveTargetLayer, K as InteractiveTargetRenderState, a2 as createHexBoardView, a3 as hexUtils } from '../hex-board-view-D_07hO6O.js';
5
- export { HexEdgeState, HexTileState, HexVertexState, SquareCellState, SquareEdgeState, SquarePieceState, SquareVertexState } from './types/player-state.js';
6
- export { C as CardCollection, V as ViewCard } from '../cards-Sl3b40Mv.js';
7
- export { V as ViewSlotOccupant } from '../slots-1GPGihk8.js';
1
+ export { A as ActionButton, a as ActionButtonProps, b as ActionGroup, c as ActionGroupProps, d as ActionPanel, e as ActionPanelProps, C as CardDragSurface, g as CardDragSurfaceContextValue, h as CardDragSurfaceController, i as CardDragSurfaceProps, j as CardDropTargetView, k as CardDropTargetViewProps, l as CardFace, m as CardFaceProps, p as ChromeSuppressionProvider, q as CostDisplay, r as CostDisplayProps, D as DefaultChessPiece, s as DefaultChessPieceProps, t as DefaultEmptySlot, u as DefaultEmptySlotProps, v as DefaultGridCell, w as DefaultGridCellProps, x as DefaultGridPiece, y as DefaultGridPieceProps, z as DefaultNetworkEdge, E as DefaultNetworkEdgeProps, F as DefaultNetworkNode, G as DefaultNetworkNodeProps, H as DefaultNetworkPiece, I as DefaultNetworkPieceProps, J as DefaultSlotItem, K as DefaultSlotItemProps, L as DefaultSlotOccupant, M as DefaultSlotOccupantProps, N as DefaultTrackConnection, O as DefaultTrackConnectionProps, P as DefaultTrackJump, Q as DefaultTrackJumpProps, R as DefaultTrackPiece, S as DefaultTrackPieceProps, T as DefaultTrackSpace, U as DefaultTrackSpaceProps, V as DefaultZone, W as DefaultZonePiece, X as DefaultZonePieceProps, Y as DefaultZonePieces, Z as DefaultZonePiecesProps, _ as DefaultZoneProps, $ as Dialog, a0 as DialogClose, a1 as DialogContent, a2 as DialogDescription, a3 as DialogFooter, a4 as DialogHeader, a5 as DialogOverlay, a6 as DialogPortal, a7 as DialogTitle, a8 as DialogTrigger, a9 as DiceRoller, aa as DiceRollerProps, ab as DragPhase, ac as Drawer, ad as DrawerClose, ae as DrawerContent, af as DrawerDescription, ag as DrawerFooter, ah as DrawerHeader, ai as DrawerOverlay, aj as DrawerPortal, ak as DrawerTitle, al as DrawerTrigger, am as ErrorBoundary, an as ErrorBoundaryProps, ao as GameEndDisplay, ap as GameEndDisplayProps, aq as GameSkeleton, ar as GameSkeletonProps, as as Hand, at as HandDock, au as HandDockMode, av as HandDockPlacement, aw as HandDockPresentation, ax as HandDockProps, ay as HandDockToggleContext, aA as HandProps, aB as Input, aC as InteractiveSquareEdge, aD as InteractiveSquareVertex, aE as Label, aF as MoreActions, aG as MoreActionsProps, aH as NetworkEdge, aI as NetworkGraph, aJ as NetworkGraphProps, aK as NetworkNode, aL as NetworkPiece, aM as PhaseIndicator, aN as PhaseIndicatorProps, aO as PlayArea, aP as PlayAreaProps, aQ as PlayerScore, aR as PrimaryActionAttention, aS as PrimaryActionButton, aT as PrimaryActionButtonProps, aU as PrimaryButton, aV as PrimaryButtonProps, aW as ResourceDefinition, aX as Select, aY as SelectContent, aZ as SelectItem, a_ as SelectTrigger, a$ as SlotDefinition, b0 as SlotOccupant, b1 as SlotSystem, b2 as SlotSystemProps, b3 as SquareEdgePosition, b4 as SquareGrid, b5 as SquareGridBoardProps, b6 as SquareGridProps, b7 as SquareVertexPosition, b8 as StagingZone, b9 as StagingZoneProps, ba as ThemedButton, bb as ThemedButtonProps, bc as Toast, bd as ToastActions, be as ToastActionsProps, bf as ToastActionsValue, bg as ToastNotification, bh as ToastProvider, bi as ToastType, bj as TrackBoard, bk as TrackBoardProps, bl as TrackPiece, bm as TrackSpace, bp as ZoneDefinition, bq as ZoneHighlightType, br as ZoneMap, bs as ZoneMapProps, bt as ZonePiece, bu as ZoneShape, bB as toAlgebraic, bC as toNumeric, bD as useCardDragSurface, bE as useChromeSuppression } from '../components-DaIqi9QM.js';
2
+ export { H as HandInteractionPolicy, b as HandLayoutKind, c as HandLayoutPolicy, d as HandView, e as HandViewProps } from '../HandView-PYDmehVD.js';
3
+ export { B as BoundResourceCounterRootProps, H as HandRole, M as MobileHandRegistration, a as MobileHandTrayProvider, R as ResourceCounter, b as ResourceCounterComponents, c as ResourceCounterCount, d as ResourceCounterIcon, e as ResourceCounterItem, f as ResourceCounterItemState, g as ResourceCounterLabel, h as ResourceCounterPartProps, i as ResourceCounterProps, j as ResourceCounterRoot, k as ResourceCounterRootProps, l as ResourceDisplayConfig, m as ResourceIconProps, n as createResourceCounter, u as useMobileHandTrayActive, o as useRegisterMobileHand } from '../ResourceCounter-BTXklCEZ.js';
4
+ export { D as DefaultHexEdge, g as DefaultHexEdgeProps, h as DefaultHexTile, i as DefaultHexTileProps, j as DefaultHexVertex, k as DefaultHexVertexProps, E as EdgePosition, r as HexBoardView, s as HexBoardViewTile, t as HexGrid, u as HexGridBoardProps, v as HexGridProps, w as HexOrientation, x as HexTileGeometry, y as InteractiveHexEdge, z as InteractiveHexVertex, J as InteractiveTargetLayer, K as InteractiveTargetRenderState, a3 as createHexBoardView, a4 as hexUtils } from '../hex-board-view-UCUjMALd.js';
5
+ export { HexEdgeState, HexTileState, HexVertexState, SquareCellState, SquareEdgeState, SquarePieceState, SquareVertexState } from './player-state.js';
6
+ export { CardCollection, ViewCard, ViewSlotOccupant } from '../types.js';
8
7
  import 'react/jsx-runtime';
9
8
  import 'react';
10
9
  import 'framer-motion';
@@ -12,5 +11,5 @@ import 'vaul';
12
11
  import '@radix-ui/react-dialog';
13
12
  import '@radix-ui/react-label';
14
13
  import '@radix-ui/react-select';
15
- import '../primitive-props-DpKs-GCr.js';
14
+ import '../primitive-props-BNHDkgd7.js';
16
15
  import '../hex-color-MhOyuY-o.js';
@@ -92,7 +92,7 @@ import {
92
92
  useChromeSuppression,
93
93
  useMobileHandTrayActive,
94
94
  useRegisterMobileHand
95
- } from "../chunk-WYPQ3GG5.js";
95
+ } from "../chunk-QZ6X4B5P.js";
96
96
  import "../chunk-VDXOF4FW.js";
97
97
  import "../chunk-PZ5AY32C.js";
98
98
  export {
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { HTMLAttributes } from 'react';
3
- import { P as PrimitiveCommonProps } from '../primitive-props-DpKs-GCr.js';
3
+ import { P as PrimitiveCommonProps } from '../primitive-props-BNHDkgd7.js';
4
4
 
5
5
  type LayoutPrimitiveProps = PrimitiveCommonProps & HTMLAttributes<HTMLElement>;
6
6
  declare function GameLayoutRoot({ children, style, ...props }: LayoutPrimitiveProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
@@ -1,5 +1,5 @@
1
- import { V as ViewCard } from '../../cards-Sl3b40Mv.js';
2
- import { H as HexColor } from '../../hex-color-MhOyuY-o.js';
1
+ import { ViewCard } from '../types.js';
2
+ import { H as HexColor } from '../hex-color-MhOyuY-o.js';
3
3
 
4
4
  type PlayerId = string;
5
5
  type CardId = string;
@@ -1,12 +1,13 @@
1
1
  import * as react from 'react';
2
- import { CSSProperties, ReactNode, AriaAttributes, HTMLAttributes, JSX, ReactElement, ButtonHTMLAttributes, InputHTMLAttributes } from 'react';
2
+ import { CSSProperties, ReactNode, HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes, ReactElement } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { _ as Theme, a0 as ThemeOverride, A as AnyHexBoardInput, d as BoardSpaceIdOf, u as HexGridBoardProps, r as HexBoardView } from './hex-board-view-D_07hO6O.js';
5
- import { a as ThemePresetId } from './ThemeProvider-fy0_QzgO.js';
6
- import { a as InteractionDescriptor, Z as ZoneHandlesSnapshot, I as InputDomain, b as InteractionInputDescriptor } from './runtime-api-DWxvTr-O.js';
7
- import { V as ViewCard } from './cards-Sl3b40Mv.js';
8
- import { a as PluginSessionState, P as PlayerId } from './runtime-api-3dshj6kK.js';
9
- import { Player } from './ui/types/player-state.js';
4
+ import { $ as Theme, a1 as ThemeOverride, L as InteractiveTargetState$1, A as AnyHexBoardInput, d as BoardSpaceIdOf, u as HexGridBoardProps, r as HexBoardView } from './hex-board-view-UCUjMALd.js';
5
+ import { a as ThemePresetId } from './ThemeProvider-DvMl17Ny.js';
6
+ import { a as InteractionDescriptor, Z as ZoneHandlesSnapshot, c as PluginSessionState, P as PlayerId, I as InputDomain, b as InteractionInputDescriptor } from './runtime-api-tGL3ArsB.js';
7
+ import { ViewCard } from './types.js';
8
+ import { P as PrimitiveCommonProps } from './primitive-props-BNHDkgd7.js';
9
+ import { j as BrowserInteractionAttributeMap } from './attributes-BeRyboMS.js';
10
+ import { Player } from './ui/player-state.js';
10
11
  import { H as HexColor } from './hex-color-MhOyuY-o.js';
11
12
 
12
13
  interface UIRootProps {
@@ -38,19 +39,6 @@ declare const UI: {
38
39
  Root: typeof UIRoot;
39
40
  };
40
41
 
41
- type PrimitiveDataAttributes = Record<`data-${string}`, string | boolean | number | undefined>;
42
- type PrimitiveCommonProps = {
43
- asChild?: boolean;
44
- children?: ReactNode;
45
- className?: string;
46
- style?: CSSProperties;
47
- } & AriaAttributes & PrimitiveDataAttributes;
48
- type EventHandler<Event> = (event: Event) => void;
49
- declare function composeEventHandlers<Event extends {
50
- defaultPrevented: boolean;
51
- }>(authorHandler: EventHandler<Event> | undefined, primitiveHandler: EventHandler<Event> | undefined): EventHandler<Event> | undefined;
52
- declare function renderPrimitive<ElementProps extends HTMLAttributes<HTMLElement>>(tagName: keyof JSX.IntrinsicElements, props: ElementProps & PrimitiveCommonProps): ReactElement;
53
-
54
42
  interface ZoneContextValue {
55
43
  zone: string;
56
44
  snapshot: ZoneHandlesSnapshot | null;
@@ -196,20 +184,21 @@ declare const Zone: {
196
184
 
197
185
  type BoardTargetKind = "edge" | "vertex" | "space" | "tile";
198
186
 
199
- interface InteractiveTargetState {
187
+ /**
188
+ * Runtime extension of the ui target-layer types. The base shapes and the
189
+ * render-state computation live in `src/ui/components/board/target-layer.ts`;
190
+ * this module only widens the per-target state with the interaction metadata
191
+ * the runtime layer attaches (interaction keys, conflict tracking, gameplay
192
+ * browser attributes).
193
+ */
194
+
195
+ interface InteractiveTargetState extends InteractiveTargetState$1 {
200
196
  kind?: BoardTargetKind;
201
- id: string;
202
- eligible: boolean;
203
- selectable: boolean;
204
- hovered: boolean;
205
197
  interactionKey?: string;
206
198
  interactionId?: string;
207
199
  inputKey?: string;
208
- pending: boolean;
209
- conflict: boolean;
210
200
  conflictInteractionKeys?: readonly string[];
211
- unavailableReason?: string;
212
- select?: () => unknown | Promise<unknown>;
201
+ browserAttributes?: BrowserInteractionAttributeMap;
213
202
  }
214
203
  interface InteractiveTargetLayer {
215
204
  enabled?: boolean;
@@ -574,6 +563,122 @@ interface InteractionHandle<Params extends InteractionParamsShape = InteractionP
574
563
  */
575
564
  declare function useInteractionHandle<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>(descriptor: InteractionDescriptor): InteractionHandle<Params, DefaultedKeys>;
576
565
 
566
+ interface InteractionContextValue {
567
+ interaction: string;
568
+ descriptor: InteractionDescriptor | null;
569
+ handle: ReturnType<typeof useInteractionHandle> | null;
570
+ }
571
+ declare function useInteractionPrimitiveContext(): InteractionContextValue;
572
+ /**
573
+ * Live draft value for the active interaction's card-target input, resolved
574
+ * from the surrounding `<Interaction.Root>`. Returns the selected card-id array
575
+ * for `selection: "many"` inputs and the single id for `selection: "one"`.
576
+ * Returns `undefined` when there is no interaction context or no card-target
577
+ * input (so it is safe to render outside a root). Reactive: `handle.values`
578
+ * updates as the draft changes. Backs the card surface `slot.card.Value`.
579
+ */
580
+ declare function useResolvedCardTargetValue(): unknown;
581
+ interface InteractionRootProps<Interaction extends string = InteractionKey> {
582
+ interaction: Interaction;
583
+ children: ReactNode;
584
+ unavailable?: "render" | "hide";
585
+ }
586
+ declare function InteractionRoot<Interaction extends string = InteractionKey>({ interaction, children, unavailable, }: InteractionRootProps<Interaction>): react_jsx_runtime.JSX.Element | null;
587
+
588
+ interface InteractionStateSnapshot<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
589
+ interaction: string;
590
+ descriptor: InteractionDescriptor;
591
+ handle: InteractionHandle<Params, DefaultedKeys>;
592
+ draft: InteractionHandle<Params, DefaultedKeys>["draft"];
593
+ values: InteractionHandle<Params, DefaultedKeys>["values"];
594
+ status: InteractionHandle<Params, DefaultedKeys>["status"];
595
+ available: boolean;
596
+ isReady: boolean;
597
+ isArmed: boolean;
598
+ inputKeys: readonly string[];
599
+ missingInputs: readonly string[];
600
+ readyFrontier: readonly string[];
601
+ blockedInputs: readonly string[];
602
+ hasInputs: boolean;
603
+ }
604
+ interface InteractionStateProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
605
+ unavailable: ReactNode;
606
+ children: (state: InteractionStateSnapshot<Params, DefaultedKeys>) => ReactNode;
607
+ }
608
+ declare function InteractionState<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>({ children, unavailable }: InteractionStateProps<Params, DefaultedKeys>): react_jsx_runtime.JSX.Element;
609
+
610
+ interface InteractionSwitchRenderState<Interaction extends string = InteractionKey> {
611
+ interaction: Interaction;
612
+ descriptor: InteractionDescriptor<Interaction>;
613
+ }
614
+ type InteractionSwitchRouteMap<Interaction extends string = InteractionKey> = {
615
+ [Key in Interaction]?: (state: InteractionSwitchRenderState<Key>) => ReactNode;
616
+ };
617
+ interface InteractionRoute {
618
+ readonly collect: Record<string, unknown>;
619
+ }
620
+ type InteractionRoutesMap<Interaction extends string = InteractionKey> = {
621
+ [Key in Interaction]: InteractionRoute;
622
+ };
623
+ interface InteractionSwitchProps<Interaction extends string = InteractionKey> {
624
+ interaction?: Interaction;
625
+ routes: InteractionSwitchRouteMap<Interaction>;
626
+ fallback?: ReactNode;
627
+ }
628
+ declare function InteractionSwitch<Interaction extends string = InteractionKey>({ interaction, routes, fallback, }: InteractionSwitchProps<Interaction>): react_jsx_runtime.JSX.Element;
629
+ interface InteractionRoutesProps<Interaction extends string = InteractionKey> {
630
+ routes: InteractionRoutesMap<Interaction>;
631
+ fallback?: ReactNode;
632
+ includeUnavailable?: boolean | null;
633
+ }
634
+ declare function InteractionRoutes<Interaction extends string = InteractionKey>({ routes, fallback, includeUnavailable, }: InteractionRoutesProps<Interaction>): react_jsx_runtime.JSX.Element | null;
635
+
636
+ type DialogLifecycleState = "open" | "minimized" | "dismissed";
637
+
638
+ type InteractionDialogState = DialogLifecycleState;
639
+ interface InteractionDialogRenderState<Interaction extends string = InteractionKey> {
640
+ interaction: Interaction;
641
+ state: InteractionDialogState;
642
+ open: boolean;
643
+ minimized: boolean;
644
+ dismissed: boolean;
645
+ setOpen: (open: boolean) => void;
646
+ restore: () => void;
647
+ minimize: () => void;
648
+ dismiss: () => void;
649
+ }
650
+ interface InteractionDialogProps<Interaction extends string = InteractionKey> {
651
+ defaultOpen?: boolean;
652
+ onStateChange?: (state: InteractionDialogState) => void;
653
+ children: (state: InteractionDialogRenderState<Interaction>) => ReactNode;
654
+ }
655
+ declare function InteractionDialog<Interaction extends string = InteractionKey>({ defaultOpen, onStateChange, children, }: InteractionDialogProps<Interaction>): react_jsx_runtime.JSX.Element;
656
+
657
+ interface InteractionSubmitCallbacks {
658
+ onSubmitSuccess?: () => void;
659
+ onSubmitError?: (error: unknown) => void;
660
+ }
661
+
662
+ type InteractionTriggerProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement>;
663
+ declare function InteractionTrigger({ disabled, onClick, ...props }: InteractionTriggerProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
664
+ type InteractionSubmitProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement> & {
665
+ params?: InteractionParamsShape | (() => InteractionParamsShape | null | undefined);
666
+ onSubmitSuccess?: InteractionSubmitCallbacks["onSubmitSuccess"];
667
+ onSubmitError?: InteractionSubmitCallbacks["onSubmitError"];
668
+ };
669
+ declare function InteractionSubmit({ disabled, onClick, params, onSubmitSuccess, onSubmitError, ...props }: InteractionSubmitProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
670
+ type InteractionInputProps = PrimitiveCommonProps & Omit<InputHTMLAttributes<HTMLInputElement>, "name"> & {
671
+ name: string;
672
+ parse?: (value: string) => unknown;
673
+ };
674
+ declare function InteractionInput({ name, parse, onChange, disabled, ...props }: InteractionInputProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
675
+
676
+ type InteractionPartProps = PrimitiveCommonProps & HTMLAttributes<HTMLElement>;
677
+ declare function InteractionLabel({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
678
+ declare function InteractionDescription({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
679
+ declare function InteractionUnavailableMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
680
+ declare function InteractionValidationMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
681
+
577
682
  interface InteractionFieldRenderProps<Params extends InteractionParamsShape = InteractionParamsShape, Key extends keyof Params & string = keyof Params & string> {
578
683
  descriptor: InteractionDescriptor;
579
684
  input: InteractionInputDescriptor & {
@@ -590,6 +695,25 @@ interface InteractionFieldRenderProps<Params extends InteractionParamsShape = In
590
695
  type InteractionFieldRenderMap<Params extends InteractionParamsShape = InteractionParamsShape> = Partial<{
591
696
  [K in keyof Params & string]: (props: InteractionFieldRenderProps<Params, K>) => ReactNode;
592
697
  }>;
698
+ interface InteractionFieldProps<Params extends InteractionParamsShape = InteractionParamsShape, Key extends keyof Params & string = keyof Params & string> {
699
+ descriptor: InteractionDescriptor;
700
+ inputKey: Key;
701
+ handle: InteractionHandle<Params>;
702
+ errors?: readonly string[];
703
+ missing?: boolean;
704
+ disabled?: boolean;
705
+ render?: InteractionFieldRenderMap<Params>[Key];
706
+ }
707
+
708
+ /**
709
+ * Headless input-slot factory for the interaction form: the slot prop types
710
+ * and `createInteractionInputSlot`, which builds the
711
+ * `Field`/`Default`/`Target`/`Card`/`Cards`/`Options`/`Value`/`Label`/`Message`
712
+ * render surface (plus its shared `targetButton` helper) for a single input.
713
+ *
714
+ * Moved verbatim from `../InteractionForm.tsx`.
715
+ */
716
+
593
717
  interface InteractionSlotComponentProps {
594
718
  children?: ReactNode;
595
719
  }
@@ -627,15 +751,7 @@ type InteractionInputRenderMap = Record<string, (slot: InteractionInputSlot) =>
627
751
  interface InteractionSubmitSlot {
628
752
  Button: (props: InteractionButtonSlotProps) => ReactNode;
629
753
  }
630
- interface InteractionFieldProps<Params extends InteractionParamsShape = InteractionParamsShape, Key extends keyof Params & string = keyof Params & string> {
631
- descriptor: InteractionDescriptor;
632
- inputKey: Key;
633
- handle: InteractionHandle<Params>;
634
- errors?: readonly string[];
635
- missing?: boolean;
636
- disabled?: boolean;
637
- render?: InteractionFieldRenderMap<Params>[Key];
638
- }
754
+
639
755
  interface InteractionFormProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
640
756
  descriptor: InteractionDescriptor;
641
757
  handle: InteractionHandle<Params, DefaultedKeys>;
@@ -657,123 +773,13 @@ interface InteractionFormProps<Params extends InteractionParamsShape = Interacti
657
773
  }
658
774
 
659
775
  type BoundInteractionFormProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> = Omit<InteractionFormProps<Params, DefaultedKeys>, "descriptor" | "handle">;
660
-
661
- interface InteractionSubmitCallbacks {
662
- onSubmitSuccess?: () => void;
663
- onSubmitError?: (error: unknown) => void;
664
- }
665
-
666
- type DialogLifecycleState = "open" | "minimized" | "dismissed";
667
-
668
- interface InteractionContextValue {
669
- interaction: string;
670
- descriptor: InteractionDescriptor | null;
671
- handle: ReturnType<typeof useInteractionHandle> | null;
672
- }
673
- declare function useInteractionPrimitiveContext(): InteractionContextValue;
674
- /**
675
- * Live draft value for the active interaction's card-target input, resolved
676
- * from the surrounding `<Interaction.Root>`. Returns the selected card-id array
677
- * for `selection: "many"` inputs and the single id for `selection: "one"`.
678
- * Returns `undefined` when there is no interaction context or no card-target
679
- * input (so it is safe to render outside a root). Reactive: `handle.values`
680
- * updates as the draft changes. Backs the card surface `slot.card.Value`.
681
- */
682
- declare function useResolvedCardTargetValue(): unknown;
683
- interface InteractionRootProps<Interaction extends string = InteractionKey> {
684
- interaction: Interaction;
685
- children: ReactNode;
686
- unavailable?: "render" | "hide";
687
- }
688
- declare function InteractionRoot<Interaction extends string = InteractionKey>({ interaction, children, unavailable, }: InteractionRootProps<Interaction>): react_jsx_runtime.JSX.Element | null;
689
- type InteractionDialogState = DialogLifecycleState;
690
- interface InteractionDialogRenderState<Interaction extends string = InteractionKey> {
691
- interaction: Interaction;
692
- state: InteractionDialogState;
693
- open: boolean;
694
- minimized: boolean;
695
- dismissed: boolean;
696
- setOpen: (open: boolean) => void;
697
- restore: () => void;
698
- minimize: () => void;
699
- dismiss: () => void;
700
- }
701
- interface InteractionDialogProps<Interaction extends string = InteractionKey> {
702
- defaultOpen?: boolean;
703
- onStateChange?: (state: InteractionDialogState) => void;
704
- children: (state: InteractionDialogRenderState<Interaction>) => ReactNode;
705
- }
706
- declare function InteractionDialog<Interaction extends string = InteractionKey>({ defaultOpen, onStateChange, children, }: InteractionDialogProps<Interaction>): react_jsx_runtime.JSX.Element;
707
- interface InteractionSwitchRenderState<Interaction extends string = InteractionKey> {
708
- interaction: Interaction;
709
- descriptor: InteractionDescriptor<Interaction>;
710
- }
711
- type InteractionSwitchRouteMap<Interaction extends string = InteractionKey> = {
712
- [Key in Interaction]?: (state: InteractionSwitchRenderState<Key>) => ReactNode;
713
- };
714
- interface InteractionRoute {
715
- readonly collect: Record<string, unknown>;
716
- }
717
- type InteractionRoutesMap<Interaction extends string = InteractionKey> = {
718
- [Key in Interaction]: InteractionRoute;
719
- };
720
- interface InteractionSwitchProps<Interaction extends string = InteractionKey> {
721
- interaction?: Interaction;
722
- routes: InteractionSwitchRouteMap<Interaction>;
723
- fallback?: ReactNode;
724
- }
725
- declare function InteractionSwitch<Interaction extends string = InteractionKey>({ interaction, routes, fallback, }: InteractionSwitchProps<Interaction>): react_jsx_runtime.JSX.Element;
726
- interface InteractionRoutesProps<Interaction extends string = InteractionKey> {
727
- routes: InteractionRoutesMap<Interaction>;
728
- fallback?: ReactNode;
729
- includeUnavailable?: boolean | null;
730
- }
731
- declare function InteractionRoutes<Interaction extends string = InteractionKey>({ routes, fallback, includeUnavailable, }: InteractionRoutesProps<Interaction>): react_jsx_runtime.JSX.Element | null;
732
- type InteractionPartProps = PrimitiveCommonProps & HTMLAttributes<HTMLElement>;
733
- declare function InteractionLabel({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
734
- declare function InteractionDescription({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
735
- declare function InteractionUnavailableMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
736
- declare function InteractionValidationMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
737
- type InteractionTriggerProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement>;
738
- declare function InteractionTrigger({ disabled, onClick, ...props }: InteractionTriggerProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
739
- interface InteractionStateSnapshot<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
740
- interaction: string;
741
- descriptor: InteractionDescriptor;
742
- handle: InteractionHandle<Params, DefaultedKeys>;
743
- draft: InteractionHandle<Params, DefaultedKeys>["draft"];
744
- values: InteractionHandle<Params, DefaultedKeys>["values"];
745
- status: InteractionHandle<Params, DefaultedKeys>["status"];
746
- available: boolean;
747
- isReady: boolean;
748
- isArmed: boolean;
749
- inputKeys: readonly string[];
750
- missingInputs: readonly string[];
751
- readyFrontier: readonly string[];
752
- blockedInputs: readonly string[];
753
- hasInputs: boolean;
754
- }
755
- interface InteractionStateProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
756
- unavailable: ReactNode;
757
- children: (state: InteractionStateSnapshot<Params, DefaultedKeys>) => ReactNode;
758
- }
759
- declare function InteractionState<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>({ children, unavailable }: InteractionStateProps<Params, DefaultedKeys>): react_jsx_runtime.JSX.Element;
760
776
  type InteractionFormPrimitiveProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> = BoundInteractionFormProps<Params, DefaultedKeys>;
761
777
  declare function InteractionFormPrimitive<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>(props: InteractionFormPrimitiveProps<Params, DefaultedKeys>): react_jsx_runtime.JSX.Element | null;
762
778
  type InteractionFieldPrimitiveProps<Params extends InteractionParamsShape = InteractionParamsShape, Input extends keyof Params & string = keyof Params & string> = Omit<InteractionFieldProps<Params, Input>, "descriptor" | "handle" | "inputKey"> & {
763
779
  input: Input;
764
780
  };
765
781
  declare function InteractionFieldPrimitive<Params extends InteractionParamsShape = InteractionParamsShape, Input extends keyof Params & string = keyof Params & string>({ input, ...props }: InteractionFieldPrimitiveProps<Params, Input>): react_jsx_runtime.JSX.Element | null;
766
- type InteractionSubmitProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement> & {
767
- params?: InteractionParamsShape | (() => InteractionParamsShape | null | undefined);
768
- onSubmitSuccess?: InteractionSubmitCallbacks["onSubmitSuccess"];
769
- onSubmitError?: InteractionSubmitCallbacks["onSubmitError"];
770
- };
771
- declare function InteractionSubmit({ disabled, onClick, params, onSubmitSuccess, onSubmitError, ...props }: InteractionSubmitProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
772
- type InteractionInputProps = PrimitiveCommonProps & Omit<InputHTMLAttributes<HTMLInputElement>, "name"> & {
773
- name: string;
774
- parse?: (value: string) => unknown;
775
- };
776
- declare function InteractionInput({ name, parse, onChange, disabled, ...props }: InteractionInputProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
782
+
777
783
  type InteractionCardInputProps<Input extends string = InteractionInputKey> = PrimitiveCommonProps & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
778
784
  input: Input;
779
785
  unsafeCardId?: string;
@@ -793,6 +799,7 @@ interface InteractionCardInputRenderState {
793
799
  invalid: boolean;
794
800
  }
795
801
  declare function InteractionCardInput<Input extends string = InteractionInputKey>({ input, unsafeCardId, selected, onSelectedChange, onClick, disabled, children, ...props }: InteractionCardInputProps<Input>): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
802
+
796
803
  declare const Interaction: {
797
804
  Root: typeof InteractionRoot;
798
805
  State: typeof InteractionState;
@@ -1158,4 +1165,4 @@ interface DreamboardUI<Contract extends UIContract = RegisteredUI> {
1158
1165
  readonly Board: TypedBoard<Contract>;
1159
1166
  }
1160
1167
 
1161
- export { InteractionFormPrimitive as $, type DreamboardUI as A, Board as B, type GameActiveActionState as C, Dice as D, GameChrome as E, type GameChromeProps as F, Game as G, type GameChromeState as H, type GameMeState as I, type GamePendingInputState as J, type GamePlayer as K, type GamePlayerEntry as L, type GamePlayersState as M, type GameRenderState as N, GameRoot as O, type GameRootProps as P, type GameTurnState as Q, Interaction as R, InteractionCardInput as S, type InteractionCardInputProps as T, type InteractionCardInputRenderState as U, InteractionDescription as V, InteractionDialog as W, type InteractionDialogProps as X, type InteractionDialogRenderState as Y, type InteractionDialogState as Z, type InteractionFieldPrimitiveProps as _, BoardEdgeTarget as a, type PromptRootProps as a$, type InteractionFormPrimitiveProps as a0, InteractionInput as a1, type InteractionInputProps as a2, InteractionLabel as a3, type InteractionPartProps as a4, InteractionRoot as a5, type InteractionRootProps as a6, type InteractionRoute as a7, InteractionRoutes as a8, type InteractionRoutesMap as a9, type PlayerRosterListProps as aA, PlayerRosterName as aB, type PlayerRosterPartProps as aC, PlayerRosterRoot as aD, type PlayerRosterRootProps as aE, PlayerRosterScore as aF, PlayerRosterSwitchButton as aG, type PlayerRosterSwitchButtonProps as aH, type PrimitiveCommonProps as aI, type PrimitiveDataAttributes as aJ, Prompt as aK, PromptDialog as aL, type PromptDialogProps as aM, type PromptDialogRenderState as aN, type PromptDialogState as aO, PromptInbox as aP, PromptInboxEmpty as aQ, PromptInboxItems as aR, type PromptInboxItemsProps as aS, PromptInboxRoot as aT, PromptMessage as aU, PromptOption as aV, type PromptOptionProps as aW, type PromptOptionRenderItem as aX, PromptOptions as aY, type PromptOptionsProps as aZ, PromptRoot as a_, type InteractionRoutesProps as aa, InteractionState as ab, type InteractionStateProps as ac, type InteractionStateSnapshot as ad, InteractionSubmit as ae, type InteractionSubmitProps as af, InteractionSwitch as ag, type InteractionSwitchProps as ah, type InteractionSwitchRenderState as ai, type InteractionSwitchRouteMap as aj, InteractionTrigger as ak, type InteractionTriggerProps as al, InteractionUnavailableMessage as am, InteractionValidationMessage as an, Phase as ao, type PhaseFallback as ap, type PhaseRouteMap as aq, PhaseSwitch as ar, type PhaseSwitchProps as as, PlayerRoster as at, type PlayerRosterBadge as au, PlayerRosterBadges as av, type PlayerRosterComponents as aw, PlayerRosterEmpty as ax, type PlayerRosterEntry as ay, PlayerRosterList as az, type BoardEdgeTargetProps as b, PromptTitle as b0, type TypedGame as b1, UI as b2, type UIContract as b3, UIRoot as b4, type UIRootProps as b5, type UseZoneCardsOptions as b6, type UseZoneCardsResult as b7, Zone as b8, ZoneCardAction as b9, type ZoneTopCardProps as bA, composeEventHandlers as bB, createZoneCardRenderItem as bC, normalizeDiceState as bD, renderPrimitive as bE, useBoardPrimitiveContext as bF, useDicePrimitiveContext as bG, useGameActionError as bH, useInteractionPrimitiveContext as bI, useOptionalZonePrimitiveContext as bJ, useResolvedCardTargetValue as bK, useZoneCardContext as bL, useZoneCards as bM, useZonePileContext as bN, useZonePrimitiveContext as bO, type ZoneCardActionExtraInputs as ba, type ZoneCardActionProps as bb, type ZoneCardActionResult as bc, ZoneCardAt as bd, type ZoneCardAtProps as be, type ZoneCardRenderItem as bf, ZoneItem as bg, type ZoneItemProps as bh, ZoneList as bi, type ZoneListProps as bj, ZonePileCards as bk, type ZonePileCardsProps as bl, type ZonePileContextValue as bm, ZonePileCount as bn, type ZonePileCountProps as bo, ZonePileDescription as bp, type ZonePileDescriptionProps as bq, ZonePileLabel as br, type ZonePileLabelProps as bs, ZonePileRoot as bt, type ZonePileRootProps as bu, ZonePileTrigger as bv, type ZonePileTriggerProps as bw, ZoneRoot as bx, type ZoneRootProps as by, ZoneTopCard as bz, BoardHexGrid as c, type BoardHexGridInteractionFilter as d, type BoardHexGridInteractions as e, type BoardHexGridProps as f, BoardHexView as g, type BoardHexViewProps as h, BoardRoot as i, type BoardRootProps as j, BoardSpaceTarget as k, type BoardSpaceTargetProps as l, BoardState as m, type BoardStateProps as n, BoardTarget as o, type BoardTargetExtraInputs as p, type BoardTargetProps as q, BoardVertexTarget as r, type BoardVertexTargetProps as s, type DiceComponents as t, DiceRoot as u, type DiceRootProps as v, type DiceState as w, type DiceValue as x, DiceValues as y, type DiceValuesProps as z };
1168
+ export { InteractionFormPrimitive as $, type DreamboardUI as A, Board as B, type GameActiveActionState as C, Dice as D, GameChrome as E, type GameChromeProps as F, Game as G, type GameChromeState as H, type GameMeState as I, type GamePendingInputState as J, type GamePlayer as K, type GamePlayerEntry as L, type GamePlayersState as M, type GameRenderState as N, GameRoot as O, type GameRootProps as P, type GameTurnState as Q, Interaction as R, InteractionCardInput as S, type InteractionCardInputProps as T, type InteractionCardInputRenderState as U, InteractionDescription as V, InteractionDialog as W, type InteractionDialogProps as X, type InteractionDialogRenderState as Y, type InteractionDialogState as Z, type InteractionFieldPrimitiveProps as _, BoardEdgeTarget as a, type TypedGame as a$, type InteractionFormPrimitiveProps as a0, InteractionInput as a1, type InteractionInputProps as a2, InteractionLabel as a3, type InteractionPartProps as a4, InteractionRoot as a5, type InteractionRootProps as a6, type InteractionRoute as a7, InteractionRoutes as a8, type InteractionRoutesMap as a9, type PlayerRosterListProps as aA, PlayerRosterName as aB, type PlayerRosterPartProps as aC, PlayerRosterRoot as aD, type PlayerRosterRootProps as aE, PlayerRosterScore as aF, PlayerRosterSwitchButton as aG, type PlayerRosterSwitchButtonProps as aH, Prompt as aI, PromptDialog as aJ, type PromptDialogProps as aK, type PromptDialogRenderState as aL, type PromptDialogState as aM, PromptInbox as aN, PromptInboxEmpty as aO, PromptInboxItems as aP, type PromptInboxItemsProps as aQ, PromptInboxRoot as aR, PromptMessage as aS, PromptOption as aT, type PromptOptionProps as aU, type PromptOptionRenderItem as aV, PromptOptions as aW, type PromptOptionsProps as aX, PromptRoot as aY, type PromptRootProps as aZ, PromptTitle as a_, type InteractionRoutesProps as aa, InteractionState as ab, type InteractionStateProps as ac, type InteractionStateSnapshot as ad, InteractionSubmit as ae, type InteractionSubmitProps as af, InteractionSwitch as ag, type InteractionSwitchProps as ah, type InteractionSwitchRenderState as ai, type InteractionSwitchRouteMap as aj, InteractionTrigger as ak, type InteractionTriggerProps as al, InteractionUnavailableMessage as am, InteractionValidationMessage as an, Phase as ao, type PhaseFallback as ap, type PhaseRouteMap as aq, PhaseSwitch as ar, type PhaseSwitchProps as as, PlayerRoster as at, type PlayerRosterBadge as au, PlayerRosterBadges as av, type PlayerRosterComponents as aw, PlayerRosterEmpty as ax, type PlayerRosterEntry as ay, PlayerRosterList as az, type BoardEdgeTargetProps as b, UI as b0, type UIContract as b1, UIRoot as b2, type UIRootProps as b3, type UseZoneCardsOptions as b4, type UseZoneCardsResult as b5, Zone as b6, ZoneCardAction as b7, type ZoneCardActionExtraInputs as b8, type ZoneCardActionProps as b9, normalizeDiceState as bA, useBoardPrimitiveContext as bB, useDicePrimitiveContext as bC, useGameActionError as bD, useInteractionPrimitiveContext as bE, useOptionalZonePrimitiveContext as bF, useResolvedCardTargetValue as bG, useZoneCardContext as bH, useZoneCards as bI, useZonePileContext as bJ, useZonePrimitiveContext as bK, type ZoneCardActionResult as ba, ZoneCardAt as bb, type ZoneCardAtProps as bc, type ZoneCardRenderItem as bd, ZoneItem as be, type ZoneItemProps as bf, ZoneList as bg, type ZoneListProps as bh, ZonePileCards as bi, type ZonePileCardsProps as bj, type ZonePileContextValue as bk, ZonePileCount as bl, type ZonePileCountProps as bm, ZonePileDescription as bn, type ZonePileDescriptionProps as bo, ZonePileLabel as bp, type ZonePileLabelProps as bq, ZonePileRoot as br, type ZonePileRootProps as bs, ZonePileTrigger as bt, type ZonePileTriggerProps as bu, ZoneRoot as bv, type ZoneRootProps as bw, ZoneTopCard as bx, type ZoneTopCardProps as by, createZoneCardRenderItem as bz, BoardHexGrid as c, type BoardHexGridInteractionFilter as d, type BoardHexGridInteractions as e, type BoardHexGridProps as f, BoardHexView as g, type BoardHexViewProps as h, BoardRoot as i, type BoardRootProps as j, BoardSpaceTarget as k, type BoardSpaceTargetProps as l, BoardState as m, type BoardStateProps as n, BoardTarget as o, type BoardTargetExtraInputs as p, type BoardTargetProps as q, BoardVertexTarget as r, type BoardVertexTargetProps as s, type DiceComponents as t, DiceRoot as u, type DiceRootProps as v, type DiceState as w, type DiceValue as x, DiceValues as y, type DiceValuesProps as z };