@dreamboard-games/sdk 0.2.0

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 (369) hide show
  1. package/LICENSE.md +96 -0
  2. package/README.md +12 -0
  3. package/dist/HandView-ncJIVLhN.d.ts +193 -0
  4. package/dist/ResourceCounter-CTREyF73.d.ts +102 -0
  5. package/dist/ThemeProvider-fy0_QzgO.d.ts +99 -0
  6. package/dist/bundle-TIZcw8LB.d.ts +281 -0
  7. package/dist/cards-Sl3b40Mv.d.ts +13 -0
  8. package/dist/chunk-7YAHLYBR.js +481 -0
  9. package/dist/chunk-7YAHLYBR.js.map +1 -0
  10. package/dist/chunk-FDNZTDD6.js +8085 -0
  11. package/dist/chunk-FDNZTDD6.js.map +1 -0
  12. package/dist/chunk-GKKBPPSW.js +598 -0
  13. package/dist/chunk-GKKBPPSW.js.map +1 -0
  14. package/dist/chunk-I46YJSOD.js +1 -0
  15. package/dist/chunk-I46YJSOD.js.map +1 -0
  16. package/dist/chunk-KAELH4KC.js +104 -0
  17. package/dist/chunk-KAELH4KC.js.map +1 -0
  18. package/dist/chunk-PZ5AY32C.js +10 -0
  19. package/dist/chunk-PZ5AY32C.js.map +1 -0
  20. package/dist/chunk-T3ZKNUZ7.js +1 -0
  21. package/dist/chunk-T3ZKNUZ7.js.map +1 -0
  22. package/dist/chunk-T52J5RMF.js +1 -0
  23. package/dist/chunk-T52J5RMF.js.map +1 -0
  24. package/dist/chunk-TDSWKVZ4.js +5401 -0
  25. package/dist/chunk-TDSWKVZ4.js.map +1 -0
  26. package/dist/chunk-U5C6BONG.js +34 -0
  27. package/dist/chunk-U5C6BONG.js.map +1 -0
  28. package/dist/chunk-VDXOF4FW.js +69 -0
  29. package/dist/chunk-VDXOF4FW.js.map +1 -0
  30. package/dist/chunk-VFTAA4WO.js +115 -0
  31. package/dist/chunk-VFTAA4WO.js.map +1 -0
  32. package/dist/chunk-WN74KVNY.js +17 -0
  33. package/dist/chunk-WN74KVNY.js.map +1 -0
  34. package/dist/chunk-WYPQ3GG5.js +10990 -0
  35. package/dist/chunk-WYPQ3GG5.js.map +1 -0
  36. package/dist/components-D5ZRE2Hl.d.ts +1451 -0
  37. package/dist/generated/runtime/primitives.d.ts +12 -0
  38. package/dist/generated/runtime/primitives.js +180 -0
  39. package/dist/generated/runtime/primitives.js.map +1 -0
  40. package/dist/generated/runtime-api.d.ts +3 -0
  41. package/dist/generated/runtime-api.js +2 -0
  42. package/dist/generated/runtime-api.js.map +1 -0
  43. package/dist/generated/runtime.d.ts +14 -0
  44. package/dist/generated/runtime.js +18 -0
  45. package/dist/generated/runtime.js.map +1 -0
  46. package/dist/generated/workspace-contract.d.ts +14 -0
  47. package/dist/generated/workspace-contract.js +14 -0
  48. package/dist/generated/workspace-contract.js.map +1 -0
  49. package/dist/hex-board-view-D_07hO6O.d.ts +933 -0
  50. package/dist/hex-color-MhOyuY-o.d.ts +8 -0
  51. package/dist/index-BwqPQtBu.d.ts +1433 -0
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +12 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/infrastructure/reducer-bundle-abi.d.ts +1083 -0
  56. package/dist/infrastructure/reducer-bundle-abi.js +14 -0
  57. package/dist/infrastructure/reducer-bundle-abi.js.map +1 -0
  58. package/dist/infrastructure/workspace-codegen.d.ts +53 -0
  59. package/dist/infrastructure/workspace-codegen.js +44 -0
  60. package/dist/infrastructure/workspace-codegen.js.map +1 -0
  61. package/dist/manifest-contract-BNHVGFtU.d.ts +9 -0
  62. package/dist/package-set.d.ts +13 -0
  63. package/dist/package-set.js +12 -0
  64. package/dist/package-set.js.map +1 -0
  65. package/dist/primitive-props-DpKs-GCr.d.ts +11 -0
  66. package/dist/reducer.d.ts +3786 -0
  67. package/dist/reducer.js +8131 -0
  68. package/dist/reducer.js.map +1 -0
  69. package/dist/runtime/primitives.d.ts +226 -0
  70. package/dist/runtime/primitives.js +180 -0
  71. package/dist/runtime/primitives.js.map +1 -0
  72. package/dist/runtime/types/runtime-api.d.ts +1 -0
  73. package/dist/runtime/types/runtime-api.js +2 -0
  74. package/dist/runtime/types/runtime-api.js.map +1 -0
  75. package/dist/runtime/workspace-contract.d.ts +172 -0
  76. package/dist/runtime/workspace-contract.js +14 -0
  77. package/dist/runtime/workspace-contract.js.map +1 -0
  78. package/dist/runtime-api-3dshj6kK.d.ts +101 -0
  79. package/dist/runtime-api-DWxvTr-O.d.ts +379 -0
  80. package/dist/runtime.d.ts +58 -0
  81. package/dist/runtime.js +13 -0
  82. package/dist/runtime.js.map +1 -0
  83. package/dist/slots-1GPGihk8.d.ts +8 -0
  84. package/dist/testing.d.ts +149 -0
  85. package/dist/testing.js +513 -0
  86. package/dist/testing.js.map +1 -0
  87. package/dist/types.d.ts +496 -0
  88. package/dist/types.js +28 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/ui/components.d.ts +16 -0
  91. package/dist/ui/components.js +192 -0
  92. package/dist/ui/components.js.map +1 -0
  93. package/dist/ui/defaults.d.ts +19 -0
  94. package/dist/ui/defaults.js +104 -0
  95. package/dist/ui/defaults.js.map +1 -0
  96. package/dist/ui/plugin-styles.css +250 -0
  97. package/dist/ui/types/player-state.d.ts +365 -0
  98. package/dist/ui/types/player-state.js +1 -0
  99. package/dist/ui/types/player-state.js.map +1 -0
  100. package/dist/ui-contract-iQfTtUSL.d.ts +1161 -0
  101. package/dist/ui.d.ts +320 -0
  102. package/dist/ui.js +253 -0
  103. package/dist/ui.js.map +1 -0
  104. package/package.json +199 -0
  105. package/src/generated/reducer-contract/builders.ts +90 -0
  106. package/src/generated/reducer-contract/version.ts +9 -0
  107. package/src/generated/reducer-contract/wire.ts +100 -0
  108. package/src/generated/reducer-contract/zod.ts +101 -0
  109. package/src/generated/runtime/primitives.ts +2 -0
  110. package/src/generated/runtime-api.ts +5 -0
  111. package/src/generated/runtime.ts +35 -0
  112. package/src/generated/workspace-contract.ts +2 -0
  113. package/src/index.ts +7 -0
  114. package/src/infrastructure/reducer-bundle-abi.ts +8 -0
  115. package/src/infrastructure/reducer-contract/bundle.ts +37 -0
  116. package/src/infrastructure/workspace-codegen/hex-geometry.ts +69 -0
  117. package/src/infrastructure/workspace-codegen/index.ts +64 -0
  118. package/src/infrastructure/workspace-codegen/manifest-contract.ts +6632 -0
  119. package/src/infrastructure/workspace-codegen/manifest-validation.ts +795 -0
  120. package/src/infrastructure/workspace-codegen/ownership.ts +131 -0
  121. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +169 -0
  122. package/src/infrastructure/workspace-codegen/seeds.ts +1705 -0
  123. package/src/infrastructure/workspace-codegen.ts +1 -0
  124. package/src/package-set.ts +19 -0
  125. package/src/reducer/authoring/contract.ts +157 -0
  126. package/src/reducer/authoring/effect.ts +224 -0
  127. package/src/reducer/authoring/game.ts +23 -0
  128. package/src/reducer/authoring/interaction.ts +98 -0
  129. package/src/reducer/authoring/phase.ts +300 -0
  130. package/src/reducer/authoring/types.ts +70 -0
  131. package/src/reducer/authoring/validation.ts +382 -0
  132. package/src/reducer/authoring/view-stage.ts +68 -0
  133. package/src/reducer/authoring.ts +29 -0
  134. package/src/reducer/bundle/ingress-bundle.ts +491 -0
  135. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +254 -0
  136. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +73 -0
  137. package/src/reducer/bundle/trusted/instruction-runner.ts +414 -0
  138. package/src/reducer/bundle/trusted/interaction-authorization.ts +137 -0
  139. package/src/reducer/bundle/trusted/interaction-collectors.ts +859 -0
  140. package/src/reducer/bundle/trusted/interaction-decision.ts +747 -0
  141. package/src/reducer/bundle/trusted/interaction-resolver.ts +95 -0
  142. package/src/reducer/bundle/trusted/interaction-types.ts +171 -0
  143. package/src/reducer/bundle/trusted/lifecycle-runner.ts +427 -0
  144. package/src/reducer/bundle/trusted/projection-builder.ts +356 -0
  145. package/src/reducer/bundle/trusted/projection-context.ts +39 -0
  146. package/src/reducer/bundle/trusted/rng-sampler.ts +150 -0
  147. package/src/reducer/bundle/trusted/runtime-registry.ts +120 -0
  148. package/src/reducer/bundle/trusted/runtime-scope.ts +336 -0
  149. package/src/reducer/bundle/trusted/simultaneous-player.ts +97 -0
  150. package/src/reducer/bundle/trusted/stage-resolver.ts +87 -0
  151. package/src/reducer/bundle/trusted/static-projection.ts +116 -0
  152. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +97 -0
  153. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +39 -0
  154. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +43 -0
  155. package/src/reducer/bundle/trusted/trusted-state-codec.ts +48 -0
  156. package/src/reducer/bundle/trusted-bundle.ts +97 -0
  157. package/src/reducer/bundle/types.ts +171 -0
  158. package/src/reducer/bundle.ts +2 -0
  159. package/src/reducer/client-param-schemas.ts +57 -0
  160. package/src/reducer/compose.ts +34 -0
  161. package/src/reducer/core/runtime-input.ts +30 -0
  162. package/src/reducer/core/runtime-instruction.ts +59 -0
  163. package/src/reducer/core/types.ts +62 -0
  164. package/src/reducer/definition-index.ts +277 -0
  165. package/src/reducer/derived.ts +106 -0
  166. package/src/reducer/effects.ts +92 -0
  167. package/src/reducer/engine/runtime-instruction-engine.ts +155 -0
  168. package/src/reducer/ingress/decode-runtime-input.ts +7 -0
  169. package/src/reducer/ingress/decode-session-state.ts +9 -0
  170. package/src/reducer/ingress/encode-session-state.ts +6 -0
  171. package/src/reducer/ingress/input-codec.ts +18 -0
  172. package/src/reducer/ingress/phase-schemas.ts +62 -0
  173. package/src/reducer/ingress/raw-types.ts +107 -0
  174. package/src/reducer/ingress/runtime-codec.ts +14 -0
  175. package/src/reducer/ingress/runtime-payload.ts +13 -0
  176. package/src/reducer/ingress/session-codec.ts +392 -0
  177. package/src/reducer/ingress/types.ts +6 -0
  178. package/src/reducer/inputs/boardInput.ts +217 -0
  179. package/src/reducer/inputs/boardTarget.ts +190 -0
  180. package/src/reducer/inputs/cardInput.ts +86 -0
  181. package/src/reducer/inputs/cardTarget.ts +101 -0
  182. package/src/reducer/inputs/choiceTarget.ts +104 -0
  183. package/src/reducer/inputs/defineInputs.ts +71 -0
  184. package/src/reducer/inputs/formInput.ts +809 -0
  185. package/src/reducer/inputs/many.ts +120 -0
  186. package/src/reducer/inputs/promptInput.ts +87 -0
  187. package/src/reducer/inputs/rngInput.ts +58 -0
  188. package/src/reducer/inputs/targetRule.ts +123 -0
  189. package/src/reducer/inputs.ts +41 -0
  190. package/src/reducer/model/definition.ts +1072 -0
  191. package/src/reducer/model/extract.ts +745 -0
  192. package/src/reducer/model/manifest.ts +570 -0
  193. package/src/reducer/model/queries.ts +641 -0
  194. package/src/reducer/model/runtime.ts +264 -0
  195. package/src/reducer/model/spec.ts +1386 -0
  196. package/src/reducer/model/table.ts +260 -0
  197. package/src/reducer/model.ts +7 -0
  198. package/src/reducer/ops.ts +1034 -0
  199. package/src/reducer/parse-utils.ts +28 -0
  200. package/src/reducer/per-player.ts +422 -0
  201. package/src/reducer/rng.ts +69 -0
  202. package/src/reducer/schema-helpers.ts +185 -0
  203. package/src/reducer/setup-bootstrap-helpers.ts +171 -0
  204. package/src/reducer/setup-bootstrap.ts +481 -0
  205. package/src/reducer/table-ops.ts +2671 -0
  206. package/src/reducer/table-queries.ts +372 -0
  207. package/src/reducer/transaction.ts +120 -0
  208. package/src/reducer.ts +314 -0
  209. package/src/runtime/primitives.ts +1 -0
  210. package/src/runtime/types/runtime-api.ts +1 -0
  211. package/src/runtime/workspace-contract.ts +32 -0
  212. package/src/runtime-internal/components/InteractionForm.tsx +1309 -0
  213. package/src/runtime-internal/components/PluginRuntime.tsx +103 -0
  214. package/src/runtime-internal/components/board/target-layer.ts +70 -0
  215. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +44 -0
  216. package/src/runtime-internal/context/InteractionDraftContext.tsx +279 -0
  217. package/src/runtime-internal/context/PluginSessionContext.tsx +47 -0
  218. package/src/runtime-internal/context/PluginStateContext.tsx +262 -0
  219. package/src/runtime-internal/context/RuntimeContext.tsx +96 -0
  220. package/src/runtime-internal/defaults/components.tsx +409 -0
  221. package/src/runtime-internal/defaults/index.ts +11 -0
  222. package/src/runtime-internal/errors/ValidationError.ts +29 -0
  223. package/src/runtime-internal/hooks/useActivePlayers.ts +33 -0
  224. package/src/runtime-internal/hooks/useBoardInteractions.ts +665 -0
  225. package/src/runtime-internal/hooks/useGameSelector.ts +105 -0
  226. package/src/runtime-internal/hooks/useGameView.ts +9 -0
  227. package/src/runtime-internal/hooks/useInteractionByKey.ts +354 -0
  228. package/src/runtime-internal/hooks/useInteractionHandle.ts +438 -0
  229. package/src/runtime-internal/hooks/useIsMyTurn.ts +20 -0
  230. package/src/runtime-internal/hooks/useLobby.ts +76 -0
  231. package/src/runtime-internal/hooks/useMe.ts +48 -0
  232. package/src/runtime-internal/hooks/usePlayerInfo.ts +28 -0
  233. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +23 -0
  234. package/src/runtime-internal/hooks/usePluginRuntime.ts +147 -0
  235. package/src/runtime-internal/hooks/useSeatInbox.ts +61 -0
  236. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +10 -0
  237. package/src/runtime-internal/index.ts +42 -0
  238. package/src/runtime-internal/internal.ts +43 -0
  239. package/src/runtime-internal/plugin-styles.css +250 -0
  240. package/src/runtime-internal/primitives/board.tsx +459 -0
  241. package/src/runtime-internal/primitives/dialog-lifecycle.ts +58 -0
  242. package/src/runtime-internal/primitives/dice.tsx +79 -0
  243. package/src/runtime-internal/primitives/game-ui-provider.tsx +35 -0
  244. package/src/runtime-internal/primitives/game.tsx +387 -0
  245. package/src/runtime-internal/primitives/hand-intent-adapter.ts +147 -0
  246. package/src/runtime-internal/primitives/hand-surface.tsx +594 -0
  247. package/src/runtime-internal/primitives/index.ts +196 -0
  248. package/src/runtime-internal/primitives/interaction-form-binding.tsx +56 -0
  249. package/src/runtime-internal/primitives/interaction-submit.ts +90 -0
  250. package/src/runtime-internal/primitives/interaction.tsx +987 -0
  251. package/src/runtime-internal/primitives/phase.tsx +43 -0
  252. package/src/runtime-internal/primitives/player-roster.tsx +302 -0
  253. package/src/runtime-internal/primitives/primitive-props.tsx +101 -0
  254. package/src/runtime-internal/primitives/prompt.tsx +255 -0
  255. package/src/runtime-internal/primitives/ui.tsx +60 -0
  256. package/src/runtime-internal/primitives/zone.tsx +791 -0
  257. package/src/runtime-internal/reducer.ts +30 -0
  258. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +605 -0
  259. package/src/runtime-internal/types/plugin-state.ts +508 -0
  260. package/src/runtime-internal/types/reducer-state.ts +24 -0
  261. package/src/runtime-internal/types/runtime-api.ts +114 -0
  262. package/src/runtime-internal/ui-contract.ts +519 -0
  263. package/src/runtime-internal/utils/card-intent-adapter.ts +546 -0
  264. package/src/runtime-internal/utils/interaction-inputs.ts +492 -0
  265. package/src/runtime-internal/utils/interaction-labels.ts +23 -0
  266. package/src/runtime-internal/utils/interaction-router.ts +273 -0
  267. package/src/runtime-internal/utils/interaction-status.ts +74 -0
  268. package/src/runtime-internal/workspace-contract.ts +1170 -0
  269. package/src/runtime.ts +34 -0
  270. package/src/testing/create-expect-api.ts +352 -0
  271. package/src/testing/create-test-runtime.ts +381 -0
  272. package/src/testing/definitions.ts +127 -0
  273. package/src/testing/index.ts +3 -0
  274. package/src/testing.ts +1 -0
  275. package/src/type-stubs/manifest-contract.d.ts +42 -0
  276. package/src/type-stubs/manifest-contract.js +72 -0
  277. package/src/type-stubs/ui-contract.d.ts +5 -0
  278. package/src/type-stubs/ui-contract.js +1 -0
  279. package/src/types/authoring-card-properties.type-test.ts +266 -0
  280. package/src/types/authoring.ts +1282 -0
  281. package/src/types/cards.ts +19 -0
  282. package/src/types/contracts.ts +1550 -0
  283. package/src/types/generated-helpers.ts +35 -0
  284. package/src/types/index.ts +147 -0
  285. package/src/types/slots.ts +11 -0
  286. package/src/types.ts +1 -0
  287. package/src/ui/components/ActionButton.tsx +97 -0
  288. package/src/ui/components/ActionPanel.tsx +315 -0
  289. package/src/ui/components/Card.tsx +378 -0
  290. package/src/ui/components/CardDragSurface.tsx +1076 -0
  291. package/src/ui/components/ChromeSuppressionContext.tsx +70 -0
  292. package/src/ui/components/CostDisplay.tsx +145 -0
  293. package/src/ui/components/DiceRoller.tsx +581 -0
  294. package/src/ui/components/Drawer.tsx +180 -0
  295. package/src/ui/components/ErrorBoundary.tsx +275 -0
  296. package/src/ui/components/GameEndDisplay.tsx +398 -0
  297. package/src/ui/components/GameSkeleton.tsx +260 -0
  298. package/src/ui/components/Hand.tsx +468 -0
  299. package/src/ui/components/HandDock.tsx +299 -0
  300. package/src/ui/components/HandView.tsx +441 -0
  301. package/src/ui/components/MobileHandTray.tsx +381 -0
  302. package/src/ui/components/MoreActions.tsx +143 -0
  303. package/src/ui/components/PhaseIndicator.tsx +341 -0
  304. package/src/ui/components/PlayArea.tsx +146 -0
  305. package/src/ui/components/PrimaryActionButton.tsx +336 -0
  306. package/src/ui/components/PrimaryButton.tsx +45 -0
  307. package/src/ui/components/ResourceCounter.tsx +270 -0
  308. package/src/ui/components/StagingZone.tsx +134 -0
  309. package/src/ui/components/ThemedButton.tsx +113 -0
  310. package/src/ui/components/Toast.tsx +264 -0
  311. package/src/ui/components/board/HexGrid.tsx +1294 -0
  312. package/src/ui/components/board/NetworkGraph.tsx +476 -0
  313. package/src/ui/components/board/SlotSystem.tsx +388 -0
  314. package/src/ui/components/board/SquareGrid.tsx +1165 -0
  315. package/src/ui/components/board/TrackBoard.tsx +496 -0
  316. package/src/ui/components/board/ZoneMap.tsx +448 -0
  317. package/src/ui/components/board/hex-board-view.ts +123 -0
  318. package/src/ui/components/board/index.ts +142 -0
  319. package/src/ui/components/board/interaction-accessibility.ts +21 -0
  320. package/src/ui/components/board/target-layer.ts +66 -0
  321. package/src/ui/components/card-render-content.type-test.ts +27 -0
  322. package/src/ui/components/hand-layout-math.ts +163 -0
  323. package/src/ui/components/hand-pointer-engine.ts +413 -0
  324. package/src/ui/components/index.ts +245 -0
  325. package/src/ui/components.ts +1 -0
  326. package/src/ui/defaults/components.tsx +106 -0
  327. package/src/ui/defaults/index.ts +8 -0
  328. package/src/ui/defaults.ts +1 -0
  329. package/src/ui/errors/ValidationError.ts +29 -0
  330. package/src/ui/helpers/cards.ts +19 -0
  331. package/src/ui/helpers/track-board.ts +211 -0
  332. package/src/ui/hooks/useBoardTopology.ts +316 -0
  333. package/src/ui/hooks/useCards.ts +10 -0
  334. package/src/ui/hooks/useHandCardPointer.ts +381 -0
  335. package/src/ui/hooks/useHandLayout.ts +378 -0
  336. package/src/ui/hooks/useHandPresentation.ts +121 -0
  337. package/src/ui/hooks/useHexBoard.ts +74 -0
  338. package/src/ui/hooks/useHexGrid.ts +185 -0
  339. package/src/ui/hooks/useIsMobile.ts +35 -0
  340. package/src/ui/hooks/usePanZoom.ts +278 -0
  341. package/src/ui/hooks/useSquareBoard.ts +124 -0
  342. package/src/ui/hooks/useSquareGrid.ts +328 -0
  343. package/src/ui/index.ts +98 -0
  344. package/src/ui/internal/ui/alert.tsx +51 -0
  345. package/src/ui/internal/ui/button.tsx +58 -0
  346. package/src/ui/internal/ui/dialog.tsx +134 -0
  347. package/src/ui/internal/ui/input.tsx +21 -0
  348. package/src/ui/internal/ui/label.tsx +21 -0
  349. package/src/ui/internal/ui/select.tsx +129 -0
  350. package/src/ui/internal/ui/tooltip.tsx +54 -0
  351. package/src/ui/internal/ui/utils.ts +5 -0
  352. package/src/ui/plugin-styles.css +250 -0
  353. package/src/ui/primitives/dialog-lifecycle.ts +58 -0
  354. package/src/ui/primitives/dice.tsx +79 -0
  355. package/src/ui/primitives/primitive-props.tsx +101 -0
  356. package/src/ui/theme/ThemeProvider.tsx +252 -0
  357. package/src/ui/theme/board.ts +61 -0
  358. package/src/ui/theme/css-vars.ts +105 -0
  359. package/src/ui/theme/derive.ts +240 -0
  360. package/src/ui/theme/index.ts +61 -0
  361. package/src/ui/theme/presets/arcade.ts +261 -0
  362. package/src/ui/theme/presets/studio.ts +261 -0
  363. package/src/ui/theme/presets/tabletop.ts +266 -0
  364. package/src/ui/theme/tokens.ts +392 -0
  365. package/src/ui/types/hex-color.ts +20 -0
  366. package/src/ui/types/player-state.ts +463 -0
  367. package/src/ui/types/tiled-board.ts +785 -0
  368. package/src/ui/types/visual-state.ts +137 -0
  369. package/src/ui.ts +1 -0
