@dreamboard-games/sdk 0.2.1-alpha.1 → 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 (372) 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-BBMVT3KG.d.ts → ThemeProvider-DvMl17Ny.d.ts} +1 -1
  4. package/dist/{chunk-NKCRKGR2.js → chunk-3RQEICD3.js} +2 -2
  5. package/dist/{chunk-ZABVH7AO.js → chunk-ADYH6PVT.js} +1336 -1363
  6. package/dist/chunk-ADYH6PVT.js.map +1 -0
  7. package/dist/{chunk-PEI3FIL2.js → chunk-P7VMTJ5D.js} +2 -2
  8. package/dist/{chunk-PEI3FIL2.js.map → chunk-P7VMTJ5D.js.map} +1 -1
  9. package/dist/{chunk-WG4JQL3S.js → chunk-QZ6X4B5P.js} +1177 -1109
  10. package/dist/chunk-QZ6X4B5P.js.map +1 -0
  11. package/dist/{chunk-MZNVHMJ5.js → chunk-TXXLS3OI.js} +405 -309
  12. package/dist/chunk-TXXLS3OI.js.map +1 -0
  13. package/dist/{chunk-FDNZTDD6.js → chunk-W6SGFWXH.js} +48 -44
  14. package/dist/chunk-W6SGFWXH.js.map +1 -0
  15. package/dist/{chunk-MKXPVOUT.js → chunk-Y2AFYBMB.js} +48 -4
  16. package/dist/chunk-Y2AFYBMB.js.map +1 -0
  17. package/dist/{index-BwqPQtBu.d.ts → codegen.d.ts} +57 -565
  18. package/dist/{infrastructure/workspace-codegen.js → codegen.js} +3 -3
  19. package/dist/{components-BoiVSYqx.d.ts → components-DaIqi9QM.d.ts} +48 -37
  20. package/dist/{hex-board-view-1iAyJRFn.d.ts → hex-board-view-UCUjMALd.d.ts} +2 -2
  21. package/dist/{infrastructure/reducer-bundle-abi.d.ts → index.d-BGqVifr_.d.ts} +289 -10
  22. package/dist/index.js +1 -1
  23. package/dist/package-set.d.ts +2 -2
  24. package/dist/package-set.js +1 -1
  25. package/dist/primitive-props-BNHDkgd7.d.ts +16 -0
  26. package/dist/reducer-contract.d.ts +3 -0
  27. package/dist/{infrastructure/reducer-bundle-abi.js → reducer-contract.js} +4 -4
  28. package/dist/reducer.d.ts +185 -179
  29. package/dist/reducer.js +1363 -1372
  30. package/dist/reducer.js.map +1 -1
  31. package/dist/runtime/primitives.d.ts +9 -9
  32. package/dist/runtime/primitives.js +7 -7
  33. package/dist/runtime/runtime-api.d.ts +2 -0
  34. package/dist/runtime/runtime-api.js +1 -0
  35. package/dist/runtime/workspace-contract.d.ts +62 -17
  36. package/dist/runtime/workspace-contract.js +5 -6
  37. package/dist/{runtime-api-CPLm_XDG.d.ts → runtime-api-tGL3ArsB.d.ts} +103 -4
  38. package/dist/runtime.d.ts +11 -57
  39. package/dist/runtime.js +487 -8
  40. package/dist/runtime.js.map +1 -1
  41. package/dist/testing.d.ts +4 -4
  42. package/dist/testing.js.map +1 -1
  43. package/dist/types.d.ts +1531 -85
  44. package/dist/types.js +1 -3
  45. package/dist/types.js.map +1 -1
  46. package/dist/ui/components.d.ts +7 -8
  47. package/dist/ui/components.js +1 -1
  48. package/dist/ui/defaults.d.ts +1 -1
  49. package/dist/ui/{types/player-state.d.ts → player-state.d.ts} +2 -2
  50. package/dist/{ui-contract-rzKBwOLC.d.ts → ui-contract-SctM4ibF.d.ts} +155 -150
  51. package/dist/ui.d.ts +10 -11
  52. package/dist/ui.js +2 -2
  53. package/package.json +30 -75
  54. package/dist/bundle-CDd5FKeD.d.ts +0 -283
  55. package/dist/cards-Sl3b40Mv.d.ts +0 -13
  56. package/dist/chunk-326PGVAA.js +0 -34
  57. package/dist/chunk-326PGVAA.js.map +0 -1
  58. package/dist/chunk-FDNZTDD6.js.map +0 -1
  59. package/dist/chunk-I46YJSOD.js +0 -1
  60. package/dist/chunk-MKXPVOUT.js.map +0 -1
  61. package/dist/chunk-MZNVHMJ5.js.map +0 -1
  62. package/dist/chunk-T52J5RMF.js +0 -1
  63. package/dist/chunk-WG4JQL3S.js.map +0 -1
  64. package/dist/chunk-XV6D3ET4.js +0 -485
  65. package/dist/chunk-XV6D3ET4.js.map +0 -1
  66. package/dist/chunk-ZABVH7AO.js.map +0 -1
  67. package/dist/generated/runtime/primitives.d.ts +0 -13
  68. package/dist/generated/runtime/primitives.js +0 -181
  69. package/dist/generated/runtime/primitives.js.map +0 -1
  70. package/dist/generated/runtime-api.d.ts +0 -3
  71. package/dist/generated/runtime-api.js +0 -2
  72. package/dist/generated/runtime.d.ts +0 -15
  73. package/dist/generated/runtime.js +0 -19
  74. package/dist/generated/runtime.js.map +0 -1
  75. package/dist/generated/workspace-contract.d.ts +0 -15
  76. package/dist/generated/workspace-contract.js +0 -15
  77. package/dist/generated/workspace-contract.js.map +0 -1
  78. package/dist/infrastructure/reducer-bundle-abi.js.map +0 -1
  79. package/dist/infrastructure/workspace-codegen.d.ts +0 -53
  80. package/dist/infrastructure/workspace-codegen.js.map +0 -1
  81. package/dist/manifest-contract-BNHVGFtU.d.ts +0 -9
  82. package/dist/primitive-props-DpKs-GCr.d.ts +0 -11
  83. package/dist/runtime/types/runtime-api.d.ts +0 -1
  84. package/dist/runtime/types/runtime-api.js +0 -2
  85. package/dist/runtime/types/runtime-api.js.map +0 -1
  86. package/dist/runtime-api-3dshj6kK.d.ts +0 -101
  87. package/dist/slots-1GPGihk8.d.ts +0 -8
  88. package/src/browser-interaction/attributes.ts +0 -211
  89. package/src/browser-interaction/canonical.ts +0 -77
  90. package/src/browser-interaction/constants.ts +0 -77
  91. package/src/browser-interaction/effects.ts +0 -176
  92. package/src/browser-interaction/index.ts +0 -111
  93. package/src/browser-interaction/normalize.ts +0 -997
  94. package/src/browser-interaction/registry.ts +0 -70
  95. package/src/browser-interaction/resolve.ts +0 -596
  96. package/src/browser-interaction/schemas.ts +0 -152
  97. package/src/browser-interaction/types.ts +0 -304
  98. package/src/browser-interaction.ts +0 -1
  99. package/src/generated/reducer-contract/builders.ts +0 -90
  100. package/src/generated/reducer-contract/version.ts +0 -9
  101. package/src/generated/reducer-contract/wire.ts +0 -100
  102. package/src/generated/reducer-contract/zod.ts +0 -103
  103. package/src/generated/runtime/primitives.ts +0 -2
  104. package/src/generated/runtime-api.ts +0 -5
  105. package/src/generated/runtime.ts +0 -35
  106. package/src/generated/workspace-contract.ts +0 -2
  107. package/src/index.ts +0 -7
  108. package/src/infrastructure/reducer-bundle-abi.ts +0 -8
  109. package/src/infrastructure/reducer-contract/bundle.ts +0 -37
  110. package/src/infrastructure/workspace-codegen/hex-geometry.ts +0 -69
  111. package/src/infrastructure/workspace-codegen/index.ts +0 -64
  112. package/src/infrastructure/workspace-codegen/manifest-contract.ts +0 -6632
  113. package/src/infrastructure/workspace-codegen/manifest-validation.ts +0 -795
  114. package/src/infrastructure/workspace-codegen/ownership.ts +0 -131
  115. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +0 -169
  116. package/src/infrastructure/workspace-codegen/seeds.ts +0 -1705
  117. package/src/infrastructure/workspace-codegen.ts +0 -1
  118. package/src/package-set.ts +0 -19
  119. package/src/reducer/authoring/contract.ts +0 -157
  120. package/src/reducer/authoring/effect.ts +0 -224
  121. package/src/reducer/authoring/game.ts +0 -23
  122. package/src/reducer/authoring/interaction.ts +0 -98
  123. package/src/reducer/authoring/phase.ts +0 -300
  124. package/src/reducer/authoring/types.ts +0 -70
  125. package/src/reducer/authoring/validation.ts +0 -382
  126. package/src/reducer/authoring/view-stage.ts +0 -68
  127. package/src/reducer/authoring.ts +0 -29
  128. package/src/reducer/bundle/ingress-bundle.ts +0 -491
  129. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +0 -254
  130. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +0 -73
  131. package/src/reducer/bundle/trusted/instruction-runner.ts +0 -414
  132. package/src/reducer/bundle/trusted/interaction-authorization.ts +0 -137
  133. package/src/reducer/bundle/trusted/interaction-collectors.ts +0 -859
  134. package/src/reducer/bundle/trusted/interaction-decision.ts +0 -747
  135. package/src/reducer/bundle/trusted/interaction-resolver.ts +0 -95
  136. package/src/reducer/bundle/trusted/interaction-types.ts +0 -174
  137. package/src/reducer/bundle/trusted/lifecycle-runner.ts +0 -427
  138. package/src/reducer/bundle/trusted/projection-builder.ts +0 -680
  139. package/src/reducer/bundle/trusted/projection-context.ts +0 -39
  140. package/src/reducer/bundle/trusted/rng-sampler.ts +0 -150
  141. package/src/reducer/bundle/trusted/runtime-registry.ts +0 -120
  142. package/src/reducer/bundle/trusted/runtime-scope.ts +0 -336
  143. package/src/reducer/bundle/trusted/simultaneous-player.ts +0 -97
  144. package/src/reducer/bundle/trusted/stage-resolver.ts +0 -87
  145. package/src/reducer/bundle/trusted/static-projection.ts +0 -116
  146. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +0 -97
  147. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +0 -39
  148. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +0 -43
  149. package/src/reducer/bundle/trusted/trusted-state-codec.ts +0 -48
  150. package/src/reducer/bundle/trusted-bundle.ts +0 -97
  151. package/src/reducer/bundle/types.ts +0 -171
  152. package/src/reducer/bundle.ts +0 -2
  153. package/src/reducer/client-param-schemas.ts +0 -57
  154. package/src/reducer/compose.ts +0 -34
  155. package/src/reducer/core/runtime-input.ts +0 -30
  156. package/src/reducer/core/runtime-instruction.ts +0 -59
  157. package/src/reducer/core/types.ts +0 -62
  158. package/src/reducer/definition-index.ts +0 -277
  159. package/src/reducer/derived.ts +0 -106
  160. package/src/reducer/effects.ts +0 -92
  161. package/src/reducer/engine/runtime-instruction-engine.ts +0 -155
  162. package/src/reducer/ingress/decode-runtime-input.ts +0 -7
  163. package/src/reducer/ingress/decode-session-state.ts +0 -9
  164. package/src/reducer/ingress/encode-session-state.ts +0 -6
  165. package/src/reducer/ingress/input-codec.ts +0 -18
  166. package/src/reducer/ingress/phase-schemas.ts +0 -62
  167. package/src/reducer/ingress/raw-types.ts +0 -107
  168. package/src/reducer/ingress/runtime-codec.ts +0 -14
  169. package/src/reducer/ingress/runtime-payload.ts +0 -13
  170. package/src/reducer/ingress/session-codec.ts +0 -392
  171. package/src/reducer/ingress/types.ts +0 -6
  172. package/src/reducer/inputs/boardInput.ts +0 -217
  173. package/src/reducer/inputs/boardTarget.ts +0 -190
  174. package/src/reducer/inputs/cardInput.ts +0 -86
  175. package/src/reducer/inputs/cardTarget.ts +0 -101
  176. package/src/reducer/inputs/choiceTarget.ts +0 -104
  177. package/src/reducer/inputs/defineInputs.ts +0 -71
  178. package/src/reducer/inputs/formInput.ts +0 -809
  179. package/src/reducer/inputs/many.ts +0 -120
  180. package/src/reducer/inputs/promptInput.ts +0 -87
  181. package/src/reducer/inputs/rngInput.ts +0 -58
  182. package/src/reducer/inputs/targetRule.ts +0 -123
  183. package/src/reducer/inputs.ts +0 -41
  184. package/src/reducer/model/definition.ts +0 -1072
  185. package/src/reducer/model/extract.ts +0 -745
  186. package/src/reducer/model/manifest.ts +0 -570
  187. package/src/reducer/model/queries.ts +0 -641
  188. package/src/reducer/model/runtime.ts +0 -264
  189. package/src/reducer/model/spec.ts +0 -1386
  190. package/src/reducer/model/table.ts +0 -260
  191. package/src/reducer/model.ts +0 -7
  192. package/src/reducer/ops.ts +0 -1034
  193. package/src/reducer/parse-utils.ts +0 -28
  194. package/src/reducer/per-player.ts +0 -422
  195. package/src/reducer/rng.ts +0 -69
  196. package/src/reducer/schema-helpers.ts +0 -185
  197. package/src/reducer/setup-bootstrap-helpers.ts +0 -171
  198. package/src/reducer/setup-bootstrap.ts +0 -481
  199. package/src/reducer/table-ops.ts +0 -2671
  200. package/src/reducer/table-queries.ts +0 -372
  201. package/src/reducer/transaction.ts +0 -120
  202. package/src/reducer.ts +0 -314
  203. package/src/runtime/primitives.ts +0 -1
  204. package/src/runtime/types/runtime-api.ts +0 -1
  205. package/src/runtime/workspace-contract.ts +0 -32
  206. package/src/runtime-internal/components/InteractionForm.tsx +0 -1647
  207. package/src/runtime-internal/components/PluginRuntime.tsx +0 -105
  208. package/src/runtime-internal/components/board/target-layer.ts +0 -72
  209. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +0 -44
  210. package/src/runtime-internal/context/InteractionDraftContext.tsx +0 -279
  211. package/src/runtime-internal/context/PluginSessionContext.tsx +0 -47
  212. package/src/runtime-internal/context/PluginStateContext.tsx +0 -303
  213. package/src/runtime-internal/context/RuntimeContext.tsx +0 -96
  214. package/src/runtime-internal/defaults/components.tsx +0 -409
  215. package/src/runtime-internal/defaults/index.ts +0 -11
  216. package/src/runtime-internal/errors/ValidationError.ts +0 -29
  217. package/src/runtime-internal/hooks/useActivePlayers.ts +0 -33
  218. package/src/runtime-internal/hooks/useBoardInteractions.ts +0 -727
  219. package/src/runtime-internal/hooks/useGameSelector.ts +0 -105
  220. package/src/runtime-internal/hooks/useGameView.ts +0 -9
  221. package/src/runtime-internal/hooks/useInteractionByKey.ts +0 -354
  222. package/src/runtime-internal/hooks/useInteractionHandle.ts +0 -438
  223. package/src/runtime-internal/hooks/useIsMyTurn.ts +0 -20
  224. package/src/runtime-internal/hooks/useLobby.ts +0 -76
  225. package/src/runtime-internal/hooks/useMe.ts +0 -48
  226. package/src/runtime-internal/hooks/usePlayerInfo.ts +0 -28
  227. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +0 -23
  228. package/src/runtime-internal/hooks/usePluginRuntime.ts +0 -147
  229. package/src/runtime-internal/hooks/useSeatInbox.ts +0 -61
  230. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +0 -10
  231. package/src/runtime-internal/index.ts +0 -42
  232. package/src/runtime-internal/internal.ts +0 -43
  233. package/src/runtime-internal/plugin-styles.css +0 -250
  234. package/src/runtime-internal/primitives/board.tsx +0 -530
  235. package/src/runtime-internal/primitives/dialog-lifecycle.ts +0 -58
  236. package/src/runtime-internal/primitives/dice.tsx +0 -79
  237. package/src/runtime-internal/primitives/game-ui-provider.tsx +0 -35
  238. package/src/runtime-internal/primitives/game.tsx +0 -387
  239. package/src/runtime-internal/primitives/hand-intent-adapter.ts +0 -147
  240. package/src/runtime-internal/primitives/hand-surface.tsx +0 -594
  241. package/src/runtime-internal/primitives/index.ts +0 -196
  242. package/src/runtime-internal/primitives/interaction-form-binding.tsx +0 -56
  243. package/src/runtime-internal/primitives/interaction-submit.ts +0 -90
  244. package/src/runtime-internal/primitives/interaction.tsx +0 -1146
  245. package/src/runtime-internal/primitives/phase.tsx +0 -43
  246. package/src/runtime-internal/primitives/player-roster.tsx +0 -302
  247. package/src/runtime-internal/primitives/primitive-props.tsx +0 -101
  248. package/src/runtime-internal/primitives/prompt.tsx +0 -255
  249. package/src/runtime-internal/primitives/ui.tsx +0 -60
  250. package/src/runtime-internal/primitives/zone.tsx +0 -791
  251. package/src/runtime-internal/reducer.ts +0 -30
  252. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +0 -605
  253. package/src/runtime-internal/types/plugin-state.ts +0 -514
  254. package/src/runtime-internal/types/reducer-state.ts +0 -24
  255. package/src/runtime-internal/types/runtime-api.ts +0 -114
  256. package/src/runtime-internal/ui-contract.ts +0 -519
  257. package/src/runtime-internal/utils/browser-interaction-effects.ts +0 -240
  258. package/src/runtime-internal/utils/card-intent-adapter.ts +0 -546
  259. package/src/runtime-internal/utils/interaction-draft-digest.ts +0 -252
  260. package/src/runtime-internal/utils/interaction-inputs.ts +0 -492
  261. package/src/runtime-internal/utils/interaction-labels.ts +0 -23
  262. package/src/runtime-internal/utils/interaction-router.ts +0 -273
  263. package/src/runtime-internal/utils/interaction-status.ts +0 -74
  264. package/src/runtime-internal/utils/semantic-projection-digest.ts +0 -407
  265. package/src/runtime-internal/workspace-contract.ts +0 -1170
  266. package/src/runtime.ts +0 -34
  267. package/src/testing/create-expect-api.ts +0 -352
  268. package/src/testing/create-test-runtime.ts +0 -381
  269. package/src/testing/definitions.ts +0 -127
  270. package/src/testing/index.ts +0 -3
  271. package/src/testing.ts +0 -1
  272. package/src/type-stubs/manifest-contract.d.ts +0 -42
  273. package/src/type-stubs/manifest-contract.js +0 -72
  274. package/src/type-stubs/ui-contract.d.ts +0 -5
  275. package/src/type-stubs/ui-contract.js +0 -1
  276. package/src/types/authoring-card-properties.type-test.ts +0 -266
  277. package/src/types/authoring.ts +0 -1282
  278. package/src/types/cards.ts +0 -19
  279. package/src/types/contracts.ts +0 -1550
  280. package/src/types/generated-helpers.ts +0 -35
  281. package/src/types/index.ts +0 -147
  282. package/src/types/slots.ts +0 -11
  283. package/src/types.ts +0 -1
  284. package/src/ui/components/ActionButton.tsx +0 -97
  285. package/src/ui/components/ActionPanel.tsx +0 -315
  286. package/src/ui/components/Card.tsx +0 -378
  287. package/src/ui/components/CardDragSurface.tsx +0 -1076
  288. package/src/ui/components/ChromeSuppressionContext.tsx +0 -70
  289. package/src/ui/components/CostDisplay.tsx +0 -145
  290. package/src/ui/components/DiceRoller.tsx +0 -581
  291. package/src/ui/components/Drawer.tsx +0 -180
  292. package/src/ui/components/ErrorBoundary.tsx +0 -275
  293. package/src/ui/components/GameEndDisplay.tsx +0 -398
  294. package/src/ui/components/GameSkeleton.tsx +0 -260
  295. package/src/ui/components/Hand.tsx +0 -468
  296. package/src/ui/components/HandDock.tsx +0 -299
  297. package/src/ui/components/HandView.tsx +0 -441
  298. package/src/ui/components/MobileHandTray.tsx +0 -381
  299. package/src/ui/components/MoreActions.tsx +0 -143
  300. package/src/ui/components/PhaseIndicator.tsx +0 -341
  301. package/src/ui/components/PlayArea.tsx +0 -146
  302. package/src/ui/components/PrimaryActionButton.tsx +0 -336
  303. package/src/ui/components/PrimaryButton.tsx +0 -45
  304. package/src/ui/components/ResourceCounter.tsx +0 -270
  305. package/src/ui/components/StagingZone.tsx +0 -134
  306. package/src/ui/components/ThemedButton.tsx +0 -113
  307. package/src/ui/components/Toast.tsx +0 -264
  308. package/src/ui/components/board/HexGrid.tsx +0 -1297
  309. package/src/ui/components/board/NetworkGraph.tsx +0 -476
  310. package/src/ui/components/board/SlotSystem.tsx +0 -388
  311. package/src/ui/components/board/SquareGrid.tsx +0 -1165
  312. package/src/ui/components/board/TrackBoard.tsx +0 -496
  313. package/src/ui/components/board/ZoneMap.tsx +0 -448
  314. package/src/ui/components/board/hex-board-view.ts +0 -123
  315. package/src/ui/components/board/index.ts +0 -142
  316. package/src/ui/components/board/interaction-accessibility.ts +0 -21
  317. package/src/ui/components/board/target-layer.ts +0 -67
  318. package/src/ui/components/card-render-content.type-test.ts +0 -27
  319. package/src/ui/components/hand-layout-math.ts +0 -163
  320. package/src/ui/components/hand-pointer-engine.ts +0 -413
  321. package/src/ui/components/index.ts +0 -245
  322. package/src/ui/components.ts +0 -1
  323. package/src/ui/defaults/components.tsx +0 -106
  324. package/src/ui/defaults/index.ts +0 -8
  325. package/src/ui/defaults.ts +0 -1
  326. package/src/ui/errors/ValidationError.ts +0 -29
  327. package/src/ui/helpers/cards.ts +0 -19
  328. package/src/ui/helpers/track-board.ts +0 -211
  329. package/src/ui/hooks/useBoardTopology.ts +0 -316
  330. package/src/ui/hooks/useCards.ts +0 -10
  331. package/src/ui/hooks/useHandCardPointer.ts +0 -381
  332. package/src/ui/hooks/useHandLayout.ts +0 -378
  333. package/src/ui/hooks/useHandPresentation.ts +0 -121
  334. package/src/ui/hooks/useHexBoard.ts +0 -74
  335. package/src/ui/hooks/useHexGrid.ts +0 -185
  336. package/src/ui/hooks/useIsMobile.ts +0 -35
  337. package/src/ui/hooks/usePanZoom.ts +0 -278
  338. package/src/ui/hooks/useSquareBoard.ts +0 -124
  339. package/src/ui/hooks/useSquareGrid.ts +0 -328
  340. package/src/ui/index.ts +0 -98
  341. package/src/ui/internal/ui/alert.tsx +0 -51
  342. package/src/ui/internal/ui/button.tsx +0 -58
  343. package/src/ui/internal/ui/dialog.tsx +0 -134
  344. package/src/ui/internal/ui/input.tsx +0 -21
  345. package/src/ui/internal/ui/label.tsx +0 -21
  346. package/src/ui/internal/ui/select.tsx +0 -129
  347. package/src/ui/internal/ui/tooltip.tsx +0 -54
  348. package/src/ui/internal/ui/utils.ts +0 -5
  349. package/src/ui/plugin-styles.css +0 -250
  350. package/src/ui/primitives/dialog-lifecycle.ts +0 -58
  351. package/src/ui/primitives/dice.tsx +0 -79
  352. package/src/ui/primitives/primitive-props.tsx +0 -101
  353. package/src/ui/theme/ThemeProvider.tsx +0 -252
  354. package/src/ui/theme/board.ts +0 -61
  355. package/src/ui/theme/css-vars.ts +0 -105
  356. package/src/ui/theme/derive.ts +0 -240
  357. package/src/ui/theme/index.ts +0 -61
  358. package/src/ui/theme/presets/arcade.ts +0 -261
  359. package/src/ui/theme/presets/studio.ts +0 -261
  360. package/src/ui/theme/presets/tabletop.ts +0 -266
  361. package/src/ui/theme/tokens.ts +0 -392
  362. package/src/ui/types/hex-color.ts +0 -20
  363. package/src/ui/types/player-state.ts +0 -463
  364. package/src/ui/types/tiled-board.ts +0 -785
  365. package/src/ui/types/visual-state.ts +0 -137
  366. package/src/ui.ts +0 -1
  367. /package/dist/{chunk-NKCRKGR2.js.map → chunk-3RQEICD3.js.map} +0 -0
  368. /package/dist/{chunk-I46YJSOD.js.map → codegen.js.map} +0 -0
  369. /package/dist/{chunk-T52J5RMF.js.map → reducer-contract.js.map} +0 -0
  370. /package/dist/{generated → runtime}/runtime-api.js.map +0 -0
  371. /package/dist/ui/{types/player-state.js → player-state.js} +0 -0
  372. /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-BoiVSYqx.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-1iAyJRFn.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-WG4JQL3S.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,13 +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-1iAyJRFn.js';
