@q9labsai/chalk-react 5.0.1 → 5.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 (301) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/dist/bindings/context.d.ts +0 -1
  3. package/dist/bindings/hooks.d.ts +2 -1
  4. package/dist/{chunk-NPOO7BOX.js → chunk-CYC2G42K.js} +68 -59
  5. package/dist/{chunk-XN2E352E.js → chunk-G62BKRNX.js} +2999 -774
  6. package/dist/{chunk-WRAEH24P.js → chunk-HWQLW4JR.js} +56 -6
  7. package/dist/components/admission-panel/AdmissionPanel.d.ts +0 -1
  8. package/dist/components/atomic/AudioIndicator.d.ts +0 -1
  9. package/dist/components/atomic/Avatar.d.ts +0 -1
  10. package/dist/components/atomic/HandRaiseIndicator.d.ts +0 -1
  11. package/dist/components/atomic/NameTag.d.ts +0 -1
  12. package/dist/components/atomic/ReactionBubble.d.ts +0 -1
  13. package/dist/components/atomic/StatusBadge.d.ts +0 -1
  14. package/dist/components/atomic/VolumeSlider.d.ts +0 -1
  15. package/dist/components/atomic/Waveform.d.ts +0 -1
  16. package/dist/components/atomic/index.d.ts +0 -1
  17. package/dist/components/audio-output/AudioOutput.d.ts +0 -1
  18. package/dist/components/board/Board.d.ts +22 -0
  19. package/dist/components/board/BoardCursors.d.ts +21 -0
  20. package/dist/components/board/BoardIcon.d.ts +46 -0
  21. package/dist/components/board/BoardIsland.d.ts +21 -0
  22. package/dist/components/board/BoardMenu.d.ts +18 -0
  23. package/dist/components/board/BoardStyles.d.ts +2 -0
  24. package/dist/components/board/board-draw-policy.d.ts +15 -0
  25. package/dist/components/board/board-engine.d.ts +31 -0
  26. package/dist/components/board/board-history.d.ts +7 -0
  27. package/dist/components/board/board-model.d.ts +90 -0
  28. package/dist/components/board/board-toasts.d.ts +6 -0
  29. package/dist/components/board/board-view-versions.d.ts +1 -0
  30. package/dist/components/call-card/CallCard.d.ts +0 -1
  31. package/dist/components/call-card/CallCardStyles.d.ts +0 -1
  32. package/dist/components/call-limbo/CallLimbo.d.ts +3 -2
  33. package/dist/components/call-limbo/CallReady.d.ts +0 -1
  34. package/dist/components/call-limbo/qr-code.d.ts +0 -1
  35. package/dist/components/call-limbo/useCallLink.d.ts +0 -1
  36. package/dist/components/chalk/Chalk.d.ts +4 -1
  37. package/dist/components/chalk/ReportProblemDialog.d.ts +12 -0
  38. package/dist/components/chalk/StatusSurface.d.ts +4 -2
  39. package/dist/components/chalk-ui/ChalkAlert.d.ts +0 -1
  40. package/dist/components/chalk-ui/ChalkBackdrop.d.ts +0 -1
  41. package/dist/components/chalk-ui/ChalkBadge.d.ts +0 -1
  42. package/dist/components/chalk-ui/ChalkButton.d.ts +0 -1
  43. package/dist/components/chalk-ui/ChalkCopyButton.d.ts +0 -1
  44. package/dist/components/chalk-ui/ChalkDialogPanel.d.ts +0 -1
  45. package/dist/components/chalk-ui/ChalkDivider.d.ts +0 -1
  46. package/dist/components/chalk-ui/ChalkEmptyState.d.ts +0 -1
  47. package/dist/components/chalk-ui/ChalkIconButton.d.ts +0 -1
  48. package/dist/components/chalk-ui/ChalkInput.d.ts +0 -1
  49. package/dist/components/chalk-ui/ChalkMenu.d.ts +2 -2
  50. package/dist/components/chalk-ui/ChalkPanel.d.ts +0 -1
  51. package/dist/components/chalk-ui/ChalkPopover.d.ts +0 -1
  52. package/dist/components/chalk-ui/ChalkSegmentedControl.d.ts +0 -1
  53. package/dist/components/chalk-ui/ChalkSheet.d.ts +1 -2
  54. package/dist/components/chalk-ui/ChalkSpinner.d.ts +0 -1
  55. package/dist/components/chalk-ui/ChalkTextarea.d.ts +0 -1
  56. package/dist/components/chalk-ui/ChalkToast.d.ts +7 -2
  57. package/dist/components/chalk-ui/ChalkToggle.d.ts +0 -1
  58. package/dist/components/chalk-ui/ChalkTooltip.d.ts +0 -1
  59. package/dist/components/chalk-ui/common.d.ts +0 -1
  60. package/dist/components/chalk-ui/index.d.ts +0 -1
  61. package/dist/components/composite/ChatPanel.d.ts +0 -1
  62. package/dist/components/composite/CommandErrorAlert.d.ts +0 -1
  63. package/dist/components/composite/MessageBubble.d.ts +0 -1
  64. package/dist/components/composite/ReactionPicker.d.ts +0 -1
  65. package/dist/components/composite/ReactionTray.d.ts +0 -1
  66. package/dist/components/composite/ReactionsOverlay.d.ts +0 -1
  67. package/dist/components/composite/ScreenShareView.d.ts +0 -1
  68. package/dist/components/composite/chat-file-upload.d.ts +0 -1
  69. package/dist/components/composite/chat-panel-model.d.ts +0 -1
  70. package/dist/components/composite/chat-types.d.ts +0 -1
  71. package/dist/components/composite/chat-upload-file.d.ts +0 -1
  72. package/dist/components/composite/reaction-float.d.ts +0 -1
  73. package/dist/components/composite/use-chat-attachment-previews.d.ts +0 -1
  74. package/dist/components/control-bar/CallLinkIcon.d.ts +0 -1
  75. package/dist/components/control-bar/ControlBar.d.ts +0 -1
  76. package/dist/components/control-bar/DockLayout.d.ts +0 -1
  77. package/dist/components/control-bar/LeaveMenu.d.ts +0 -1
  78. package/dist/components/control-bar/ShareControl.d.ts +3 -2
  79. package/dist/components/control-bar/ShellIcon.d.ts +0 -1
  80. package/dist/components/control-bar/ShellStyles.d.ts +0 -1
  81. package/dist/components/control-bar/command-failure.d.ts +105 -2
  82. package/dist/components/control-bar/control-bar-behavior.d.ts +9 -3
  83. package/dist/components/control-bar/control-bar-button.d.ts +0 -1
  84. package/dist/components/control-bar/next-camera.d.ts +0 -1
  85. package/dist/components/device-popover/DevicePopover.d.ts +4 -2
  86. package/dist/components/index.d.ts +0 -1
  87. package/dist/components/index.js +3 -3
  88. package/dist/components/lazy.d.ts +0 -1
  89. package/dist/components/logo/Logo.d.ts +0 -1
  90. package/dist/components/media-request-dialog/MediaRequestDialog.d.ts +0 -1
  91. package/dist/components/media-request-dialog/media-request-dialog-state.d.ts +0 -1
  92. package/dist/components/offline-actions/OfflineActions.d.ts +2 -2
  93. package/dist/components/participant-grid/ParticipantGrid.d.ts +0 -1
  94. package/dist/components/participant-tile/ParticipantTile.d.ts +4 -2
  95. package/dist/components/participant-tile/TileShell.d.ts +3 -2
  96. package/dist/components/participant-tile/useVideoTrack.d.ts +0 -1
  97. package/dist/components/participants-panel/ParticipantsPanel.d.ts +0 -1
  98. package/dist/components/participants-panel/index.d.ts +0 -1
  99. package/dist/components/participants-panel/participant-options-menu-contract.d.ts +0 -1
  100. package/dist/components/participants-panel/participant-options-menu.d.ts +0 -1
  101. package/dist/components/participants-panel/participant-row.d.ts +0 -1
  102. package/dist/components/participants-panel/participant-volume-context.d.ts +0 -1
  103. package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts +0 -1
  104. package/dist/components/recording-history/RecordingHistoryPanel.d.ts +0 -1
  105. package/dist/components/space-header/CallDetails.d.ts +6 -4
  106. package/dist/components/space-header/LayoutMenu.d.ts +0 -1
  107. package/dist/components/space-header/SpaceHeader.d.ts +0 -1
  108. package/dist/components/space-header/call-diagnostics.d.ts +0 -1
  109. package/dist/components/space-header/share-qr.d.ts +0 -1
  110. package/dist/components/space-header/space-header-contract.d.ts +5 -1
  111. package/dist/components/space-header/useCallShortcuts.d.ts +0 -1
  112. package/dist/components/space-view/RecordingSpaceView.d.ts +0 -1
  113. package/dist/components/space-view/SpacePresentation.d.ts +0 -1
  114. package/dist/components/space-view/SpaceView.d.ts +10 -3
  115. package/dist/components/space-view/useDrawerPresence.d.ts +0 -1
  116. package/dist/components/stage/SpaceStage.d.ts +3 -2
  117. package/dist/components/stage/Stage.d.ts +6 -3
  118. package/dist/components/stage/StageContentTile.d.ts +0 -1
  119. package/dist/components/stage/StageIcon.d.ts +0 -1
  120. package/dist/components/stage/StageMotion.d.ts +0 -1
  121. package/dist/components/stage/stage-items.d.ts +4 -1
  122. package/dist/components/stage/stage-layout.d.ts +7 -2
  123. package/dist/components/stage/useStageDimensions.d.ts +0 -1
  124. package/dist/components/toast-stack/CallEventIcon.d.ts +1 -2
  125. package/dist/components/toast-stack/NoticeButton.d.ts +7 -0
  126. package/dist/components/toast-stack/ToastStack.d.ts +13 -3
  127. package/dist/components/toast-stack/call-events.d.ts +2 -2
  128. package/dist/components/toast-stack/notice-announcement.d.ts +4 -0
  129. package/dist/components/toast-stack/toast-layout-snapshot.d.ts +4 -0
  130. package/dist/components/toast-stack/useCallToasts.d.ts +0 -1
  131. package/dist/components/toast-stack/useToastCapacity.d.ts +7 -0
  132. package/dist/components/ui/index.d.ts +0 -1
  133. package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts +0 -1
  134. package/dist/components/whiteboard-view/WhiteboardView.d.ts +0 -1
  135. package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts +0 -1
  136. package/dist/headless.d.ts +0 -1
  137. package/dist/headless.js +1 -1
  138. package/dist/index.d.ts +1 -1
  139. package/dist/index.js +24 -3
  140. package/dist/internal/call-motion.d.ts +0 -1
  141. package/dist/internal/sound-cues.d.ts +0 -1
  142. package/dist/internal/useEpisodeDuration.d.ts +0 -1
  143. package/dist/internal/useHaptics.d.ts +0 -1
  144. package/dist/internal/useMediaQuery.d.ts +0 -1
  145. package/dist/internal/useMirrorSetting.d.ts +0 -1
  146. package/dist/internal/useSoundCues.d.ts +0 -1
  147. package/dist/internal/useSoundsSetting.d.ts +0 -1
  148. package/dist/internal/useWhiteboardSceneSubscription.d.ts +0 -1
  149. package/dist/internal/whiteboard-view-limits.d.ts +1 -0
  150. package/dist/public-surface.contract.d.ts +1 -2
  151. package/dist/selectors/space-selectors.d.ts +0 -1
  152. package/dist/test-support/index.d.ts +0 -1
  153. package/dist/test-support/index.js +26 -4
  154. package/dist/test-support/preview-client.d.ts +0 -1
  155. package/dist/test-support/preview-devices.d.ts +0 -1
  156. package/dist/test-support/preview-fixtures.d.ts +0 -1
  157. package/dist/theme.d.ts +0 -1
  158. package/dist/utils/cn.d.ts +0 -1
  159. package/dist/utils/colorGenerator.d.ts +0 -1
  160. package/dist/utils/icons.d.ts +0 -1
  161. package/dist/utils/index.d.ts +0 -1
  162. package/dist/utils/theme.d.ts +0 -1
  163. package/dist/whiteboard/wire-adapters.d.ts +0 -1
  164. package/package.json +6 -5
  165. package/dist/bindings/context.d.ts.map +0 -1
  166. package/dist/bindings/hooks.d.ts.map +0 -1
  167. package/dist/components/admission-panel/AdmissionPanel.d.ts.map +0 -1
  168. package/dist/components/atomic/AudioIndicator.d.ts.map +0 -1
  169. package/dist/components/atomic/Avatar.d.ts.map +0 -1
  170. package/dist/components/atomic/HandRaiseIndicator.d.ts.map +0 -1
  171. package/dist/components/atomic/NameTag.d.ts.map +0 -1
  172. package/dist/components/atomic/ReactionBubble.d.ts.map +0 -1
  173. package/dist/components/atomic/StatusBadge.d.ts.map +0 -1
  174. package/dist/components/atomic/VolumeSlider.d.ts.map +0 -1
  175. package/dist/components/atomic/Waveform.d.ts.map +0 -1
  176. package/dist/components/atomic/index.d.ts.map +0 -1
  177. package/dist/components/audio-output/AudioOutput.d.ts.map +0 -1
  178. package/dist/components/call-card/CallCard.d.ts.map +0 -1
  179. package/dist/components/call-card/CallCardStyles.d.ts.map +0 -1
  180. package/dist/components/call-limbo/CallLimbo.d.ts.map +0 -1
  181. package/dist/components/call-limbo/CallReady.d.ts.map +0 -1
  182. package/dist/components/call-limbo/qr-code.d.ts.map +0 -1
  183. package/dist/components/call-limbo/useCallLink.d.ts.map +0 -1
  184. package/dist/components/chalk/Chalk.d.ts.map +0 -1
  185. package/dist/components/chalk/StatusSurface.d.ts.map +0 -1
  186. package/dist/components/chalk-ui/ChalkAlert.d.ts.map +0 -1
  187. package/dist/components/chalk-ui/ChalkBackdrop.d.ts.map +0 -1
  188. package/dist/components/chalk-ui/ChalkBadge.d.ts.map +0 -1
  189. package/dist/components/chalk-ui/ChalkButton.d.ts.map +0 -1
  190. package/dist/components/chalk-ui/ChalkCopyButton.d.ts.map +0 -1
  191. package/dist/components/chalk-ui/ChalkDialogPanel.d.ts.map +0 -1
  192. package/dist/components/chalk-ui/ChalkDivider.d.ts.map +0 -1
  193. package/dist/components/chalk-ui/ChalkEmptyState.d.ts.map +0 -1
  194. package/dist/components/chalk-ui/ChalkIconButton.d.ts.map +0 -1
  195. package/dist/components/chalk-ui/ChalkInput.d.ts.map +0 -1
  196. package/dist/components/chalk-ui/ChalkMenu.d.ts.map +0 -1
  197. package/dist/components/chalk-ui/ChalkPanel.d.ts.map +0 -1
  198. package/dist/components/chalk-ui/ChalkPopover.d.ts.map +0 -1
  199. package/dist/components/chalk-ui/ChalkSegmentedControl.d.ts.map +0 -1
  200. package/dist/components/chalk-ui/ChalkSheet.d.ts.map +0 -1
  201. package/dist/components/chalk-ui/ChalkSpinner.d.ts.map +0 -1
  202. package/dist/components/chalk-ui/ChalkTextarea.d.ts.map +0 -1
  203. package/dist/components/chalk-ui/ChalkToast.d.ts.map +0 -1
  204. package/dist/components/chalk-ui/ChalkToggle.d.ts.map +0 -1
  205. package/dist/components/chalk-ui/ChalkTooltip.d.ts.map +0 -1
  206. package/dist/components/chalk-ui/common.d.ts.map +0 -1
  207. package/dist/components/chalk-ui/index.d.ts.map +0 -1
  208. package/dist/components/composite/ChatPanel.d.ts.map +0 -1
  209. package/dist/components/composite/CommandErrorAlert.d.ts.map +0 -1
  210. package/dist/components/composite/MessageBubble.d.ts.map +0 -1
  211. package/dist/components/composite/ReactionPicker.d.ts.map +0 -1
  212. package/dist/components/composite/ReactionTray.d.ts.map +0 -1
  213. package/dist/components/composite/ReactionsOverlay.d.ts.map +0 -1
  214. package/dist/components/composite/ScreenShareView.d.ts.map +0 -1
  215. package/dist/components/composite/chat-file-upload.d.ts.map +0 -1
  216. package/dist/components/composite/chat-panel-model.d.ts.map +0 -1
  217. package/dist/components/composite/chat-types.d.ts.map +0 -1
  218. package/dist/components/composite/chat-upload-file.d.ts.map +0 -1
  219. package/dist/components/composite/reaction-float.d.ts.map +0 -1
  220. package/dist/components/composite/use-chat-attachment-previews.d.ts.map +0 -1
  221. package/dist/components/control-bar/CallLinkIcon.d.ts.map +0 -1
  222. package/dist/components/control-bar/ControlBar.d.ts.map +0 -1
  223. package/dist/components/control-bar/DockLayout.d.ts.map +0 -1
  224. package/dist/components/control-bar/LeaveMenu.d.ts.map +0 -1
  225. package/dist/components/control-bar/ShareControl.d.ts.map +0 -1
  226. package/dist/components/control-bar/ShellIcon.d.ts.map +0 -1
  227. package/dist/components/control-bar/ShellStyles.d.ts.map +0 -1
  228. package/dist/components/control-bar/command-failure.d.ts.map +0 -1
  229. package/dist/components/control-bar/control-bar-behavior.d.ts.map +0 -1
  230. package/dist/components/control-bar/control-bar-button.d.ts.map +0 -1
  231. package/dist/components/control-bar/next-camera.d.ts.map +0 -1
  232. package/dist/components/device-popover/DevicePopover.d.ts.map +0 -1
  233. package/dist/components/index.d.ts.map +0 -1
  234. package/dist/components/lazy.d.ts.map +0 -1
  235. package/dist/components/logo/Logo.d.ts.map +0 -1
  236. package/dist/components/media-request-dialog/MediaRequestDialog.d.ts.map +0 -1
  237. package/dist/components/media-request-dialog/media-request-dialog-state.d.ts.map +0 -1
  238. package/dist/components/offline-actions/OfflineActions.d.ts.map +0 -1
  239. package/dist/components/participant-grid/ParticipantGrid.d.ts.map +0 -1
  240. package/dist/components/participant-tile/ParticipantTile.d.ts.map +0 -1
  241. package/dist/components/participant-tile/TileShell.d.ts.map +0 -1
  242. package/dist/components/participant-tile/useVideoTrack.d.ts.map +0 -1
  243. package/dist/components/participants-panel/ParticipantsPanel.d.ts.map +0 -1
  244. package/dist/components/participants-panel/index.d.ts.map +0 -1
  245. package/dist/components/participants-panel/participant-options-menu-contract.d.ts.map +0 -1
  246. package/dist/components/participants-panel/participant-options-menu.d.ts.map +0 -1
  247. package/dist/components/participants-panel/participant-row.d.ts.map +0 -1
  248. package/dist/components/participants-panel/participant-volume-context.d.ts.map +0 -1
  249. package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts.map +0 -1
  250. package/dist/components/recording-history/RecordingHistoryPanel.d.ts.map +0 -1
  251. package/dist/components/space-header/CallDetails.d.ts.map +0 -1
  252. package/dist/components/space-header/LayoutMenu.d.ts.map +0 -1
  253. package/dist/components/space-header/SpaceHeader.d.ts.map +0 -1
  254. package/dist/components/space-header/call-diagnostics.d.ts.map +0 -1
  255. package/dist/components/space-header/share-qr.d.ts.map +0 -1
  256. package/dist/components/space-header/space-header-contract.d.ts.map +0 -1
  257. package/dist/components/space-header/useCallShortcuts.d.ts.map +0 -1
  258. package/dist/components/space-view/RecordingSpaceView.d.ts.map +0 -1
  259. package/dist/components/space-view/SpacePresentation.d.ts.map +0 -1
  260. package/dist/components/space-view/SpaceView.d.ts.map +0 -1
  261. package/dist/components/space-view/useDrawerPresence.d.ts.map +0 -1
  262. package/dist/components/stage/SpaceStage.d.ts.map +0 -1
  263. package/dist/components/stage/Stage.d.ts.map +0 -1
  264. package/dist/components/stage/StageContentTile.d.ts.map +0 -1
  265. package/dist/components/stage/StageIcon.d.ts.map +0 -1
  266. package/dist/components/stage/StageMotion.d.ts.map +0 -1
  267. package/dist/components/stage/stage-items.d.ts.map +0 -1
  268. package/dist/components/stage/stage-layout.d.ts.map +0 -1
  269. package/dist/components/stage/useStageDimensions.d.ts.map +0 -1
  270. package/dist/components/toast-stack/CallEventIcon.d.ts.map +0 -1
  271. package/dist/components/toast-stack/ToastStack.d.ts.map +0 -1
  272. package/dist/components/toast-stack/call-events.d.ts.map +0 -1
  273. package/dist/components/toast-stack/useCallToasts.d.ts.map +0 -1
  274. package/dist/components/ui/index.d.ts.map +0 -1
  275. package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts.map +0 -1
  276. package/dist/components/whiteboard-view/WhiteboardView.d.ts.map +0 -1
  277. package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts.map +0 -1
  278. package/dist/headless.d.ts.map +0 -1
  279. package/dist/index.d.ts.map +0 -1
  280. package/dist/internal/call-motion.d.ts.map +0 -1
  281. package/dist/internal/sound-cues.d.ts.map +0 -1
  282. package/dist/internal/useEpisodeDuration.d.ts.map +0 -1
  283. package/dist/internal/useHaptics.d.ts.map +0 -1
  284. package/dist/internal/useMediaQuery.d.ts.map +0 -1
  285. package/dist/internal/useMirrorSetting.d.ts.map +0 -1
  286. package/dist/internal/useSoundCues.d.ts.map +0 -1
  287. package/dist/internal/useSoundsSetting.d.ts.map +0 -1
  288. package/dist/internal/useWhiteboardSceneSubscription.d.ts.map +0 -1
  289. package/dist/public-surface.contract.d.ts.map +0 -1
  290. package/dist/selectors/space-selectors.d.ts.map +0 -1
  291. package/dist/test-support/index.d.ts.map +0 -1
  292. package/dist/test-support/preview-client.d.ts.map +0 -1
  293. package/dist/test-support/preview-devices.d.ts.map +0 -1
  294. package/dist/test-support/preview-fixtures.d.ts.map +0 -1
  295. package/dist/theme.d.ts.map +0 -1
  296. package/dist/utils/cn.d.ts.map +0 -1
  297. package/dist/utils/colorGenerator.d.ts.map +0 -1
  298. package/dist/utils/icons.d.ts.map +0 -1
  299. package/dist/utils/index.d.ts.map +0 -1
  300. package/dist/utils/theme.d.ts.map +0 -1
  301. package/dist/whiteboard/wire-adapters.d.ts.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,186 @@
