@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
@@ -1,12 +1,15 @@
1
1
  import { type RefObject } from "react";
2
2
  import type { SpaceHeaderProps } from "./space-header-contract";
3
3
  export declare const CALL_SHORTCUTS: readonly [readonly ["Mute or unmute", "⌘ D"], readonly ["Turn camera on or off", "⌘ E"], readonly ["Raise or lower hand", "⌃ ⌘ H"], readonly ["Open or close chat", "⌃ ⌘ C"], readonly ["Open or close people", "⌃ ⌘ P"], readonly ["Switch layout", "⌃ ⌘ L"], readonly ["Talk while muted", "Hold Space"], readonly ["Show shortcuts", "?"], readonly ["Close a menu or panel", "Esc"]];
4
- export declare function CallDialog({ kind, onClose, onReportProblem, diagnostics, returnFocus, }: {
5
- readonly kind: "shortcuts" | "report" | null;
4
+ export declare function CallDialog({ kind, open, onClose, onReportProblem, diagnostics, returnFocus, focusScope, unavailableReason, }: {
5
+ readonly kind: "shortcuts" | "report";
6
+ readonly open: boolean;
6
7
  readonly onClose: () => void;
7
8
  readonly onReportProblem?: SpaceHeaderProps["onReportProblem"];
8
9
  readonly diagnostics: string;
9
- readonly returnFocus: RefObject<HTMLButtonElement | null>;
10
+ readonly returnFocus?: RefObject<HTMLButtonElement | null>;
11
+ readonly focusScope: RefObject<HTMLElement | null>;
12
+ readonly unavailableReason?: string;
10
13
  }): import("react").JSX.Element;
11
14
  export declare function CallDetails({ shareUrl, spaceName, onClose, diagnostics, colorScheme, onColorSchemeChange, sounds, onSoundsChange, onDialog, onReportProblem, }: Pick<SpaceHeaderProps, "spaceName" | "shareUrl" | "diagnostics" | "colorScheme" | "onColorSchemeChange" | "onReportProblem"> & {
12
15
  readonly onClose: () => void;
@@ -14,4 +17,3 @@ export declare function CallDetails({ shareUrl, spaceName, onClose, diagnostics,
14
17
  readonly onSoundsChange: (enabled: boolean) => void;
15
18
  readonly onDialog: (kind: "shortcuts" | "report") => void;
16
19
  }): import("react").JSX.Element;
17
- //# sourceMappingURL=CallDetails.d.ts.map
@@ -6,4 +6,3 @@ export interface LayoutMenuProps {
6
6
  readonly container?: RefObject<HTMLElement | null>;
7
7
  }
8
8
  export declare function LayoutMenu({ layout, onLayoutChange }: LayoutMenuProps): import("react").JSX.Element;
9
- //# sourceMappingURL=LayoutMenu.d.ts.map
@@ -2,4 +2,3 @@ import React from "react";
2
2
  import { type SpaceHeaderProps } from "./space-header-contract";
3
3
  export { formatDuration, type SpaceHeaderProps } from "./space-header-contract";
4
4
  export declare const SpaceHeader: React.NamedExoticComponent<SpaceHeaderProps>;
5
- //# sourceMappingURL=SpaceHeader.d.ts.map
@@ -3,4 +3,3 @@ export declare function callDiagnostics(connection: ConnectionSlice, media: Medi
3
3
  label: string;
4
4
  value: string;
5
5
  }[];
6
- //# sourceMappingURL=call-diagnostics.d.ts.map
@@ -1,3 +1,2 @@
1
1
  /** Byte-mode QR, error correction L, mask 0. Quiet zone is included by ShareQR. */
2
2
  export declare function shareQr(text: string): boolean[][] | null;
3
- //# sourceMappingURL=share-qr.d.ts.map
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from "react";
1
2
  export interface SpaceHeaderProps {
2
3
  spaceName: string;
3
4
  people?: readonly {
@@ -18,6 +19,8 @@ export interface SpaceHeaderProps {
18
19
  readonly description: string;
19
20
  readonly diagnostics?: string;
20
21
  }) => void | Promise<void>;
22
+ reportUnavailableReason?: string;
23
+ onOpenReportProblem?: () => void;
21
24
  shortcuts?: {
22
25
  readonly isMuted?: boolean;
23
26
  readonly onToggleMute?: () => void;
@@ -36,7 +39,8 @@ export interface SpaceHeaderProps {
36
39
  isTranscribing?: boolean;
37
40
  layout?: "grid" | "focus";
38
41
  onLayoutChange?: (layout: "grid" | "focus") => void;
42
+ /** A control for notices that have no room on the stage, placed at the header's end, before the people button. */
43
+ notices?: ReactNode;
39
44
  className?: string;
40
45
  }
41
46
  export declare function formatDuration(seconds: number): string;
42
- //# sourceMappingURL=space-header-contract.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import type { SpaceHeaderProps } from "./space-header-contract";
2
2
  export declare function useCallShortcuts(actions: SpaceHeaderProps["shortcuts"], show: () => void): void;
3
- //# sourceMappingURL=useCallShortcuts.d.ts.map
@@ -23,4 +23,3 @@ export declare function RecordingSpaceView({ frame, resolveMedia, resolveAssetUr
23
23
  export declare namespace RecordingSpaceView {
24
24
  var displayName: string;
25
25
  }
26
- //# sourceMappingURL=RecordingSpaceView.d.ts.map
@@ -22,4 +22,3 @@ export interface SpacePresentationProps {
22
22
  * Recording projection. Networking, device effects and commands stay in callers.
23
23
  */
24
24
  export declare function SpacePresentation({ colorScheme, stageBackground, header, stage, controls, compactControls, stageOverlay, sidebar, mediaOutput, toasts, overlays, dialogs, renderToken, interactive, className }: SpacePresentationProps): React.JSX.Element;
25
- //# sourceMappingURL=SpacePresentation.d.ts.map
@@ -1,3 +1,5 @@
1
+ import { type MediaCommandSource, type MediaCommandAction } from "../control-bar/command-failure";
2
+ import { type ChalkWhiteboardView, type ClientFailure } from "@q9labsai/chalk-client";
1
3
  import React from "react";
2
4
  import type { ChatUploadFile } from "@q9labsai/chalk-client";
3
5
  import { type ReconnectingOverlayProps } from "../reconnecting-overlay/ReconnectingOverlay";
@@ -18,6 +20,8 @@ export interface SpaceViewFeatures {
18
20
  export interface SpaceViewWhiteboard {
19
21
  readonly isOpen: boolean;
20
22
  readonly props: WhiteboardViewProps;
23
+ /** Shares this person's board view so others can follow it; answers false when the board service can't. */
24
+ readonly sendView?: (view: ChalkWhiteboardView) => boolean;
21
25
  }
22
26
  export interface SpaceViewProps {
23
27
  readonly colorScheme?: "light" | "dark";
@@ -27,6 +31,8 @@ export interface SpaceViewProps {
27
31
  readonly callLinkOpen?: boolean;
28
32
  readonly onCallLinkToggle?: () => void;
29
33
  readonly onReportProblem?: import("../space-header/SpaceHeader").SpaceHeaderProps["onReportProblem"];
34
+ readonly reportUnavailableReason?: string;
35
+ readonly onOpenReportProblem?: () => void;
30
36
  readonly inviteLink?: string;
31
37
  readonly pickChatFiles?: () => Promise<readonly ChatUploadFile[]>;
32
38
  readonly stageBackground?: boolean;
@@ -36,7 +42,9 @@ export interface SpaceViewProps {
36
42
  readonly initialPanel?: SpacePanel | null;
37
43
  readonly features?: SpaceViewFeatures;
38
44
  readonly generatedAvatars?: boolean;
39
- readonly commandError?: string;
45
+ readonly commandError?: string | ClientFailure;
46
+ readonly commandSource?: MediaCommandSource;
47
+ readonly commandAction?: MediaCommandAction;
40
48
  readonly onDismissCommandError?: () => void;
41
49
  readonly onToggleWhiteboard?: () => void;
42
50
  readonly whiteboard?: SpaceViewWhiteboard;
@@ -48,5 +56,4 @@ export interface SpaceViewProps {
48
56
  readonly onEndEpisode?: () => void | Promise<void>;
49
57
  readonly className?: string;
50
58
  }
51
- export declare function SpaceView({ colorScheme, onColorSchemeChange, spaceName, shareUrl, callLinkOpen, onCallLinkToggle, onReportProblem, inviteLink, pickChatFiles, stageBackground, layout: controlledLayout, onLayoutChange, initialPanel, features, generatedAvatars, commandError: externalCommandError, onDismissCommandError, onToggleWhiteboard, whiteboard, reconnecting, overlay, onLeft, onEndEpisode, className, }: SpaceViewProps): React.JSX.Element;
52
- //# sourceMappingURL=SpaceView.d.ts.map
59
+ export declare function SpaceView({ colorScheme, onColorSchemeChange, spaceName, shareUrl, callLinkOpen, onCallLinkToggle, onReportProblem, reportUnavailableReason, onOpenReportProblem, inviteLink, pickChatFiles, stageBackground, layout: controlledLayout, onLayoutChange, initialPanel, features, generatedAvatars, commandError: externalCommandError, commandSource: externalCommandSource, commandAction: externalCommandAction, onDismissCommandError, onToggleWhiteboard, whiteboard, reconnecting, overlay, onLeft, onEndEpisode, className, }: SpaceViewProps): React.JSX.Element;
@@ -8,4 +8,3 @@ export interface DrawerPresence<T> {
8
8
  }
9
9
  /** Keeps the last panel mounted for `exitMs` after it is cleared so the drawer can animate out. */
10
10
  export declare function useDrawerPresence<T>(panel: T | null, exitMs: number): DrawerPresence<T>;
11
- //# sourceMappingURL=useDrawerPresence.d.ts.map
@@ -13,11 +13,12 @@ export interface SpaceStageProps {
13
13
  readonly shareCapture?: ScreenShareCapture;
14
14
  readonly onStopSharing?: () => Promise<void>;
15
15
  readonly onChangeShare?: (options: ScreenShareOptions) => Promise<void>;
16
+ readonly colorScheme?: "light" | "dark";
17
+ readonly onCloseBoard?: () => void;
16
18
  readonly className?: string;
17
19
  }
18
20
  /** One keyed renderer for people, the live board and each screen, in both layouts. */
19
- export declare function SpaceStage({ tiles, layout, onLayoutChange, generatedAvatars, whiteboard, onOverflowClick, shareCapture, onStopSharing, onChangeShare, className }: SpaceStageProps): React.JSX.Element;
21
+ export declare function SpaceStage({ tiles, layout, onLayoutChange, generatedAvatars, whiteboard, onOverflowClick, shareCapture, onStopSharing, onChangeShare, colorScheme, onCloseBoard, className }: SpaceStageProps): React.JSX.Element;
20
22
  export declare namespace SpaceStage {
21
23
  var displayName: string;
22
24
  }
23
- //# sourceMappingURL=SpaceStage.d.ts.map
@@ -20,7 +20,11 @@ export interface StageProps {
20
20
  readonly onPinnedChange?: (id: string | null) => void;
21
21
  readonly onItemClick?: (item: StageItem) => void;
22
22
  readonly onItemDoubleClick?: (item: StageItem) => void;
23
- /** Upper bound of visible tiles; the rest fold into a +N People tile. */
23
+ /** While the board is open, clicking a person follows their board view. */
24
+ readonly followingId?: string | null;
25
+ readonly onFollowChange?: (id: string) => void;
26
+ readonly clickAction?: "pin" | "follow";
27
+ /** Upper bound of grid tiles, or secondary tiles in spotlight; overflow includes shared content. */
24
28
  readonly maxPerPage?: number;
25
29
  /** Tiles narrower than this fold the rest into overflow. */
26
30
  readonly minTileWidth?: number;
@@ -51,9 +55,8 @@ export { buildStageItems };
51
55
  * Single renderer for every layout: a flat list of tiles positioned by the pure fitter, so
52
56
  * switching between grid and focus never remounts a video element.
53
57
  */
54
- export declare function Stage({ items, layout, pinnedId, onPinnedChange, onOverflowClick, onItemClick, onItemDoubleClick, maxPerPage, minTileWidth, renderPrimaryContent, renderParticipant, renderContentTile, interactive, animate: animateOverride, generatedAvatars, gradientPreference, emptyState, className, }: StageProps): React.JSX.Element;
58
+ export declare function Stage({ items, layout, pinnedId, followingId, onFollowChange, clickAction, onPinnedChange, onOverflowClick, onItemClick, onItemDoubleClick, maxPerPage, minTileWidth, renderPrimaryContent, renderParticipant, renderContentTile, interactive, animate: animateOverride, generatedAvatars, gradientPreference, emptyState, className, }: StageProps): React.JSX.Element;
55
59
  export declare namespace Stage {
56
60
  var displayName: string;
57
61
  }
58
62
  export declare function stageHasContent(items: readonly StageItem[]): boolean;
59
- //# sourceMappingURL=Stage.d.ts.map
@@ -27,4 +27,3 @@ export declare function contentTileName(item: ContentItem): string;
27
27
  export declare const StageContentTile: React.MemoExoticComponent<({ item, active, ...props }: StageContentTileProps) => React.JSX.Element>;
28
28
  export declare const StageContentTileSurface: React.MemoExoticComponent<({ item, pinned, onClick, onDoubleClick, className, style, hidden, media, mediaVisible, primary, state, onStopSharing, onChangeShare, capture, switcher }: StageContentTileSurfaceProps) => React.JSX.Element>;
29
29
  export {};
30
- //# sourceMappingURL=StageContentTile.d.ts.map
@@ -6,4 +6,3 @@ export declare function StageIcon({ name, size, ...props }: SVGProps<SVGSVGEleme
6
6
  size?: number;
7
7
  }): React.JSX.Element;
8
8
  export {};
9
- //# sourceMappingURL=StageIcon.d.ts.map
@@ -19,4 +19,3 @@ export declare class StageMotion extends Component<StageMotionProps> {
19
19
  render(): React.JSX.Element;
20
20
  }
21
21
  export {};
22
- //# sourceMappingURL=StageMotion.d.ts.map
@@ -28,6 +28,9 @@ export interface PrimaryContext {
28
28
  }
29
29
  /** A pin wins; otherwise the first live share, board, then active speaker leads Spotlight. */
30
30
  export declare function choosePrimary(items: readonly StageItem[], context: PrimaryContext): StageItem | null;
31
+ /** Who is speaking now: the active speaker before anyone else speaking. */
32
+ export declare function speakingParticipantId(items: readonly StageItem[], accept?: (participant: Participant) => boolean): string | undefined;
33
+ /** The remote person whose face leads the floating column: whoever is speaking now, else the last remote speaker. */
34
+ export declare function floatingSpeakerId(items: readonly StageItem[], lastRemoteSpeakerId: string | null): string | null;
31
35
  /** Grid order: pinned item first, everything else in stable order. */
32
36
  export declare function gridOrder(items: readonly StageItem[], pinnedId: string | null): StageItem[];
33
- //# sourceMappingURL=stage-items.d.ts.map
@@ -3,7 +3,7 @@ export interface StageBox {
3
3
  readonly width: number;
4
4
  readonly height: number;
5
5
  }
6
- export type StageRole = "primary" | "strip" | "grid";
6
+ export type StageRole = "primary" | "strip" | "grid" | "float";
7
7
  export interface StageFrame {
8
8
  readonly id: string;
9
9
  readonly role: StageRole;
@@ -37,6 +37,12 @@ export interface SpotlightFitOptions {
37
37
  readonly content?: boolean;
38
38
  readonly wideIds?: readonly string[];
39
39
  readonly maxPerPage?: number;
40
+ /** @deprecated Prefer floatingPhonePeople for boards. Preserves the 52px phone strip. */
41
+ readonly slimPhoneStrip?: boolean;
42
+ /** On a phone the board keeps the whole stage, and people float in a short column at its right edge. */
43
+ readonly floatingPhonePeople?: boolean;
44
+ readonly speakerId?: string | null;
45
+ readonly localId?: string | null;
40
46
  }
41
47
  export declare const WIDESCREEN: number;
42
48
  export declare const MORE_TILE_ID = "stage:more";
@@ -47,4 +53,3 @@ export declare const EMPTY_GEOMETRY: StageGeometry;
47
53
  export declare function fitGrid(box: StageBox, ids: readonly string[], options: GridFitOptions, wideIds?: readonly string[]): StageGeometry;
48
54
  /** Content takes whichever placement gives it more visible area; people justify into the remainder. */
49
55
  export declare function fitSpotlight(box: StageBox, primaryId: string, stripIds: readonly string[], options: SpotlightFitOptions): StageGeometry;
50
- //# sourceMappingURL=stage-layout.d.ts.map
@@ -4,4 +4,3 @@ export declare function useStageDimensions(fallback: StageBox): {
4
4
  ref: import("react").RefObject<HTMLDivElement | null>;
5
5
  dimensions: StageBox;
6
6
  };
7
- //# sourceMappingURL=useStageDimensions.d.ts.map
@@ -1,5 +1,4 @@
1
1
  export declare function CallEventIcon({ kind, error }: {
2
- readonly kind: "microphone" | "microphone-on" | "camera" | "screen" | "recording" | "hand" | "host";
2
+ readonly kind: "speaker" | "microphone" | "microphone-on" | "camera" | "screen" | "recording" | "hand" | "host";
3
3
  readonly error?: boolean;
4
4
  }): import("react").JSX.Element;
5
- //# sourceMappingURL=CallEventIcon.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { Toast } from "./ToastStack";
2
+ export interface NoticeButtonProps {
3
+ readonly toasts: readonly Toast[];
4
+ readonly onDismiss: (id: string) => void;
5
+ }
6
+ /** The header's way into notices that have no room on the stage, such as on a short screen with the board's tools open. */
7
+ export declare function NoticeButton({ toasts, onDismiss }: NoticeButtonProps): import("react").JSX.Element | null;
@@ -1,5 +1,5 @@
1
1
  import { type ChalkToastProps } from "../chalk-ui/ChalkToast";
2
- export interface Toast extends Omit<ChalkToastProps, "onDismiss"> {
2
+ export interface Toast extends Omit<ChalkToastProps, "onDismiss" | "announce"> {
3
3
  readonly id: string;
4
4
  }
5
5
  export interface ToastStackProps {
@@ -7,6 +7,16 @@ export interface ToastStackProps {
7
7
  readonly onDismiss: (id: string) => void;
8
8
  readonly maxVisible?: number;
9
9
  readonly className?: string;
10
+ /**
11
+ * Called with the ids of the notices the stage has no room for, so the host can offer them elsewhere, such as from the header.
12
+ * With it, a call shorter than `FOLD_BELOW_PX` folds every notice. Taller calls fold notices past `maxVisible` or outside the available band, announcing each folded message once.
13
+ */
14
+ readonly onFold?: (folded: readonly string[]) => void;
10
15
  }
11
- export declare const ToastStack: import("react").MemoExoticComponent<({ toasts, onDismiss, maxVisible, className }: ToastStackProps) => import("react").JSX.Element>;
12
- //# sourceMappingURL=ToastStack.d.ts.map
16
+ /**
17
+ * Calls shorter than this fold every notice. It is the height the mockup's three-notice stack needs at its tallest, on a phone with
18
+ * the board open: 108px for the header and the board's menu, an 8px gap, three camera errors wrapped to three lines (79px each, with
19
+ * 8px gaps), and the 242px the open drawing tools lift notices by, 611px in all.
20
+ */
21
+ export declare const FOLD_BELOW_PX = 620;
22
+ export declare const ToastStack: import("react").MemoExoticComponent<({ toasts, onDismiss, maxVisible, className, onFold }: ToastStackProps) => import("react").JSX.Element>;
@@ -1,6 +1,6 @@
1
+ import { type MediaCommandSource, type MediaCommandAction } from "../control-bar/command-failure";
1
2
  import type { ClientFailure, SpaceSnapshot } from "@q9labsai/chalk-client";
2
3
  import type { Toast } from "./ToastStack";
3
- export declare function mediaFailureToast(failure: ClientFailure | null, source?: "microphone" | "camera" | "screen"): Omit<Toast, "id"> | null;
4
+ export declare function mediaFailureToast(failure: ClientFailure | null, source?: MediaCommandSource, action?: MediaCommandAction, onRetry?: () => void): Omit<Toast, "id"> | null;
4
5
  /** Snapshot changes, not initial history, are events for the person already in the call. */
5
6
  export declare function callEventToasts(previous: SpaceSnapshot, next: SpaceSnapshot): Omit<Toast, "id">[];
6
- //# sourceMappingURL=call-events.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { ChalkToastProps } from "../chalk-ui/ChalkToast";
2
+ export declare function noticeAnnouncement(toast: Pick<ChalkToastProps, "message" | "announcementText">): string;
3
+ /** Semantic speech/lifetime revision, independent of JSX and layout chrome. */
4
+ export declare function noticeIdentity(toast: Pick<ChalkToastProps, "message" | "announcementText" | "announcementKey" | "type">): string;
@@ -0,0 +1,4 @@
1
+ /** A layout-only DOM snapshot: never instantiate React callers, custom elements, or media resources. */
2
+ export declare function captureToastLayout(toast: HTMLElement): HTMLDivElement;
3
+ /** Reflow cached markup at the current band's width without mounting the folded caller tree. */
4
+ export declare function measureToastLayout(stack: HTMLElement, snapshot: HTMLDivElement): number;
@@ -6,4 +6,3 @@ export declare function useCallToasts(): {
6
6
  dismiss: (id: string) => void;
7
7
  dismissFailure: (code: string) => void;
8
8
  };
9
- //# sourceMappingURL=useCallToasts.d.ts.map
@@ -0,0 +1,7 @@
1
+ import { type RefObject } from "react";
2
+ import type { Toast } from "./ToastStack";
3
+ /** Remember measured sizes when notices fold: resizing must not remount them to measure again. */
4
+ export declare function useToastCapacity(stack: RefObject<HTMLDivElement | null>, candidates: readonly Toast[], enabled: boolean, ownedIds: readonly string[]): {
5
+ readonly count: number;
6
+ readonly ready: boolean;
7
+ };
@@ -1,2 +1 @@
1
1
  export * from "@q9labsai/chalk-ui";
2
- //# sourceMappingURL=index.d.ts.map
@@ -20,4 +20,3 @@ export declare function RecordingWhiteboardView({ state: stateValue, files, expe
20
20
  export declare namespace RecordingWhiteboardView {
21
21
  var displayName: string;
22
22
  }
23
- //# sourceMappingURL=RecordingWhiteboardView.d.ts.map
@@ -4,4 +4,3 @@ export type WhiteboardViewProps = Omit<WhiteboardCanvasProps, "classNames" | "ic
4
4
  declare function WhiteboardViewBase(props: WhiteboardViewProps): React.JSX.Element;
5
5
  export declare const WhiteboardView: import("react").MemoExoticComponent<typeof WhiteboardViewBase>;
6
6
  export {};
7
- //# sourceMappingURL=WhiteboardView.d.ts.map
@@ -33,4 +33,3 @@ export declare function recordingWhiteboardSceneAppState(state: RecordingWhitebo
33
33
  /** Centralizes validation and branding so renderer callers never cast file data. */
34
34
  export declare function recordingWhiteboardBinaryFile({ fileId, mimeType, dataURL, createdAtMs }: RecordingWhiteboardBinaryFileInput): BinaryFileData;
35
35
  export declare function loadRecordingWhiteboardFiles(state: RecordingWhiteboardStateV1, resolve: RecordingWhiteboardFileResolver): Promise<BinaryFiles>;
36
- //# sourceMappingURL=recording-whiteboard-state.d.ts.map
@@ -6,4 +6,3 @@ export type { Participant } from "./components/participant-grid/ParticipantGrid"
6
6
  export { createRecordingWhiteboardCursor, loadRecordingWhiteboardFiles, parseRecordingWhiteboardStateV1, recordingWhiteboardSceneAppState } from "./components/whiteboard-view/recording-whiteboard-state";
7
7
  export type { RecordingWhiteboardCursor } from "./components/whiteboard-view/recording-whiteboard-state";
8
8
  export type { RecordingWhiteboardStateV1 } from "./components/whiteboard-view/recording-whiteboard-state";
9
- //# sourceMappingURL=headless.d.ts.map
package/dist/headless.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  fitSpotlight,
14
14
  gridOrder,
15
15
  screenShareItemId
16
- } from "./chunk-WRAEH24P.js";
16
+ } from "./chunk-HWQLW4JR.js";
17
17
  export {
18
18
  DEFAULT_GRID_OPTIONS,
19
19
  DEFAULT_SPOTLIGHT_OPTIONS,
package/dist/index.d.ts CHANGED
@@ -31,4 +31,4 @@ export { SpaceHeader } from "./components/space-header/SpaceHeader";
31
31
  export type { SpaceHeaderProps } from "./components/space-header/SpaceHeader";
32
32
  export { CallReady, type CallReadyProps } from "./components/call-limbo/CallReady";
33
33
  export { StatusSurface, type StatusSurfaceProps, type StatusSurfacePhase } from "./components/chalk/StatusSurface";
34
- //# sourceMappingURL=index.d.ts.map
34
+ export { ReportProblemDialog } from "./components/chalk/ReportProblemDialog";
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  RecordingHistoryPanel,
6
6
  RecordingSpaceView,
7
7
  RecordingWhiteboardView
8
- } from "./chunk-NPOO7BOX.js";
8
+ } from "./chunk-CYC2G42K.js";
9
9
  import {
10
10
  loadRecordingWhiteboardFiles,
11
11
  parseRecordingWhiteboardStateV1,
@@ -14,6 +14,7 @@ import {
14
14
  recordingWhiteboardFileIds
15
15
  } from "./chunk-VHM3SYMY.js";
16
16
  import {
17
+ CallDialog,
17
18
  CallLimbo,
18
19
  CallReady,
19
20
  ChalkAlert,
@@ -40,10 +41,12 @@ import {
40
41
  ChalkToggle,
41
42
  ChalkTooltip,
42
43
  ControlBar,
44
+ ShellStyles,
43
45
  SpaceHeader,
44
46
  StatusSurface,
45
47
  ToastStack,
46
48
  captureFlip,
49
+ chalkThemeStyle,
47
50
  useCan,
48
51
  useChat,
49
52
  useConnection,
@@ -56,12 +59,29 @@ import {
56
59
  useSelf,
57
60
  useSpaceClient,
58
61
  useWhiteboard
59
- } from "./chunk-XN2E352E.js";
60
- import "./chunk-WRAEH24P.js";
62
+ } from "./chunk-G62BKRNX.js";
63
+ import "./chunk-HWQLW4JR.js";
61
64
  import "./chunk-4U7QZC72.js";
62
65
 
63
66
  // src/index.ts
64
67
  import { CHALK_REACTIONS } from "@q9labsai/chalk-client";
68
+
69
+ // src/components/chalk/ReportProblemDialog.tsx
70
+ import { jsx, jsxs } from "react/jsx-runtime";
71
+ function ReportProblemDialog({
72
+ open,
73
+ onClose,
74
+ onReportProblem,
75
+ colorScheme,
76
+ focusScope,
77
+ diagnostics = "",
78
+ unavailableReason
79
+ }) {
80
+ return /* @__PURE__ */ jsxs("div", { "data-chalk": true, "data-chalk-theme": colorScheme, className: "chalk-root", style: chalkThemeStyle({ colorScheme }, colorScheme), children: [
81
+ /* @__PURE__ */ jsx(ShellStyles, {}),
82
+ /* @__PURE__ */ jsx(CallDialog, { kind: "report", open, onClose, onReportProblem, diagnostics, focusScope, unavailableReason })
83
+ ] });
84
+ }
65
85
  export {
66
86
  CHALK_REACTIONS,
67
87
  CallLimbo,
@@ -95,6 +115,7 @@ export {
95
115
  RecordingHistoryPanel,
96
116
  RecordingSpaceView,
97
117
  RecordingWhiteboardView,
118
+ ReportProblemDialog,
98
119
  SpaceHeader,
99
120
  StatusSurface,
100
121
  ToastStack,
@@ -5,4 +5,3 @@ export declare function captureFlip(elements: Iterable<HTMLElement>): () => void
5
5
  export declare function useStageRefit(root: RefObject<HTMLElement | null>): void;
6
6
  /** Chrome stays visible while a layer is open, on touch, and for keyboard focus. */
7
7
  export declare function useIdleChrome(root: RefObject<HTMLElement | null>, enabled: boolean): boolean;
8
- //# sourceMappingURL=call-motion.d.ts.map
@@ -17,4 +17,3 @@ export interface SoundPlayer {
17
17
  export declare function createSoundPlayer({ outputDeviceId }?: {
18
18
  readonly outputDeviceId?: string;
19
19
  }): SoundPlayer;
20
- //# sourceMappingURL=sound-cues.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function useEpisodeDuration(): number;
2
- //# sourceMappingURL=useEpisodeDuration.d.ts.map
@@ -6,4 +6,3 @@ export declare function useHaptics({ enabled }?: {
6
6
  isSupported: boolean;
7
7
  trigger: (pattern?: HapticPattern) => Promise<void>;
8
8
  };
9
- //# sourceMappingURL=useHaptics.d.ts.map
@@ -4,4 +4,3 @@ export declare function useIsTablet(): boolean;
4
4
  export declare function useIsDesktop(): boolean;
5
5
  export declare function usePrefersReducedMotion(): boolean;
6
6
  export declare function usePrefersDarkMode(): boolean;
7
- //# sourceMappingURL=useMediaQuery.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function useMirrorSetting(): readonly [boolean, (mirrored: boolean) => void];
2
- //# sourceMappingURL=useMirrorSetting.d.ts.map
@@ -7,4 +7,3 @@ import { type SoundCue, type SoundPlayer } from "./sound-cues";
7
7
  export declare function useSoundCues(enabled: boolean, createPlayer?: (options: {
8
8
  readonly outputDeviceId?: string;
9
9
  }) => SoundPlayer): (cue: SoundCue, failure?: ClientFailure) => void;
10
- //# sourceMappingURL=useSoundCues.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function useSoundsSetting(): readonly [boolean, (enabled: boolean) => void];
2
- //# sourceMappingURL=useSoundsSetting.d.ts.map
@@ -10,4 +10,3 @@ type WhiteboardSceneSubscription = {
10
10
  };
11
11
  export declare function useWhiteboardSceneSubscription(transport: ChalkWhiteboardV1Transport | null, active: boolean): WhiteboardSceneSubscription;
12
12
  export {};
13
- //# sourceMappingURL=useWhiteboardSceneSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ export declare const WHITEBOARD_VIEW_PEOPLE_MAX = 500;
@@ -8,7 +8,7 @@ type PublicHooks = Extract<keyof typeof bindings, `use${string}`>;
8
8
  type ExpectedHooks = "useSpaceClient" | "useConnection" | "useSelf" | "useParticipants" | "useMedia" | "useScreenShare" | "useOffline" | "useChat" | "useReactions" | "useRecording" | "useWhiteboard" | "useCan";
9
9
  type ExpectedLayout = "focus" | "grid";
10
10
  type ExpectedTokenKeys = "canvas" | "surface" | "raised" | "hover" | "pressed" | "tile" | "popover" | "line" | "lineStrong" | "text" | "textStrong" | "mutedText" | "softText" | "danger" | "dangerHover" | "dangerPressed" | "dangerText" | "positive" | "warning" | "accent" | "wash" | "washStrong" | "chrome" | "stage" | "accentText" | "dangerSurface" | "focus" | "shadow" | "overlay" | "overlayStrong" | "overlayHover" | "onOverlay" | "overlayWarning" | "overlayDanger" | "scrim";
11
- type ExpectedChalkProps = "shareUrl" | "onReportProblem" | "client" | "space" | "getAccess" | "defaults" | "displayName" | "features" | "theme" | "onColorSchemeChange" | "pickChatFiles" | "spaceName" | "layout" | "onLayoutChange" | "onRejoin" | "onHome" | "terminalState" | "inviteLink" | "onJoined" | "onLeft" | "onEpisodeEnded" | "onParticipantJoined" | "onParticipantLeft" | "onScreenShareStarted" | "onScreenShareStopped" | "onError";
11
+ type ExpectedChalkProps = "shareUrl" | "onReportProblem" | "onOpenReportProblem" | "reportUnavailableReason" | "client" | "space" | "getAccess" | "defaults" | "displayName" | "features" | "theme" | "onColorSchemeChange" | "pickChatFiles" | "spaceName" | "layout" | "onLayoutChange" | "onRejoin" | "onHome" | "terminalState" | "inviteLink" | "onJoined" | "onLeft" | "onEpisodeEnded" | "onParticipantJoined" | "onParticipantLeft" | "onScreenShareStarted" | "onScreenShareStopped" | "onError";
12
12
  type HooksAreClosed = Assert<Equal<PublicHooks, ExpectedHooks>>;
13
13
  type LayoutIsCanonical = Assert<Equal<SpaceLayout, ExpectedLayout>>;
14
14
  type TokensAreClosed = Assert<Equal<keyof ChalkThemeTokens, ExpectedTokenKeys>>;
@@ -18,4 +18,3 @@ type NoLegacyStylingProp = Assert<Equal<Extract<keyof ChalkProps, "className" |
18
18
  type ChalkPropsAreClosed = Assert<Equal<keyof ChalkProps, ExpectedChalkProps>>;
19
19
  export type PublicSurfaceContract = [HooksAreClosed, LayoutIsCanonical, TokensAreClosed, ErrorMirrorsClientEvent, ChatFilePickerMirrorsClientType, NoLegacyStylingProp, ChalkPropsAreClosed];
20
20
  export {};
21
- //# sourceMappingURL=public-surface.contract.d.ts.map
@@ -8,4 +8,3 @@ export declare function toVideoParticipants(participants: readonly SpaceParticip
8
8
  export declare function toAudioParticipants(remoteMedia: readonly RemoteMedia[]): AudioParticipant[];
9
9
  export declare function toParticipantNames(participants: readonly SpaceParticipant[], localId: string, displayName: string): Readonly<Record<string, string>>;
10
10
  export declare function toListParticipants(tiles: readonly Participant[], participantMedia: Readonly<Record<string, SpaceParticipant["media"]>>): ParticipantListParticipant[];
11
- //# sourceMappingURL=space-selectors.d.ts.map
@@ -12,4 +12,3 @@ export type { WhiteboardViewProps } from "../components/whiteboard-view/Whiteboa
12
12
  export type { PreviewClientCommand } from "./preview-client";
13
13
  export type { PreviewMediaDevices } from "./preview-devices";
14
14
  export type { SpaceLayout, SpacePanel } from "./preview-fixtures";
15
- //# sourceMappingURL=index.d.ts.map
@@ -6,8 +6,8 @@ import {
6
6
  SpaceView,
7
7
  ToastStack,
8
8
  WhiteboardView
9
- } from "../chunk-XN2E352E.js";
10
- import "../chunk-WRAEH24P.js";
9
+ } from "../chunk-G62BKRNX.js";
10
+ import "../chunk-HWQLW4JR.js";
11
11
  import "../chunk-4U7QZC72.js";
12
12
 
13
13
  // src/test-support/preview-devices.ts
@@ -25,12 +25,14 @@ function createPreviewMediaDevices() {
25
25
  }
26
26
 
27
27
  // src/test-support/preview-client.ts
28
+ import { createSpaceClient } from "@q9labsai/chalk-client";
28
29
  function createPreviewClient(initialSnapshot = createSnapshot(), options = {}) {
29
30
  let snapshot = initialSnapshot;
30
31
  let requestSequence = 0;
31
32
  let attachmentSequence = 0;
32
33
  let recordingSequence = 0;
33
34
  const listeners = /* @__PURE__ */ new Set();
35
+ let cameraPreviewClient;
34
36
  const setSnapshot = (nextSnapshot) => {
35
37
  snapshot = nextSnapshot;
36
38
  for (const listener of listeners) listener();
@@ -43,6 +45,23 @@ function createPreviewClient(initialSnapshot = createSnapshot(), options = {}) {
43
45
  };
44
46
  const client = {
45
47
  media: {
48
+ captureCameraPreview: async () => {
49
+ const current = snapshot.media.local.camera.track;
50
+ if (snapshot.media.local.camera.state === "enabled" && current?.enabled && current.readyState === "live") return { track: current, release: () => {
51
+ } };
52
+ cameraPreviewClient ??= createSpaceClient({
53
+ space: "camera-preview",
54
+ getAccess: async () => {
55
+ throw new Error("Preview capture must not join a call");
56
+ }
57
+ });
58
+ const selected = snapshot.media.selection.camera;
59
+ if (selected) await cameraPreviewClient.media.selectCamera(selected);
60
+ const track = await cameraPreviewClient.media.captureCameraPreview();
61
+ const devices = cameraPreviewClient.getSnapshot().media.devices;
62
+ updateSnapshot((current2) => ({ ...current2, media: { ...current2.media, devices } }));
63
+ return track;
64
+ },
46
65
  setMicrophoneEnabled: (enabled) => dispatch({ type: "setMicrophoneEnabled", enabled }),
47
66
  setCameraEnabled: (enabled) => dispatch({ type: "setCameraEnabled", enabled }),
48
67
  setScreenShareEnabled: (enabled) => dispatch({ type: "setScreenShareEnabled", enabled }),
@@ -119,7 +138,10 @@ function createPreviewClient(initialSnapshot = createSnapshot(), options = {}) {
119
138
  whiteboard: { transport: () => null },
120
139
  join: () => dispatch({ type: "join" }),
121
140
  leave: () => dispatch({ type: "leave" }),
122
- dispose: () => listeners.clear(),
141
+ dispose: () => {
142
+ cameraPreviewClient?.dispose();
143
+ listeners.clear();
144
+ },
123
145
  subscribe: (listener) => {
124
146
  listeners.add(listener);
125
147
  return () => listeners.delete(listener);
@@ -150,7 +172,7 @@ function createSnapshot(capabilities = ["sendChat"]) {
150
172
  reactions: { active: [] },
151
173
  recording: { current: null },
152
174
  offline: { pending: [], decisionNeeded: false, policy: "ask" },
153
- whiteboard: { open: false, engine: { status: "unsubscribed", sceneId: null, revision: null, presenting: false, error: null } }
175
+ whiteboard: { open: false, engine: { status: "unsubscribed", sceneId: null, revision: null, presenting: false, error: null }, access: { canDraw: false, policy: null, permissions: [] } }
154
176
  };
155
177
  }
156
178
  function applyPreviewCommand(snapshot, command) {
@@ -104,4 +104,3 @@ export type PreviewClient = SpaceClient & {
104
104
  */
105
105
  export declare function createPreviewClient(initialSnapshot?: SpaceSnapshot, options?: PreviewClientOptions): PreviewClient;
106
106
  export declare function createSnapshot(capabilities?: readonly Capability[]): SpaceSnapshot;
107
- //# sourceMappingURL=preview-client.d.ts.map
@@ -7,4 +7,3 @@ export type PreviewMediaDevices = Readonly<{
7
7
  /** One immutable fixture set shared by the preview client and web media adapter. */
8
8
  export declare const PREVIEW_DEVICE_FIXTURES: PreviewMediaDevices;
9
9
  export declare function createPreviewMediaDevices(): PreviewMediaDevices;
10
- //# sourceMappingURL=preview-devices.d.ts.map