@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
@@ -1,546 +0,0 @@
1
- import type { InteractionUiStore } from "../context/InteractionDraftContext.js";
2
- import type {
3
- InteractionDescriptor,
4
- PluginStateSnapshot,
5
- ZoneHandlesSnapshot,
6
- } from "../types/plugin-state.js";
7
- import {
8
- inputByKey,
9
- inputByTarget,
10
- isResolvedTargetDomain,
11
- isTargetDomain,
12
- } from "./interaction-inputs.js";
13
- import {
14
- claimInteractionSubmit,
15
- clearInteractionRoute,
16
- markInteractionPending,
17
- routeCardInputIntent,
18
- shouldRouteInteractionPending,
19
- type InteractionDraftReadiness,
20
- type RoutedInteractionTargetResult,
21
- } from "./interaction-router.js";
22
- import { isInteractionAvailable } from "./interaction-status.js";
23
-
24
- /**
25
- * Opaque drop-target identifier emitted by SDK presentation. The runtime
26
- * adapter resolves it back into a typed `(inputKey, value)` pair against the
27
- * descriptor of the card the drop is for.
28
- *
29
- * Two encodings are supported, both opaque to SDK presentation:
30
- *
31
- * - `dreamboard:drop:input:<inputKey>:<value>` — explicit collector input
32
- * key. Used by callers (CLI/scaffold tests, lower-level adapters) that
33
- * already know the descriptor input shape.
34
- * - `dreamboard:drop:kind:<targetKind>:<value>` — typed kind reference.
35
- * Used by the generated hand surface, where authors describe a target by
36
- * its domain kind (`card` for staging, `space`/`edge`/`vertex`/`tile`
37
- * for board destinations). The runtime adapter resolves it to the
38
- * matching collector input on the live descriptor at drop time.
39
- */
40
- export type RuntimeDropTargetId = string;
41
-
42
- const DROP_TARGET_PREFIX = "dreamboard:drop";
43
-
44
- export type RuntimeDropTargetKind =
45
- | "card"
46
- | "space"
47
- | "edge"
48
- | "vertex"
49
- | "tile";
50
-
51
- /**
52
- * Build an opaque drop-target id keyed by the descriptor input name. Used
53
- * when the caller already knows the collector input shape.
54
- */
55
- export function encodeRuntimeDropTargetId(
56
- inputKey: string,
57
- value: string,
58
- ): RuntimeDropTargetId {
59
- return `${DROP_TARGET_PREFIX}:input:${inputKey}:${value}`;
60
- }
61
-
62
- /**
63
- * Build an opaque drop-target id keyed by typed target kind. Used by the
64
- * generated hand surface, where authors do not (and should not) know the
65
- * collector input names.
66
- */
67
- export function encodeRuntimeDropTargetKind(
68
- kind: RuntimeDropTargetKind,
69
- value: string,
70
- ): RuntimeDropTargetId {
71
- return `${DROP_TARGET_PREFIX}:kind:${kind}:${value}`;
72
- }
73
-
74
- export type DecodedRuntimeDropTarget =
75
- | { mode: "input"; inputKey: string; value: string }
76
- | { mode: "kind"; kind: RuntimeDropTargetKind; value: string };
77
-
78
- export function decodeRuntimeDropTargetId(
79
- targetId: RuntimeDropTargetId,
80
- ): DecodedRuntimeDropTarget | null {
81
- if (!targetId.startsWith(`${DROP_TARGET_PREFIX}:`)) return null;
82
- const rest = targetId.slice(DROP_TARGET_PREFIX.length + 1);
83
- if (rest.startsWith("input:")) {
84
- const body = rest.slice("input:".length);
85
- const sep = body.indexOf(":");
86
- if (sep === -1) return null;
87
- return {
88
- mode: "input",
89
- inputKey: body.slice(0, sep),
90
- value: body.slice(sep + 1),
91
- };
92
- }
93
- if (rest.startsWith("kind:")) {
94
- const body = rest.slice("kind:".length);
95
- const sep = body.indexOf(":");
96
- if (sep === -1) return null;
97
- const kind = body.slice(0, sep) as RuntimeDropTargetKind;
98
- const value = body.slice(sep + 1);
99
- if (
100
- kind === "card" ||
101
- kind === "space" ||
102
- kind === "edge" ||
103
- kind === "vertex" ||
104
- kind === "tile"
105
- ) {
106
- return { mode: "kind", kind, value };
107
- }
108
- return null;
109
- }
110
- // Legacy format, kept for any external callers still using
111
- // `dreamboard:drop:<inputKey>:<value>`. New writers should use one of the
112
- // namespaced encoders above.
113
- const sep = rest.indexOf(":");
114
- if (sep === -1) return null;
115
- return {
116
- mode: "input",
117
- inputKey: rest.slice(0, sep),
118
- value: rest.slice(sep + 1),
119
- };
120
- }
121
-
122
- export interface CardIntentAdapterContext {
123
- store: InteractionUiStore;
124
- /** Project-side snapshot of all available interactions (gameplay slice). */
125
- availableInteractions: readonly InteractionDescriptor[];
126
- /** Zone snapshot for the originating hand. */
127
- zoneSnapshot: ZoneHandlesSnapshot | null;
128
- /** Submit through the canonical runtime path. */
129
- submit: (
130
- descriptor: InteractionDescriptor,
131
- params: Record<string, unknown>,
132
- ) => Promise<void>;
133
- /**
134
- * Optional explicit interaction key. When provided, the adapter only routes
135
- * intents through this interaction; otherwise it picks the first interaction
136
- * eligible for the card.
137
- */
138
- interactionKey?: string;
139
- }
140
-
141
- export type CardIntentInput =
142
- | { type: "activate"; cardId: string }
143
- | { type: "drop"; cardId: string; targetId: string };
144
-
145
- export type CardIntentResult =
146
- | { status: "ignored"; reason: CardIntentIgnoredReason }
147
- | {
148
- status: "pending";
149
- descriptor: InteractionDescriptor;
150
- readiness: InteractionDraftReadiness;
151
- params: Record<string, unknown>;
152
- }
153
- | {
154
- status: "submitted";
155
- descriptor: InteractionDescriptor;
156
- readiness: InteractionDraftReadiness;
157
- params: Record<string, unknown>;
158
- }
159
- | {
160
- status: "submitting";
161
- descriptor: InteractionDescriptor;
162
- readiness: InteractionDraftReadiness;
163
- params: Record<string, unknown>;
164
- }
165
- | {
166
- status: "error";
167
- descriptor: InteractionDescriptor;
168
- error: unknown;
169
- };
170
-
171
- export type CardIntentIgnoredReason =
172
- | "no-descriptor"
173
- | "interaction-unavailable"
174
- | "no-card-input"
175
- | "card-not-eligible"
176
- | "drop-target-not-decodable"
177
- | "drop-target-input-unknown"
178
- | "drop-target-not-eligible"
179
- | "ambiguous-drop"
180
- | "already-submitting";
181
-
182
- interface CardRouteCandidate {
183
- descriptor: InteractionDescriptor;
184
- cardInputKey: string;
185
- }
186
-
187
- /**
188
- * Enumerate descriptors that can accept this card. Used both to pick a
189
- * single-action route for `activate` intents and to filter joint
190
- * `(card, destination)` matches for `drop` intents.
191
- */
192
- function listCardRouteCandidates(
193
- ctx: CardIntentAdapterContext,
194
- cardId: string,
195
- ): CardRouteCandidate[] {
196
- const explicitKey = ctx.interactionKey;
197
- const candidates = ctx.zoneSnapshot
198
- ? (ctx.zoneSnapshot.playableByCardId[cardId] ?? [])
199
- : ctx.availableInteractions.filter(
200
- (descriptor) =>
201
- !explicitKey ||
202
- descriptor.interactionKey === explicitKey ||
203
- descriptor.interactionId === explicitKey,
204
- );
205
- const result: CardRouteCandidate[] = [];
206
- for (const descriptor of candidates) {
207
- if (explicitKey && descriptor.interactionKey !== explicitKey) continue;
208
- if (!isInteractionAvailable(descriptor)) continue;
209
- const targetInput = inputByTarget(descriptor, "card", cardId);
210
- if (targetInput) {
211
- result.push({ descriptor, cardInputKey: targetInput.key });
212
- continue;
213
- }
214
- const fallback = descriptor.inputs.find((input) => input.key === "cardId");
215
- if (fallback && isTargetDomain(fallback.domain)) {
216
- result.push({ descriptor, cardInputKey: fallback.key });
217
- }
218
- }
219
- return result;
220
- }
221
-
222
- /**
223
- * Apply an SDK `CardIntent` (generic activate/drop) to canonical Dreamboard
224
- * collector state. Returns the runtime classification for the call site to
225
- * react to (pending vs submitted vs ignored).
226
- *
227
- * Behavior:
228
- * - `activate` is mapped onto `routeCardInputIntent` with no destination.
229
- * - `drop` decodes the opaque target id; when it points at a typed input on
230
- * the same descriptor, both the card and the destination are written
231
- * atomically before readiness/`autoWhenReady` is evaluated.
232
- * - Disabled, unavailable or ineligible intents return `ignored` even if the
233
- * caller emits them.
234
- */
235
- export async function applyCardIntent(
236
- ctx: CardIntentAdapterContext,
237
- intent: CardIntentInput,
238
- ): Promise<CardIntentResult> {
239
- const candidates = listCardRouteCandidates(ctx, intent.cardId);
240
- if (candidates.length === 0) {
241
- return { status: "ignored", reason: "no-descriptor" };
242
- }
243
- // Filter out candidates whose card input rejects this card. The card
244
- // domain may be unresolved (lazy) — those still pass since their
245
- // eligibility is computed from the draft itself.
246
- const cardEligible = candidates.filter(({ descriptor, cardInputKey }) => {
247
- const cardInput = inputByKey(descriptor, cardInputKey);
248
- if (!cardInput) return false;
249
- if (!isResolvedTargetDomain(cardInput.domain)) return true;
250
- return cardInput.domain.eligibleTargets.includes(intent.cardId);
251
- });
252
- if (cardEligible.length === 0) {
253
- return { status: "ignored", reason: "card-not-eligible" };
254
- }
255
-
256
- let descriptor: InteractionDescriptor;
257
- let cardInputKey: string;
258
- let dropTarget: { inputKey: string; value: string } | undefined;
259
-
260
- if (intent.type === "drop") {
261
- const decoded = decodeRuntimeDropTargetId(intent.targetId);
262
- if (!decoded) {
263
- return { status: "ignored", reason: "drop-target-not-decodable" };
264
- }
265
- // Score every card-eligible candidate against the decoded destination.
266
- // A descriptor is a "match" only when it accepts both the card and the
267
- // dropped target; ambiguity is reported explicitly so authors can fix
268
- // the underlying descriptor projection rather than getting silent
269
- // submissions of the wrong action.
270
- const matches = cardEligible.flatMap((candidate) => {
271
- const resolvedInputKey =
272
- decoded.mode === "input"
273
- ? decoded.inputKey
274
- : resolveDropTargetInputKey(
275
- candidate.descriptor,
276
- decoded.kind,
277
- decoded.value,
278
- );
279
- if (!resolvedInputKey) return [];
280
- const dropInput = inputByKey(candidate.descriptor, resolvedInputKey);
281
- if (!dropInput) return [];
282
- if (
283
- isResolvedTargetDomain(dropInput.domain) &&
284
- !dropInput.domain.eligibleTargets.includes(decoded.value)
285
- ) {
286
- return [];
287
- }
288
- return [
289
- {
290
- ...candidate,
291
- dropTarget: { inputKey: resolvedInputKey, value: decoded.value },
292
- },
293
- ];
294
- });
295
- if (matches.length === 0) {
296
- // Distinguish "no descriptor declares this input/kind at all" from
297
- // "the dropped value is not eligible for any descriptor that does".
298
- const anyKnowsKey = cardEligible.some((candidate) => {
299
- if (decoded.mode === "input") {
300
- return (
301
- inputByKey(candidate.descriptor, decoded.inputKey) !== undefined
302
- );
303
- }
304
- return (
305
- resolveDropTargetInputKey(
306
- candidate.descriptor,
307
- decoded.kind,
308
- decoded.value,
309
- ) !== null
310
- );
311
- });
312
- return {
313
- status: "ignored",
314
- reason: anyKnowsKey
315
- ? "drop-target-not-eligible"
316
- : "drop-target-input-unknown",
317
- };
318
- }
319
- if (matches.length > 1) {
320
- // Ambiguity: more than one descriptor accepts both this card and this
321
- // destination. Signal so callers/tests catch the descriptor design
322
- // bug rather than the runtime silently picking one.
323
- return { status: "ignored", reason: "ambiguous-drop" };
324
- }
325
- descriptor = matches[0]!.descriptor;
326
- cardInputKey = matches[0]!.cardInputKey;
327
- dropTarget = matches[0]!.dropTarget;
328
- } else {
329
- descriptor = cardEligible[0]!.descriptor;
330
- cardInputKey = cardEligible[0]!.cardInputKey;
331
- }
332
-
333
- if (!isInteractionAvailable(descriptor)) {
334
- return { status: "ignored", reason: "interaction-unavailable" };
335
- }
336
- if (!inputByKey(descriptor, cardInputKey)) {
337
- return { status: "ignored", reason: "no-card-input" };
338
- }
339
-
340
- const routed: RoutedInteractionTargetResult = routeCardInputIntent(
341
- ctx.store,
342
- descriptor,
343
- {
344
- cardInputKey,
345
- cardId: intent.cardId,
346
- dropTarget,
347
- },
348
- );
349
-
350
- if (shouldRouteInteractionPending(descriptor, routed.readiness)) {
351
- markInteractionPending(ctx.store, descriptor);
352
- return {
353
- status: "pending",
354
- descriptor,
355
- readiness: routed.readiness,
356
- params: routed.params,
357
- };
358
- }
359
-
360
- if (!claimInteractionSubmit(ctx.store, descriptor)) {
361
- return {
362
- status: "submitting",
363
- descriptor,
364
- readiness: routed.readiness,
365
- params: routed.params,
366
- };
367
- }
368
-
369
- try {
370
- await ctx.submit(descriptor, routed.params);
371
- clearInteractionRoute(ctx.store, descriptor);
372
- return {
373
- status: "submitted",
374
- descriptor,
375
- readiness: routed.readiness,
376
- params: routed.params,
377
- };
378
- } catch (error) {
379
- return { status: "error", descriptor, error };
380
- } finally {
381
- ctx.store.setSubmitting(descriptor.interactionKey, false);
382
- }
383
- }
384
-
385
- /**
386
- * Resolve a typed drop-target kind/value pair to the descriptor's collector
387
- * input key. Authors describe targets at the type level (e.g. board space
388
- * `hex-a`) but the descriptor names that input by its authored collector
389
- * key (e.g. `spaceId`). This bridges the two without surfacing collector
390
- * names in the authoring API.
391
- */
392
- function resolveDropTargetInputKey(
393
- descriptor: InteractionDescriptor,
394
- kind: RuntimeDropTargetKind,
395
- value: string,
396
- ): string | null {
397
- // Prefer an input whose authoritative resolved domain advertises this
398
- // value as eligible. Falls back to a kind-only match for lazy domains.
399
- let kindOnlyMatch: string | null = null;
400
- for (const input of descriptor.inputs) {
401
- if (!matchesDropTargetKind(input.domain, kind)) continue;
402
- if (
403
- isResolvedTargetDomain(input.domain) &&
404
- input.domain.eligibleTargets.includes(value)
405
- ) {
406
- return input.key;
407
- }
408
- if (kindOnlyMatch === null) {
409
- kindOnlyMatch = input.key;
410
- }
411
- }
412
- return kindOnlyMatch;
413
- }
414
-
415
- function matchesDropTargetKind(
416
- domain: InteractionDescriptor["inputs"][number]["domain"],
417
- kind: RuntimeDropTargetKind,
418
- ): boolean {
419
- if (kind === "card") {
420
- return isTargetDomain(domain) && domain.type === "cardTarget";
421
- }
422
- return (
423
- isTargetDomain(domain) &&
424
- domain.type === "boardTarget" &&
425
- domain.targetKind === kind
426
- );
427
- }
428
-
429
- /**
430
- * Project descriptor + draft state into per-card visual flags used by the
431
- * runtime hand surface. Each entry tracks which card ids are currently part
432
- * of any card-target draft, and which of those have field validation errors.
433
- */
434
- export interface DraftCardProjectionEntry {
435
- descriptor: InteractionDescriptor;
436
- cardInputKeys: readonly string[];
437
- draftCardIds: ReadonlySet<string>;
438
- invalidCardIds: ReadonlySet<string>;
439
- }
440
-
441
- export function projectDraftCardState(
442
- availableInteractions: readonly InteractionDescriptor[],
443
- drafts: Readonly<Record<string, Readonly<Record<string, unknown>>>>,
444
- validate: (
445
- descriptor: InteractionDescriptor,
446
- draft: Readonly<Record<string, unknown>>,
447
- ) => Partial<Record<string, readonly string[]>>,
448
- ): DraftCardProjectionEntry[] {
449
- const entries: DraftCardProjectionEntry[] = [];
450
- for (const descriptor of availableInteractions) {
451
- const cardInputs = descriptor.inputs.filter(
452
- (input) =>
453
- isTargetDomain(input.domain) && input.domain.type === "cardTarget",
454
- );
455
- if (cardInputs.length === 0) continue;
456
- const draft = drafts[descriptor.interactionKey] ?? {};
457
- const draftCardIds = new Set<string>();
458
- for (const input of cardInputs) {
459
- const value = draft[input.key];
460
- if (Array.isArray(value)) {
461
- for (const item of value) {
462
- if (typeof item === "string") draftCardIds.add(item);
463
- }
464
- } else if (typeof value === "string") {
465
- draftCardIds.add(value);
466
- }
467
- }
468
- const fieldErrors = validate(descriptor, draft);
469
- const invalidCardIds = new Set<string>();
470
- for (const input of cardInputs) {
471
- if ((fieldErrors[input.key]?.length ?? 0) === 0) continue;
472
- const value = draft[input.key];
473
- if (Array.isArray(value)) {
474
- for (const item of value) {
475
- if (typeof item === "string") invalidCardIds.add(item);
476
- }
477
- } else if (typeof value === "string") {
478
- invalidCardIds.add(value);
479
- }
480
- }
481
- entries.push({
482
- descriptor,
483
- cardInputKeys: cardInputs.map((input) => input.key),
484
- draftCardIds,
485
- invalidCardIds,
486
- });
487
- }
488
- return entries;
489
- }
490
-
491
- export interface ProjectedCardVisualState {
492
- selected: boolean;
493
- invalid: boolean;
494
- }
495
-
496
- /**
497
- * Combine the per-descriptor projection into a single per-card flag tuple.
498
- */
499
- export function visualStateForCard(
500
- cardId: string,
501
- projection: readonly DraftCardProjectionEntry[],
502
- ): ProjectedCardVisualState {
503
- let selected = false;
504
- let invalid = false;
505
- for (const entry of projection) {
506
- if (entry.draftCardIds.has(cardId)) selected = true;
507
- if (entry.invalidCardIds.has(cardId)) invalid = true;
508
- }
509
- return { selected, invalid };
510
- }
511
-
512
- /**
513
- * Return the set of card ids that are currently part of a many-selection
514
- * draft for any descriptor in the zone. Used by the hand view to drop
515
- * selected cards out of the visible hand layout while keeping the runtime
516
- * source of truth in the zone snapshot.
517
- */
518
- export function selectedCardIdsForZone(
519
- store: Pick<InteractionUiStore, "getDraft">,
520
- zone: string,
521
- state: PluginStateSnapshot,
522
- ): readonly string[] {
523
- const result = new Set<string>();
524
- for (const descriptor of state.gameplay.availableInteractions) {
525
- const cardInput = descriptor.inputs.find((input) => {
526
- if (!isTargetDomain(input.domain)) return false;
527
- if (input.domain.type !== "cardTarget") return false;
528
- const declaredZones =
529
- input.domain.zoneId !== undefined
530
- ? [input.domain.zoneId]
531
- : (input.domain.zoneIds ?? []);
532
- return declaredZones.length === 0 || declaredZones.includes(zone);
533
- });
534
- if (!cardInput) continue;
535
- if (!isTargetDomain(cardInput.domain)) continue;
536
- if (cardInput.domain.type !== "cardTarget") continue;
537
- const draft = store.getDraft(descriptor.interactionKey);
538
- const value = draft[cardInput.key];
539
- if (cardInput.domain.selection?.mode === "many" && Array.isArray(value)) {
540
- for (const item of value) {
541
- if (typeof item === "string") result.add(item);
542
- }
543
- }
544
- }
545
- return [...result];
546
- }