1
+ # Changelog
2
+
3
+ ## 5.2.0
4
+
5
+ ### board-draw-policy
6
+
7
+ Add a call-wide drawing policy for the board: everyone, only hosts, or picked people.
8
+ Hosts set it with `setDrawPolicy` on the whiteboard transport and pick people with the
9
+ existing `setDrawPermission`. Sync computes each person's permission and sends it with
10
+ the policy over the new `draw_policy_v1` extension, so the summary and
11
+ `useWhiteboard().access` now carry `canDraw`, `drawPolicy` and the host's per-person
12
+ choices. The React board follows that permission instead of the role capability, and
13
+ hosts get a "Who can draw" section with a person picker in the board menu.
14
+
15
+ The whiteboard client now steps its hello down only when Sync can't decode it (close
16
+ 1009). A rejected token or a late hello (close 1008) is retried at the same level up to
17
+ four times, so a brief token problem no longer hides the drawing policy for the rest of
18
+ the connection. On a Sync without the drawing policy, a host's waiting policy change is
19
+ refused as `unavailable`, and also reported on the summary, instead of being replayed.
20
+
21
+ ### board-frame-clock
22
+
23
+ Keep Follow active when Bring everyone moves to a wider board view, without a brief zoom overshoot at the start of the animation.
24
+
25
+ ### board-stage-motion
26
+
27
+ Keep the live whiteboard free of stage translation and scaling animations so
28
+ switching between a participant and the board preserves the full canvas and
29
+ accurate drawing coordinates. Other stage tiles keep their existing motion.
30
+
31
+ ### brand-single-chalk-mark
32
+
33
+ Replace the retired colourful four-stick logo with the monochrome single chalk stick and dust in the distributed SVG assets and React Logo variants. Preserve existing asset filenames and component props. The React Logo now takes its default colour from the surrounding text colour.
34
+
35
+ ### follow-view-owner
36
+
37
+ Converge Follow views on one Episode owner, recover from its canonical snapshot,
38
+ and preserve real camera moves during recovery and tab switches. Zoom controls
39
+ and keyboard moves now consistently leave Follow and lead the person's view.
40
+
41
+ Keep all 500 active people's views using internal schema-generated limits in the client and React caches. The client's public bounds, event unions and decoded-frame unions are unchanged. The client now exports `ChalkWhiteboardViewVersions`, which the React SDK uses to order view moves, and whiteboard view events now carry `ownerId`, `ownerSequence` and `originEpoch`, so both releases are minor.
42
+
43
+ ### phone-board-notices-next-release
44
+
45
+ Float faces over a phone board, and keep call notices off the call's controls.
46
+ On a phone, an open board now fills the stage and up to three faces float at
47
+ its right edge, with short name tags. Notices sit between the header and the
48
+ controls under them. A call shorter than 620px, such as a landscape phone or a
49
+ short embedded call, puts every notice in a notice button in the header, which
50
+ lists each one whole and announces it once to screen readers; a taller call
51
+ shows the newest three and puts older ones in the button. A notice in the
52
+ button starts its timer only once it shows. The header stays visible while
53
+ the button holds notices. Long names, links and error tokens wrap inside
54
+ their notice, and a long call name shortens to make room for the timer and
55
+ the notice button. A screen share beside a short board always keeps its own
56
+ tile when there is no explicit cap. A capped strip or floating column counts
57
+ shared content and its overflow button against that cap; folded shares stay
58
+ readable in the shared-content overflow. One text-only announcer handles
59
+ notice speech independently of its stage or header presentation.
60
+
61
+ New optional props: `ToastStackProps.onFold` reports the ids of the notices
62
+ the stage has no room for, `ChalkToastProps.announce` lets a host that already
63
+ announced a notice keep its toast quiet, and `SpaceHeaderProps.notices` places
64
+ a control before the people button.
65
+
66
+ ### problem-reporting
67
+
68
+ Add the problem-report API contract and reusable report dialog, with opt-in diagnostics,
69
+ editable delivery failures and bounded Unicode input. Call details and failed or ended
70
+ call screens can expose reporting when an integration supplies a delivery callback.
71
+ Use `reportUnavailableReason` to show expired access inside an editable report.
72
+ Live report drafts survive call termination. Integrations with their own terminal
73
+ screens can use `onOpenReportProblem` to keep one app-owned dialog across those screens.
74
+ Give `ReportProblemDialog` a `focusScope` containing the current call or terminal screen,
75
+ so closing it returns focus to its usable opener, or to a visible current control
76
+ when the opener has disappeared. Hidden, inert and disabled targets are skipped.
77
+
78
+ ### recording-auto-render
79
+
80
+ Expose recording expiry reasons through additive failure fields while preserving the existing export status enum.
81
+
82
+ Add the Tenant recording_render_mode setting, defaulting to on_demand, with opt-in automatic MP4 rendering.
83
+
84
+ ### safe-media-command-guidance
85
+
86
+ Show safe, source-aware guidance for media command failures across call controls,
87
+ keyboard shortcuts, screen sharing, and media request dialogs. Preserve the
88
+ existing onCommandError MediaSource argument and provide extended media context
89
+ in an optional third argument. Keep disable-failure wording neutral and explain
90
+ unsupported speaker selection without suggesting a retry. Preserve start/stop
91
+ intent in failure guidance and retries; show terminal guidance for withdrawn
92
+ media requests and other non-recoverable failures.
93
+
94
+ Distinguish device selection, speaker tests, and incoming requests in media error
95
+ guidance. Cover every client failure code with an operation-aware policy and only
96
+ offer retry when the exact failed media command can be replayed.
97
+
98
+ Preserve request context in the integrated Chalk dialog and show safe terminal
99
+ guidance without retry for unknown runtime failure codes.
100
+
101
+ ### sync-connect-diagnostics
102
+
103
+ Report Sync connection failures with the existing `connection.sync_hello_timeout` code without adding values to the public `ErrorCode` union. Add the current attempt's safe diagnostics to client errors, telemetry, and the call failure reference: opening/hello stage, close code and bounded reason, whether the socket opened, and elapsed time. Earlier attempts remain in the diagnostic history. Browsers do not expose DNS, TCP, or TLS progress. Unrecognized peer reasons are redacted. This is a compatible patch for the next client and React releases; released 5.1.0 files are unchanged.
104
+
105
+ ## 5.1.0
106
+
107
+ - Add optional `CallLimbo.className` for the message card, so a host can size the card around a form.
108
+ - Route private camera previews through the SDK so granting permission refreshes the camera menu. Standalone `DevicePopover` and `ControlBarSurface` consumers can supply `captureCameraPreview`.
109
+ - Preview the chosen camera privately when the call camera is off; while it is active, preview the published call track rather than an unpublished device selection.
110
+ - Keep keyboard-shortcut dialog content fixed while opening and closing. Report a problem remains unchanged and appears only when a host supplies `onReportProblem`.
111
+ - Add optional `ChalkMenu.onOpenChange` for hosts that need to coordinate menu and dialog visibility.
112
+ - Show stage-specific failed-entry guidance with a public error-code reference. Keep recoverable device capture warnings in the live call.
113
+ - The call board now shows Chalk's own controls instead of the stock Excalidraw ones, with Follow and Bring everyone. `Stage` adds optional `followingId`, `onFollowChange` and `clickAction` (`"pin"` or `"follow"`); `SpaceStage` adds `colorScheme` and `onCloseBoard`; `SpaceView` shares and follows board views through the client's `sendView`.
114
+ - Keep Follow, Clear and Undo on the board scene where they started, so a scene change cannot restore or follow into another scene. Redo brings back undone text, and small drawings open at 100% zoom at most.
115
+ - Label screen shares of unknown surfaces plainly instead of guessing what is being shared.
116
+ - Lift call notices clear of an open reaction tray, so the tray and the notices stay readable together.
117
+ - Keep chat messages still while the clock ticks instead of re-rendering and jumping the scroll position.
118
+ - Show recovery notices without blocking the call, keep chat readable, and disable reaction sending and media enable controls until Sync is live. Local mute, private camera preview, device menus, and hand controls stay available.
119
+ - Omit the reference when the host has no known error code instead of inventing an internal-error reference.
120
+
121
+ ## 5.0.0
122
+
123
+ - Keep chat history available to observers and custom read-only roles; gate the composer, attachments, and message reactions on `sendChat`.
124
+ - Use `endEpisode` authority for Host badges and host-transfer notices, including `owner` and custom roles. Add `ParticipantListParticipant.isHost` for presentation-only lists.
125
+ - Play a short, quiet synthesized reaction sound while Sounds is enabled.
126
+ - Restore local ownership, capture details, and Stop/Change actions in the connected `ScreenShareView`.
127
+ - Avoid stopping already-ended screen capture tracks again when publication fails.
128
+ - Remove the unused `ToastStack.position` prop; call toasts use the responsive position defined by the call layout.
129
+
130
+ - Remove `LeaveDialog`, `PreviewEpisodeEnded`, and `PreviewStatus` from the `/preview` entry point.
131
+ - Change `ControlBar.onCommandError` from a message string callback to `(failure: ClientFailure | null, source?: MediaSource) => void`.
132
+ - Require `ChalkMenu.trigger` and `ChalkMenu.children`; remove its forwarded div ref, `tone`, and inherited HTML attributes other than `className`.
133
+ - Require `ChalkMenuItem.children`; remove its forwarded div ref, `tone`, and inherited HTML attributes. Its `onClick` callback no longer receives a DOM event.
134
+ - Remove `ToastStack.participantColorSeed` and `participantGradientPreference`; make its `toasts` array and `Toast` fields readonly, and widen `Toast.message` from `string` to `ReactNode`.
135
+ - Remove `ScreenShareView.onStopShare`; `ScreenShareViewProps` now contains only `className`.
136
+ - Remove `features.settings`, `settingsDialog`, and `onOpenSettings` from the call view contracts, and remove `"settings"` from the `/preview` `SpacePanel` type.
137
+ - Remove the props types for `ChalkCheckbox`, `ChalkControlGroup`, `ChalkRadio`, `ChalkSelect`, `ChalkSlider`, and `ChalkTooltipPanel` along with their components.
138
+ - Require `primary` in the render contexts passed to `Stage.renderParticipant` and `Stage.renderContentTile`.
139
+ - Require the new `ChalkThemeTokens` fields: `raised`, `hover`, `pressed`, `lineStrong`, `dangerHover`, `dangerPressed`, `dangerText`, `warning`, `tile`, `popover`, `textStrong`, `softText`, `wash`, `washStrong`, `overlay`, `overlayStrong`, `overlayHover`, `onOverlay`, `overlayWarning`, `overlayDanger`, and `scrim`. `ChalkTheme.tokens` remains partial.
140
+ - Replace the `/ui` `DEFAULT_QUICK_REACTIONS` tuple's final `😢`, `🎉` entries with `🎉`, `👏`; update consumers of its inferred literal types.
141
+ - Add `"reactToMessage"` to `/preview` `PreviewClientCommand`; exhaustive command handlers must handle the new variant.
142
+ - Persist the local self-view mirror preference across reloads and share it between camera previews and local participant tiles. Add controlled `ControlBar.mirrored` / `onMirrorChange` props; `ParticipantTile.mirror` still overrides the preference. Photo viewer downloads now save the original filename without opening a tab, while previews remain inline.
143
+
144
+ - Replace stage paging with justified Grid rows and a +N People tile; make shared screens double-width and Spotlight content-aware. Add participant hand-order, share-audio, share-aspect and share-state presentation fields. Preserve keyed video elements through 220 ms transform-only layout moves and add the two-person phone picture-in-picture.
145
+ - Unify screen and person tile chrome; show speaking rings, bold Facehash avatars, weak signal bars, local share previews and share controls. `Stage` accepts `onOverflowClick`, and content render contexts identify the primary tile.
146
+
147
+ - Replace phone device choices with Flip camera when two or more cameras are available; audio stays with the operating system.
148
+
149
+ - Make the desktop layout control a direct Spotlight/Grid toggle. Let `ChalkMenuItem.closeOnClick` keep device choices open, and `ChalkSheet.accessibleLabel` retain a stable accessible name while showing the call name.
150
+
151
+ - Add call-link QR sharing, diagnostics copy, keyboard shortcuts, and optional `Chalk`/`SpaceView` `shareUrl` and `onReportProblem` callbacks. Rebuild the call dock with device and screen-source split controls, tab-audio capture, and phone More actions.
152
+ - Add optional diagnostics, people, connection-warning and shortcut inputs to `SpaceHeader`; `ChalkPopover.tooltip` composes a tooltip with its trigger. Call reaction pickers accept raised-hand state and its action.
153
+ - Rebuild the call card with People and Chat tabs, message reactions, attachment previews and a dark photo viewer.
154
+ - Unify call status pages, add optional report/terminal-state integration, a share-ready card, recorded joining consent and accessible call-event toasts.
155
+
156
+ - Publish and play shared tab audio separately from microphones, with share-audio state and coupled screen-share lifecycle.
157
+
158
+ - Keep layout changes interactive when `layout` is supplied without `onLayoutChange`; the prop initializes local state in that case. A paired prop and handler remain controlled. Add Spotlight/Grid to the phone dock's More sheet.
159
+
160
+ - Default calls to Dark; `ChalkColorScheme` is now `"light" | "dark"`. Add `Chalk.onColorSchemeChange` and `SpaceView.onColorSchemeChange` for controlled appearance.
161
+ - Replace the call theme tokens with role-based mockup palettes, and share the inset-card frame with recordings.
162
+ - Rebuild call buttons, menus, popovers, tooltips, switches, segmented controls, copy feedback, focus-trapped sheets and toasts. Remove the unused `ChalkCheckbox`, `ChalkControlGroup`, `ChalkRadio`, `ChalkSelect`, `ChalkSlider`, and `ChalkTooltipPanel` exports. `ChalkMenu` now accepts a trigger; its items accept checked state.
163
+ - Add `captureFlip` for transform-only, reduced-motion-aware moves that preserve the mounted element.
164
+ - Use synthesized call sounds with a persistent Sounds switch; remove the unused Sonner `toast` re-export from the toast stack.
165
+
166
+ - Expose per-message reactions, count, participant IDs, `isMine`, and `react(input)` from `useChat()`; export the shared 24-emoji set and reaction types.
167
+
168
+ - Add `useScreenShare()` and screen source hint/capture types, without changing UI.
169
+
170
+ - Remove unused icon wrappers: `ArrowLeft02Icon`, `ArrowUp01Icon`, `Calendar01Icon`, `Mail01Icon`, `PictureInPictureIcon`, `ZoomInIcon`, `ZoomOutIcon`, `Link01Icon`, `MoreHorizontalIcon`, `Settings01Icon`, `SparklesIcon`, `UserAdd01Icon`.
171
+
172
+ - Fold Classic implementations into plain component names; remove Classic-prefixed modules and symbols.
173
+ - Remove SettingsDialog, SettingsPanel, DeviceSelector, NoiseSuppressionToggle, and their props, types, and lazy exports.
174
+ - Remove SpaceInfoDialog, its opener, `features.info`, `infoDialog`, and `spaceDescription`.
175
+ - Remove the header Invite button, InviteDialog, and `inviteDialog` / `inviteLink` props.
176
+ - Remove React Entrance, its types and preview fixture, and the `entrance` prop; Chalk joins directly through CallLimbo.
177
+ - Remove the header logo and `logoUrl` from Chalk, SpaceView, and SpaceHeader.
178
+ - Remove the unused dock `position`, `placement`, `showLabels`, and `duration` props.
179
+ - Remove the inline dock layout and unused PiP, More, settings, info, transcription, and thumbs-up control values and callbacks.
180
+ - Remove screen-share thumbnails, zoom, and rotation, including `showThumbnails`, `thumbnailPosition`, and `enableZoom`.
181
+ - Remove the unreachable TranscriptPanel drawer, behavior, lazy exports, and `SpacePanel` transcript value.
182
+ - Remove unused CaptionLine, TranscriptLine, ConnectionQuality, TourTooltip, TourHighlight, WhatsNewTrigger, and ReleaseBadge atoms and their props.
183
+ - Remove the offline-actions decision dialog and stored policy setting; queued actions send automatically on reconnection.
184
+
185
+ - Add shared call limbo for joining and reconnection. Connection recovery now blurs the call after a two-second grace instead of escalating to a modal.
186
+ - Remove the `presentation` layout. Spotlight prioritizes shared content; Grid preserves the selected layout and renders the real board.
@@ -6,4 +6,3 @@ export type ChalkProviderProps = PropsWithChildren<{
6
6
  readonly client: SpaceClient;
7
7
  }>;