5
- import { a as ThemePresetId } from './ThemeProvider-BBMVT3KG.js';
6
- import { a as InteractionDescriptor, Z as ZoneHandlesSnapshot, I as InputDomain, b as InteractionInputDescriptor } from './runtime-api-CPLm_XDG.js';
7
- import { V as ViewCard } from './cards-Sl3b40Mv.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';
8
9
  import { j as BrowserInteractionAttributeMap } from './attributes-BeRyboMS.js';
9
- import { a as PluginSessionState, P as PlayerId } from './runtime-api-3dshj6kK.js';
10
- import { Player } from './ui/types/player-state.js';
10
+ import { Player } from './ui/player-state.js';
11
11
  import { H as HexColor } from './hex-color-MhOyuY-o.js';
12
12
 
13
13
  interface UIRootProps {
@@ -39,19 +39,6 @@ declare const UI: {
39
39
  Root: typeof UIRoot;
40
40
  };
41
41
 
42
- type PrimitiveDataAttributes = Record<`data-${string}`, string | boolean | number | undefined>;
43
- type PrimitiveCommonProps = {
44
- asChild?: boolean;
45
- children?: ReactNode;
46
- className?: string;
47
- style?: CSSProperties;
48
- } & AriaAttributes & PrimitiveDataAttributes;
49
- type EventHandler<Event> = (event: Event) => void;
50
- declare function composeEventHandlers<Event extends {
51
- defaultPrevented: boolean;
52
- }>(authorHandler: EventHandler<Event> | undefined, primitiveHandler: EventHandler<Event> | undefined): EventHandler<Event> | undefined;
53
- declare function renderPrimitive<ElementProps extends HTMLAttributes<HTMLElement>>(tagName: keyof JSX.IntrinsicElements, props: ElementProps & PrimitiveCommonProps): ReactElement;
54
-
55
42
  interface ZoneContextValue {
56
43
  zone: string;
57
44
  snapshot: ZoneHandlesSnapshot | null;
@@ -197,21 +184,21 @@ declare const Zone: {
197
184
 
198
185
  type BoardTargetKind = "edge" | "vertex" | "space" | "tile";
199
186
 
200
- 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 {
201
196
  kind?: BoardTargetKind;
202
- id: string;
203
- eligible: boolean;
204
- selectable: boolean;
205
- hovered: boolean;
206
197
  interactionKey?: string;
207
198
  interactionId?: string;
208
199
  inputKey?: string;
209
- pending: boolean;
210
- conflict: boolean;
211
200
  conflictInteractionKeys?: readonly string[];
212
- unavailableReason?: string;
213
201
  browserAttributes?: BrowserInteractionAttributeMap;
214
- select?: () => unknown | Promise<unknown>;
215
202
  }
216
203
  interface InteractiveTargetLayer {
217
204
  enabled?: boolean;
@@ -576,6 +563,122 @@ interface InteractionHandle<Params extends InteractionParamsShape = InteractionP
576
563
  */
577
564
  declare function useInteractionHandle<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>(descriptor: InteractionDescriptor): InteractionHandle<Params, DefaultedKeys>;
578
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
+
579
682
  interface InteractionFieldRenderProps<Params extends InteractionParamsShape = InteractionParamsShape, Key extends keyof Params & string = keyof Params & string> {
580
683
  descriptor: InteractionDescriptor;
581
684
  input: InteractionInputDescriptor & {
@@ -592,6 +695,25 @@ interface InteractionFieldRenderProps<Params extends InteractionParamsShape = In
592
695
  type InteractionFieldRenderMap<Params extends InteractionParamsShape = InteractionParamsShape> = Partial<{
593
696
  [K in keyof Params & string]: (props: InteractionFieldRenderProps<Params, K>) => ReactNode;
594
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
+
595
717
  interface InteractionSlotComponentProps {
596
718
  children?: ReactNode;
597
719
  }
@@ -629,15 +751,7 @@ type InteractionInputRenderMap = Record<string, (slot: InteractionInputSlot) =>
629
751
  interface InteractionSubmitSlot {
630
752
  Button: (props: InteractionButtonSlotProps) => ReactNode;
631
753
  }
632
- interface InteractionFieldProps<Params extends InteractionParamsShape = InteractionParamsShape, Key extends keyof Params & string = keyof Params & string> {
633
- descriptor: InteractionDescriptor;
634
- inputKey: Key;
635
- handle: InteractionHandle<Params>;
636
- errors?: readonly string[];
637
- missing?: boolean;
638
- disabled?: boolean;
639
- render?: InteractionFieldRenderMap<Params>[Key];
640
- }
754
+
641
755
  interface InteractionFormProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
642
756
  descriptor: InteractionDescriptor;
643
757
  handle: InteractionHandle<Params, DefaultedKeys>;
@@ -659,123 +773,13 @@ interface InteractionFormProps<Params extends InteractionParamsShape = Interacti
659
773
  }
660
774
 
661
775
  type BoundInteractionFormProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> = Omit<InteractionFormProps<Params, DefaultedKeys>, "descriptor" | "handle">;
662
-
663
- interface InteractionSubmitCallbacks {
664
- onSubmitSuccess?: () => void;
665
- onSubmitError?: (error: unknown) => void;
666
- }
667
-
668
- type DialogLifecycleState = "open" | "minimized" | "dismissed";
669
-
670
- interface InteractionContextValue {
671
- interaction: string;
672
- descriptor: InteractionDescriptor | null;
673
- handle: ReturnType<typeof useInteractionHandle> | null;
674
- }
675
- declare function useInteractionPrimitiveContext(): InteractionContextValue;
676
- /**
677
- * Live draft value for the active interaction's card-target input, resolved
678
- * from the surrounding `<Interaction.Root>`. Returns the selected card-id array
679
- * for `selection: "many"` inputs and the single id for `selection: "one"`.
680
- * Returns `undefined` when there is no interaction context or no card-target
681
- * input (so it is safe to render outside a root). Reactive: `handle.values`
682
- * updates as the draft changes. Backs the card surface `slot.card.Value`.
683
- */
684
- declare function useResolvedCardTargetValue(): unknown;
685
- interface InteractionRootProps<Interaction extends string = InteractionKey> {
686
- interaction: Interaction;
687
- children: ReactNode;
688
- unavailable?: "render" | "hide";
689
- }
690
- declare function InteractionRoot<Interaction extends string = InteractionKey>({ interaction, children, unavailable, }: InteractionRootProps<Interaction>): react_jsx_runtime.JSX.Element | null;
691
- type InteractionDialogState = DialogLifecycleState;
692
- interface InteractionDialogRenderState<Interaction extends string = InteractionKey> {
693
- interaction: Interaction;
694
- state: InteractionDialogState;
695
- open: boolean;
696
- minimized: boolean;
697
- dismissed: boolean;
698
- setOpen: (open: boolean) => void;
699
- restore: () => void;
700
- minimize: () => void;
701
- dismiss: () => void;
702
- }
703
- interface InteractionDialogProps<Interaction extends string = InteractionKey> {
704
- defaultOpen?: boolean;
705
- onStateChange?: (state: InteractionDialogState) => void;
706
- children: (state: InteractionDialogRenderState<Interaction>) => ReactNode;
707
- }
708
- declare function InteractionDialog<Interaction extends string = InteractionKey>({ defaultOpen, onStateChange, children, }: InteractionDialogProps<Interaction>): react_jsx_runtime.JSX.Element;
709
- interface InteractionSwitchRenderState<Interaction extends string = InteractionKey> {
710
- interaction: Interaction;
711
- descriptor: InteractionDescriptor<Interaction>;
712
- }
713
- type InteractionSwitchRouteMap<Interaction extends string = InteractionKey> = {
714
- [Key in Interaction]?: (state: InteractionSwitchRenderState<Key>) => ReactNode;
715
- };
716
- interface InteractionRoute {
717
- readonly collect: Record<string, unknown>;
718
- }
719
- type InteractionRoutesMap<Interaction extends string = InteractionKey> = {
720
- [Key in Interaction]: InteractionRoute;
721
- };
722
- interface InteractionSwitchProps<Interaction extends string = InteractionKey> {
723
- interaction?: Interaction;
724
- routes: InteractionSwitchRouteMap<Interaction>;
725
- fallback?: ReactNode;
726
- }
727
- declare function InteractionSwitch<Interaction extends string = InteractionKey>({ interaction, routes, fallback, }: InteractionSwitchProps<Interaction>): react_jsx_runtime.JSX.Element;
728
- interface InteractionRoutesProps<Interaction extends string = InteractionKey> {
729
- routes: InteractionRoutesMap<Interaction>;
730
- fallback?: ReactNode;
731
- includeUnavailable?: boolean | null;
732
- }
733
- declare function InteractionRoutes<Interaction extends string = InteractionKey>({ routes, fallback, includeUnavailable, }: InteractionRoutesProps<Interaction>): react_jsx_runtime.JSX.Element | null;
734
- type InteractionPartProps = PrimitiveCommonProps & HTMLAttributes<HTMLElement>;
735
- declare function InteractionLabel({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
736
- declare function InteractionDescription({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
737
- declare function InteractionUnavailableMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
738
- declare function InteractionValidationMessage({ children, ...props }: InteractionPartProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
739
- type InteractionTriggerProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement>;
740
- declare function InteractionTrigger({ disabled, onClick, ...props }: InteractionTriggerProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
741
- interface InteractionStateSnapshot<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
742
- interaction: string;
743
- descriptor: InteractionDescriptor;
744
- handle: InteractionHandle<Params, DefaultedKeys>;
745
- draft: InteractionHandle<Params, DefaultedKeys>["draft"];
746
- values: InteractionHandle<Params, DefaultedKeys>["values"];
747
- status: InteractionHandle<Params, DefaultedKeys>["status"];
748
- available: boolean;
749
- isReady: boolean;
750
- isArmed: boolean;
751
- inputKeys: readonly string[];
752
- missingInputs: readonly string[];
753
- readyFrontier: readonly string[];
754
- blockedInputs: readonly string[];
755
- hasInputs: boolean;
756
- }
757
- interface InteractionStateProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> {
758
- unavailable: ReactNode;
759
- children: (state: InteractionStateSnapshot<Params, DefaultedKeys>) => ReactNode;
760
- }
761
- declare function InteractionState<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>({ children, unavailable }: InteractionStateProps<Params, DefaultedKeys>): react_jsx_runtime.JSX.Element;
762
776
  type InteractionFormPrimitiveProps<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never> = BoundInteractionFormProps<Params, DefaultedKeys>;
763
777
  declare function InteractionFormPrimitive<Params extends InteractionParamsShape = InteractionParamsShape, DefaultedKeys extends keyof Params & string = never>(props: InteractionFormPrimitiveProps<Params, DefaultedKeys>): react_jsx_runtime.JSX.Element | null;
764
778
  type InteractionFieldPrimitiveProps<Params extends InteractionParamsShape = InteractionParamsShape, Input extends keyof Params & string = keyof Params & string> = Omit<InteractionFieldProps<Params, Input>, "descriptor" | "handle" | "inputKey"> & {
765
779
  input: Input;
766
780
  };
767
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;
768
- type InteractionSubmitProps = PrimitiveCommonProps & ButtonHTMLAttributes<HTMLButtonElement> & {
769
- params?: InteractionParamsShape | (() => InteractionParamsShape | null | undefined);
770
- onSubmitSuccess?: InteractionSubmitCallbacks["onSubmitSuccess"];
771
- onSubmitError?: InteractionSubmitCallbacks["onSubmitError"];
772
- };
773
- declare function InteractionSubmit({ disabled, onClick, params, onSubmitSuccess, onSubmitError, ...props }: InteractionSubmitProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
774
- type InteractionInputProps = PrimitiveCommonProps & Omit<InputHTMLAttributes<HTMLInputElement>, "name"> & {
775
- name: string;
776
- parse?: (value: string) => unknown;
777
- };
778
- declare function InteractionInput({ name, parse, onChange, disabled, ...props }: InteractionInputProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
782
+
779
783
  type InteractionCardInputProps<Input extends string = InteractionInputKey> = PrimitiveCommonProps & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
780
784
  input: Input;
781
785
  unsafeCardId?: string;
@@ -795,6 +799,7 @@ interface InteractionCardInputRenderState {
795
799
  invalid: boolean;
796
800
  }
797
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
+
798
803
  declare const Interaction: {
799
804
  Root: typeof InteractionRoot;
800
805
  State: typeof InteractionState;
@@ -1160,4 +1165,4 @@ interface DreamboardUI<Contract extends UIContract = RegisteredUI> {
1160
1165
  readonly Board: TypedBoard<Contract>;
1161
1166
  }
1162
1167
 
1163
- 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 };