@q9labsai/chalk-react 4.1.14 → 4.1.16

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 (235) hide show
  1. package/README.md +23 -1
  2. package/THIRD_PARTY_NOTICES.md +29 -0
  3. package/dist/bindings/hooks.d.ts +4 -1
  4. package/dist/bindings/hooks.d.ts.map +1 -1
  5. package/dist/{chunk-4X3NFZGL.js → chunk-C7PNVYDZ.js} +9679 -10020
  6. package/dist/chunk-FFPNO2MY.js +131 -0
  7. package/dist/chunk-HZ43I4OS.js +138 -0
  8. package/dist/chunk-RMOJ5DLX.js +1421 -0
  9. package/dist/chunk-S6OVGZD5.js +3164 -0
  10. package/dist/chunk-VLAZKVNN.js +182 -0
  11. package/dist/components/atomic/Avatar.d.ts +4 -0
  12. package/dist/components/atomic/Avatar.d.ts.map +1 -1
  13. package/dist/components/atomic/ClassicAvatar.d.ts +1 -1
  14. package/dist/components/atomic/ClassicAvatar.d.ts.map +1 -1
  15. package/dist/components/atomic/ClassicReactionBubble.d.ts +2 -1
  16. package/dist/components/atomic/ClassicReactionBubble.d.ts.map +1 -1
  17. package/dist/components/atomic/ReactionBubble.d.ts +5 -2
  18. package/dist/components/atomic/ReactionBubble.d.ts.map +1 -1
  19. package/dist/components/audio-output/AudioOutput.d.ts +3 -1
  20. package/dist/components/audio-output/AudioOutput.d.ts.map +1 -1
  21. package/dist/components/chalk/Chalk.d.ts +3 -1
  22. package/dist/components/chalk/Chalk.d.ts.map +1 -1
  23. package/dist/components/composite/ChatPanel.d.ts +24 -1
  24. package/dist/components/composite/ChatPanel.d.ts.map +1 -1
  25. package/dist/components/composite/ClassicChatPanel.d.ts +23 -0
  26. package/dist/components/composite/ClassicChatPanel.d.ts.map +1 -1
  27. package/dist/components/composite/ClassicMessageBubble.d.ts.map +1 -1
  28. package/dist/components/composite/ClassicSettingsDialog.d.ts +1 -35
  29. package/dist/components/composite/ClassicSettingsDialog.d.ts.map +1 -1
  30. package/dist/components/composite/MessageBubble.d.ts +7 -1
  31. package/dist/components/composite/MessageBubble.d.ts.map +1 -1
  32. package/dist/components/composite/ReactionsOverlay.d.ts +13 -0
  33. package/dist/components/composite/ReactionsOverlay.d.ts.map +1 -1
  34. package/dist/components/composite/ScreenShareView.d.ts +8 -0
  35. package/dist/components/composite/ScreenShareView.d.ts.map +1 -1
  36. package/dist/components/composite/SettingsDialog.d.ts +2 -84
  37. package/dist/components/composite/SettingsDialog.d.ts.map +1 -1
  38. package/dist/components/composite/chat-panel-model.d.ts +17 -0
  39. package/dist/components/composite/chat-panel-model.d.ts.map +1 -1
  40. package/dist/components/composite/chat-upload-file.d.ts +8 -0
  41. package/dist/components/composite/chat-upload-file.d.ts.map +1 -0
  42. package/dist/components/composite/reaction-float.d.ts +2 -0
  43. package/dist/components/composite/reaction-float.d.ts.map +1 -1
  44. package/dist/components/composite/settings-dialog-behavior.d.ts +645 -0
  45. package/dist/components/composite/settings-dialog-behavior.d.ts.map +1 -0
  46. package/dist/components/composite/use-chat-attachment-previews.d.ts +10 -0
  47. package/dist/components/composite/use-chat-attachment-previews.d.ts.map +1 -0
  48. package/dist/components/control-bar/ClassicControlBar.d.ts +2 -1
  49. package/dist/components/control-bar/ClassicControlBar.d.ts.map +1 -1
  50. package/dist/components/control-bar/ControlBar.d.ts +8 -26
  51. package/dist/components/control-bar/ControlBar.d.ts.map +1 -1
  52. package/dist/components/control-bar/control-bar-behavior.d.ts +123 -0
  53. package/dist/components/control-bar/control-bar-behavior.d.ts.map +1 -0
  54. package/dist/components/device-popover/ClassicDevicePopover.d.ts +1 -1
  55. package/dist/components/device-popover/ClassicDevicePopover.d.ts.map +1 -1
  56. package/dist/components/device-popover/DevicePopover.d.ts +1 -0
  57. package/dist/components/device-popover/DevicePopover.d.ts.map +1 -1
  58. package/dist/components/entrance/Entrance.d.ts +2 -1
  59. package/dist/components/entrance/Entrance.d.ts.map +1 -1
  60. package/dist/components/entrance/EntranceDeviceControls.d.ts.map +1 -1
  61. package/dist/components/feedback/FeedbackDialog.d.ts +12 -0
  62. package/dist/components/feedback/FeedbackDialog.d.ts.map +1 -0
  63. package/dist/components/index.d.ts +8 -0
  64. package/dist/components/index.d.ts.map +1 -1
  65. package/dist/components/index.js +31 -6
  66. package/dist/components/invite-dialog/ClassicInviteDialog.d.ts.map +1 -1
  67. package/dist/components/invite-dialog/InviteDialog.d.ts.map +1 -1
  68. package/dist/components/lazy.d.ts +2 -2
  69. package/dist/components/lazy.d.ts.map +1 -1
  70. package/dist/components/offline-actions/OfflineActions.d.ts +17 -0
  71. package/dist/components/offline-actions/OfflineActions.d.ts.map +1 -0
  72. package/dist/components/offline-actions/OfflineActionsSetting.d.ts +4 -0
  73. package/dist/components/offline-actions/OfflineActionsSetting.d.ts.map +1 -0
  74. package/dist/components/offline-actions/offline-actions-policy.d.ts +4 -0
  75. package/dist/components/offline-actions/offline-actions-policy.d.ts.map +1 -0
  76. package/dist/components/participant-tile/ParticipantTile.d.ts +7 -1
  77. package/dist/components/participant-tile/ParticipantTile.d.ts.map +1 -1
  78. package/dist/components/participant-tile/TileShell.d.ts +3 -1
  79. package/dist/components/participant-tile/TileShell.d.ts.map +1 -1
  80. package/dist/components/participants-panel/ParticipantsPanel.d.ts.map +1 -1
  81. package/dist/components/reconnecting-overlay/ClassicReconnectingOverlay.d.ts.map +1 -1
  82. package/dist/components/reconnecting-overlay/ReconnectingNotice.d.ts +6 -0
  83. package/dist/components/reconnecting-overlay/ReconnectingNotice.d.ts.map +1 -0
  84. package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts +3 -0
  85. package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts.map +1 -1
  86. package/dist/components/recording-history/RecordingHistoryPanel.d.ts +62 -0
  87. package/dist/components/recording-history/RecordingHistoryPanel.d.ts.map +1 -0
  88. package/dist/components/space-header/LayoutMenu.d.ts +1 -499
  89. package/dist/components/space-header/LayoutMenu.d.ts.map +1 -1
  90. package/dist/components/space-info-dialog/SpaceInfoContent.d.ts.map +1 -1
  91. package/dist/components/space-view/ClassicSpaceView.d.ts +1 -1
  92. package/dist/components/space-view/ClassicSpaceView.d.ts.map +1 -1
  93. package/dist/components/space-view/RecordingSpaceView.d.ts +26 -0
  94. package/dist/components/space-view/RecordingSpaceView.d.ts.map +1 -0
  95. package/dist/components/space-view/SpaceDrawer.d.ts +3 -2
  96. package/dist/components/space-view/SpaceDrawer.d.ts.map +1 -1
  97. package/dist/components/space-view/SpacePresentation.d.ts +27 -0
  98. package/dist/components/space-view/SpacePresentation.d.ts.map +1 -0
  99. package/dist/components/space-view/SpaceStage.d.ts.map +1 -1
  100. package/dist/components/space-view/SpaceView.d.ts +2 -0
  101. package/dist/components/space-view/SpaceView.d.ts.map +1 -1
  102. package/dist/components/stage/Stage.d.ts +22 -2
  103. package/dist/components/stage/Stage.d.ts.map +1 -1
  104. package/dist/components/stage/StageContentTile.d.ts +5 -0
  105. package/dist/components/stage/StageContentTile.d.ts.map +1 -1
  106. package/dist/components/stage/StagePager.d.ts +2 -1
  107. package/dist/components/stage/StagePager.d.ts.map +1 -1
  108. package/dist/components/stage/stage-items.d.ts +0 -1
  109. package/dist/components/stage/stage-items.d.ts.map +1 -1
  110. package/dist/components/transcript-panel/ClassicTranscriptPanel.d.ts +1 -1
  111. package/dist/components/transcript-panel/ClassicTranscriptPanel.d.ts.map +1 -1
  112. package/dist/components/transcript-panel/TranscriptPanel.d.ts +2 -25
  113. package/dist/components/transcript-panel/TranscriptPanel.d.ts.map +1 -1
  114. package/dist/components/transcript-panel/transcript-panel-behavior.d.ts +84 -0
  115. package/dist/components/transcript-panel/transcript-panel-behavior.d.ts.map +1 -0
  116. package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts +23 -0
  117. package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts.map +1 -0
  118. package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts +31 -0
  119. package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts.map +1 -0
  120. package/dist/headless.d.ts +8 -0
  121. package/dist/headless.d.ts.map +1 -0
  122. package/dist/headless.js +28 -0
  123. package/dist/index.d.ts +9 -1
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +32 -4
  126. package/dist/internal/useWhiteboardSceneSubscription.d.ts.map +1 -1
  127. package/dist/public-surface.contract.d.ts +2 -2
  128. package/dist/public-surface.contract.d.ts.map +1 -1
  129. package/dist/selectors/space-selectors.d.ts.map +1 -1
  130. package/dist/test-support/index.d.ts +20 -0
  131. package/dist/test-support/index.d.ts.map +1 -0
  132. package/dist/test-support/index.js +508 -0
  133. package/dist/test-support/preview-client.d.ts +5 -0
  134. package/dist/test-support/preview-client.d.ts.map +1 -1
  135. package/dist/test-support/preview-feedback.d.ts +3 -0
  136. package/dist/test-support/preview-feedback.d.ts.map +1 -0
  137. package/dist/utils/animated-icon-renderer.d.ts +6 -0
  138. package/dist/utils/animated-icon-renderer.d.ts.map +1 -0
  139. package/dist/utils/animated-icon-runtime.d.ts +19 -0
  140. package/dist/utils/animated-icon-runtime.d.ts.map +1 -0
  141. package/dist/utils/animated-icons/arrow-left-02.d.ts +11 -0
  142. package/dist/utils/animated-icons/arrow-left-02.d.ts.map +1 -0
  143. package/dist/utils/animated-icons/cancel-01.d.ts +11 -0
  144. package/dist/utils/animated-icons/cancel-01.d.ts.map +1 -0
  145. package/dist/utils/animated-icons/clock-01.d.ts +11 -0
  146. package/dist/utils/animated-icons/clock-01.d.ts.map +1 -0
  147. package/dist/utils/animated-icons/copy-01.d.ts +13 -0
  148. package/dist/utils/animated-icons/copy-01.d.ts.map +1 -0
  149. package/dist/utils/animated-icons/crown.d.ts +11 -0
  150. package/dist/utils/animated-icons/crown.d.ts.map +1 -0
  151. package/dist/utils/animated-icons/download-01.d.ts +11 -0
  152. package/dist/utils/animated-icons/download-01.d.ts.map +1 -0
  153. package/dist/utils/animated-icons/edit-02.d.ts +11 -0
  154. package/dist/utils/animated-icons/edit-02.d.ts.map +1 -0
  155. package/dist/utils/animated-icons/home-01.d.ts +11 -0
  156. package/dist/utils/animated-icons/home-01.d.ts.map +1 -0
  157. package/dist/utils/animated-icons/image-01.d.ts +13 -0
  158. package/dist/utils/animated-icons/image-01.d.ts.map +1 -0
  159. package/dist/utils/animated-icons/index.d.ts +85 -0
  160. package/dist/utils/animated-icons/index.d.ts.map +1 -0
  161. package/dist/utils/animated-icons/information-circle.d.ts +11 -0
  162. package/dist/utils/animated-icons/information-circle.d.ts.map +1 -0
  163. package/dist/utils/animated-icons/link-01.d.ts +11 -0
  164. package/dist/utils/animated-icons/link-01.d.ts.map +1 -0
  165. package/dist/utils/animated-icons/mail-01.d.ts +11 -0
  166. package/dist/utils/animated-icons/mail-01.d.ts.map +1 -0
  167. package/dist/utils/animated-icons/maximize-screen.d.ts +11 -0
  168. package/dist/utils/animated-icons/maximize-screen.d.ts.map +1 -0
  169. package/dist/utils/animated-icons/message-01.d.ts +11 -0
  170. package/dist/utils/animated-icons/message-01.d.ts.map +1 -0
  171. package/dist/utils/animated-icons/mic-01.d.ts +11 -0
  172. package/dist/utils/animated-icons/mic-01.d.ts.map +1 -0
  173. package/dist/utils/animated-icons/moon-02.d.ts +11 -0
  174. package/dist/utils/animated-icons/moon-02.d.ts.map +1 -0
  175. package/dist/utils/animated-icons/more-horizontal.d.ts +11 -0
  176. package/dist/utils/animated-icons/more-horizontal.d.ts.map +1 -0
  177. package/dist/utils/animated-icons/more-vertical.d.ts +11 -0
  178. package/dist/utils/animated-icons/more-vertical.d.ts.map +1 -0
  179. package/dist/utils/animated-icons/pause.d.ts +11 -0
  180. package/dist/utils/animated-icons/pause.d.ts.map +1 -0
  181. package/dist/utils/animated-icons/pin.d.ts +11 -0
  182. package/dist/utils/animated-icons/pin.d.ts.map +1 -0
  183. package/dist/utils/animated-icons/play.d.ts +11 -0
  184. package/dist/utils/animated-icons/play.d.ts.map +1 -0
  185. package/dist/utils/animated-icons/plus-sign.d.ts +11 -0
  186. package/dist/utils/animated-icons/plus-sign.d.ts.map +1 -0
  187. package/dist/utils/animated-icons/qr-code-01.d.ts +11 -0
  188. package/dist/utils/animated-icons/qr-code-01.d.ts.map +1 -0
  189. package/dist/utils/animated-icons/refresh.d.ts +11 -0
  190. package/dist/utils/animated-icons/refresh.d.ts.map +1 -0
  191. package/dist/utils/animated-icons/search-01.d.ts +11 -0
  192. package/dist/utils/animated-icons/search-01.d.ts.map +1 -0
  193. package/dist/utils/animated-icons/sent.d.ts +11 -0
  194. package/dist/utils/animated-icons/sent.d.ts.map +1 -0
  195. package/dist/utils/animated-icons/settings-01.d.ts +11 -0
  196. package/dist/utils/animated-icons/settings-01.d.ts.map +1 -0
  197. package/dist/utils/animated-icons/share-08.d.ts +11 -0
  198. package/dist/utils/animated-icons/share-08.d.ts.map +1 -0
  199. package/dist/utils/animated-icons/shield-02.d.ts +11 -0
  200. package/dist/utils/animated-icons/shield-02.d.ts.map +1 -0
  201. package/dist/utils/animated-icons/smile.d.ts +11 -0
  202. package/dist/utils/animated-icons/smile.d.ts.map +1 -0
  203. package/dist/utils/animated-icons/sparkles.d.ts +11 -0
  204. package/dist/utils/animated-icons/sparkles.d.ts.map +1 -0
  205. package/dist/utils/animated-icons/star.d.ts +11 -0
  206. package/dist/utils/animated-icons/star.d.ts.map +1 -0
  207. package/dist/utils/animated-icons/thumbs-up.d.ts +11 -0
  208. package/dist/utils/animated-icons/thumbs-up.d.ts.map +1 -0
  209. package/dist/utils/animated-icons/upload-01.d.ts +11 -0
  210. package/dist/utils/animated-icons/upload-01.d.ts.map +1 -0
  211. package/dist/utils/animated-icons/user-add-01.d.ts +11 -0
  212. package/dist/utils/animated-icons/user-add-01.d.ts.map +1 -0
  213. package/dist/utils/animated-icons/user-group.d.ts +11 -0
  214. package/dist/utils/animated-icons/user-group.d.ts.map +1 -0
  215. package/dist/utils/animated-icons/user-remove-01.d.ts +11 -0
  216. package/dist/utils/animated-icons/user-remove-01.d.ts.map +1 -0
  217. package/dist/utils/animated-icons/video-01.d.ts +11 -0
  218. package/dist/utils/animated-icons/video-01.d.ts.map +1 -0
  219. package/dist/utils/animated-icons/volume-high.d.ts +11 -0
  220. package/dist/utils/animated-icons/volume-high.d.ts.map +1 -0
  221. package/dist/utils/animated-icons/volume-mute-01.d.ts +11 -0
  222. package/dist/utils/animated-icons/volume-mute-01.d.ts.map +1 -0
  223. package/dist/utils/animated-icons/zoom-in-area.d.ts +11 -0
  224. package/dist/utils/animated-icons/zoom-in-area.d.ts.map +1 -0
  225. package/dist/utils/animated-icons/zoom-out-area.d.ts +11 -0
  226. package/dist/utils/animated-icons/zoom-out-area.d.ts.map +1 -0
  227. package/dist/utils/feedback.d.ts +5 -0
  228. package/dist/utils/feedback.d.ts.map +1 -0
  229. package/dist/utils/icons.d.ts +42 -42
  230. package/dist/utils/icons.d.ts.map +1 -1
  231. package/dist/utils/index.d.ts +5 -0
  232. package/dist/utils/index.d.ts.map +1 -1
  233. package/dist/utils/index.js +297 -1
  234. package/package.json +25 -8
  235. package/dist/chunk-A3L7BOCE.js +0 -210