8
8
  export declare function ChalkProvider({ children, client }: ChalkProviderProps): React.JSX.Element;
9
- //# sourceMappingURL=context.d.ts.map
@@ -21,6 +21,8 @@ export declare function useReactions(): ReactionsSlice;
21
21
  export declare function useRecording(): RecordingSlice;
22
22
  export declare function useWhiteboard(): WhiteboardSlice;
23
23
  export declare function useCan(capability: Capability): boolean;
24
+ /** Whether this person can draw on the board. Sync decides from the call's policy, their role and the host's choice for them; until the board subscription is live, the role default stands in. A Sync without the drawing policy doesn't report role changes to the board, so there the live role still limits drawing. */
25
+ export declare function useCanDrawWhiteboard(): boolean;
24
26
  /** Local capture state and the action that opens the browser's share picker. */
25
27
  export declare function useScreenShare(): {
26
28
  source: import("@q9labsai/chalk-client").MediaSource;
@@ -30,4 +32,3 @@ export declare function useScreenShare(): {
30
32
  capture?: import("@q9labsai/chalk-client").ScreenShareCapture;
31
33
  setEnabled: (enabled: boolean, options?: import("@q9labsai/chalk-client").ScreenShareOptions | undefined) => Promise<void>;
32
34
  };
33
- //# sourceMappingURL=hooks.d.ts.map
@@ -28,17 +28,19 @@ import {
28
28
  StatusSurface,
29
29
  WhiteboardView,
30
30
  chalkThemeStyle,
31
+ commandFailure,
31
32
  useCan,
33
+ useCanDrawWhiteboard,
32
34
  useConnection,
33
35
  useMedia,
34
36
  useRecording,
35
37
  useSpaceClient,
36
38
  useWhiteboard
37
- } from "./chunk-XN2E352E.js";
39
+ } from "./chunk-G62BKRNX.js";
38
40
  import {
39
41
  WHITEBOARD_ITEM_ID,
40
42
  screenShareItemId
41
- } from "./chunk-WRAEH24P.js";
43
+ } from "./chunk-HWQLW4JR.js";
42
44
  import {
43
45
  Download01Icon,
44
46
  FileTextIcon,
@@ -208,10 +210,10 @@ function Chalk(props) {
208
210
  props.onColorSchemeChange?.(next);
209
211
  };
210
212
  const [reportOpen, setReportOpen] = useState2(false);
211
- const reportTrigger = useRef(null);
212
- const openReport = props.onReportProblem ? () => {
213
- reportTrigger.current = document.activeElement instanceof HTMLButtonElement ? document.activeElement : null;
214
- setReportOpen(true);
213
+ const container = useRef(null);
214
+ const openReport = props.onReportProblem && !props.reportUnavailableReason ? () => {
215
+ if (props.onOpenReportProblem) props.onOpenReportProblem();
216
+ else setReportOpen(true);
215
217
  } : void 0;
216
218
  const suppliedClient = props.client;
217
219
  const getAccessRef = useRef(props.getAccess);
@@ -233,12 +235,23 @@ function Chalk(props) {
233
235
  void ownedClient.leave().catch(() => void 0).finally(() => ownedClient.dispose());
234
236
  };
235
237
  }, [ownedClient]);