@@ -0,0 +1,226 @@
1
+ import { bf as ZoneCardRenderItem } from '../ui-contract-iQfTtUSL.js';
2
+ export { B as Board, a as BoardEdgeTarget, b as BoardEdgeTargetProps, c as BoardHexGrid, d as BoardHexGridInteractionFilter, e as BoardHexGridInteractions, f as BoardHexGridProps, g as BoardHexView, h as BoardHexViewProps, i as BoardRoot, j as BoardRootProps, k as BoardSpaceTarget, l as BoardSpaceTargetProps, m as BoardState, n as BoardStateProps, o as BoardTarget, p as BoardTargetExtraInputs, q as BoardTargetProps, r as BoardVertexTarget, s as BoardVertexTargetProps, D as Dice, t as DiceComponents, u as DiceRoot, v as DiceRootProps, w as DiceState, x as DiceValue, y as DiceValues, z as DiceValuesProps, G as Game, C as GameActiveActionState, E as GameChrome, F as GameChromeProps, H as GameChromeState, I as GameMeState, J as GamePendingInputState, K as GamePlayer, L as GamePlayerEntry, M as GamePlayersState, N as GameRenderState, O as GameRoot, P as GameRootProps, Q as GameTurnState, R as Interaction, S as InteractionCardInput, T as InteractionCardInputProps, U as InteractionCardInputRenderState, V as InteractionDescription, W as InteractionDialog, X as InteractionDialogProps, Y as InteractionDialogRenderState, Z as InteractionDialogState, _ as InteractionFieldPrimitiveProps, $ as InteractionFormPrimitive, a0 as InteractionFormPrimitiveProps, a1 as InteractionInput, a2 as InteractionInputProps, a3 as InteractionLabel, a4 as InteractionPartProps, a5 as InteractionRoot, a6 as InteractionRootProps, a7 as InteractionRoute, a8 as InteractionRoutes, a9 as InteractionRoutesMap, aa as InteractionRoutesProps, ab as InteractionState, ac as InteractionStateProps, ad as InteractionStateSnapshot, ae as InteractionSubmit, af as InteractionSubmitProps, ag as InteractionSwitch, ah as InteractionSwitchProps, ai as InteractionSwitchRenderState, aj as InteractionSwitchRouteMap, ak as InteractionTrigger, al as InteractionTriggerProps, am as InteractionUnavailableMessage, an as InteractionValidationMessage, ao as Phase, ap as PhaseFallback, aq as PhaseRouteMap, ar as PhaseSwitch, as as PhaseSwitchProps, at as PlayerRoster, au as PlayerRosterBadge, av as PlayerRosterBadges, aw as PlayerRosterComponents, ax as PlayerRosterEmpty, ay as PlayerRosterEntry, az as PlayerRosterList, aA as PlayerRosterListProps, aB as PlayerRosterName, aC as PlayerRosterPartProps, aD as PlayerRosterRoot, aE as PlayerRosterRootProps, aF as PlayerRosterScore, aG as PlayerRosterSwitchButton, aH as PlayerRosterSwitchButtonProps, aI as PrimitiveCommonProps, aJ as PrimitiveDataAttributes, aK as Prompt, aL as PromptDialog, aM as PromptDialogProps, aN as PromptDialogRenderState, aO as PromptDialogState, aP as PromptInbox, aQ as PromptInboxEmpty, aR as PromptInboxItems, aS as PromptInboxItemsProps, aT as PromptInboxRoot, aU as PromptMessage, aV as PromptOption, aW as PromptOptionProps, aX as PromptOptionRenderItem, aY as PromptOptions, aZ as PromptOptionsProps, a_ as PromptRoot, a$ as PromptRootProps, b0 as PromptTitle, b2 as UI, b4 as UIRoot, b5 as UIRootProps, b6 as UseZoneCardsOptions, b7 as UseZoneCardsResult, b8 as Zone, b9 as ZoneCardAction, ba as ZoneCardActionExtraInputs, bb as ZoneCardActionProps, bc as ZoneCardActionResult, bd as ZoneCardAt, be as ZoneCardAtProps, bg as ZoneItem, bh as ZoneItemProps, bi as ZoneList, bj as ZoneListProps, bk as ZonePileCards, bl as ZonePileCardsProps, bm as ZonePileContextValue, bn as ZonePileCount, bo as ZonePileCountProps, bp as ZonePileDescription, bq as ZonePileDescriptionProps, br as ZonePileLabel, bs as ZonePileLabelProps, bt as ZonePileRoot, bu as ZonePileRootProps, bv as ZonePileTrigger, bw as ZonePileTriggerProps, bx as ZoneRoot, by as ZoneRootProps, bz as ZoneTopCard, bA as ZoneTopCardProps, bB as composeEventHandlers, bC as createZoneCardRenderItem, bD as normalizeDiceState, bE as renderPrimitive, bF as useBoardPrimitiveContext, bG as useDicePrimitiveContext, bH as useGameActionError, bI as useInteractionPrimitiveContext, bJ as useOptionalZonePrimitiveContext, bK as useResolvedCardTargetValue, bL as useZoneCardContext, bM as useZoneCards, bN as useZonePileContext, bO as useZonePrimitiveContext } from '../ui-contract-iQfTtUSL.js';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { ReactNode } from 'react';
5
+ import { a as CardIntent, I as InteractionVisualState, b as HandLayoutKind, c as HandLayoutPolicy, H as HandInteractionPolicy, C as CardDropTargetVisualState } from '../HandView-ncJIVLhN.js';
6
+ import { a as InteractionDescriptor, P as PluginStateSnapshot } from '../runtime-api-DWxvTr-O.js';
7
+ import '../hex-board-view-D_07hO6O.js';
8
+ import '../ui/types/player-state.js';
9
+ import '../cards-Sl3b40Mv.js';
10
+ import '../hex-color-MhOyuY-o.js';
11
+ import '../ThemeProvider-fy0_QzgO.js';
12
+ import '../runtime-api-3dshj6kK.js';
13
+
14
+ interface InteractionDraftReadiness {
15
+ values: Record<string, unknown>;
16
+ missingInputs: readonly string[];
17
+ readyFrontier: readonly string[];
18
+ blockedInputs: readonly string[];
19
+ fieldErrors: Partial<Record<string, readonly string[]>>;
20
+ ready: boolean;
21
+ }
22
+
23
+ type RuntimeDropTargetKind = "card" | "space" | "edge" | "vertex" | "tile";
24
+ type CardIntentResult = {
25
+ status: "ignored";
26
+ reason: CardIntentIgnoredReason;
27
+ } | {
28
+ status: "pending";
29
+ descriptor: InteractionDescriptor;
30
+ readiness: InteractionDraftReadiness;
31
+ params: Record<string, unknown>;
32
+ } | {
33
+ status: "submitted";
34
+ descriptor: InteractionDescriptor;
35
+ readiness: InteractionDraftReadiness;
36
+ params: Record<string, unknown>;
37
+ } | {
38
+ status: "submitting";
39
+ descriptor: InteractionDescriptor;
40
+ readiness: InteractionDraftReadiness;
41
+ params: Record<string, unknown>;
42
+ } | {
43
+ status: "error";
44
+ descriptor: InteractionDescriptor;
45
+ error: unknown;
46
+ };
47
+ type CardIntentIgnoredReason = "no-descriptor" | "interaction-unavailable" | "no-card-input" | "card-not-eligible" | "drop-target-not-decodable" | "drop-target-input-unknown" | "drop-target-not-eligible" | "ambiguous-drop" | "already-submitting";
48
+
49
+ type RuntimeCardIntentResult = CardIntentResult;
50
+ /**
51
+ * Author-facing card intent. Mirrors the SDK shape, but for `drop` intents
52
+ * `targetId` is the manifest id (e.g. `"hex-a"`) — the runtime adapter
53
+ * decodes the opaque SDK target id before invoking author callbacks. This
54
+ * matches the type the generated `hand.Hand` facade declares.
55
+ */
56
+ type AuthoredCardIntent = {
57
+ type: "activate";
58
+ cardId: string;
59
+ source: "tap" | "keyboard";
60
+ } | {
61
+ type: "previewStart";
62
+ cardId: string;
63
+ } | {
64
+ type: "previewEnd";
65
+ cardId: string;
66
+ } | {
67
+ type: "drop";
68
+ cardId: string;
69
+ targetId: string;
70
+ source: "pointer" | "keyboard";
71
+ };
72
+ /**
73
+ * Translate a raw SDK `CardIntent` into the author-facing
74
+ * `AuthoredCardIntent` shape. For drop intents the opaque encoded
75
+ * `targetId` is decoded into its manifest value; non-decodable target
76
+ * ids fall through unchanged so authors can detect and ignore them.
77
+ */
78
+ declare function decodeAuthoredCardIntent(intent: CardIntent): AuthoredCardIntent;
79
+ interface UseCardIntentAdapterOptions {
80
+ /** Zone the hand is rendering. Used for snapshot lookup. */
81
+ zone: string;
82
+ /**
83
+ * Optional hook for the host to react to the runtime classification of an
84
+ * intent. Useful for confirmation animations or analytics. The intent is
85
+ * already routed by the time this fires. Receives the decoded
86
+ * authored-shape intent so `targetId` is the manifest id, not the SDK
87
+ * opaque encoding.
88
+ */
89
+ onResult?: (intent: AuthoredCardIntent, result: RuntimeCardIntentResult) => void;
90
+ }
91
+ /**
92
+ * Bind SDK card intent emission to the canonical runtime collector pipeline.
93
+ *
94
+ * The returned callback accepts the SDK `CardIntent` shape unchanged. The
95
+ * adapter looks up the descriptor for the originating card, atomically
96
+ * applies the card and any decoded drop-target inputs, and routes
97
+ * pending/submitting/submitted classifications through the runtime API.
98
+ *
99
+ * Preview intents are forwarded to the optional `onResult` callback as
100
+ * `ignored` results so authors can attach analytics without owning the
101
+ * routing logic themselves.
102
+ */
103
+ declare function useCardIntentAdapter({ zone, onResult, }: UseCardIntentAdapterOptions): (intent: CardIntent) => Promise<RuntimeCardIntentResult>;
104
+
105
+ interface RuntimeDropTarget {
106
+ /** Stable opaque id; runtime adapter encodes the inputKey + value here. */
107
+ targetId: string;
108
+ /** Plain text label used by the SDK live-region announcements. */
109
+ label: string;
110
+ /** Optional `CardDropTargetVisualState` overrides. */
111
+ visualState?: CardDropTargetVisualState;
112
+ /** Visible content inside the drop target. */
113
+ render: (state: CardDropTargetVisualState) => ReactNode;
114
+ /** ARIA role override. Defaults to "button". */
115
+ role?: string;
116
+ /** Extra container className. */
117
+ className?: string;
118
+ /** Order hint for keyboard traversal. */
119
+ order?: number;
120
+ }
121
+ /**
122
+ * Per-hand summary projected alongside the card list. Authors can render
123
+ * counts ("3 of 5 selected") without re-deriving selection state.
124
+ */
125
+ interface HandSelectionSummary {
126
+ /** How many cards in this hand are part of the active many-select draft. */
127
+ selectedCount: number;
128
+ /** Card ids currently in the many-select draft, in iteration order. */
129
+ selectedIds: readonly string[];
130
+ /**
131
+ * Whether at least one descriptor in this zone has form-side validation
132
+ * errors against the current draft. Authors can use this to render an
133
+ * inline hint without inspecting individual fields.
134
+ */
135
+ hasInvalidSelection: boolean;
136
+ }
137
+ interface HandSurfaceViewProps<Card extends ZoneCardRenderItem> {
138
+ zone: string;
139
+ cards: readonly Card[];
140
+ /** Visual surface for a single card. */
141
+ renderCard: (card: Card, state: InteractionVisualState, index: number) => ReactNode;
142
+ /**
143
+ * Render-safe slot for selection summary content. Fires during render
144
+ * with the latest projected summary so authors can compose count chrome
145
+ * (e.g. "3 of 5 selected") inline. The returned node is hoisted above
146
+ * the hand region. Use this for visible UI; use `onSelectionSummary`
147
+ * only for analytics or external state mirrors that need an effect.
148
+ */
149
+ renderSummary?: (summary: HandSelectionSummary) => ReactNode;
150
+ /**
151
+ * Optional selection summary observer. Invoked from a layout effect so
152
+ * consumers may safely call `setState` in response. Use `renderSummary`
153
+ * for inline rendering instead — that path avoids effect-timing
154
+ * surprises.
155
+ */
156
+ onSelectionSummary?: (summary: HandSelectionSummary) => void;
157
+ /**
158
+ * Render-safe slot for the hand's commit/action chrome (e.g. a submit
159
+ * button for a many-select interaction). Receives the same live summary as
160
+ * `renderSummary`. Rendered below the hand inline on desktop and pinned as a
161
+ * sticky footer inside the mobile dock, so the action stays reachable while
162
+ * the hand is docked. Use this instead of anchoring the action elsewhere on
163
+ * the board, where the dock would otherwise hide it.
164
+ */
165
+ renderActions?: (summary: HandSelectionSummary) => ReactNode;
166
+ /** Layout policy forwarded to the SDK HandView. */
167
+ layout?: HandLayoutKind | HandLayoutPolicy;
168
+ /** Mobile interaction policy. Defaults to `direct-activate`. */
169
+ mobileInteraction?: HandInteractionPolicy;
170
+ /**
171
+ * Drop targets to render around the hand. When provided, the hand renders
172
+ * inside a `CardDragSurface` so SDK `drop` intents arrive with an opaque
173
+ * target id that the runtime adapter can decode.
174
+ */
175
+ dropTargets?: readonly RuntimeDropTarget[];
176
+ /**
177
+ * Optional outer chrome around the drop targets, when `dropTargets` is
178
+ * provided. Defaults to a flex row above the hand.
179
+ */
180
+ renderDropTargets?: (children: ReactNode) => ReactNode;
181
+ /** Card width hint forwarded to the SDK HandView. */
182
+ cardSize?: "sm" | "md" | "lg";
183
+ /** Extra empty-state slot. */
184
+ renderEmpty?: () => ReactNode;
185
+ /** ARIA label for the hand region. */
186
+ ariaLabel?: string;
187
+ /**
188
+ * Optional analytics hook. Receives the decoded authored intent (so
189
+ * `targetId` is the manifest value, not the SDK opaque encoding) plus
190
+ * the runtime classification.
191
+ */
192
+ onIntentRouted?: (intent: AuthoredCardIntent, result: RuntimeCardIntentResult) => void;
193
+ className?: string;
194
+ }
195
+ /**
196
+ * Generated hand presentation entry point.
197
+ *
198
+ * Lives in `ui-runtime` because it owns:
199
+ *
200
+ * - mapping descriptor/draft state into SDK `InteractionVisualState`
201
+ * - hiding selected cards from the visible hand layout while the runtime keeps
202
+ * the actual zone snapshot intact
203
+ * - forwarding SDK `CardIntent` through the canonical collector adapter
204
+ *
205
+ * The component is intentionally Dreamboard-aware. The presentational
206
+ * pieces (`HandView`, `CardDragSurface`, `CardDropTargetView`) come from
207
+ * `@dreamboard-games/sdk/ui` and stay descriptor/draft unaware.
208
+ */
209
+ declare function HandSurfaceView<Card extends ZoneCardRenderItem>({ zone, cards, renderCard, layout, mobileInteraction, dropTargets, renderDropTargets, cardSize, renderEmpty, ariaLabel, onIntentRouted, onSelectionSummary, renderSummary, renderActions, className, }: HandSurfaceViewProps<Card>): react_jsx_runtime.JSX.Element;
210
+ /**
211
+ * Convenience helper for builders of generated hand surfaces. Encodes a
212
+ * typed target kind plus value into the opaque `targetId` that the SDK
213
+ * presents to its drop pipeline. The runtime adapter resolves the kind to
214
+ * the matching descriptor input at drop time, so authors never need to
215
+ * know collector input names. Generated typed targets call this internally.
216
+ */
217
+ declare function dropTargetIdFor(kind: RuntimeDropTargetKind, value: string): string;
218
+ /**
219
+ * Determine whether any descriptor in the available list expects a board or
220
+ * card destination input alongside a card target. Used by generated facades
221
+ * to decide whether to mount a drag surface even before the author wires
222
+ * dropTargets.
223
+ */
224
+ declare function descriptorsHaveDestinationInput(state: PluginStateSnapshot): boolean;
225
+
226
+ export { type AuthoredCardIntent, HandSurfaceView, type HandSurfaceViewProps, type RuntimeCardIntentResult, type RuntimeDropTarget, type UseCardIntentAdapterOptions, ZoneCardRenderItem, decodeAuthoredCardIntent, descriptorsHaveDestinationInput, dropTargetIdFor, useCardIntentAdapter };
@@ -0,0 +1,180 @@
1
+ import "../chunk-T52J5RMF.js";
2
+ import {
3
+ Board,
4
+ BoardEdgeTarget,
5
+ BoardHexGrid,
6
+ BoardHexView,
7
+ BoardRoot,
8
+ BoardSpaceTarget,
9
+ BoardState,
10
+ BoardTarget,
11
+ BoardVertexTarget,
12
+ Dice,
13
+ DiceRoot,
14
+ DiceValues,
15
+ Game,
16
+ GameChrome,
17
+ GameRoot,
18
+ HandSurfaceView,
19
+ Interaction,
20
+ InteractionCardInput,
21
+ InteractionDescription,
22
+ InteractionDialog,
23
+ InteractionFormPrimitive,
24
+ InteractionInput,
25
+ InteractionLabel,
26
+ InteractionRoot,
27
+ InteractionRoutes,
28
+ InteractionState,
29
+ InteractionSubmit,
30
+ InteractionSwitch,
31
+ InteractionTrigger,
32
+ InteractionUnavailableMessage,
33
+ InteractionValidationMessage,
34
+ Phase,
35
+ PhaseSwitch,
36
+ PlayerRoster,
37
+ PlayerRosterBadges,
38
+ PlayerRosterEmpty,
39
+ PlayerRosterList,
40
+ PlayerRosterName,
41
+ PlayerRosterRoot,
42
+ PlayerRosterScore,
43
+ PlayerRosterSwitchButton,
44
+ Prompt,
45
+ PromptDialog,
46
+ PromptInbox,
47
+ PromptInboxEmpty,
48
+ PromptInboxItems,
49
+ PromptInboxRoot,
50
+ PromptMessage,
51
+ PromptOption,
52
+ PromptOptions,
53
+ PromptRoot,
54
+ PromptTitle,
55
+ UI,
56
+ UIRoot,
57
+ Zone,
58
+ ZoneCardAction,
59
+ ZoneCardAt,
60
+ ZoneItem,
61
+ ZoneList,
62
+ ZonePileCards,
63
+ ZonePileCount,
64
+ ZonePileDescription,
65
+ ZonePileLabel,
66
+ ZonePileRoot,
67
+ ZonePileTrigger,
68
+ ZoneRoot,
69
+ ZoneTopCard,
70
+ composeEventHandlers,
71
+ createZoneCardRenderItem,
72
+ decodeAuthoredCardIntent,
73
+ descriptorsHaveDestinationInput,
74
+ dropTargetIdFor,
75
+ normalizeDiceState,
76
+ renderPrimitive,
77
+ useBoardPrimitiveContext,
78
+ useCardIntentAdapter,
79
+ useDicePrimitiveContext,
80
+ useGameActionError,
81
+ useInteractionPrimitiveContext,
82
+ useOptionalZonePrimitiveContext,
83
+ useResolvedCardTargetValue,
84
+ useZoneCardContext,
85
+ useZoneCards,
86
+ useZonePileContext,
87
+ useZonePrimitiveContext
88
+ } from "../chunk-TDSWKVZ4.js";
89
+ import "../chunk-KAELH4KC.js";
90
+ import "../chunk-WYPQ3GG5.js";
91
+ import "../chunk-VDXOF4FW.js";
92
+ import "../chunk-PZ5AY32C.js";
93
+ export {
94
+ Board,
95
+ BoardEdgeTarget,
96
+ BoardHexGrid,
97
+ BoardHexView,
98
+ BoardRoot,
99
+ BoardSpaceTarget,
100
+ BoardState,
101
+ BoardTarget,
102
+ BoardVertexTarget,
103
+ Dice,
104
+ DiceRoot,
105
+ DiceValues,
106
+ Game,
107
+ GameChrome,
108
+ GameRoot,
109
+ HandSurfaceView,
110
+ Interaction,
111
+ InteractionCardInput,
112
+ InteractionDescription,
113
+ InteractionDialog,
114
+ InteractionFormPrimitive,
115
+ InteractionInput,
116
+ InteractionLabel,
117
+ InteractionRoot,
118
+ InteractionRoutes,
119
+ InteractionState,
120
+ InteractionSubmit,
121
+ InteractionSwitch,
122
+ InteractionTrigger,
123
+ InteractionUnavailableMessage,
124
+ InteractionValidationMessage,
125
+ Phase,
126
+ PhaseSwitch,
127
+ PlayerRoster,
128
+ PlayerRosterBadges,
129
+ PlayerRosterEmpty,
130
+ PlayerRosterList,
131
+ PlayerRosterName,
132
+ PlayerRosterRoot,
133
+ PlayerRosterScore,
134
+ PlayerRosterSwitchButton,
135
+ Prompt,
136
+ PromptDialog,
137
+ PromptInbox,
138
+ PromptInboxEmpty,
139
+ PromptInboxItems,
140
+ PromptInboxRoot,
141
+ PromptMessage,
142
+ PromptOption,
143
+ PromptOptions,
144
+ PromptRoot,
145
+ PromptTitle,
146
+ UI,
147
+ UIRoot,
148
+ Zone,
149
+ ZoneCardAction,
150
+ ZoneCardAt,
151
+ ZoneItem,
152
+ ZoneList,
153
+ ZonePileCards,
154
+ ZonePileCount,
155
+ ZonePileDescription,
156
+ ZonePileLabel,
157
+ ZonePileRoot,
158
+ ZonePileTrigger,
159
+ ZoneRoot,
160
+ ZoneTopCard,
161
+ composeEventHandlers,
162
+ createZoneCardRenderItem,
163
+ decodeAuthoredCardIntent,
164
+ descriptorsHaveDestinationInput,
165
+ dropTargetIdFor,
166
+ normalizeDiceState,
167
+ renderPrimitive,
168
+ useBoardPrimitiveContext,
169
+ useCardIntentAdapter,
170
+ useDicePrimitiveContext,
171
+ useGameActionError,
172
+ useInteractionPrimitiveContext,
173
+ useOptionalZonePrimitiveContext,
174
+ useResolvedCardTargetValue,
175
+ useZoneCardContext,
176
+ useZoneCards,
177
+ useZonePileContext,
178
+ useZonePrimitiveContext
179
+ };
180
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ export { a as PluginSessionState, R as RuntimeAPI, S as SubmissionError, V as ValidationResult } from '../../runtime-api-3dshj6kK.js';
@@ -0,0 +1,2 @@
1
+ import "../../chunk-I46YJSOD.js";
2
+ //# sourceMappingURL=runtime-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,172 @@
1
+ export { DreamboardUI, TypedGame, UIContract } from '../runtime.js';
2
+ import { l as BoardSpaceTargetProps, bj as ZoneListProps, b3 as UIContract } from '../ui-contract-iQfTtUSL.js';
3
+ export { f as BoardHexGridProps, h as BoardHexViewProps, I as GameMeState, M as GamePlayersState, N as GameRenderState, Q as GameTurnState, b5 as UIRootProps, bf as ZoneCardRenderItem } from '../ui-contract-iQfTtUSL.js';
4
+ import { H as HandRole } from '../ResourceCounter-CTREyF73.js';
5
+ export { b as ResourceCounterComponents } from '../ResourceCounter-CTREyF73.js';
6
+ import '../runtime-api-DWxvTr-O.js';
7
+ import { ReactNode, ReactElement, ButtonHTMLAttributes } from 'react';
8
+ import 'react/jsx-runtime';
9
+ import '../hex-board-view-D_07hO6O.js';
10
+ import '../ui/types/player-state.js';
11
+ import '../cards-Sl3b40Mv.js';
12
+ import '../hex-color-MhOyuY-o.js';
13
+ import '../ThemeProvider-fy0_QzgO.js';
14
+ import '../runtime-api-3dshj6kK.js';
15
+ import '../primitive-props-DpKs-GCr.js';
16
+
17
+ interface ClientParamSchema {
18
+ safeParse: (value: unknown) => {
19
+ success: true;
20
+ data: Record<string, unknown>;
21
+ } | {
22
+ success: false;
23
+ error: {
24
+ issues: ReadonlyArray<{
25
+ path: readonly PropertyKey[];
26
+ message: string;
27
+ }>;
28
+ };
29
+ };
30
+ }
31
+ type ClientParamSchemaMap = Readonly<Record<string, Readonly<Record<string, ClientParamSchema>>>>;
32
+
33
+ type WorkspaceInteractionSlotComponent<Props = object> = (props: Props extends {
34
+ children: unknown;
35
+ } ? Props : Props & {
36
+ children?: ReactNode;
37
+ }) => ReactElement | null;
38
+ interface WorkspaceFormInputSlot<Input extends string = string> {
39
+ readonly Field: WorkspaceInteractionSlotComponent;
40
+ readonly Options: WorkspaceInteractionSlotComponent<{
41
+ children?: (option: {
42
+ value: unknown;
43
+ label: string;
44
+ }) => ReactNode;
45
+ }>;
46
+ readonly Value: WorkspaceInteractionSlotComponent<{
47
+ children: (value: unknown | undefined) => ReactNode;
48
+ }>;
49
+ readonly Default: WorkspaceInteractionSlotComponent;
50
+ readonly __input?: Input;
51
+ }
52
+ interface WorkspaceCardInputSlot<Card extends string = string> {
53
+ readonly Card: WorkspaceInteractionSlotComponent<{
54
+ value: Card;
55
+ } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "disabled" | "aria-disabled" | "aria-pressed" | "onClick" | "type" | "value">>;
56
+ readonly Cards: WorkspaceInteractionSlotComponent<{
57
+ children: (card: {
58
+ id: Card;
59
+ }) => ReactNode;
60
+ }>;
61
+ readonly Value: WorkspaceInteractionSlotComponent<{
62
+ children: (value: unknown | undefined) => ReactNode;
63
+ }>;
64
+ readonly Default: WorkspaceInteractionSlotComponent;
65
+ }
66
+ interface WorkspaceBoardTargetInputSlot<Kind extends "space" | "edge" | "vertex" | "tile", Target extends string = string> {
67
+ readonly Target: WorkspaceInteractionSlotComponent<{
68
+ value: Target;
69
+ } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "disabled" | "aria-disabled" | "aria-pressed" | "onClick" | "type" | "value">>;
70
+ readonly Value: WorkspaceInteractionSlotComponent<{
71
+ children: (value: unknown | undefined) => ReactNode;
72
+ }>;
73
+ readonly Default: WorkspaceInteractionSlotComponent;
74
+ readonly __kind?: Kind;
75
+ }
76
+ interface WorkspaceBoardSurface<Space extends string = string, Edge extends string = string, Vertex extends string = string, Tile extends string = string> {
77
+ readonly Root: WorkspaceInteractionSlotComponent;
78
+ readonly Space: <Target extends Space>(props: BoardSpaceTargetProps<Target>) => ReactElement | null;
79
+ readonly slot: {
80
+ readonly space: WorkspaceBoardTargetInputSlot<"space", Space>;
81
+ readonly playerSpace: WorkspaceBoardTargetInputSlot<"space", Space>;
82
+ readonly edge: WorkspaceBoardTargetInputSlot<"edge", Edge>;
83
+ readonly vertex: WorkspaceBoardTargetInputSlot<"vertex", Vertex>;
84
+ readonly tile: WorkspaceBoardTargetInputSlot<"tile", Tile>;
85
+ };
86
+ }
87
+ type WorkspaceZoneCardsComponent<Card> = WorkspaceInteractionSlotComponent<Omit<ZoneListProps, "children" | "empty"> & {
88
+ empty?: ReactNode;
89
+ children: (card: Card) => ReactNode;
90
+ }>;
91
+ type WorkspaceZoneCardComponent<Card> = WorkspaceInteractionSlotComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type" | "value"> & {
92
+ card: Card;
93
+ }>;
94
+ type WorkspaceZoneStagingComponent<Card> = WorkspaceInteractionSlotComponent<{
95
+ children: (card: Card) => ReactNode;
96
+ label?: ReactNode;
97
+ renderEmptySlot?: (index: number) => ReactNode;
98
+ cardSize?: "sm" | "md" | "lg";
99
+ ariaLabel?: string;
100
+ className?: string;
101
+ }>;
102
+ interface WorkspaceHandSurface<Zone extends string, Card> {
103
+ readonly Hand: WorkspaceZoneCardsComponent<Card>;
104
+ readonly Card: WorkspaceZoneCardComponent<Card>;
105
+ readonly Staging: WorkspaceZoneStagingComponent<Card>;
106
+ readonly slot: {
107
+ readonly card: WorkspaceCardInputSlot<Zone>;
108
+ };
109
+ }
110
+ interface WorkspacePileSurface<Card> {
111
+ readonly Pile: WorkspaceZoneCardsComponent<Card>;
112
+ readonly Card: WorkspaceZoneCardComponent<Card>;
113
+ }
114
+ interface WorkspaceCardCollectionSurface<Zone extends string, Card> {
115
+ readonly Collection: WorkspaceZoneCardsComponent<Card>;
116
+ readonly Card: WorkspaceZoneCardComponent<Card>;
117
+ readonly slot: {
118
+ readonly card: WorkspaceCardInputSlot<Zone>;
119
+ };
120
+ }
121
+ interface WorkspaceBoardSurfaceDescriptor<Board extends string = string> {
122
+ readonly kind: "board";
123
+ readonly board: Board;
124
+ }
125
+ interface WorkspaceHandSurfaceDescriptor<Zone extends string = string> {
126
+ readonly kind: "hand";
127
+ readonly zone: Zone;
128
+ readonly role: HandRole;
129
+ readonly label: string;
130
+ readonly order?: number;
131
+ }
132
+ interface WorkspacePileSurfaceDescriptor<Zone extends string = string> {
133
+ readonly kind: "pile";
134
+ readonly zone: Zone;
135
+ }
136
+ interface WorkspacePilesSurfaceDescriptor<Zones extends readonly string[] = readonly string[]> {
137
+ readonly kind: "piles";
138
+ readonly zones: Zones;
139
+ }
140
+ interface WorkspaceCardCollectionSurfaceDescriptor<Zones extends readonly string[] = readonly string[]> {
141
+ readonly kind: "cardCollection";
142
+ readonly zones: Zones;
143
+ readonly mode?: "all" | "top-card";
144
+ }
145
+ interface WorkspaceInteractionFormsDescriptor<Interactions extends Readonly<Record<string, string>> = Readonly<Record<string, string>>> {
146
+ readonly kind: "forms";
147
+ readonly interactions: Interactions;
148
+ }
149
+ interface WorkspaceInteractionFormDescriptor<Interaction extends string = string> {
150
+ readonly kind: "form";
151
+ readonly interaction: Interaction;
152
+ }
153
+ type WorkspaceSurfaceDescriptor = WorkspaceBoardSurfaceDescriptor | WorkspaceHandSurfaceDescriptor | WorkspacePileSurfaceDescriptor | WorkspacePilesSurfaceDescriptor | WorkspaceCardCollectionSurfaceDescriptor | WorkspaceInteractionFormDescriptor | WorkspaceInteractionFormsDescriptor;
154
+ interface WorkspaceSurfaceSpec {
155
+ readonly [key: string]: WorkspaceSurfaceDescriptor | WorkspaceSurfaceSpec;
156
+ }
157
+ interface WorkspaceContractOptions<Contract extends UIContract, Resource extends string, Card, HexBoards extends Record<string, unknown>> {
158
+ readonly uiContract: Contract;
159
+ readonly clientParamSchemasByPhase?: ClientParamSchemaMap;
160
+ readonly formInputKeysForInteraction: (interaction: string) => ReadonlySet<string>;
161
+ readonly resourceIds: readonly Resource[];
162
+ readonly resourcePresentationById?: Partial<Record<string, {
163
+ label?: string;
164
+ icon?: string;
165
+ }>>;
166
+ readonly hexStaticBoards: HexBoards;
167
+ readonly cardIdFromZoneCard: (card: Card) => string;
168
+ readonly zoneIdFromZoneCard: (card: Card) => string;
169
+ }
170
+ declare function createWorkspaceUIContract<WorkspaceUI, Contract extends UIContract, Resource extends string, Card, HexBoards extends Record<string, unknown>>(options: WorkspaceContractOptions<Contract, Resource, Card, HexBoards>): WorkspaceUI;
171
+
172
+ export { BoardSpaceTargetProps, type ClientParamSchemaMap, type WorkspaceBoardSurface, type WorkspaceBoardSurfaceDescriptor, type WorkspaceBoardTargetInputSlot, type WorkspaceCardCollectionSurface, type WorkspaceCardCollectionSurfaceDescriptor, type WorkspaceCardInputSlot, type WorkspaceFormInputSlot, type WorkspaceHandSurface, type WorkspaceHandSurfaceDescriptor, type WorkspaceInteractionFormDescriptor, type WorkspaceInteractionFormsDescriptor, type WorkspaceInteractionSlotComponent, type WorkspacePileSurface, type WorkspacePileSurfaceDescriptor, type WorkspacePilesSurfaceDescriptor, type WorkspaceSurfaceSpec, ZoneListProps, createWorkspaceUIContract };
@@ -0,0 +1,14 @@
1
+ import {
2
+ createWorkspaceUIContract
3
+ } from "../chunk-GKKBPPSW.js";
4
+ import "../chunk-T3ZKNUZ7.js";
5
+ import "../chunk-U5C6BONG.js";
6
+ import "../chunk-TDSWKVZ4.js";
7
+ import "../chunk-KAELH4KC.js";
8
+ import "../chunk-WYPQ3GG5.js";
9
+ import "../chunk-VDXOF4FW.js";
10
+ import "../chunk-PZ5AY32C.js";
11
+ export {
12
+ createWorkspaceUIContract
13
+ };
14
+ //# sourceMappingURL=workspace-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}