@@ -1,6 +1,124 @@
1
1
  "use client";
2
2
  import {
3
+ captureFeedbackScreenshot,
4
+ collectBrowserFeedbackEvidence
5
+ } from "../chunk-FFPNO2MY.js";
6
+ import {
7
+ Alert02Icon,
8
+ ArrowDown01Icon,
9
+ ArrowLeft01Icon,
10
+ ArrowLeft02Icon,
11
+ ArrowLeft02Icon2,
12
+ ArrowRight01Icon,
13
+ ArrowUp01Icon,
14
+ Calendar01Icon,
15
+ CallEnd01Icon,
16
+ Cancel01Icon,
17
+ Cancel01Icon2,
18
+ CancelCircleIcon,
19
+ CheckmarkCircle02Icon,
20
+ CircleIcon,
21
+ Clock01Icon,
22
+ Clock01Icon2,
23
+ ColumnIcon,
24
+ Copy01Icon,
25
+ Copy01Icon2,
26
+ Crown01Icon,
27
+ CrownIcon,
28
+ Download01Icon,
29
+ Download01Icon2,
30
+ Edit02Icon,
31
+ Edit02Icon2,
32
+ FileTextIcon,
33
+ GridIcon,
34
+ HandIcon,
35
+ Home01Icon,
36
+ Home01Icon2,
37
+ Image01Icon,
38
+ Image01Icon2,
39
+ InformationCircleIcon,
40
+ InformationCircleIcon2,
41
+ LayoutGridIcon,
42
+ LayoutTableIcon,
43
+ Link01Icon,
44
+ Link01Icon2,
45
+ Loading01Icon,
46
+ Mail01Icon,
47
+ Mail01Icon2,
48
+ Maximize01Icon,
49
+ MaximizeScreenIcon,
50
+ Message01Icon,
51
+ Message01Icon2,
52
+ Mic01Icon,
53
+ Microphone01Icon,
54
+ MicrophoneOff01Icon,
55
+ Monitor01Icon,
56
+ MonitorOffIcon,
57
+ Moon02Icon,
58
+ Moon02Icon2,
59
+ MoreHorizontalIcon,
60
+ MoreHorizontalIcon2,
61
+ MoreVerticalIcon,
62
+ MoreVerticalIcon2,
3
63
  PARTICIPANT_GRADIENT_PRESETS,
64
+ PauseIcon,
65
+ PauseIcon2,
66
+ PictureInPictureIcon,
67
+ Pin01Icon,
68
+ PinIcon,
69
+ PlayIcon,
70
+ PlayIcon2,
71
+ PlusSignIcon,
72
+ PlusSignIcon2,
73
+ QrCode01Icon,
74
+ QrCode01Icon2,
75
+ Radio01Icon,
76
+ RefreshIcon,
77
+ RefreshIcon2,
78
+ Search01Icon,
79
+ Search01Icon2,
80
+ SentIcon,
81
+ SentIcon2,
82
+ Settings01Icon,
83
+ Settings01Icon2,
84
+ Share01Icon,
85
+ Share08Icon,
86
+ Shield01Icon,
87
+ Shield02Icon,
88
+ SignalFull02Icon,
89
+ SmileIcon,
90
+ SmileIcon2,
91
+ SparklesIcon,
92
+ SparklesIcon2,
93
+ SquareIcon,
94
+ StarIcon,
95
+ StarIcon2,
96
+ Sun02Icon,
97
+ TextIcon,
98
+ ThumbsUpIcon,
99
+ ThumbsUpIcon2,
100
+ Tick01Icon,
101
+ TickDouble01Icon,
102
+ Upload01Icon,
103
+ Upload01Icon2,
104
+ UserAdd01Icon,
105
+ UserAdd01Icon2,
106
+ UserGroupIcon,
107
+ UserGroupIcon2,
108
+ UserRemove01Icon,
109
+ UserRemove01Icon2,
110
+ Video01Icon,
111
+ Video01Icon2,
112
+ VideoOffIcon,
113
+ VolumeHighIcon,
114
+ VolumeHighIcon2,
115
+ VolumeMute01Icon,
116
+ VolumeMute01Icon2,
117
+ WifiOffIcon,
118
+ ZoomInAreaIcon,
119
+ ZoomInIcon,
120
+ ZoomOutAreaIcon,
121
+ ZoomOutIcon,
4
122
  applyThemeToDocument,
5
123
  cn,
6
124
  getParticipantAvatarGradient,
@@ -14,11 +132,189 @@ import {
14
132
  resolvePortalThemeFromDocument,
15
133
  resolveThemeFromDocument,
16
134
  subscribeToThemeChanges
17
- } from "../chunk-A3L7BOCE.js";
135
+ } from "../chunk-S6OVGZD5.js";
136
+
137
+ // src/utils/animated-icon-renderer.tsx
138
+ import ArrowLeft02IconSvg from "@hugeicons/core-free-icons/ArrowLeft02Icon";
139
+ import Cancel01IconSvg from "@hugeicons/core-free-icons/Cancel01Icon";
140
+ import Clock01IconSvg from "@hugeicons/core-free-icons/Clock01Icon";
141
+ import Copy01IconSvg from "@hugeicons/core-free-icons/Copy01Icon";
142
+ import Crown01IconSvg from "@hugeicons/core-free-icons/CrownIcon";
143
+ import Download01IconSvg from "@hugeicons/core-free-icons/Download01Icon";
144
+ import Edit02IconSvg from "@hugeicons/core-free-icons/Edit02Icon";
145
+ import Home01IconSvg from "@hugeicons/core-free-icons/Home01Icon";
146
+ import Image01IconSvg from "@hugeicons/core-free-icons/Image01Icon";
147
+ import InformationCircleIconSvg from "@hugeicons/core-free-icons/InformationCircleIcon";
148
+ import Link01IconSvg from "@hugeicons/core-free-icons/Link01Icon";
149
+ import Mail01IconSvg from "@hugeicons/core-free-icons/Mail01Icon";
150
+ import MaximizeScreenIconSvg from "@hugeicons/core-free-icons/MaximizeScreenIcon";
151
+ import Message01IconSvg from "@hugeicons/core-free-icons/Message01Icon";
152
+ import Mic01IconSvg from "@hugeicons/core-free-icons/Mic01Icon";
153
+ import Moon02IconSvg from "@hugeicons/core-free-icons/Moon02Icon";
154
+ import MoreHorizontalIconSvg from "@hugeicons/core-free-icons/MoreHorizontalIcon";
155
+ import MoreVerticalIconSvg from "@hugeicons/core-free-icons/MoreVerticalIcon";
156
+ import PauseIconSvg from "@hugeicons/core-free-icons/PauseIcon";
157
+ import PinIconSvg from "@hugeicons/core-free-icons/PinIcon";
158
+ import PlayIconSvg from "@hugeicons/core-free-icons/PlayIcon";
159
+ import PlusSignIconSvg from "@hugeicons/core-free-icons/PlusSignIcon";
160
+ import QrCode01IconSvg from "@hugeicons/core-free-icons/QrCode01Icon";
161
+ import RefreshIconSvg from "@hugeicons/core-free-icons/RefreshIcon";
162
+ import Search01IconSvg from "@hugeicons/core-free-icons/Search01Icon";
163
+ import SentIconSvg from "@hugeicons/core-free-icons/SentIcon";
164
+ import Settings01IconSvg from "@hugeicons/core-free-icons/Settings01Icon";
165
+ import Share01IconSvg from "@hugeicons/core-free-icons/Share01Icon";
166
+ import Shield01IconSvg from "@hugeicons/core-free-icons/Shield01Icon";
167
+ import SmileIconSvg from "@hugeicons/core-free-icons/SmileIcon";
168
+ import SparklesIconSvg from "@hugeicons/core-free-icons/SparklesIcon";
169
+ import StarIconSvg from "@hugeicons/core-free-icons/StarIcon";
170
+ import ThumbsUpIconSvg from "@hugeicons/core-free-icons/ThumbsUpIcon";
171
+ import Upload01IconSvg from "@hugeicons/core-free-icons/Upload01Icon";
172
+ import UserAdd01IconSvg from "@hugeicons/core-free-icons/UserAdd01Icon";
173
+ import UserGroupIconSvg from "@hugeicons/core-free-icons/UserGroupIcon";
174
+ import UserRemove01IconSvg from "@hugeicons/core-free-icons/UserRemove01Icon";
175
+ import Video01IconSvg from "@hugeicons/core-free-icons/Video01Icon";
176
+ import VolumeHighIconSvg from "@hugeicons/core-free-icons/VolumeHighIcon";
177
+ import VolumeMute01IconSvg from "@hugeicons/core-free-icons/VolumeMute01Icon";
178
+ import ZoomInAreaIconSvg from "@hugeicons/core-free-icons/ZoomInAreaIcon";
179
+ import ZoomOutAreaIconSvg from "@hugeicons/core-free-icons/ZoomOutAreaIcon";
180
+ import { HugeiconsIcon } from "@hugeicons/react";
181
+ import { jsx } from "react/jsx-runtime";
182
+ function getIconKey(icon) {
183
+ return JSON.stringify(icon);
184
+ }
185
+ var animatedIcons = /* @__PURE__ */ new Map([
186
+ [getIconKey(ArrowLeft02IconSvg), ArrowLeft02Icon],
187
+ [getIconKey(Cancel01IconSvg), Cancel01Icon],
188
+ [getIconKey(Clock01IconSvg), Clock01Icon],
189
+ [getIconKey(Copy01IconSvg), Copy01Icon],
190
+ [getIconKey(Crown01IconSvg), CrownIcon],
191
+ [getIconKey(Download01IconSvg), Download01Icon],
192
+ [getIconKey(Edit02IconSvg), Edit02Icon],
193
+ [getIconKey(Home01IconSvg), Home01Icon],
194
+ [getIconKey(Image01IconSvg), Image01Icon],
195
+ [getIconKey(InformationCircleIconSvg), InformationCircleIcon],
196
+ [getIconKey(Link01IconSvg), Link01Icon],
197
+ [getIconKey(Mail01IconSvg), Mail01Icon],
198
+ [getIconKey(MaximizeScreenIconSvg), MaximizeScreenIcon],
199
+ [getIconKey(Message01IconSvg), Message01Icon],
200
+ [getIconKey(Mic01IconSvg), Mic01Icon],
201
+ [getIconKey(Moon02IconSvg), Moon02Icon],
202
+ [getIconKey(MoreHorizontalIconSvg), MoreHorizontalIcon],
203
+ [getIconKey(MoreVerticalIconSvg), MoreVerticalIcon],
204
+ [getIconKey(PauseIconSvg), PauseIcon],
205
+ [getIconKey(PinIconSvg), PinIcon],
206
+ [getIconKey(PlayIconSvg), PlayIcon],
207
+ [getIconKey(PlusSignIconSvg), PlusSignIcon],
208
+ [getIconKey(QrCode01IconSvg), QrCode01Icon],
209
+ [getIconKey(RefreshIconSvg), RefreshIcon],
210
+ [getIconKey(Search01IconSvg), Search01Icon],
211
+ [getIconKey(SentIconSvg), SentIcon],
212
+ [getIconKey(Settings01IconSvg), Settings01Icon],
213
+ [getIconKey(Share01IconSvg), Share08Icon],
214
+ [getIconKey(Shield01IconSvg), Shield02Icon],
215
+ [getIconKey(SmileIconSvg), SmileIcon],
216
+ [getIconKey(SparklesIconSvg), SparklesIcon],
217
+ [getIconKey(StarIconSvg), StarIcon],
218
+ [getIconKey(ThumbsUpIconSvg), ThumbsUpIcon],
219
+ [getIconKey(Upload01IconSvg), Upload01Icon],
220
+ [getIconKey(UserAdd01IconSvg), UserAdd01Icon],
221
+ [getIconKey(UserGroupIconSvg), UserGroupIcon],
222
+ [getIconKey(UserRemove01IconSvg), UserRemove01Icon],
223
+ [getIconKey(Video01IconSvg), Video01Icon],
224
+ [getIconKey(VolumeHighIconSvg), VolumeHighIcon],
225
+ [getIconKey(VolumeMute01IconSvg), VolumeMute01Icon],
226
+ [getIconKey(ZoomInAreaIconSvg), ZoomInAreaIcon],
227
+ [getIconKey(ZoomOutAreaIconSvg), ZoomOutAreaIcon]
228
+ ]);
229
+ function AnimatedHugeiconsIcon({ icon, size = 24, strokeWidth, absoluteStrokeWidth = false, color = "currentColor", primaryColor, secondaryColor, disableSecondaryOpacity = false, altIcon, showAlt = false, ...props }) {
230
+ const supportsAnimatedRendering = !(showAlt && altIcon) && secondaryColor === void 0 && !disableSecondaryOpacity;
231
+ const AnimatedIcon = supportsAnimatedRendering ? animatedIcons.get(getIconKey(icon)) : void 0;
232
+ if (!AnimatedIcon) {
233
+ return /* @__PURE__ */ jsx(HugeiconsIcon, { icon, size, strokeWidth, absoluteStrokeWidth, color, primaryColor, secondaryColor, disableSecondaryOpacity, altIcon, showAlt, ...props });
234
+ }
235
+ const calculatedStrokeWidth = strokeWidth === void 0 ? void 0 : absoluteStrokeWidth ? strokeWidth * 24 / Number(size) : strokeWidth;
236
+ return /* @__PURE__ */ jsx(AnimatedIcon, { ...props, size, color: primaryColor ?? color, strokeWidth: calculatedStrokeWidth });
237
+ }
18
238
  export {
239
+ Alert02Icon,
240
+ Copy01Icon as AnimatedCopy01Icon,
241
+ AnimatedHugeiconsIcon,
242
+ ArrowDown01Icon,
243
+ ArrowLeft01Icon,
244
+ ArrowLeft02Icon2 as ArrowLeft02Icon,
245
+ ArrowRight01Icon,
246
+ ArrowUp01Icon,
247
+ Calendar01Icon,
248
+ CallEnd01Icon,
249
+ Cancel01Icon2 as Cancel01Icon,
250
+ CancelCircleIcon,
251
+ CheckmarkCircle02Icon,
252
+ CircleIcon,
253
+ Clock01Icon2 as Clock01Icon,
254
+ ColumnIcon,
255
+ Copy01Icon2 as Copy01Icon,
256
+ Crown01Icon,
257
+ Download01Icon2 as Download01Icon,
258
+ Edit02Icon2 as Edit02Icon,
259
+ FileTextIcon,
260
+ GridIcon,
261
+ HandIcon,
262
+ Home01Icon2 as Home01Icon,
263
+ Image01Icon2 as Image01Icon,
264
+ InformationCircleIcon2 as InformationCircleIcon,
265
+ LayoutGridIcon,
266
+ LayoutTableIcon,
267
+ Link01Icon2 as Link01Icon,
268
+ Loading01Icon,
269
+ Mail01Icon2 as Mail01Icon,
270
+ Maximize01Icon,
271
+ Message01Icon2 as Message01Icon,
272
+ Microphone01Icon,
273
+ MicrophoneOff01Icon,
274
+ Monitor01Icon,
275
+ MonitorOffIcon,
276
+ Moon02Icon2 as Moon02Icon,
277
+ MoreHorizontalIcon2 as MoreHorizontalIcon,
278
+ MoreVerticalIcon2 as MoreVerticalIcon,
19
279
  PARTICIPANT_GRADIENT_PRESETS,
280
+ PauseIcon2 as PauseIcon,
281
+ PictureInPictureIcon,
282
+ Pin01Icon,
283
+ PlayIcon2 as PlayIcon,
284
+ PlusSignIcon2 as PlusSignIcon,
285
+ QrCode01Icon2 as QrCode01Icon,
286
+ Radio01Icon,
287
+ RefreshIcon2 as RefreshIcon,
288
+ Search01Icon2 as Search01Icon,
289
+ SentIcon2 as SentIcon,
290
+ Settings01Icon2 as Settings01Icon,
291
+ Share01Icon,
292
+ Shield01Icon,
293
+ SignalFull02Icon,
294
+ SmileIcon2 as SmileIcon,
295
+ SparklesIcon2 as SparklesIcon,
296
+ SquareIcon,
297
+ StarIcon2 as StarIcon,
298
+ Sun02Icon,
299
+ TextIcon,
300
+ ThumbsUpIcon2 as ThumbsUpIcon,
301
+ Tick01Icon,
302
+ TickDouble01Icon,
303
+ Upload01Icon2 as Upload01Icon,
304
+ UserAdd01Icon2 as UserAdd01Icon,
305
+ UserGroupIcon2 as UserGroupIcon,
306
+ UserRemove01Icon2 as UserRemove01Icon,
307
+ Video01Icon2 as Video01Icon,
308
+ VideoOffIcon,
309
+ VolumeHighIcon2 as VolumeHighIcon,
310
+ VolumeMute01Icon2 as VolumeMute01Icon,
311
+ WifiOffIcon,
312
+ ZoomInIcon,
313
+ ZoomOutIcon,
20
314
  applyThemeToDocument,
315
+ captureFeedbackScreenshot,
21
316
  cn,
317
+ collectBrowserFeedbackEvidence,
22
318
  getParticipantAvatarGradient,
23
319
  getParticipantAvatarRecipe,
24
320
  getParticipantBorder,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q9labsai/chalk-react",
3
- "version": "4.1.14",
3
+ "version": "4.1.16",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,6 +29,9 @@
29
29
  ],