236
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", { "data-chalk": true, "data-chalk-theme": colorScheme, className: "chalk-root h-full min-h-0 w-full", style: chalkThemeStyle(props.theme, colorScheme), children: /* @__PURE__ */ jsxs(ChalkProvider, { client, children: [
238
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("div", { ref: container, "data-chalk": true, "data-chalk-theme": colorScheme, className: "chalk-root h-full min-h-0 w-full", style: chalkThemeStyle(props.theme, colorScheme), children: /* @__PURE__ */ jsxs(ChalkProvider, { client, children: [
237
239
  /* @__PURE__ */ jsx(SpaceExperience, { ...props, theme: { ...props.theme, colorScheme }, onColorSchemeChange: changeColorScheme, resolvedColorScheme: colorScheme, onOpenReport: openReport }),
238
- props.onReportProblem ? /* @__PURE__ */ jsxs(Fragment, { children: [
240
+ props.onReportProblem && !props.onOpenReportProblem ? /* @__PURE__ */ jsxs(Fragment, { children: [
239
241
  /* @__PURE__ */ jsx(ShellStyles, {}),
240
- /* @__PURE__ */ jsx(CallDialog, { kind: reportOpen ? "report" : null, onClose: () => setReportOpen(false), onReportProblem: props.onReportProblem, diagnostics: `Call: ${props.spaceName ?? props.space ?? "Call"}
241
- Status: ${client.getSnapshot().connection.status}`, returnFocus: reportTrigger })
242
+ /* @__PURE__ */ jsx(
243
+ CallDialog,
244
+ {
245
+ kind: "report",
246
+ open: reportOpen,
247
+ onClose: () => setReportOpen(false),
248
+ onReportProblem: props.onReportProblem,
249
+ unavailableReason: props.reportUnavailableReason,
250
+ diagnostics: `Call: ${props.spaceName ?? props.space ?? "Call"}
251
+ Status: ${client.getSnapshot().connection.status}`,
252
+ focusScope: container
253
+ }
254
+ )
242
255
  ] }) : null
243
256
  ] }) }) });
244
257
  }
