@dreamboard-games/ui-sdk 0.0.41

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 (533) hide show
  1. package/LICENSE +89 -0
  2. package/NOTICE +1 -0
  3. package/README.md +154 -0
  4. package/dist/components/ActionButton.d.ts +13 -0
  5. package/dist/components/ActionButton.d.ts.map +1 -0
  6. package/dist/components/ActionButton.js +14 -0
  7. package/dist/components/ActionPanel.d.ts +33 -0
  8. package/dist/components/ActionPanel.d.ts.map +1 -0
  9. package/dist/components/ActionPanel.js +148 -0
  10. package/dist/components/Card.d.ts +29 -0
  11. package/dist/components/Card.d.ts.map +1 -0
  12. package/dist/components/Card.js +220 -0
  13. package/dist/components/ChromeSuppressionContext.d.ts +7 -0
  14. package/dist/components/ChromeSuppressionContext.d.ts.map +1 -0
  15. package/dist/components/ChromeSuppressionContext.js +34 -0
  16. package/dist/components/CostDisplay.d.ts +22 -0
  17. package/dist/components/CostDisplay.d.ts.map +1 -0
  18. package/dist/components/CostDisplay.js +41 -0
  19. package/dist/components/DiceRoller.d.ts +30 -0
  20. package/dist/components/DiceRoller.d.ts.map +1 -0
  21. package/dist/components/DiceRoller.js +319 -0
  22. package/dist/components/Drawer.d.ts +19 -0
  23. package/dist/components/Drawer.d.ts.map +1 -0
  24. package/dist/components/Drawer.js +55 -0
  25. package/dist/components/ErrorBoundary.d.ts +24 -0
  26. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  27. package/dist/components/ErrorBoundary.js +37 -0
  28. package/dist/components/GameEndDisplay.d.ts +27 -0
  29. package/dist/components/GameEndDisplay.d.ts.map +1 -0
  30. package/dist/components/GameEndDisplay.js +185 -0
  31. package/dist/components/GameSkeleton.d.ts +12 -0
  32. package/dist/components/GameSkeleton.d.ts.map +1 -0
  33. package/dist/components/GameSkeleton.js +54 -0
  34. package/dist/components/Hand.d.ts +99 -0
  35. package/dist/components/Hand.d.ts.map +1 -0
  36. package/dist/components/Hand.js +162 -0
  37. package/dist/components/HandDock.d.ts +35 -0
  38. package/dist/components/HandDock.d.ts.map +1 -0
  39. package/dist/components/HandDock.js +124 -0
  40. package/dist/components/InteractionForm.d.ts +50 -0
  41. package/dist/components/InteractionForm.d.ts.map +1 -0
  42. package/dist/components/InteractionForm.js +402 -0
  43. package/dist/components/MoreActions.d.ts +49 -0
  44. package/dist/components/MoreActions.d.ts.map +1 -0
  45. package/dist/components/MoreActions.js +64 -0
  46. package/dist/components/PhaseIndicator.d.ts +35 -0
  47. package/dist/components/PhaseIndicator.d.ts.map +1 -0
  48. package/dist/components/PhaseIndicator.js +212 -0
  49. package/dist/components/PlayArea.d.ts +28 -0
  50. package/dist/components/PlayArea.d.ts.map +1 -0
  51. package/dist/components/PlayArea.js +48 -0
  52. package/dist/components/PluginRuntime.d.ts +37 -0
  53. package/dist/components/PluginRuntime.d.ts.map +1 -0
  54. package/dist/components/PluginRuntime.js +47 -0
  55. package/dist/components/PrimaryActionButton.d.ts +98 -0
  56. package/dist/components/PrimaryActionButton.d.ts.map +1 -0
  57. package/dist/components/PrimaryActionButton.js +183 -0
  58. package/dist/components/PrimaryButton.d.ts +20 -0
  59. package/dist/components/PrimaryButton.d.ts.map +1 -0
  60. package/dist/components/PrimaryButton.js +5 -0
  61. package/dist/components/PromptDialogHost.d.ts +15 -0
  62. package/dist/components/PromptDialogHost.d.ts.map +1 -0
  63. package/dist/components/PromptDialogHost.js +22 -0
  64. package/dist/components/ResourceCounter.d.ts +38 -0
  65. package/dist/components/ResourceCounter.d.ts.map +1 -0
  66. package/dist/components/ResourceCounter.js +118 -0
  67. package/dist/components/ThemedButton.d.ts +12 -0
  68. package/dist/components/ThemedButton.d.ts.map +1 -0
  69. package/dist/components/ThemedButton.js +38 -0
  70. package/dist/components/Toast.d.ts +35 -0
  71. package/dist/components/Toast.d.ts.map +1 -0
  72. package/dist/components/Toast.js +116 -0
  73. package/dist/components/board/HexGrid.d.ts +344 -0
  74. package/dist/components/board/HexGrid.d.ts.map +1 -0
  75. package/dist/components/board/HexGrid.js +340 -0
  76. package/dist/components/board/NetworkGraph.d.ts +100 -0
  77. package/dist/components/board/NetworkGraph.d.ts.map +1 -0
  78. package/dist/components/board/NetworkGraph.js +123 -0
  79. package/dist/components/board/SlotSystem.d.ts +71 -0
  80. package/dist/components/board/SlotSystem.d.ts.map +1 -0
  81. package/dist/components/board/SlotSystem.js +87 -0
  82. package/dist/components/board/SquareGrid.d.ts +188 -0
  83. package/dist/components/board/SquareGrid.d.ts.map +1 -0
  84. package/dist/components/board/SquareGrid.js +328 -0
  85. package/dist/components/board/TrackBoard.d.ts +113 -0
  86. package/dist/components/board/TrackBoard.d.ts.map +1 -0
  87. package/dist/components/board/TrackBoard.js +135 -0
  88. package/dist/components/board/ZoneMap.d.ts +88 -0
  89. package/dist/components/board/ZoneMap.d.ts.map +1 -0
  90. package/dist/components/board/ZoneMap.js +133 -0
  91. package/dist/components/board/hex-board-view.d.ts +69 -0
  92. package/dist/components/board/hex-board-view.d.ts.map +1 -0
  93. package/dist/components/board/hex-board-view.js +60 -0
  94. package/dist/components/board/index.d.ts +23 -0
  95. package/dist/components/board/index.d.ts.map +1 -0
  96. package/dist/components/board/index.js +40 -0
  97. package/dist/components/board/interaction-accessibility.d.ts +5 -0
  98. package/dist/components/board/interaction-accessibility.d.ts.map +1 -0
  99. package/dist/components/board/interaction-accessibility.js +13 -0
  100. package/dist/components/board/target-layer.d.ts +13 -0
  101. package/dist/components/board/target-layer.d.ts.map +1 -0
  102. package/dist/components/board/target-layer.js +10 -0
  103. package/dist/components/card-render-content.type-test.d.ts +2 -0
  104. package/dist/components/card-render-content.type-test.d.ts.map +1 -0
  105. package/dist/components/card-render-content.type-test.js +1 -0
  106. package/dist/components/index.d.ts +34 -0
  107. package/dist/components/index.d.ts.map +1 -0
  108. package/dist/components/index.js +35 -0
  109. package/dist/components/interaction-dialog-behavior.d.ts +15 -0
  110. package/dist/components/interaction-dialog-behavior.d.ts.map +1 -0
  111. package/dist/components/interaction-dialog-behavior.js +9 -0
  112. package/dist/components/surfaces/BlockerSurface.d.ts +27 -0
  113. package/dist/components/surfaces/BlockerSurface.d.ts.map +1 -0
  114. package/dist/components/surfaces/BlockerSurface.js +38 -0
  115. package/dist/components/surfaces/BoardSurface.d.ts +77 -0
  116. package/dist/components/surfaces/BoardSurface.d.ts.map +1 -0
  117. package/dist/components/surfaces/BoardSurface.js +180 -0
  118. package/dist/components/surfaces/ChromeSurface.d.ts +29 -0
  119. package/dist/components/surfaces/ChromeSurface.d.ts.map +1 -0
  120. package/dist/components/surfaces/ChromeSurface.js +34 -0
  121. package/dist/components/surfaces/ExhaustivenessAudit.d.ts +32 -0
  122. package/dist/components/surfaces/ExhaustivenessAudit.d.ts.map +1 -0
  123. package/dist/components/surfaces/ExhaustivenessAudit.js +65 -0
  124. package/dist/components/surfaces/InboxSurface.d.ts +40 -0
  125. package/dist/components/surfaces/InboxSurface.d.ts.map +1 -0
  126. package/dist/components/surfaces/InboxSurface.js +99 -0
  127. package/dist/components/surfaces/MarketSurface.d.ts +62 -0
  128. package/dist/components/surfaces/MarketSurface.d.ts.map +1 -0
  129. package/dist/components/surfaces/MarketSurface.js +242 -0
  130. package/dist/components/surfaces/PanelSurface.d.ts +111 -0
  131. package/dist/components/surfaces/PanelSurface.d.ts.map +1 -0
  132. package/dist/components/surfaces/PanelSurface.js +180 -0
  133. package/dist/components/surfaces/PlayerCardsSurface.d.ts +104 -0
  134. package/dist/components/surfaces/PlayerCardsSurface.d.ts.map +1 -0
  135. package/dist/components/surfaces/PlayerCardsSurface.js +178 -0
  136. package/dist/components/surfaces/internal/CardZoneFollowUpForm.d.ts +7 -0
  137. package/dist/components/surfaces/internal/CardZoneFollowUpForm.d.ts.map +1 -0
  138. package/dist/components/surfaces/internal/CardZoneFollowUpForm.js +9 -0
  139. package/dist/components/surfaces/internal/DefaultInteractionButton.d.ts +71 -0
  140. package/dist/components/surfaces/internal/DefaultInteractionButton.d.ts.map +1 -0
  141. package/dist/components/surfaces/internal/DefaultInteractionButton.js +82 -0
  142. package/dist/components/surfaces/internal/useCardZoneInteractions.d.ts +21 -0
  143. package/dist/components/surfaces/internal/useCardZoneInteractions.d.ts.map +1 -0
  144. package/dist/components/surfaces/internal/useCardZoneInteractions.js +202 -0
  145. package/dist/components/surfaces/types.d.ts +59 -0
  146. package/dist/components/surfaces/types.d.ts.map +1 -0
  147. package/dist/components/surfaces/types.js +1 -0
  148. package/dist/context/ClientParamSchemaContext.d.ts +21 -0
  149. package/dist/context/ClientParamSchemaContext.d.ts.map +1 -0
  150. package/dist/context/ClientParamSchemaContext.js +12 -0
  151. package/dist/context/InteractionDraftContext.d.ts +69 -0
  152. package/dist/context/InteractionDraftContext.d.ts.map +1 -0
  153. package/dist/context/InteractionDraftContext.js +145 -0
  154. package/dist/context/PluginSessionContext.d.ts +33 -0
  155. package/dist/context/PluginSessionContext.d.ts.map +1 -0
  156. package/dist/context/PluginSessionContext.js +38 -0
  157. package/dist/context/PluginStateContext.d.ts +116 -0
  158. package/dist/context/PluginStateContext.d.ts.map +1 -0
  159. package/dist/context/PluginStateContext.js +186 -0
  160. package/dist/context/RuntimeContext.d.ts +49 -0
  161. package/dist/context/RuntimeContext.d.ts.map +1 -0
  162. package/dist/context/RuntimeContext.js +67 -0
  163. package/dist/defaults/components.d.ts +52 -0
  164. package/dist/defaults/components.d.ts.map +1 -0
  165. package/dist/defaults/components.js +159 -0
  166. package/dist/defaults/index.d.ts +2 -0
  167. package/dist/defaults/index.d.ts.map +1 -0
  168. package/dist/defaults/index.js +1 -0
  169. package/dist/errors/ValidationError.d.ts +10 -0
  170. package/dist/errors/ValidationError.d.ts.map +1 -0
  171. package/dist/errors/ValidationError.js +23 -0
  172. package/dist/helpers/cards.d.ts +3 -0
  173. package/dist/helpers/cards.d.ts.map +1 -0
  174. package/dist/helpers/cards.js +11 -0
  175. package/dist/helpers/track-board.d.ts +79 -0
  176. package/dist/helpers/track-board.d.ts.map +1 -0
  177. package/dist/helpers/track-board.js +56 -0
  178. package/dist/hooks/useActivePlayers.d.ts +16 -0
  179. package/dist/hooks/useActivePlayers.d.ts.map +1 -0
  180. package/dist/hooks/useActivePlayers.js +17 -0
  181. package/dist/hooks/useBoardInteractions.d.ts +110 -0
  182. package/dist/hooks/useBoardInteractions.d.ts.map +1 -0
  183. package/dist/hooks/useBoardInteractions.js +248 -0
  184. package/dist/hooks/useBoardTopology.d.ts +23 -0
  185. package/dist/hooks/useBoardTopology.d.ts.map +1 -0
  186. package/dist/hooks/useBoardTopology.js +128 -0
  187. package/dist/hooks/useCards.d.ts +3 -0
  188. package/dist/hooks/useCards.d.ts.map +1 -0
  189. package/dist/hooks/useCards.js +5 -0
  190. package/dist/hooks/useGameSelector.d.ts +13 -0
  191. package/dist/hooks/useGameSelector.d.ts.map +1 -0
  192. package/dist/hooks/useGameSelector.js +67 -0
  193. package/dist/hooks/useGameView.d.ts +6 -0
  194. package/dist/hooks/useGameView.d.ts.map +1 -0
  195. package/dist/hooks/useGameView.js +7 -0
  196. package/dist/hooks/useHandLayout.d.ts +120 -0
  197. package/dist/hooks/useHandLayout.d.ts.map +1 -0
  198. package/dist/hooks/useHandLayout.js +235 -0
  199. package/dist/hooks/useHexBoard.d.ts +19 -0
  200. package/dist/hooks/useHexBoard.d.ts.map +1 -0
  201. package/dist/hooks/useHexBoard.js +28 -0
  202. package/dist/hooks/useHexGrid.d.ts +56 -0
  203. package/dist/hooks/useHexGrid.d.ts.map +1 -0
  204. package/dist/hooks/useHexGrid.js +112 -0
  205. package/dist/hooks/useInteractionByKey.d.ts +29 -0
  206. package/dist/hooks/useInteractionByKey.d.ts.map +1 -0
  207. package/dist/hooks/useInteractionByKey.js +263 -0
  208. package/dist/hooks/useInteractionHandle.d.ts +103 -0
  209. package/dist/hooks/useInteractionHandle.d.ts.map +1 -0
  210. package/dist/hooks/useInteractionHandle.js +254 -0
  211. package/dist/hooks/useIsMobile.d.ts +7 -0
  212. package/dist/hooks/useIsMobile.d.ts.map +1 -0
  213. package/dist/hooks/useIsMobile.js +29 -0
  214. package/dist/hooks/useIsMyTurn.d.ts +6 -0
  215. package/dist/hooks/useIsMyTurn.d.ts.map +1 -0
  216. package/dist/hooks/useIsMyTurn.js +11 -0
  217. package/dist/hooks/useLobby.d.ts +28 -0
  218. package/dist/hooks/useLobby.d.ts.map +1 -0
  219. package/dist/hooks/useLobby.js +60 -0
  220. package/dist/hooks/useMe.d.ts +11 -0
  221. package/dist/hooks/useMe.d.ts.map +1 -0
  222. package/dist/hooks/useMe.js +32 -0
  223. package/dist/hooks/usePanZoom.d.ts +113 -0
  224. package/dist/hooks/usePanZoom.d.ts.map +1 -0
  225. package/dist/hooks/usePanZoom.js +165 -0
  226. package/dist/hooks/usePlayerInfo.d.ts +4 -0
  227. package/dist/hooks/usePlayerInfo.d.ts.map +1 -0
  228. package/dist/hooks/usePlayerInfo.js +21 -0
  229. package/dist/hooks/usePlayerTurnOrder.d.ts +15 -0
  230. package/dist/hooks/usePlayerTurnOrder.d.ts.map +1 -0
  231. package/dist/hooks/usePlayerTurnOrder.js +22 -0
  232. package/dist/hooks/usePluginRuntime.d.ts +45 -0
  233. package/dist/hooks/usePluginRuntime.d.ts.map +1 -0
  234. package/dist/hooks/usePluginRuntime.js +92 -0
  235. package/dist/hooks/useSeatInbox.d.ts +22 -0
  236. package/dist/hooks/useSeatInbox.d.ts.map +1 -0
  237. package/dist/hooks/useSeatInbox.js +43 -0
  238. package/dist/hooks/useSimultaneousPhase.d.ts +7 -0
  239. package/dist/hooks/useSimultaneousPhase.d.ts.map +1 -0
  240. package/dist/hooks/useSimultaneousPhase.js +8 -0
  241. package/dist/hooks/useSquareBoard.d.ts +21 -0
  242. package/dist/hooks/useSquareBoard.d.ts.map +1 -0
  243. package/dist/hooks/useSquareBoard.js +67 -0
  244. package/dist/hooks/useSquareGrid.d.ts +96 -0
  245. package/dist/hooks/useSquareGrid.d.ts.map +1 -0
  246. package/dist/hooks/useSquareGrid.js +152 -0
  247. package/dist/index.d.ts +30 -0
  248. package/dist/index.d.ts.map +1 -0
  249. package/dist/index.js +20 -0
  250. package/dist/internal/ui/alert.d.ts +8 -0
  251. package/dist/internal/ui/alert.d.ts.map +1 -0
  252. package/dist/internal/ui/alert.js +11 -0
  253. package/dist/internal/ui/button.d.ts +10 -0
  254. package/dist/internal/ui/button.d.ts.map +1 -0
  255. package/dist/internal/ui/button.js +21 -0
  256. package/dist/internal/ui/dialog.d.ts +16 -0
  257. package/dist/internal/ui/dialog.d.ts.map +1 -0
  258. package/dist/internal/ui/dialog.js +35 -0
  259. package/dist/internal/ui/input.d.ts +3 -0
  260. package/dist/internal/ui/input.d.ts.map +1 -0
  261. package/dist/internal/ui/input.js +5 -0
  262. package/dist/internal/ui/label.d.ts +4 -0
  263. package/dist/internal/ui/label.d.ts.map +1 -0
  264. package/dist/internal/ui/label.js +7 -0
  265. package/dist/internal/ui/select.d.ts +9 -0
  266. package/dist/internal/ui/select.d.ts.map +1 -0
  267. package/dist/internal/ui/select.js +23 -0
  268. package/dist/internal/ui/tooltip.d.ts +7 -0
  269. package/dist/internal/ui/tooltip.d.ts.map +1 -0
  270. package/dist/internal/ui/tooltip.js +16 -0
  271. package/dist/internal/ui/utils.d.ts +3 -0
  272. package/dist/internal/ui/utils.d.ts.map +1 -0
  273. package/dist/internal/ui/utils.js +4 -0
  274. package/dist/internal.d.ts +7 -0
  275. package/dist/internal.d.ts.map +1 -0
  276. package/dist/internal.js +4 -0
  277. package/dist/plugin-styles.css +246 -0
  278. package/dist/primitives/board.d.ts +29 -0
  279. package/dist/primitives/board.d.ts.map +1 -0
  280. package/dist/primitives/board.js +163 -0
  281. package/dist/primitives/game-ui-provider.d.ts +12 -0
  282. package/dist/primitives/game-ui-provider.d.ts.map +1 -0
  283. package/dist/primitives/game-ui-provider.js +7 -0
  284. package/dist/primitives/index.d.ts +8 -0
  285. package/dist/primitives/index.d.ts.map +1 -0
  286. package/dist/primitives/index.js +7 -0
  287. package/dist/primitives/interaction.d.ts +52 -0
  288. package/dist/primitives/interaction.d.ts.map +1 -0
  289. package/dist/primitives/interaction.js +250 -0
  290. package/dist/primitives/phase.d.ts +15 -0
  291. package/dist/primitives/phase.d.ts.map +1 -0
  292. package/dist/primitives/phase.js +18 -0
  293. package/dist/primitives/player-roster.d.ts +64 -0
  294. package/dist/primitives/player-roster.d.ts.map +1 -0
  295. package/dist/primitives/player-roster.js +149 -0
  296. package/dist/primitives/primitive-props.d.ts +15 -0
  297. package/dist/primitives/primitive-props.d.ts.map +1 -0
  298. package/dist/primitives/primitive-props.js +39 -0
  299. package/dist/primitives/prompt.d.ts +44 -0
  300. package/dist/primitives/prompt.d.ts.map +1 -0
  301. package/dist/primitives/prompt.js +101 -0
  302. package/dist/primitives/zone.d.ts +31 -0
  303. package/dist/primitives/zone.d.ts.map +1 -0
  304. package/dist/primitives/zone.js +58 -0
  305. package/dist/reducer.d.ts +21 -0
  306. package/dist/reducer.d.ts.map +1 -0
  307. package/dist/reducer.js +14 -0
  308. package/dist/runtime/createPluginRuntimeAPI.d.ts +67 -0
  309. package/dist/runtime/createPluginRuntimeAPI.d.ts.map +1 -0
  310. package/dist/runtime/createPluginRuntimeAPI.js +419 -0
  311. package/dist/theme/ThemeProvider.d.ts +98 -0
  312. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  313. package/dist/theme/ThemeProvider.js +148 -0
  314. package/dist/theme/board.d.ts +42 -0
  315. package/dist/theme/board.d.ts.map +1 -0
  316. package/dist/theme/board.js +34 -0
  317. package/dist/theme/css-vars.d.ts +31 -0
  318. package/dist/theme/css-vars.d.ts.map +1 -0
  319. package/dist/theme/css-vars.js +88 -0
  320. package/dist/theme/derive.d.ts +66 -0
  321. package/dist/theme/derive.d.ts.map +1 -0
  322. package/dist/theme/derive.js +161 -0
  323. package/dist/theme/index.d.ts +22 -0
  324. package/dist/theme/index.d.ts.map +1 -0
  325. package/dist/theme/index.js +20 -0
  326. package/dist/theme/presets/arcade.d.ts +10 -0
  327. package/dist/theme/presets/arcade.d.ts.map +1 -0
  328. package/dist/theme/presets/arcade.js +257 -0
  329. package/dist/theme/presets/studio.d.ts +10 -0
  330. package/dist/theme/presets/studio.d.ts.map +1 -0
  331. package/dist/theme/presets/studio.js +257 -0
  332. package/dist/theme/presets/tabletop.d.ts +15 -0
  333. package/dist/theme/presets/tabletop.d.ts.map +1 -0
  334. package/dist/theme/presets/tabletop.js +262 -0
  335. package/dist/theme/tokens.d.ts +345 -0
  336. package/dist/theme/tokens.d.ts.map +1 -0
  337. package/dist/theme/tokens.js +57 -0
  338. package/dist/types/player-state.d.ts +337 -0
  339. package/dist/types/player-state.d.ts.map +1 -0
  340. package/dist/types/player-state.js +1 -0
  341. package/dist/types/plugin-state.d.ts +324 -0
  342. package/dist/types/plugin-state.d.ts.map +1 -0
  343. package/dist/types/plugin-state.js +1 -0
  344. package/dist/types/reducer-state.d.ts +10 -0
  345. package/dist/types/reducer-state.d.ts.map +1 -0
  346. package/dist/types/reducer-state.js +1 -0
  347. package/dist/types/runtime-api.d.ts +99 -0
  348. package/dist/types/runtime-api.d.ts.map +1 -0
  349. package/dist/types/runtime-api.js +1 -0
  350. package/dist/types/tiled-board.d.ts +187 -0
  351. package/dist/types/tiled-board.d.ts.map +1 -0
  352. package/dist/types/tiled-board.js +226 -0
  353. package/dist/ui-contract.d.ts +78 -0
  354. package/dist/ui-contract.d.ts.map +1 -0
  355. package/dist/ui-contract.js +15 -0
  356. package/dist/ui-sdk.d.ts +3409 -0
  357. package/dist/utils/interaction-inputs.d.ts +22 -0
  358. package/dist/utils/interaction-inputs.d.ts.map +1 -0
  359. package/dist/utils/interaction-inputs.js +219 -0
  360. package/dist/utils/interaction-labels.d.ts +4 -0
  361. package/dist/utils/interaction-labels.d.ts.map +1 -0
  362. package/dist/utils/interaction-labels.js +18 -0
  363. package/dist/utils/interaction-status.d.ts +15 -0
  364. package/dist/utils/interaction-status.d.ts.map +1 -0
  365. package/dist/utils/interaction-status.js +31 -0
  366. package/package.json +101 -0
  367. package/src/components/ActionButton.tsx +48 -0
  368. package/src/components/ActionPanel.tsx +310 -0
  369. package/src/components/Card.tsx +385 -0
  370. package/src/components/ChromeSuppressionContext.tsx +70 -0
  371. package/src/components/CostDisplay.test.tsx +23 -0
  372. package/src/components/CostDisplay.tsx +145 -0
  373. package/src/components/DiceRoller.tsx +601 -0
  374. package/src/components/Drawer.tsx +179 -0
  375. package/src/components/ErrorBoundary.tsx +119 -0
  376. package/src/components/GameEndDisplay.test.tsx +19 -0
  377. package/src/components/GameEndDisplay.tsx +398 -0
  378. package/src/components/GameSkeleton.tsx +260 -0
  379. package/src/components/Hand.tsx +387 -0
  380. package/src/components/HandDock.tsx +257 -0
  381. package/src/components/InteractionForm.test.tsx +303 -0
  382. package/src/components/InteractionForm.tsx +1029 -0
  383. package/src/components/MoreActions.test.tsx +93 -0
  384. package/src/components/MoreActions.tsx +143 -0
  385. package/src/components/PhaseIndicator.tsx +341 -0
  386. package/src/components/PlayArea.tsx +125 -0
  387. package/src/components/PluginRuntime.tsx +92 -0
  388. package/src/components/PrimaryActionButton.test.tsx +138 -0
  389. package/src/components/PrimaryActionButton.tsx +351 -0
  390. package/src/components/PrimaryButton.tsx +44 -0
  391. package/src/components/PromptDialogHost.tsx +92 -0
  392. package/src/components/ResourceCounter.test.tsx +29 -0
  393. package/src/components/ResourceCounter.tsx +275 -0
  394. package/src/components/ThemedButton.tsx +78 -0
  395. package/src/components/Toast.tsx +251 -0
  396. package/src/components/__fixtures__/ActionButton.fixture.tsx +234 -0
  397. package/src/components/__fixtures__/ActionPanel.fixture.tsx +298 -0
  398. package/src/components/__fixtures__/Card.fixture.tsx +185 -0
  399. package/src/components/__fixtures__/CostDisplay.fixture.tsx +156 -0
  400. package/src/components/__fixtures__/DiceRoller.fixture.tsx +435 -0
  401. package/src/components/__fixtures__/Drawer.fixture.tsx +113 -0
  402. package/src/components/__fixtures__/ErrorBoundary.fixture.tsx +82 -0
  403. package/src/components/__fixtures__/GameEndDisplay.fixture.tsx +188 -0
  404. package/src/components/__fixtures__/GameSkeleton.fixture.tsx +46 -0
  405. package/src/components/__fixtures__/Hand.fixture.tsx +522 -0
  406. package/src/components/__fixtures__/HexGrid.fixture.tsx +1181 -0
  407. package/src/components/__fixtures__/NetworkGraph.fixture.tsx +599 -0
  408. package/src/components/__fixtures__/PhaseIndicator.fixture.tsx +181 -0
  409. package/src/components/__fixtures__/PlayArea.fixture.tsx +221 -0
  410. package/src/components/__fixtures__/ResourceCounter.fixture.tsx +227 -0
  411. package/src/components/__fixtures__/SlotSystem.fixture.tsx +824 -0
  412. package/src/components/__fixtures__/SquareGrid.fixture.tsx +764 -0
  413. package/src/components/__fixtures__/Toast.fixture.tsx +97 -0
  414. package/src/components/__fixtures__/TrackBoard.fixture.tsx +685 -0
  415. package/src/components/__fixtures__/ZoneMap.fixture.tsx +754 -0
  416. package/src/components/board/HexGrid.tsx +1294 -0
  417. package/src/components/board/NetworkGraph.tsx +476 -0
  418. package/src/components/board/SlotSystem.tsx +339 -0
  419. package/src/components/board/SquareGrid.tsx +1165 -0
  420. package/src/components/board/TrackBoard.tsx +496 -0
  421. package/src/components/board/ZoneMap.tsx +448 -0
  422. package/src/components/board/hex-board-view.test.tsx +114 -0
  423. package/src/components/board/hex-board-view.ts +123 -0
  424. package/src/components/board/index.ts +142 -0
  425. package/src/components/board/interaction-accessibility.ts +21 -0
  426. package/src/components/board/target-layer-grids.test.tsx +420 -0
  427. package/src/components/board/target-layer.ts +30 -0
  428. package/src/components/card-render-content.type-test.ts +27 -0
  429. package/src/components/index.ts +208 -0
  430. package/src/components/interaction-dialog-behavior.test.ts +23 -0
  431. package/src/components/interaction-dialog-behavior.ts +22 -0
  432. package/src/components/surfaces/BlockerSurface.test.tsx +158 -0
  433. package/src/components/surfaces/BlockerSurface.tsx +127 -0
  434. package/src/components/surfaces/BoardSurface.tsx +340 -0
  435. package/src/components/surfaces/ChromeSurface.tsx +123 -0
  436. package/src/components/surfaces/ExhaustivenessAudit.tsx +91 -0
  437. package/src/components/surfaces/InboxSurface.test.tsx +149 -0
  438. package/src/components/surfaces/InboxSurface.tsx +245 -0
  439. package/src/components/surfaces/MarketSurface.tsx +544 -0
  440. package/src/components/surfaces/PanelSurface.test.tsx +496 -0
  441. package/src/components/surfaces/PanelSurface.tsx +458 -0
  442. package/src/components/surfaces/PlayerCardsSurface.tsx +525 -0
  443. package/src/components/surfaces/internal/CardZoneFollowUpForm.tsx +35 -0
  444. package/src/components/surfaces/internal/DefaultInteractionButton.tsx +219 -0
  445. package/src/components/surfaces/internal/useCardZoneInteractions.ts +311 -0
  446. package/src/components/surfaces/types.ts +100 -0
  447. package/src/context/ClientParamSchemaContext.tsx +44 -0
  448. package/src/context/InteractionDraftContext.tsx +204 -0
  449. package/src/context/PluginSessionContext.tsx +47 -0
  450. package/src/context/PluginStateContext.tsx +254 -0
  451. package/src/context/RuntimeContext.tsx +96 -0
  452. package/src/defaults/components.tsx +442 -0
  453. package/src/defaults/defaults.test.tsx +230 -0
  454. package/src/defaults/index.ts +1 -0
  455. package/src/errors/ValidationError.ts +29 -0
  456. package/src/helpers/cards.ts +19 -0
  457. package/src/helpers/track-board.ts +211 -0
  458. package/src/hooks/useActivePlayers.ts +19 -0
  459. package/src/hooks/useBoardInteractions.test.tsx +622 -0
  460. package/src/hooks/useBoardInteractions.ts +434 -0
  461. package/src/hooks/useBoardTopology.ts +316 -0
  462. package/src/hooks/useCards.test.tsx +129 -0
  463. package/src/hooks/useCards.ts +10 -0
  464. package/src/hooks/useGameSelector.ts +105 -0
  465. package/src/hooks/useGameView.ts +9 -0
  466. package/src/hooks/useHandLayout.ts +349 -0
  467. package/src/hooks/useHexBoard.ts +74 -0
  468. package/src/hooks/useHexGrid.ts +185 -0
  469. package/src/hooks/useInteractionByKey.ts +349 -0
  470. package/src/hooks/useInteractionHandle.ts +437 -0
  471. package/src/hooks/useIsMobile.ts +35 -0
  472. package/src/hooks/useIsMyTurn.test.tsx +99 -0
  473. package/src/hooks/useIsMyTurn.ts +15 -0
  474. package/src/hooks/useLobby.ts +76 -0
  475. package/src/hooks/useMe.ts +48 -0
  476. package/src/hooks/usePanZoom.ts +278 -0
  477. package/src/hooks/usePlayerInfo.ts +28 -0
  478. package/src/hooks/usePlayerTurnOrder.ts +23 -0
  479. package/src/hooks/usePluginRuntime.test.tsx +102 -0
  480. package/src/hooks/usePluginRuntime.ts +130 -0
  481. package/src/hooks/useSeatInbox.ts +61 -0
  482. package/src/hooks/useSimultaneousPhase.ts +10 -0
  483. package/src/hooks/useSquareBoard.ts +124 -0
  484. package/src/hooks/useSquareGrid.ts +328 -0
  485. package/src/index.test.ts +474 -0
  486. package/src/index.ts +148 -0
  487. package/src/internal/ui/alert.tsx +51 -0
  488. package/src/internal/ui/button.tsx +58 -0
  489. package/src/internal/ui/dialog.tsx +134 -0
  490. package/src/internal/ui/input.tsx +21 -0
  491. package/src/internal/ui/label.tsx +21 -0
  492. package/src/internal/ui/select.tsx +129 -0
  493. package/src/internal/ui/tooltip.tsx +54 -0
  494. package/src/internal/ui/utils.ts +5 -0
  495. package/src/internal.ts +18 -0
  496. package/src/plugin-styles.css +246 -0
  497. package/src/primitives/board.test.tsx +139 -0
  498. package/src/primitives/board.tsx +267 -0
  499. package/src/primitives/game-ui-provider.tsx +35 -0
  500. package/src/primitives/index.ts +83 -0
  501. package/src/primitives/interaction.test.tsx +420 -0
  502. package/src/primitives/interaction.tsx +405 -0
  503. package/src/primitives/phase.test.tsx +82 -0
  504. package/src/primitives/phase.tsx +43 -0
  505. package/src/primitives/player-roster.test.tsx +168 -0
  506. package/src/primitives/player-roster.tsx +301 -0
  507. package/src/primitives/primitive-props.tsx +82 -0
  508. package/src/primitives/prompt.test.tsx +159 -0
  509. package/src/primitives/prompt.tsx +203 -0
  510. package/src/primitives/zone.tsx +113 -0
  511. package/src/reducer.ts +42 -0
  512. package/src/runtime/createPluginRuntimeAPI.ts +605 -0
  513. package/src/theme/ThemeProvider.test.tsx +36 -0
  514. package/src/theme/ThemeProvider.tsx +252 -0
  515. package/src/theme/board.ts +61 -0
  516. package/src/theme/css-vars.ts +105 -0
  517. package/src/theme/derive.ts +240 -0
  518. package/src/theme/index.ts +61 -0
  519. package/src/theme/presets/arcade.ts +261 -0
  520. package/src/theme/presets/studio.ts +261 -0
  521. package/src/theme/presets/tabletop.ts +266 -0
  522. package/src/theme/theme.test.ts +258 -0
  523. package/src/theme/tokens.ts +392 -0
  524. package/src/types/player-state.ts +445 -0
  525. package/src/types/plugin-state.ts +407 -0
  526. package/src/types/reducer-state.ts +24 -0
  527. package/src/types/runtime-api.ts +114 -0
  528. package/src/types/tiled-board.ts +785 -0
  529. package/src/ui-contract.ts +168 -0
  530. package/src/utils/interaction-inputs.test.ts +109 -0
  531. package/src/utils/interaction-inputs.ts +331 -0
  532. package/src/utils/interaction-labels.ts +23 -0
  533. package/src/utils/interaction-status.ts +59 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Board theming helpers.