30
30
  "*": [
31
31
  "./dist/index.d.ts"
32
+ ],
33
+ "preview": [
34
+ "./dist/test-support/index.d.ts"
32
35
  ]
33
36
  }
34
37
  },
@@ -51,6 +54,16 @@
51
54
  "./utils": {
52
55
  "types": "./dist/utils/index.d.ts",
53
56
  "import": "./dist/utils/index.js"
57
+ },
58
+ "./headless": {
59
+ "types": "./dist/headless.d.ts",
60
+ "import": "./dist/headless.js",
61
+ "default": "./dist/headless.js"
62
+ },
63
+ "./preview": {
64
+ "types": "./dist/test-support/index.d.ts",
65
+ "import": "./dist/test-support/index.js",
66
+ "default": "./dist/test-support/index.js"
54
67
  }
55
68
  },
56
69
  "publishConfig": {
@@ -61,12 +74,15 @@
61
74
  "@base-ui/react": "^1.7.0",
62
75
  "@hugeicons/core-free-icons": "^4.2.3",
63
76
  "@hugeicons/react": "^1.1.9",
64
- "@q9labsai/chalk-client": "^4.1.14",
65
- "@q9labsai/chalk-ui": "^4.1.14",
66
- "@q9labsai/chalk-whiteboard": "^4.1.14",
67
- "@q9labsai/facehash": "^4.1.14",
77
+ "@q9labsai/chalk-client": "^4.1.16",
78
+ "@q9labsai/chalk-ui": "^4.1.16",
79
+ "@q9labsai/chalk-whiteboard": "^4.1.16",
80
+ "@q9labsai/facehash": "^4.1.16",
81
+ "@q9labsai/recording-presentation": "^0.1.0",
68
82
  "class-variance-authority": "^0.7.1",
69
83
  "clsx": "^2.1.1",
84
+ "modern-screenshot": "^4.7.0",
85
+ "motion": "^12.43.0",
70
86
  "qrcode.react": "^4.2.0",
71
87
  "sonner": "^2.0.8",
72
88
  "tailwind-merge": "^3.6.0"
@@ -86,10 +102,11 @@
86
102
  },