@@ -312,10 +325,21 @@ function SpaceExperience(props) {
312
325
  if (connection.status === "joining") return /* @__PURE__ */ jsx(CallLimbo, { theme: { ...props.theme, colorScheme: props.resolvedColorScheme }, recorded, spaceName, message: `Joining ${spaceName}\u2026` });
313
326
  if (connection.status === "failed" && connection.lastError?.code === "episode.ended") return /* @__PURE__ */ jsx(StatusSurface, { phase: "episode-ended", callName, theme: statusTheme, onHome: props.onHome, onReportProblem: props.onOpenReport });
314
327
  if (connection.status === "failed") {
315
- return /* @__PURE__ */ jsx(StatusSurface, { phase: "failed", callName, theme: statusTheme, onHome: props.onHome, onReportProblem: props.onOpenReport, onRetry: retryAutomaticJoin, retryPending });
328
+ return /* @__PURE__ */ jsx(StatusSurface, { phase: "failed", callName, errorCode: connection.lastError?.code, sync: connection.lastError?.sync, theme: statusTheme, onHome: props.onHome, onReportProblem: props.onOpenReport, onRetry: retryAutomaticJoin, retryPending });
316
329
  }
317
330
  if (connection.status === "leaving" || connection.status === "left")
318
- return /* @__PURE__ */ jsx(StatusSurface, { phase: episodeEnded ? "episode-ended" : "left", callName, theme: statusTheme, onReportProblem: props.onOpenReport, onRejoin: props.onRejoin ?? retryAutomaticJoin, rejoinDisabled: connection.status === "leaving" || retryPending, onHome: props.onHome });
331
+ return /* @__PURE__ */ jsx(
332
+ StatusSurface,
333
+ {
334
+ phase: episodeEnded ? "episode-ended" : "left",
335
+ callName,
336
+ theme: statusTheme,
337
+ onReportProblem: connection.status === "leaving" ? void 0 : props.onOpenReport,
338
+ onRejoin: props.onRejoin ?? retryAutomaticJoin,
339
+ rejoinDisabled: connection.status === "leaving" || retryPending,
340
+ onHome: props.onHome
341
+ }
342
+ );
319
343
  return /* @__PURE__ */ jsxs("div", { className: "relative h-full min-h-0", children: [
320
344
  /* @__PURE__ */ jsx(SpaceSurface, { ...props, spaceName }),
321
345
  /* @__PURE__ */ jsx(CallLimbo, { overlay: true, active: false, initiallyCovered: true, message: "" })
@@ -327,14 +351,20 @@ function SpaceSurface(props) {
327
351
  const media = useMedia();
328
352
  const whiteboardState = useWhiteboard();
329
353
  const canEndEpisode = useCan("endEpisode");
330
- const canDrawWhiteboard = useCan("drawWhiteboard");
331
- const [commandError, setCommandError] = useState2(() => connection.lastError?.recoverable && connection.lastError.code.startsWith("media.") ? connection.lastError.message : null);
332
- const runCommand = useCallback(async (command) => {
354
+ const canDrawWhiteboard = useCanDrawWhiteboard();
355
+ const [commandError, setCommandError] = useState2(() => connection.lastError?.recoverable && connection.lastError.code.startsWith("media.") ? connection.lastError : null);
356
+ const [commandSource, setCommandSource] = useState2();
357
+ const [commandAction, setCommandAction] = useState2();
358
+ const runCommand = useCallback(async (command, source, action) => {
333
359
  try {
334
360
  await command();
335
361
  setCommandError(null);
362
+ setCommandSource(void 0);
363
+ setCommandAction(void 0);
336
364
  } catch (cause) {
337
- setCommandError(cause instanceof Error ? cause.message : "This command could not be completed.");
365
+ setCommandError(commandFailure(cause));
366
+ setCommandSource(source);
367
+ setCommandAction(action);
338
368
  }
339
369
  }, []);
340
370
  const whiteboardTransport = client.whiteboard.transport();
@@ -362,7 +392,8 @@ function SpaceSurface(props) {
362
392
  clear: () => whiteboardSubscription.transport.clear(),
363
393
  presignDownload: (fileId) => whiteboardSubscription.transport.files.getDownloadUrl(fileId)
364
394
  }
365
- }
395
+ },
396
+ sendView: whiteboardSubscription.transport.supportsViews ?? Boolean(whiteboardSubscription.transport.sendView) ? (view) => whiteboardSubscription.transport.sendView?.(view) ?? false : void 0
366
397
  } : void 0;
367
398
  return /* @__PURE__ */ jsx(
368
399
  SpaceView,
@@ -370,11 +401,15 @@ function SpaceSurface(props) {
370
401
  colorScheme: props.resolvedColorScheme,
371
402
  shareUrl: props.shareUrl,
372
403
  onReportProblem: props.onReportProblem,
404
+ onOpenReportProblem: props.onOpenReport,
405
+ reportUnavailableReason: props.reportUnavailableReason,
373
406
  onColorSchemeChange: props.onColorSchemeChange,
374
407
  spaceName: props.spaceName,
375
408
  inviteLink: props.inviteLink,
376
409
  pickChatFiles: props.pickChatFiles,
377
410
  commandError: commandError ?? void 0,
411
+ commandSource,
412
+ commandAction,
378
413
  onDismissCommandError: () => setCommandError(null),
379
414
  layout: props.layout,
380
415
  onLayoutChange: props.onLayoutChange,
@@ -384,7 +419,14 @@ function SpaceSurface(props) {
384
419
  onLeft: () => runCommand(() => client.leave()),
385
420
  onEndEpisode: canEndEpisode ? () => runCommand(() => client.endEpisode()) : void 0,
386
421
  reconnecting: { isVisible: connection.status === "reconnecting", status: "reconnecting", showNotice: false },
387
- overlay: /* @__PURE__ */ jsx(Fragment, { children: media.incomingRequests[0] ? /* @__PURE__ */ jsx(MediaRequestDialog, { request: media.incomingRequests[0], onDecline: () => void runCommand(() => client.media.declineRequest(media.incomingRequests[0].requestId)), onAllow: () => void runCommand(() => client.media.acceptRequest(media.incomingRequests[0].requestId)) }) : null })
422
+ overlay: /* @__PURE__ */ jsx(Fragment, { children: media.incomingRequests[0] ? /* @__PURE__ */ jsx(
423
+ MediaRequestDialog,
424
+ {
425
+ request: media.incomingRequests[0],
426
+ onDecline: () => void runCommand(() => client.media.declineRequest(media.incomingRequests[0].requestId), media.incomingRequests[0].kind === "start_camera" ? "camera" : "microphone", "request"),
427
+ onAllow: () => void runCommand(() => client.media.acceptRequest(media.incomingRequests[0].requestId), media.incomingRequests[0].kind === "start_camera" ? "camera" : "microphone", "request")
428
+ }
429
+ ) : null })
388
430
  }
389
431
  );
390
432
  }
@@ -890,19 +932,13 @@ function RecordingWhiteboardView({ state: stateValue, files, expectedSceneId, ex
890
932
  RecordingWhiteboardView.displayName = "RecordingWhiteboardView";
891
933
 
892
934
  // src/components/logo/Logo.tsx
893
- import { useId } from "react";
894
935
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
895
- var DEFAULT_COLOR = "#1A332B";
936
+ var DEFAULT_COLOR = "currentColor";
896
937
  var DEFAULT_HEIGHT = 32;
897
938
  var DEFAULT_VARIANT = "wordmark";
898
939
  var WORDMARK_VIEW_BOX = "0 0 200 80";
899
940
  var MARK_VIEW_BOX = "0 0 68 80";
900
- function gradientId(prefix, name) {
901
- return `${prefix}-${name}`;
902
- }
903
941
  function Logo({ accessibilityLabel = "Chalk", color = DEFAULT_COLOR, height = DEFAULT_HEIGHT, variant = DEFAULT_VARIANT }) {
904
- const generatedId = useId().replace(/[^a-zA-Z0-9_-]/gu, "");
905
- const idPrefix = `chalk-logo-${generatedId}`;
906
942
  const isWordmark = variant === "wordmark";
907
943
  const viewBox = isWordmark ? WORDMARK_VIEW_BOX : MARK_VIEW_BOX;
908
944
  const width = isWordmark ? height * 2.5 : height * (68 / 80);
@@ -923,41 +959,14 @@ function Logo({ accessibilityLabel = "Chalk", color = DEFAULT_COLOR, height = DE
923
959
  xmlns: "http://www.w3.org/2000/svg",
924
960
  fill: "none",
925
961
  children: [
926
- /* @__PURE__ */ jsxs3("defs", { children: [
927
- /* @__PURE__ */ jsxs3("linearGradient", { id: gradientId(idPrefix, "green"), x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
928
- /* @__PURE__ */ jsx5("stop", { offset: "0%", stopColor: "#C5E5C0" }),
929
- /* @__PURE__ */ jsx5("stop", { offset: "100%", stopColor: "#80B879" })
962
+ /* @__PURE__ */ jsxs3("svg", { x: "0", y: "6", width: "68", height: "68", viewBox: "0 0 48 48", children: [
963
+ /* @__PURE__ */ jsxs3("g", { transform: "rotate(28 24 24)", fill: "currentColor", children: [
964
+ /* @__PURE__ */ jsx5("path", { d: "M18 8h12v28a6 6 0 0 1-12 0z" }),
965
+ /* @__PURE__ */ jsx5("path", { d: "M18 8h12l-1.5 4.5h-9z", opacity: "0.45" })
930
966
  ] }),
931
- /* @__PURE__ */ jsxs3("linearGradient", { id: gradientId(idPrefix, "yellow"), x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
932
- /* @__PURE__ */ jsx5("stop", { offset: "0%", stopColor: "#FCEAB3" }),
933
- /* @__PURE__ */ jsx5("stop", { offset: "100%", stopColor: "#D9B641" })
934
- ] }),
935
- /* @__PURE__ */ jsxs3("linearGradient", { id: gradientId(idPrefix, "blue"), x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
936
- /* @__PURE__ */ jsx5("stop", { offset: "0%", stopColor: "#B2E0F0" }),
937
- /* @__PURE__ */ jsx5("stop", { offset: "100%", stopColor: "#55AAC9" })
938
- ] }),
939
- /* @__PURE__ */ jsxs3("linearGradient", { id: gradientId(idPrefix, "pink"), x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
940
- /* @__PURE__ */ jsx5("stop", { offset: "0%", stopColor: "#F8CACA" }),
941
- /* @__PURE__ */ jsx5("stop", { offset: "100%", stopColor: "#D67B7B" })
942
- ] })
943
- ] }),
944
- /* @__PURE__ */ jsxs3("g", { transform: "translate(2, 2) scale(0.95)", children: [
945
- /* @__PURE__ */ jsx5("g", { className: "chalk-logo__stick chalk-logo__stick--green", children: /* @__PURE__ */ jsxs3("g", { transform: "rotate(-15 20 60)", children: [
946
- /* @__PURE__ */ jsx5("path", { d: "M9,20 L21,20 L22,63 A7,7 0 0 1 8,63 Z", fill: `url(#${gradientId(idPrefix, "green")})` }),
947
- /* @__PURE__ */ jsx5("ellipse", { cx: "15", cy: "20", rx: "6", ry: "2.5", fill: "#D8ECD4" })
948
- ] }) }),
949
- /* @__PURE__ */ jsx5("g", { className: "chalk-logo__stick chalk-logo__stick--yellow", children: /* @__PURE__ */ jsxs3("g", { transform: "rotate(-8 32 55)", children: [
950
- /* @__PURE__ */ jsx5("path", { d: "M23,15 L35,15 L36,60 A7,7 0 0 1 22,60 Z", fill: `url(#${gradientId(idPrefix, "yellow")})` }),
951
- /* @__PURE__ */ jsx5("ellipse", { cx: "29", cy: "15", rx: "6", ry: "2.5", fill: "#FEF3D1" })
952
- ] }) }),
953
- /* @__PURE__ */ jsx5("g", { className: "chalk-logo__stick chalk-logo__stick--blue", children: /* @__PURE__ */ jsxs3("g", { transform: "rotate(12 60 30)", children: [
954
- /* @__PURE__ */ jsx5("path", { d: "M36,8 L48,8 L49,56 A7,7 0 0 1 35,56 Z", fill: `url(#${gradientId(idPrefix, "blue")})` }),
955
- /* @__PURE__ */ jsx5("ellipse", { cx: "42", cy: "8", rx: "6", ry: "2.5", fill: "#D0EDF8" })
956
- ] }) }),
957
- /* @__PURE__ */ jsx5("g", { className: "chalk-logo__stick chalk-logo__stick--pink", children: /* @__PURE__ */ jsxs3("g", { transform: "rotate(5 55 50)", children: [
958
- /* @__PURE__ */ jsx5("path", { d: "M49,70 L61,70 L62,29 A7,7 0 0 0 48,29 Z", fill: `url(#${gradientId(idPrefix, "pink")})` }),
959
- /* @__PURE__ */ jsx5("ellipse", { cx: "55", cy: "70", rx: "6", ry: "2.5", fill: "#FBE4E4" })
960
- ] }) })
967
+ /* @__PURE__ */ jsx5("circle", { cx: "10.5", cy: "41.5", r: "1.7", fill: "currentColor", opacity: "0.55" }),
968
+ /* @__PURE__ */ jsx5("circle", { cx: "6.5", cy: "37", r: "1.2", fill: "currentColor", opacity: "0.4" }),
969
+ /* @__PURE__ */ jsx5("circle", { cx: "4", cy: "43.5", r: "0.85", fill: "currentColor", opacity: "0.28" })
961
970
  ] }),
962
971
  isWordmark ? /* @__PURE__ */ jsx5("text", { className: "chalk-logo__wordmark", x: "90", y: "52", fontFamily: "system-ui, -apple-system, BlinkMacSystemFont, sans-serif", fontSize: "38", fontWeight: "600", letterSpacing: "-0.02em", fill: "currentColor", children: "chalk" }) : null
963
972
  ]