3
+ *
4
+ * The SDK's board renderers (`<HexGrid>`, `<SquareGrid>`,
5
+ * `<NetworkGraph>`, `<ZoneMap>`, `<TrackBoard>`, `<SlotSystem>`) need a
6
+ * tiny but consistent set of visual tokens — frame border, frame fill,
7
+ * eligible-target hint, and active hover ring — so authors don't have
8
+ * to re-pick colours per board. {@link useBoardTheme} exposes those
9
+ * tokens, derived from the active {@link Theme}.
10
+ */
11
+ import type { Theme } from "./tokens.js";
12
+ /**
13
+ * Resolved board tokens consumed by board renderers and per-tile
14
+ * default renderers. All values are CSS-ready strings.
15
+ */
16
+ export interface BoardTheme {
17
+ /** Border drawn around the board's outer frame. */
18
+ readonly frameBorder: string;
19
+ /** Background painted under the tile renderer (visible at tile gaps). */
20
+ readonly frameBackground: string;
21
+ /** Hover-state ring drawn over an interactive target. */
22
+ readonly hoverRing: string;
23
+ /** Idle hint colour for an eligible-but-unhovered target. */
24
+ readonly eligibleHint: string;
25
+ /** Border drawn on inactive tiles (matches semantic.border.default). */
26
+ readonly tileBorder: string;
27
+ /** Subtle dotted border for non-interactive scaffolding (e.g. ports). */
28
+ readonly tileBorderSubtle: string;
29
+ /** Foreground used for board labels (numbers, port ratios). */
30
+ readonly tileText: string;
31
+ /** Recommended ring stroke width in px for hover/eligible markers. */
32
+ readonly ringWidth: number;
33
+ }
34
+ /**
35
+ * Derive a {@link BoardTheme} from the active theme. Memoised on the
36
+ * theme reference so consumers can pass it straight to a board's
37
+ * `defaultTileProps` / `defaultEdgeProps` slots.
38
+ */
39
+ export declare function useBoardTheme(): BoardTheme;
40
+ /** Standalone derivation for renderers that already hold a {@link Theme}. */
41
+ export declare function deriveBoardTheme(theme: Theme): BoardTheme;
42
+ //# sourceMappingURL=board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/theme/board.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAG1C;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAWzD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Board theming helpers.
3
+ *
4
+ * The SDK's board renderers (`<HexGrid>`, `<SquareGrid>`,
5
+ * `<NetworkGraph>`, `<ZoneMap>`, `<TrackBoard>`, `<SlotSystem>`) need a
6
+ * tiny but consistent set of visual tokens — frame border, frame fill,
7
+ * eligible-target hint, and active hover ring — so authors don't have
8
+ * to re-pick colours per board. {@link useBoardTheme} exposes those
9
+ * tokens, derived from the active {@link Theme}.
10
+ */
11
+ import { useMemo } from "react";
12
+ import { useTheme } from "./ThemeProvider.js";
13
+ /**
14
+ * Derive a {@link BoardTheme} from the active theme. Memoised on the
15
+ * theme reference so consumers can pass it straight to a board's
16
+ * `defaultTileProps` / `defaultEdgeProps` slots.
17
+ */
18
+ export function useBoardTheme() {
19
+ const theme = useTheme();
20
+ return useMemo(() => deriveBoardTheme(theme), [theme]);
21
+ }
22
+ /** Standalone derivation for renderers that already hold a {@link Theme}. */
23
+ export function deriveBoardTheme(theme) {
24
+ return {
25
+ frameBorder: theme.component.board.frameBorder,
26
+ frameBackground: theme.component.board.frameBackground,
27
+ hoverRing: theme.component.board.hoverRing,
28
+ eligibleHint: theme.component.board.eligibleHint,
29
+ tileBorder: theme.semantic.border.default,
30
+ tileBorderSubtle: theme.semantic.border.subtle,
31
+ tileText: theme.semantic.text.primary,
32
+ ringWidth: 3,
33
+ };
34
+ }
@@ -0,0 +1,31 @@
1
+ import type { CSSProperties } from "react";
2
+ import type { Theme } from "./tokens.js";
3
+ /**
4
+ * Walk the theme tree and produce a flat `{ "--db-...": value }` map.
5
+ * Arrays are walked positionally with a 1-based index (so
6
+ * `theme.player[0]` → `--db-player-1-...`).
7
+ */
8
+ export declare function themeToCssVars(theme: Theme): CSSProperties;
9
+ /**
10
+ * Build a `var(--db-...)` reference for a token path.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * cssVar("semantic", "intent", "primary", "solid")
15
+ * // => "var(--db-semantic-intent-primary-solid)"
16
+ * cssVar("player", 1, "solid")
17
+ * // => "var(--db-player-1-solid)"
18
+ * ```
19
+ */
20
+ export declare function cssVar(...path: Array<string | number>): string;
21
+ /**
22
+ * Convenience for declaring a `var(--db-...)` with an inline fallback.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * cssVarOr("transparent", "semantic", "border", "default")
27
+ * // => "var(--db-semantic-border-default, transparent)"
28
+ * ```
29
+ */
30
+ export declare function cssVarOr(fallback: string, ...path: Array<string | number>): string;
31
+ //# sourceMappingURL=css-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-vars.d.ts","sourceRoot":"","sources":["../../src/theme/css-vars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAqCzC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAI1D;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAC9B,MAAM,CAER"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * CSS variable bridge for {@link Theme}.
3
+ *
4
+ * The {@link ThemeProvider} mounts a wrapper element and applies the
5
+ * map returned by {@link themeToCssVars} as inline `style`, which
6
+ * declares one CSS custom property per leaf token. Components inside
7
+ * the provider can:
8
+ *
9
+ * 1. Read tokens via `useTheme()` (typed) and use them inline, or
10
+ * 2. Read the CSS variable directly in Tailwind / className styling
11
+ * via the helpers in {@link var()} below.
12
+ *
13
+ * The variable naming scheme is `--db-<dot.path>` with `.` and any
14
+ * non-identifier characters replaced by `-`. Example:
15
+ *
16
+ * - `theme.semantic.intent.primary.solid` → `--db-semantic-intent-primary-solid`
17
+ * - `theme.player[0].solid` → `--db-player-1-solid`
18
+ * - `theme.color.brand.600` → `--db-color-brand-600`
19
+ *
20
+ * The 1-based player suffix (rather than 0-based) keeps the variable
21
+ * name aligned with how seats are labelled in product UI ("Player 1").
22
+ */
23
+ const PREFIX = "--db";
24
+ /** Convert a token-tree path to a kebab-case CSS variable name. */
25
+ function toVarName(parts) {
26
+ const tail = parts
27
+ .map((part) => String(part))
28
+ .join("-")
29
+ .replace(/[^a-zA-Z0-9-]/g, "-")
30
+ .replace(/-+/g, "-");
31
+ return `${PREFIX}-${tail}`;
32
+ }
33
+ /**
34
+ * Walk the theme tree and produce a flat `{ "--db-...": value }` map.
35
+ * Arrays are walked positionally with a 1-based index (so
36
+ * `theme.player[0]` → `--db-player-1-...`).
37
+ */
38
+ export function themeToCssVars(theme) {
39
+ const out = {};
40
+ walk(theme, [], out);
41
+ return out;
42
+ }
43
+ function walk(node, path, out) {
44
+ if (node === null || node === undefined)
45
+ return;
46
+ if (typeof node === "string" || typeof node === "number") {
47
+ out[toVarName(path)] = String(node);
48
+ return;
49
+ }
50
+ if (Array.isArray(node)) {
51
+ node.forEach((child, idx) => {
52
+ // 1-based index for player slots, etc.
53
+ walk(child, [...path, idx + 1], out);
54
+ });
55
+ return;
56
+ }
57
+ if (typeof node === "object") {
58
+ for (const [key, value] of Object.entries(node)) {
59
+ walk(value, [...path, key], out);
60
+ }
61
+ }
62
+ }
63
+ /**
64
+ * Build a `var(--db-...)` reference for a token path.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * cssVar("semantic", "intent", "primary", "solid")
69
+ * // => "var(--db-semantic-intent-primary-solid)"
70
+ * cssVar("player", 1, "solid")
71
+ * // => "var(--db-player-1-solid)"
72
+ * ```
73
+ */
74
+ export function cssVar(...path) {
75
+ return `var(${toVarName(path)})`;
76
+ }
77
+ /**
78
+ * Convenience for declaring a `var(--db-...)` with an inline fallback.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * cssVarOr("transparent", "semantic", "border", "default")
83
+ * // => "var(--db-semantic-border-default, transparent)"
84
+ * ```
85
+ */
86
+ export function cssVarOr(fallback, ...path) {
87
+ return `var(${toVarName(path)}, ${fallback})`;
88
+ }
@@ -0,0 +1,66 @@
1
+ import type { CSSProperties } from "react";
2
+ import type { IntentColor, Theme } from "./tokens.js";
3
+ /**
4
+ * Helpers that derive component-specific style fragments from a
5
+ * resolved {@link Theme}. They live alongside the theme module (rather
6
+ * than in each component) so that:
7
+ *
8
+ * - There is one canonical mapping of "intent → button style", "intent →
9
+ * chip style", etc.
10
+ * - Component visuals stay aligned automatically when an author tweaks
11
+ * the theme; nobody has to remember to update a bespoke calc inside
12
+ * `<Card>` or `<DefaultInteractionButton>`.
13
+ *
14
+ * Each helper returns a plain {@link CSSProperties} fragment so the
15
+ * caller can spread it into an inline style (or pass it through to
16
+ * Framer Motion's `style` prop).
17
+ */
18
+ /** Button visual variants derived from semantic intent slots. */
19
+ export type ButtonVariant = "primary" | "secondary" | "danger" | "submitted" | "success" | "warning" | "info" | "ghost";
20
+ export type ButtonSize = "sm" | "md" | "lg";
21
+ /**
22
+ * Compute the inline style for a button in `variant`/`size` from the
23
+ * theme. `disabled` and `pressed` are visual-only — they affect colour
24
+ * intensity and elevation but never touch interactivity (the consuming
25
+ * component owns `aria-disabled` and event wiring).
26
+ */
27
+ export declare function buttonStyle(theme: Theme, options?: {
28
+ variant?: ButtonVariant;
29
+ size?: ButtonSize;
30
+ disabled?: boolean;
31
+ pressed?: boolean;
32
+ }): CSSProperties;
33
+ /**
34
+ * Soft-intent chip ("Your turn", "Largest army", "Waiting…"). Reads
35
+ * `intent.<variant>.soft` for background and `.onSoft` for text.
36
+ */
37
+ export declare function chipStyle(theme: Theme, options?: {
38
+ variant?: Exclude<ButtonVariant, "ghost">;
39
+ size?: "sm" | "md";
40
+ }): CSSProperties;
41
+ /**
42
+ * Standard surface card (player card, action panel, hand drawer). The
43
+ * `tone` selects which `surface.*` slot to read; `interactive` adds
44
+ * the hover-elevation transition baseline.
45
+ */
46
+ export declare function surfaceStyle(theme: Theme, options?: {
47
+ tone?: keyof Theme["semantic"]["surface"];
48
+ interactive?: boolean;
49
+ /** Override radius to one of the theme tokens. Defaults to `lg`. */
50
+ radius?: keyof Theme["radius"];
51
+ }): CSSProperties;
52
+ /** Resolve a {@link ButtonVariant} to its underlying {@link IntentColor}. */
53
+ export declare function intentForVariant(theme: Theme, variant: ButtonVariant): IntentColor;
54
+ /**
55
+ * Pick a {@link Theme.player} entry by 0-based seat slot, wrapping
56
+ * around when there are more players than palette entries (so a
57
+ * 7-player game cycles back to player 1's palette).
58
+ */
59
+ export declare function playerColor(theme: Theme, slot: number): import("./tokens.js").PlayerColor;
60
+ /**
61
+ * Returns `theme.motion.duration.<key>` zeroed out when the theme has
62
+ * `motion.reducedMotion === "true"`. Use this in any component that
63
+ * starts an animation so `prefers-reduced-motion` is honoured uniformly.
64
+ */
65
+ export declare function motionDuration(theme: Theme, key: keyof Theme["motion"]["duration"]): string;
66
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/theme/derive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AAEH,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,aAAa,CAgDf;AA+BD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACf,GACL,aAAa,CAuBf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;CAC3B,GACL,aAAa,CAYf;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,aAAa,GACrB,WAAW,CAmBb;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qCASrD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GACrC,MAAM,CAGR"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Compute the inline style for a button in `variant`/`size` from the
3
+ * theme. `disabled` and `pressed` are visual-only — they affect colour
4
+ * intensity and elevation but never touch interactivity (the consuming
5
+ * component owns `aria-disabled` and event wiring).
6
+ */
7
+ export function buttonStyle(theme, options = {}) {
8
+ const { variant = "primary", size = "md", disabled, pressed } = options;
9
+ const intent = intentForVariant(theme, variant);
10
+ const sizing = BUTTON_SIZE[size];
11
+ const visuallyDisabled = disabled && variant !== "submitted";
12
+ const baseShadow = variant === "ghost"
13
+ ? "none"
14
+ : pressed
15
+ ? theme.elevation.rest
16
+ : theme.elevation.hover;
17
+ return {
18
+ display: "inline-flex",
19
+ alignItems: "center",
20
+ justifyContent: "center",
21
+ gap: theme.space[2],
22
+ minHeight: sizing.minHeight,
23
+ paddingBlock: sizing.paddingBlock,
24
+ paddingInline: sizing.paddingInline,
25
+ borderRadius: theme.radius.md,
26
+ border: variant === "ghost"
27
+ ? "1px solid transparent"
28
+ : `1px solid ${visuallyDisabled ? theme.semantic.border.subtle : intent.border}`,
29
+ background: variant === "ghost"
30
+ ? "transparent"
31
+ : visuallyDisabled
32
+ ? theme.semantic.surface.inset
33
+ : intent.solid,
34
+ color: visuallyDisabled
35
+ ? theme.semantic.text.disabled
36
+ : variant === "ghost"
37
+ ? theme.semantic.text.primary
38
+ : intent.on,
39
+ fontFamily: theme.typography.fontFamily.body,
40
+ fontSize: sizing.fontSize,
41
+ fontWeight: theme.typography.fontWeight.bold,
42
+ lineHeight: theme.typography.lineHeight.tight,
43
+ letterSpacing: theme.typography.letterSpacing.normal,
44
+ cursor: disabled ? "not-allowed" : "pointer",
45
+ boxShadow: disabled ? "none" : baseShadow,
46
+ transition: `background-color ${theme.motion.duration.fast} ${theme.motion.easing.out}, transform ${theme.motion.duration.fast} ${theme.motion.easing.out}, box-shadow ${theme.motion.duration.normal} ${theme.motion.easing.out}`,
47
+ userSelect: "none",
48
+ WebkitTapHighlightColor: "transparent",
49
+ };
50
+ }
51
+ const BUTTON_SIZE = {
52
+ sm: {
53
+ minHeight: 32,
54
+ paddingBlock: "0.25rem",
55
+ paddingInline: "0.625rem",
56
+ fontSize: "0.8125rem",
57
+ },
58
+ md: {
59
+ minHeight: 40,
60
+ paddingBlock: "0.5rem",
61
+ paddingInline: "0.875rem",
62
+ fontSize: "0.9375rem",
63
+ },
64
+ lg: {
65
+ minHeight: 52,
66
+ paddingBlock: "0.75rem",
67
+ paddingInline: "1.125rem",
68
+ fontSize: "1.0625rem",
69
+ },
70
+ };
71
+ /**
72
+ * Soft-intent chip ("Your turn", "Largest army", "Waiting…"). Reads
73
+ * `intent.<variant>.soft` for background and `.onSoft` for text.
74
+ */
75
+ export function chipStyle(theme, options = {}) {
76
+ const { variant = "secondary", size = "sm" } = options;
77
+ const intent = intentForVariant(theme, variant);
78
+ return {
79
+ display: "inline-flex",
80
+ alignItems: "center",
81
+ gap: theme.space[1],
82
+ paddingBlock: size === "md" ? "0.25rem" : "0.125rem",
83
+ paddingInline: size === "md" ? "0.625rem" : "0.5rem",
84
+ borderRadius: theme.radius.pill,
85
+ border: `1px solid ${intent.border}`,
86
+ background: intent.soft,
87
+ color: intent.onSoft,
88
+ fontFamily: theme.typography.fontFamily.body,
89
+ fontSize: size === "md"
90
+ ? theme.typography.fontSize.sm
91
+ : theme.typography.fontSize.xs,
92
+ fontWeight: theme.typography.fontWeight.bold,
93
+ letterSpacing: theme.typography.letterSpacing.wide,
94
+ textTransform: "uppercase",
95
+ whiteSpace: "nowrap",
96
+ };
97
+ }
98
+ /**
99
+ * Standard surface card (player card, action panel, hand drawer). The
100
+ * `tone` selects which `surface.*` slot to read; `interactive` adds
101
+ * the hover-elevation transition baseline.
102
+ */
103
+ export function surfaceStyle(theme, options = {}) {
104
+ const { tone = "card", interactive, radius = "lg" } = options;
105
+ return {
106
+ background: theme.semantic.surface[tone],
107
+ color: theme.semantic.text.primary,
108
+ border: `1px solid ${theme.semantic.border.subtle}`,
109
+ borderRadius: theme.radius[radius],
110
+ boxShadow: theme.elevation.rest,
111
+ transition: interactive
112
+ ? `box-shadow ${theme.motion.duration.normal} ${theme.motion.easing.out}, transform ${theme.motion.duration.normal} ${theme.motion.easing.out}`
113
+ : undefined,
114
+ };
115
+ }
116
+ /** Resolve a {@link ButtonVariant} to its underlying {@link IntentColor}. */
117
+ export function intentForVariant(theme, variant) {
118
+ switch (variant) {
119
+ case "primary":
120
+ return theme.semantic.intent.primary;
121
+ case "secondary":
122
+ return theme.semantic.intent.secondary;
123
+ case "danger":
124
+ return theme.semantic.intent.danger;
125
+ case "submitted":
126
+ return theme.semantic.intent.success;
127
+ case "success":
128
+ return theme.semantic.intent.success;
129
+ case "warning":
130
+ return theme.semantic.intent.warning;
131
+ case "info":
132
+ return theme.semantic.intent.info;
133
+ case "ghost":
134
+ return theme.semantic.intent.secondary;
135
+ }
136
+ }
137
+ /**
138
+ * Pick a {@link Theme.player} entry by 0-based seat slot, wrapping
139
+ * around when there are more players than palette entries (so a
140
+ * 7-player game cycles back to player 1's palette).
141
+ */
142
+ export function playerColor(theme, slot) {
143
+ const length = theme.player.length;
144
+ const idx = ((slot % length) + length) % length;
145
+ // The {@link Theme.player} contract pins length === 6 at the type
146
+ // level, but indexing by a runtime-computed value widens the result
147
+ // to `PlayerColor | undefined`. Falling back to slot 0 (also typed
148
+ // `PlayerColor`) keeps the return type narrow without a non-null
149
+ // assertion.
150
+ return theme.player[idx] ?? theme.player[0];
151
+ }
152
+ /**
153
+ * Returns `theme.motion.duration.<key>` zeroed out when the theme has
154
+ * `motion.reducedMotion === "true"`. Use this in any component that
155
+ * starts an animation so `prefers-reduced-motion` is honoured uniformly.
156
+ */
157
+ export function motionDuration(theme, key) {
158
+ if (theme.motion.reducedMotion === "true")
159
+ return "0ms";
160
+ return theme.motion.duration[key];
161
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Public theme surface for `@dreamboard/ui-sdk`.
3
+ *
4
+ * Authors who only consume the SDK never need to import from
5
+ * sub-modules — `<ThemeProvider>`, `useTheme()`, and the preset ids
6
+ * are the entire public API. Type-level exports cover advanced use
7
+ * (custom themes, deep overrides) without leaking internal token shape
8
+ * surfaces (CSS-var serializer, derive helpers) that may move.
9
+ *
10
+ * Module entry order is import-friendly: tokens (types) before
11
+ * presets (values) before provider (consumes both).
12
+ */
13
+ export type { ColorRamp, ComponentTokens, Elevation, FoundationColor, IntentColor, Motion, PlayerColor, Radius, SemanticColor, Space, Theme, ThemeMeta, ThemeOverride, Typography, } from "./tokens.js";
14
+ export { mergeTheme } from "./tokens.js";
15
+ export { tabletopTheme } from "./presets/tabletop.js";
16
+ export { arcadeTheme } from "./presets/arcade.js";
17
+ export { studioTheme } from "./presets/studio.js";
18
+ export { ThemeProvider, resolveTheme, getThemePreset, useTheme, useThemeCssVars, type ThemeContextValue, type ThemePresetId, type ThemeProviderProps, } from "./ThemeProvider.js";
19
+ export { themeToCssVars, cssVar, cssVarOr } from "./css-vars.js";
20
+ export { buttonStyle, chipStyle, surfaceStyle, intentForVariant, playerColor, motionDuration, type ButtonSize, type ButtonVariant, } from "./derive.js";
21
+ export { useBoardTheme, deriveBoardTheme, type BoardTheme } from "./board.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,YAAY,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,eAAe,EACf,WAAW,EACX,MAAM,EACN,WAAW,EACX,MAAM,EACN,aAAa,EACb,KAAK,EACL,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Public theme surface for `@dreamboard/ui-sdk`.
3
+ *
4
+ * Authors who only consume the SDK never need to import from
5
+ * sub-modules — `<ThemeProvider>`, `useTheme()`, and the preset ids
6
+ * are the entire public API. Type-level exports cover advanced use
7
+ * (custom themes, deep overrides) without leaking internal token shape
8
+ * surfaces (CSS-var serializer, derive helpers) that may move.
9
+ *
10
+ * Module entry order is import-friendly: tokens (types) before
11
+ * presets (values) before provider (consumes both).
12
+ */
13
+ export { mergeTheme } from "./tokens.js";
14
+ export { tabletopTheme } from "./presets/tabletop.js";
15
+ export { arcadeTheme } from "./presets/arcade.js";
16
+ export { studioTheme } from "./presets/studio.js";
17
+ export { ThemeProvider, resolveTheme, getThemePreset, useTheme, useThemeCssVars, } from "./ThemeProvider.js";
18
+ export { themeToCssVars, cssVar, cssVarOr } from "./css-vars.js";
19
+ export { buttonStyle, chipStyle, surfaceStyle, intentForVariant, playerColor, motionDuration, } from "./derive.js";
20
+ export { useBoardTheme, deriveBoardTheme } from "./board.js";
@@ -0,0 +1,10 @@
1
+ import type { Theme } from "../tokens.js";
2
+ /**
3
+ * `arcade` — high-contrast neon theme for fast/competitive games.
4
+ *
5
+ * Visual identity: deep slate background, electric cyan/magenta
6
+ * intents, square-ish corners, sharp drop shadows. Designed to evoke
7
+ * action games and to keep critical CTAs popping at a glance.
8
+ */
9
+ export declare const arcadeTheme: Theme;
10
+ //# sourceMappingURL=arcade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcade.d.ts","sourceRoot":"","sources":["../../../src/theme/presets/arcade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KA2PzB,CAAC"}