87
103
  "peerDependenciesMeta": {},
88
104
  "scripts": {
89
- "build": "rm -rf ./dist && NODE_ENV=production tsup ./src/index.ts ./src/components/index.ts ./src/components/ui/index.ts ./src/utils/index.ts --format esm --out-dir ./dist --platform browser --external react --external react-dom --external @base-ui/react --external @hugeicons/core-free-icons --external @hugeicons/react --external @q9labsai/chalk-client --external @q9labsai/chalk-ui --external @q9labsai/chalk-ui/reactions --external @q9labsai/chalk-ui/assets --external @q9labsai/chalk-whiteboard --external @q9labsai/facehash --external @q9labsai/facehash/react --external class-variance-authority --external clsx --external sonner --external tailwind-merge && pnpm run build:fix-use-client && pnpm run build:types",
90
- "build:fix-use-client": "node -e \"const fs=require('fs');const files=['./dist/index.js','./dist/components/index.js','./dist/components/ui/index.js','./dist/utils/index.js'];for(const f of files){if(!fs.existsSync(f))continue;let c=fs.readFileSync(f,'utf8');c=c.replace(/['\\\"]use client['\\\"];?\\n?/g,'');c='\\\"use client\\\";\\n'+c;fs.writeFileSync(f,c);}\"",
105
+ "test": "pnpm exec vitest run",
106
+ "build": "rm -rf ./dist && NODE_ENV=production tsup ./src/index.ts ./src/components/index.ts ./src/components/ui/index.ts ./src/utils/index.ts ./src/headless.ts ./src/test-support/index.ts --format esm --out-dir ./dist --platform browser --external react --external react-dom --external motion --external @base-ui/react --external @hugeicons/core-free-icons --external @hugeicons/react --external @q9labsai/chalk-client --external @q9labsai/recording-presentation --external @q9labsai/chalk-ui --external @q9labsai/chalk-ui/reactions --external @q9labsai/chalk-ui/assets --external @q9labsai/chalk-whiteboard --external @q9labsai/facehash --external @q9labsai/facehash/react --external class-variance-authority --external clsx --external modern-screenshot --external sonner --external tailwind-merge && pnpm run build:fix-use-client && pnpm run build:types",
107
+ "build:fix-use-client": "node -e \"const fs=require('fs');const files=['./dist/index.js','./dist/components/index.js','./dist/components/ui/index.js','./dist/utils/index.js','./dist/test-support/index.js'];for(const f of files){if(!fs.existsSync(f))continue;let c=fs.readFileSync(f,'utf8');c=c.replace(/['\\\"]use client['\\\"];?\\n?/g,'');c='\\\"use client\\\";\\n'+c;fs.writeFileSync(f,c);}\"",
91
108
  "build:types": "rm -f tsconfig.tsbuildinfo && tsc --build tsconfig.json",
92
- "dev": "tsup ./src/index.ts ./src/components/index.ts ./src/components/ui/index.ts ./src/utils/index.ts --format esm --out-dir ./dist --platform browser --external react --external react-dom --external @base-ui/react --external @hugeicons/core-free-icons --external @hugeicons/react --external @q9labsai/chalk-client --external @q9labsai/chalk-ui --external @q9labsai/chalk-ui/reactions --external @q9labsai/chalk-ui/assets --external @q9labsai/chalk-whiteboard --external @q9labsai/facehash --external @q9labsai/facehash/react --external class-variance-authority --external clsx --external sonner --external tailwind-merge --watch",
109
+ "dev": "tsup ./src/index.ts ./src/components/index.ts ./src/components/ui/index.ts ./src/utils/index.ts ./src/headless.ts ./src/test-support/index.ts --format esm --out-dir ./dist --platform browser --external react --external react-dom --external motion --external @base-ui/react --external @hugeicons/core-free-icons --external @hugeicons/react --external @q9labsai/chalk-client --external @q9labsai/recording-presentation --external @q9labsai/chalk-ui --external @q9labsai/chalk-ui/reactions --external @q9labsai/chalk-ui/assets --external @q9labsai/chalk-whiteboard --external @q9labsai/facehash --external @q9labsai/facehash/react --external class-variance-authority --external clsx --external modern-screenshot --external sonner --external tailwind-merge --watch",
93
110
  "check-types": "tsc --project tsconfig.check-types.json --noEmit",
94
111
  "lint": "pnpm run check:tokens && pnpm exec oxfmt --check . && tsc --project tsconfig.check-types.json --noEmit",
95
112
  "check:tokens": "node ./scripts/check-token-reach.mjs",
@@ -1,210 +0,0 @@
1
- // src/utils/cn.ts
2
- import { clsx } from "clsx";
3
- import { twMerge } from "tailwind-merge";
4
- function cn(...inputs) {
5
- return twMerge(clsx(inputs));
6
- }
7
-
8
- // src/utils/colorGenerator.ts
9
- var PARTICIPANT_GRADIENT_PRESETS = [
10
- { id: "aurora", label: "Aurora", from: "#0ea5e9", to: "#22c55e" },
11
- { id: "ember", label: "Ember", from: "#f97316", to: "#ef4444" },
12
- { id: "orchid", label: "Orchid", from: "#a855f7", to: "#ec4899" },
13
- { id: "cobalt", label: "Cobalt", from: "#2563eb", to: "#14b8a6" },
14
- { id: "gold", label: "Gold", from: "#eab308", to: "#f97316" },
15
- { id: "slate", label: "Slate", from: "#64748b", to: "#94a3b8" }
16
- ];
17
- var AUTO_PALETTE = [
18
- ["#315f72", "#dcebef"],
19
- ["#5c6650", "#e3eadf"],
20
- ["#6b5b4f", "#ece3dc"],
21
- ["#64576b", "#e8e0ea"],
22
- ["#49645d", "#dfeae6"],
23
- ["#665d42", "#ebe6d6"],
24
- ["#4d5d73", "#e1e6ec"],
25
- ["#6d5158", "#eee0e3"]
26
- ];
27
- function hashIdentity(identity) {
28
- let hash = 2166136261;
29
- for (const char of identity.trim().toLowerCase() || "chalk") {
30
- hash ^= char.charCodeAt(0);
31
- hash = Math.imul(hash, 16777619);
32
- }
33
- return hash >>> 0;
34
- }
35
- function resolveGradient(identity = "chalk", preference) {
36
- if (preference?.mode === "custom" && preference.from && preference.to) {
37
- return [preference.from, preference.to];
38
- }
39
- return AUTO_PALETTE[hashIdentity(identity) % AUTO_PALETTE.length] ?? ["#64748b", "#94a3b8"];
40
- }
41
- function getParticipantInitial(name) {
42
- return (name?.trim()?.[0] ?? "?").toUpperCase();
43
- }
44
- function getParticipantInitials(name) {
45
- const parts = (name ?? "").trim().split(/\s+/).filter(Boolean);
46
- const first = parts[0]?.[0] ?? getParticipantInitial(name);
47
- const second = parts[1]?.[0] ?? "";
48
- return (parts.length > 1 ? first + second : first).toUpperCase();
49
- }
50
- function getParticipantColor(identity = "chalk", preference) {
51
- const [primary, secondary] = resolveGradient(identity, preference);
52
- return {
53
- primary,
54
- secondary,
55
- text: "#ffffff",
56
- gradientEnd: secondary
57
- };
58
- }
59
- function getParticipantGradient(identity = "chalk", preference) {
60
- const [primary, secondary] = resolveGradient(identity, preference);
61
- return `linear-gradient(135deg, ${primary}, ${secondary})`;
62
- }
63
- function getParticipantAvatarGradient(identity = "chalk", preference) {
64
- return getParticipantGradient(identity, preference);
65
- }
66
- function getParticipantBorder(identity = "chalk", preference) {
67
- return getParticipantColor(identity, preference).primary;
68
- }
69
- function getParticipantThemeVariables(identity = "chalk", preference) {
70
- const colors = getParticipantColor(identity, preference);
71
- return {
72
- "--primary": colors.primary,
73
- "--ring": colors.primary,
74
- "--chalk-accent": colors.primary,
75
- "--chalk-accent-2": colors.secondary
76
- };
77
- }
78
- function getParticipantAvatarRecipe(identity = "chalk", preference) {
79
- const colors = getParticipantColor(identity, preference);
80
- const avatarGradient = getParticipantGradient(identity, preference);
81
- return {
82
- initials: getParticipantInitials(identity),
83
- gradient: avatarGradient,
84
- avatarGradient,
85
- darkerAvatarGradient: `linear-gradient(135deg, ${colors.primary}, #111827)`,
86
- color: colors.primary,
87
- border: colors.primary,
88
- facehashColors: [colors.primary]
89
- };
90
- }
91
-
92
- // src/utils/theme.ts
93
- var THEME_ATTRIBUTE_NAMES = ["data-chalk-theme", "data-theme"];
94
- var SYSTEM_DARK_QUERY = "(prefers-color-scheme: dark)";
95
- var normalizeTheme = (value) => {
96
- if (value === "dark" || value === "light") {
97
- return value;
98
- }
99
- return null;
100
- };
101
- var resolveThemeFromElement = (element) => {
102
- if (!element) return null;
103
- for (const attributeName of THEME_ATTRIBUTE_NAMES) {
104
- const attributeTheme = normalizeTheme(element.getAttribute(attributeName));
105
- if (attributeTheme) return attributeTheme;
106
- }
107
- const classList = element.classList;
108
- if (classList.contains("dark")) return "dark";
109
- if (classList.contains("light")) return "light";
110
- return null;
111
- };
112
- var resolveThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
113
- if (typeof document === "undefined") return defaultTheme;
114
- const explicitTheme = resolveThemeFromElement(document.documentElement) ?? resolveThemeFromElement(document.body);
115
- if (explicitTheme) return explicitTheme;
116
- if (allowSystem && typeof window !== "undefined" && typeof window.matchMedia === "function") {
117
- return window.matchMedia(SYSTEM_DARK_QUERY).matches ? "dark" : "light";
118
- }
119
- return defaultTheme;
120
- };
121
- var resolvePortalThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
122
- if (typeof document === "undefined") return defaultTheme;
123
- const portalTheme = normalizeTheme(document.querySelector("[data-chalk-theme]")?.getAttribute("data-chalk-theme"));
124
- if (portalTheme) return portalTheme;
125
- return resolveThemeFromDocument({ defaultTheme, allowSystem });
126
- };
127
- var applyThemeToDocument = (theme) => {
128
- if (typeof document === "undefined") return;
129
- const root = document.documentElement;
130
- root.classList.remove("light", "dark");
131
- root.classList.add(theme);
132
- for (const element of [root, document.body]) {
133
- if (!element) continue;
134
- for (const attributeName of THEME_ATTRIBUTE_NAMES) {
135
- if (element.hasAttribute(attributeName)) {
136
- element.setAttribute(attributeName, theme);
137
- }
138
- }
139
- }
140
- };
141
- var subscribeToThemeChanges = (onThemeChange, { defaultTheme = "light", allowSystem = true, attributes = ["class", ...THEME_ATTRIBUTE_NAMES] } = {}) => {
142
- if (typeof document === "undefined") return () => {
143
- };
144
- let lastTheme = resolveThemeFromDocument({ defaultTheme, allowSystem });
145
- const emitTheme = () => {
146
- lastTheme = resolveThemeFromDocument({ defaultTheme, allowSystem });
147
- onThemeChange(lastTheme);
148
- };
149
- const emitThemeIfChanged = () => {
150
- const nextTheme = resolveThemeFromDocument({ defaultTheme, allowSystem });
151
- if (nextTheme !== lastTheme) {
152
- lastTheme = nextTheme;
153
- onThemeChange(nextTheme);
154
- }
155
- };
156
- emitTheme();
157
- const observer = new MutationObserver((mutations) => {
158
- for (const mutation of mutations) {
159
- if (mutation.type === "attributes" && attributes.includes(mutation.attributeName ?? "")) {
160
- emitTheme();
161
- return;
162
- }
163
- }
164
- });
165
- const observerOptions = {
166
- attributes: true,
167
- attributeFilter: [...attributes]
168
- };
169
- observer.observe(document.documentElement, observerOptions);
170
- if (document.body) {
171
- observer.observe(document.body, observerOptions);
172
- }
173
- const intervalId = window.setInterval(emitThemeIfChanged, 250);
174
- let mediaQueryList = null;
175
- let removeSystemListener = () => {
176
- };
177
- if (allowSystem && typeof window !== "undefined" && typeof window.matchMedia === "function") {
178
- mediaQueryList = window.matchMedia(SYSTEM_DARK_QUERY);
179
- const handleChange = () => emitTheme();
180
- if (typeof mediaQueryList.addEventListener === "function") {
181
- mediaQueryList.addEventListener("change", handleChange);
182
- removeSystemListener = () => mediaQueryList?.removeEventListener("change", handleChange);
183
- } else if (typeof mediaQueryList.addListener === "function") {
184
- mediaQueryList.addListener(handleChange);
185
- removeSystemListener = () => mediaQueryList?.removeListener(handleChange);
186
- }
187
- }
188
- return () => {
189
- observer.disconnect();
190
- removeSystemListener();
191
- window.clearInterval(intervalId);
192
- };
193
- };
194
-
195
- export {
196
- cn,
197
- PARTICIPANT_GRADIENT_PRESETS,
198
- getParticipantInitial,
199
- getParticipantInitials,
200
- getParticipantColor,
201
- getParticipantGradient,
202
- getParticipantAvatarGradient,
203
- getParticipantBorder,
204
- getParticipantThemeVariables,
205
- getParticipantAvatarRecipe,
206
- resolveThemeFromDocument,
207
- resolvePortalThemeFromDocument,
208
- applyThemeToDocument,
209
- subscribeToThemeChanges
210
- };