@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
package/LICENSE.md ADDED
@@ -0,0 +1,96 @@
1
+ # PolyForm Shield License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/shield/1.0.0>
4
+
5
+ Required Notice: Copyright Dreamboard Games.
6
+ Licensor Line of Business: Dreamboard.Games game authoring, publishing, hosting, play, and platform services (https://dreamboard.games)
7
+
8
+ ## Acceptance
9
+
10
+ In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
11
+
12
+ ## Copyright License
13
+
14
+ The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to Distribution License and make changes or new works based on the software according to Changes and New Works License.
15
+
16
+ ## Distribution License
17
+
18
+ The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by Changes and New Works License.
19
+
20
+ ## Notices
21
+
22
+ You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
23
+
24
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
25
+
26
+ ## Changes and New Works License
27
+
28
+ The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
29
+
30
+ ## Patent License
31
+
32
+ The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
33
+
34
+ ## Noncompete
35
+
36
+ Any purpose is a permitted purpose, except for providing any product that competes with the software or any product the licensor or any of its affiliates provides using the software.
37
+
38
+ ## Competition
39
+
40
+ Goods and services compete even when they provide functionality through different kinds of interfaces or for different technical platforms. Applications can compete with services, libraries with plugins, frameworks with development tools, and so on, even if they're written in different programming languages or for different computer architectures. Goods and services compete even when provided free of charge.
41
+
42
+ If you market a product as a practical substitute for the software or another product, it definitely competes.
43
+
44
+ ## New Products
45
+
46
+ If you are using the software to provide a product that does not compete, but the licensor or any of its affiliates brings your product into competition by providing a new version of the software or another product using the software, you may continue using versions of the software available under these terms beforehand to provide your competing product, but not any later versions.
47
+
48
+ ## Discontinued Products
49
+
50
+ You may begin using the software to compete with a product or service that the licensor or any of its affiliates has stopped providing, unless the licensor includes a plain-text line beginning with `Licensor Line of Business:` with the software that mentions that line of business. For example:
51
+
52
+ > Licensor Line of Business: YoyodyneCMS Content Management System (http://example.com/cms)
53
+
54
+ ## Sales of Business
55
+
56
+ If the licensor or any of its affiliates sells a line of business developing the software or using the software to provide a product, the buyer can also enforce Noncompete for that product.
57
+
58
+ ## Fair Use
59
+
60
+ You may have "fair use" rights for the software under the law. These terms do not limit them.
61
+
62
+ ## No Other Rights
63
+
64
+ These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
65
+
66
+ ## Patent Defense
67
+
68
+ If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
69
+
70
+ ## Violations
71
+
72
+ The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
73
+
74
+ ## No Liability
75
+
76
+ As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
77
+
78
+ ## Definitions
79
+
80
+ The licensor is the individual or entity offering these terms, and the software is the software the licensor makes available under these terms.
81
+
82
+ A product can be a good or service, or a combination of them.
83
+
84
+ You refers to the individual or entity agreeing to these terms.
85
+
86
+ Your company is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all its affiliates.
87
+
88
+ Affiliates means the other organizations than an organization has control over, is under the control of, or is under common control with.
89
+
90
+ Control means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
91
+
92
+ Your licenses are all the licenses granted to you for the software under these terms.
93
+
94
+ Use means anything you do with the software requiring one of your licenses.
95
+
96
+ (c) PolyForm Project Inc.
package/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # @dreamboard-games/sdk
2
+
3
+ Package-set metadata for the public Dreamboard SDK release train. The individual SDK packages are versioned together and published as `@dreamboard-games/*`.
4
+
5
+ Typical imports:
6
+
7
+ ```ts
8
+ import {
9
+ DREAMBOARD_SDK_PACKAGE_SET,
10
+ DREAMBOARD_SDK_VERSION,
11
+ } from "@dreamboard-games/sdk";
12
+ ```
@@ -0,0 +1,193 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode, CSSProperties } from 'react';
3
+ import { V as ViewCard } from './cards-Sl3b40Mv.js';
4
+
5
+ /**
6
+ * Controlled visual state contract for `@dreamboard-games/sdk/ui` components.
7
+ *
8
+ * The SDK is Dreamboard-interaction unaware: components consume `display data`
9
+ * and `controlled semantic states`. Runtime adapters compute these states from
10
+ * descriptors/drafts and pass them in as plain props.
11
+ */
12
+ /**
13
+ * Generic semantic state attached to a presentational component.
14
+ *
15
+ * Every flag is optional and renders as a stable `data-*` attribute on the
16
+ * underlying element so that selectors, snapshot diffs and accessibility
17
+ * announcements can react to state without inspecting class strings.
18
+ */
19
+ interface InteractionVisualState {
20
+ /** Caller may activate this surface right now. */
21
+ eligible?: boolean;
22
+ /**
23
+ * Eligible *and* a meaningful subset — i.e. at least one peer surface is not
24
+ * eligible. Use this (rather than `eligible`) to drive a "highlight the
25
+ * playable cards" affordance: when every card in a hand is a legal target
26
+ * (e.g. a pass where any card may be chosen, or a turn where you may play
27
+ * anything) the highlight carries no information, so `distinctlyEligible` is
28
+ * `false` for all of them and the ring naturally disappears. `eligible`
29
+ * keeps its literal meaning ("is a legal target") for dimming/logic.
30
+ */
31
+ distinctlyEligible?: boolean;
32
+ /** Currently chosen as part of a draft selection or focus state. */
33
+ selected?: boolean;
34
+ /** Surface is non-interactive and visually muted. */
35
+ disabled?: boolean;
36
+ /** Caller's draft is invalid — render an error tint without removing the surface. */
37
+ invalid?: boolean;
38
+ /** Action has been submitted; render a settled/locked feedback state. */
39
+ submitted?: boolean;
40
+ /** Surface is being previewed (long-press, hover hold) without commitment. */
41
+ previewing?: boolean;
42
+ /**
43
+ * Optional 0..1 progress reading for an in-flight UI intent (swipe, hold,
44
+ * etc.). Components may render this as a fill, scale or halo without owning
45
+ * the gesture pipeline themselves.
46
+ */
47
+ intentProgress?: number;
48
+ }
49
+ /**
50
+ * Generic UI intent emitted by SDK components.
51
+ *
52
+ * Components do not know what `activate`/`drop` mean in Dreamboard terms —
53
+ * that mapping belongs to a runtime adapter. They only emit when a generic
54
+ * pointer/keyboard gesture completes.
55
+ *
56
+ * - `activate` is a single-target commit produced by a desktop click or a
57
+ * keyboard activation in `direct-activate` mode.
58
+ * - `drop` is a card→target commit produced by mobile drag or keyboard drop
59
+ * in `drag-to-target` mode. The opaque `targetId` is registered by a
60
+ * `CardDropTargetView` and resolved against pointer geometry inside the
61
+ * `CardDragSurface`.
62
+ * - `previewStart`/`previewEnd` bracket a long-press inspection that does
63
+ * not commit.
64
+ */
65
+ type CardIntent<CardId extends string = string, TargetId extends string = string> = {
66
+ type: "activate";
67
+ cardId: CardId;
68
+ source: "tap" | "keyboard";
69
+ } | {
70
+ type: "previewStart";
71
+ cardId: CardId;
72
+ } | {
73
+ type: "previewEnd";
74
+ cardId: CardId;
75
+ } | {
76
+ type: "drop";
77
+ cardId: CardId;
78
+ targetId: TargetId;
79
+ source: "pointer" | "keyboard";
80
+ };
81
+ /**
82
+ * Generic UI intent emitted for a board target (space/edge/vertex).
83
+ */
84
+ type TargetIntent<TargetId extends string = string> = {
85
+ type: "activate";
86
+ targetId: TargetId;
87
+ source: "tap" | "keyboard";
88
+ } | {
89
+ type: "previewStart";
90
+ targetId: TargetId;
91
+ } | {
92
+ type: "previewEnd";
93
+ targetId: TargetId;
94
+ };
95
+ /**
96
+ * Controlled visual state for a card drop target rendered through
97
+ * `CardDropTargetView`.
98
+ *
99
+ * `active` is `true` when any card is currently being dragged anywhere on
100
+ * the surface (eligible target should advertise itself). `over` is `true`
101
+ * only for the target that the lifted pointer would currently drop on.
102
+ */
103
+ interface CardDropTargetVisualState extends InteractionVisualState {
104
+ active?: boolean;
105
+ over?: boolean;
106
+ }
107
+ /**
108
+ * Build the `data-*` attribute bag for an {@link InteractionVisualState} so
109
+ * that components apply a single consistent attribute surface.
110
+ *
111
+ * `undefined` values are emitted (rather than `false`) so that CSS
112
+ * `[data-…="true"]` selectors do not match by mistake.
113
+ */
114
+ declare function visualStateDataAttributes(state: InteractionVisualState | undefined): Readonly<Record<string, string | undefined>>;
115
+ /**
116
+ * Build the `data-*` attribute bag for a {@link CardDropTargetVisualState}.
117
+ */
118
+ declare function dropTargetVisualStateDataAttributes(state: CardDropTargetVisualState | undefined): Readonly<Record<string, string | undefined>>;
119
+
120
+ /**
121
+ * Pure layout math for the controlled `HandView`.
122
+ *
123
+ * The functions here are independent of React and DOM measurement so they can
124
+ * be unit-tested directly. {@link computeFanLayout} matches the algorithm
125
+ * documented in `docs/references/ui-sdk-mobile-hand-and-card-interactions.md`,
126
+ * and {@link chooseHandLayoutMode} translates a measured container width and a
127
+ * caller policy into the actual presentation mode the hand should render.
128
+ */
129
+ type HandPresentationMode = "fan" | "compressed-fan" | "strip" | "tray";
130
+
131
+ /**
132
+ * Deterministic pointer recognizer for the controlled hand view.
133
+ *
134
+ * The engine is independent from React: it consumes pointer events and a
135
+ * caller-supplied callbacks bag, and produces semantic gesture events. It
136
+ * owns no DOM, emits no `CardIntent`, and does not track the drag-lifecycle
137
+ * `phase` — that responsibility lives in `CardDragSurface`. The engine only
138
+ * recognizes `tap`, `previewStart`/`previewEnd`, `liftStart`/`liftMove`/
139
+ * `liftEnd`/`liftCancel`, and a `horizontalBrowse` informational signal.
140
+ *
141
+ * The thresholds match
142
+ * `docs/references/ui-sdk-mobile-hand-and-card-interactions.md`:
143
+ *
144
+ * | Threshold | Default |
145
+ * | ------------------------- | ----------- |
146
+ * | Press preview delay | `220ms` |
147
+ * | Movement slop | `8px` |
148
+ * | Axis bias | `1.25` |
149
+ * | Drag lift distance | `28px` |
150
+ *
151
+ * Callers wire the engine's `handlePointerDown` / `handlePointerMove` /
152
+ * `handlePointerUp` / `handlePointerCancel` to the matching DOM events on
153
+ * each interactive card.
154
+ */
155
+ type HandInteractionPolicy = "direct-activate" | "drag-to-target";
156
+
157
+ type HandLayoutKind = HandPresentationMode | "stack";
158
+ interface HandLayoutPolicy {
159
+ desktop?: HandLayoutKind;
160
+ mobile?: HandLayoutKind;
161
+ }
162
+ interface HandViewProps<CardData extends ViewCard = ViewCard> {
163
+ cards: readonly CardData[];
164
+ /**
165
+ * Layout policy. Pass a single layout kind to use the same layout in every
166
+ * viewport, or pass `{ desktop, mobile }` for a measured-width decision.
167
+ * Defaults to `{ desktop: "fan", mobile: "tray" }`.
168
+ */
169
+ layout?: HandLayoutKind | HandLayoutPolicy;
170
+ /**
171
+ * Mobile interaction policy. Defaults to `direct-activate`. Use
172
+ * `drag-to-target` together with a surrounding `CardDragSurface` and one
173
+ * or more `CardDropTargetView` children.
174
+ */
175
+ mobileInteraction?: HandInteractionPolicy;
176
+ /** Returns the controlled visual state for a card. */
177
+ stateForCard?: (card: CardData, index: number) => InteractionVisualState | undefined;
178
+ /** Visual surface renderer. */
179
+ renderCard: (card: CardData, state: InteractionVisualState, index: number) => ReactNode;
180
+ /** Generic UI intent callback. */
181
+ onCardIntent?: (intent: CardIntent<CardData["id"] & string>) => void;
182
+ /** Card width hint for fan geometry. */
183
+ cardSize?: "sm" | "md" | "lg";
184
+ /** Slot for the empty state. Defaults to nothing rendered. */
185
+ renderEmpty?: () => ReactNode;
186
+ /** ARIA label for the hand region. */
187
+ "aria-label"?: string;
188
+ className?: string;
189
+ style?: CSSProperties;
190
+ }
191
+ declare function HandView<CardData extends ViewCard = ViewCard>({ cards, layout, mobileInteraction, stateForCard, renderCard, onCardIntent, cardSize, renderEmpty, "aria-label": ariaLabel, className, style, }: HandViewProps<CardData>): react_jsx_runtime.JSX.Element;
192
+
193
+ export { type CardDropTargetVisualState as C, type HandInteractionPolicy as H, type InteractionVisualState as I, type TargetIntent as T, type CardIntent as a, type HandLayoutKind as b, type HandLayoutPolicy as c, HandView as d, type HandViewProps as e, dropTargetVisualStateDataAttributes as f, visualStateDataAttributes as v };
@@ -0,0 +1,102 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ReactNode, HTMLAttributes, ComponentType, ReactElement } from 'react';
4
+ import { P as PrimitiveCommonProps } from './primitive-props-DpKs-GCr.js';
5
+
6
+ type HandRole = "primary" | "auxiliary" | "task";
7
+ interface MobileHandRegistration {
8
+ id: string;
9
+ zone: string;
10
+ label: string;
11
+ role: HandRole;
12
+ order?: number;
13
+ version: string;
14
+ count: number;
15
+ active: boolean;
16
+ autoOpen: boolean;
17
+ content: ReactNode;
18
+ }
19
+ declare function MobileHandTrayProvider({ children }: {
20
+ children: ReactNode;
21
+ }): react_jsx_runtime.JSX.Element;
22
+ declare function useRegisterMobileHand(hand: MobileHandRegistration): void;
23
+ /**
24
+ * Whether the mobile hand tray is currently presenting hands — i.e. the
25
+ * viewport is below the mobile breakpoint and at least one primary/auxiliary
26
+ * hand has registered. Authors can use this to drop redundant inline hand
27
+ * chrome (labels, framing) that the tray already provides, instead of guessing
28
+ * the breakpoint with a CSS media query. Returns `false` outside `<UI.Root>`.
29
+ */
30
+ declare function useMobileHandTrayActive(): boolean;
31
+
32
+ type ResourceId = string;
33
+ interface ResourceDisplayConfig<Resource extends string = ResourceId> {
34
+ type: Resource;
35
+ label: string;
36
+ icon: ReactNode | ComponentType<{
37
+ className?: string;
38
+ strokeWidth?: number;
39
+ "aria-hidden"?: boolean | "true" | "false";
40
+ }>;
41
+ iconColor?: string;
42
+ bgColor?: string;
43
+ textColor?: string;
44
+ }
45
+ interface ResourceCounterItemState<Resource extends string = ResourceId> {
46
+ type: Resource;
47
+ label: string;
48
+ icon: ResourceDisplayConfig<Resource>["icon"];
49
+ iconColor?: string;
50
+ bgColor?: string;
51
+ textColor?: string;
52
+ count: number;
53
+ isZero: boolean;
54
+ interactive: boolean;
55
+ select: () => void;
56
+ renderIcon: (props?: ResourceIconProps) => ReactNode;
57
+ dataAttributes: {
58
+ "data-resource-id": Resource;
59
+ "data-resource-count": number;
60
+ "data-resource-zero": boolean | undefined;
61
+ "data-interactive": boolean | undefined;
62
+ };
63
+ }
64
+ interface ResourceIconProps {
65
+ className?: string;
66
+ strokeWidth?: number;
67
+ "aria-hidden"?: boolean | "true" | "false";
68
+ }
69
+ type ResourceCounterRootProps<Resource extends string = ResourceId> = Omit<PrimitiveCommonProps, "children"> & Omit<HTMLAttributes<HTMLElement>, "children"> & {
70
+ resources: ReadonlyArray<ResourceDisplayConfig<Resource>>;
71
+ counts: Partial<Record<Resource, number>>;
72
+ zero?: "show" | "hide";
73
+ onResourceClick?: (resourceType: Resource) => void;
74
+ children: ReactNode;
75
+ };
76
+ type BoundResourceCounterRootProps<Resource extends string = ResourceId> = Omit<ResourceCounterRootProps<Resource>, "resources">;
77
+ type ResourceCounterProps<Resource extends string = ResourceId> = ResourceCounterRootProps<Resource>;
78
+ type ResourceCounterPartProps<Resource extends string = ResourceId> = Omit<PrimitiveCommonProps, "children"> & Omit<HTMLAttributes<HTMLElement>, "children"> & {
79
+ children?: ReactNode | ((resource: ResourceCounterItemState<Resource>) => ReactNode);
80
+ };
81
+ declare function ResourceCounterRoot<Resource extends string = ResourceId>({ resources, counts, zero, onResourceClick, children, "aria-label": ariaLabel, ...props }: ResourceCounterRootProps<Resource>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
82
+ declare function ResourceCounterItem<Resource extends string = ResourceId>({ children, onClick, "aria-label": ariaLabel, ...props }: ResourceCounterPartProps<Resource>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
83
+ declare function ResourceCounterIcon<Resource extends string = ResourceId>({ className, strokeWidth, "aria-hidden": ariaHidden, }: ResourceIconProps): ReactNode;
84
+ declare function ResourceCounterCount<Resource extends string = ResourceId>({ children, ...props }: ResourceCounterPartProps<Resource>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
85
+ declare function ResourceCounterLabel<Resource extends string = ResourceId>({ children, ...props }: ResourceCounterPartProps<Resource>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
86
+ interface ResourceCounterComponents<Resource extends string = ResourceId> {
87
+ Root(props: BoundResourceCounterRootProps<Resource>): ReactElement;
88
+ Item(props: ResourceCounterPartProps<Resource>): ReactElement;
89
+ Icon(props: ResourceIconProps): ReactNode;
90
+ Count(props: ResourceCounterPartProps<Resource>): ReactElement;
91
+ Label(props: ResourceCounterPartProps<Resource>): ReactElement;
92
+ }
93
+ declare function createResourceCounter<Resource extends string>(resources: ReadonlyArray<ResourceDisplayConfig<Resource>>): ResourceCounterComponents<Resource>;
94
+ declare const ResourceCounter: {
95
+ Root: typeof ResourceCounterRoot;
96
+ Item: typeof ResourceCounterItem;
97
+ Icon: typeof ResourceCounterIcon;
98
+ Count: typeof ResourceCounterCount;
99
+ Label: typeof ResourceCounterLabel;
100
+ };
101
+
102
+ export { type BoundResourceCounterRootProps as B, type HandRole as H, type MobileHandRegistration as M, ResourceCounter as R, MobileHandTrayProvider as a, type ResourceCounterComponents as b, ResourceCounterCount as c, ResourceCounterIcon as d, ResourceCounterItem as e, type ResourceCounterItemState as f, ResourceCounterLabel as g, type ResourceCounterPartProps as h, type ResourceCounterProps as i, ResourceCounterRoot as j, type ResourceCounterRootProps as k, type ResourceDisplayConfig as l, type ResourceIconProps as m, createResourceCounter as n, useRegisterMobileHand as o, useMobileHandTrayActive as u };
@@ -0,0 +1,99 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { CSSProperties, ReactNode } from 'react';
3
+ import { _ as Theme, a0 as ThemeOverride } from './hex-board-view-D_07hO6O.js';
4
+
5
+ /**
6
+ * The set of preset theme ids ships in `@dreamboard-games/sdk/ui`. Authors
7
+ * may register additional ones by passing a fully-resolved {@link Theme}
8
+ * instead of an id.
9
+ */
10
+ type ThemePresetId = "tabletop" | "arcade" | "studio";
11
+ /**
12
+ * Resolve a preset id (or a full theme) into a {@link Theme}.
13
+ *
14
+ * Used internally by {@link ThemeProvider}; exported so authors who
15
+ * compose at the call site (e.g. for a side-by-side preview) can do
16
+ * the same resolution without mounting a provider.
17
+ */
18
+ declare function resolveTheme(input: ThemePresetId | Theme | undefined): Theme;
19
+ /** Look up a registered preset by id. Returns `undefined` if missing. */
20
+ declare function getThemePreset(id: ThemePresetId): Theme | undefined;
21
+ /**
22
+ * Subset returned by {@link useTheme} — the resolved theme plus a
23
+ * stable copy of its CSS-variable map so consumers can reuse it (for
24
+ * example, to apply tokens to a portal that escapes the provider).
25
+ */
26
+ interface ThemeContextValue {
27
+ /** Fully resolved theme. */
28
+ readonly theme: Theme;
29
+ /** CSS-var map consumable as `style` on a wrapper. */
30
+ readonly cssVars: CSSProperties;
31
+ }
32
+ interface ThemeProviderProps {
33
+ /**
34
+ * Preset id, a full {@link Theme}, or omitted to use the `tabletop`
35
+ * default.
36
+ */
37
+ theme?: ThemePresetId | Theme;
38
+ /**
39
+ * Deep-partial overrides merged onto the resolved base theme. Use
40
+ * for one-off tweaks (e.g. swapping the player palette per game)
41
+ * without writing a full theme.
42
+ */
43
+ override?: ThemeOverride;
44
+ /**
45
+ * Render mode for reduced-motion enforcement.
46
+ *
47
+ * - `auto` (default): respect the user's OS-level preference via
48
+ * `prefers-reduced-motion: reduce`.
49
+ * - `force`: force `motion.reducedMotion = "true"` regardless of the
50
+ * OS preference (useful for screenshot CI).
51
+ * - `ignore`: never override motion (use only when the embedding
52
+ * shell already decides motion behaviour).
53
+ */
54
+ reducedMotion?: "auto" | "force" | "ignore";
55
+ /**
56
+ * Where to mount the wrapper. `block` (default) renders a `div` and
57
+ * applies the CSS variables to it. `none` skips the wrapper entirely
58
+ * — only useful when the parent is already a Dreamboard provider and
59
+ * just needs to publish a different sub-tree (rare).
60
+ */
61
+ as?: "block" | "none";
62
+ /** Extra style merged after the CSS-var map. */
63
+ style?: CSSProperties;
64
+ /** Extra className for the wrapper. */
65
+ className?: string;
66
+ children: ReactNode;
67
+ }
68
+ /**
69
+ * Mounts a Dreamboard theme. The provider:
70
+ *
71
+ * 1. Resolves the preset (or accepts a full theme).
72
+ * 2. Applies any deep-partial `override`.
73
+ * 3. Optionally clamps `motion.reducedMotion` to `"true"` based on the
74
+ * OS-level preference (or a forced override).
75
+ * 4. Serialises the resolved theme into CSS variables on a wrapper
76
+ * element so descendants can read tokens via `useTheme()` *or* via
77
+ * `var(--db-...)` references in their own CSS / Tailwind.
78
+ *
79
+ * Defaults such as `<GameLayout>` mount this for you with the configured
80
+ * theme; mount it manually only when you need a sub-tree to use a different
81
+ * theme (e.g. a dark sheet over a light layout).
82
+ */
83
+ declare function ThemeProvider({ theme: themeInput, override, reducedMotion, as, style, className, children, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
84
+ /**
85
+ * Read the active {@link Theme} from a {@link ThemeProvider} ancestor.
86
+ *
87
+ * Falls back to the `tabletop` preset (with no overrides) when called
88
+ * outside a provider — components remain renderable in isolated tests
89
+ * and Storybook/Cosmos fixtures without a wrapping shell.
90
+ */
91
+ declare function useTheme(): Theme;
92
+ /**
93
+ * Read the {@link CSSProperties} that publish the active theme as CSS
94
+ * variables. Useful when porting a theme into a portal or drawer that
95
+ * is rendered outside the provider's DOM subtree.
96
+ */
97
+ declare function useThemeCssVars(): CSSProperties;
98
+
99
+ export { type ThemeContextValue as T, type ThemePresetId as a, ThemeProvider as b, type ThemeProviderProps as c, useThemeCssVars as d, getThemePreset as g, resolveTheme as r, useTheme as u };