@djangocfg/ui-tools 2.1.404 → 2.1.408

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 (336) hide show
  1. package/README.md +9 -11
  2. package/dist/file-icon/index.cjs +449 -61
  3. package/dist/file-icon/index.cjs.map +1 -1
  4. package/dist/file-icon/index.d.cts +56 -18
  5. package/dist/file-icon/index.d.ts +56 -18
  6. package/dist/file-icon/index.mjs +448 -62
  7. package/dist/file-icon/index.mjs.map +1 -1
  8. package/dist/tree/index.cjs +49 -22
  9. package/dist/tree/index.cjs.map +1 -1
  10. package/dist/tree/index.d.cts +9 -3
  11. package/dist/tree/index.d.ts +9 -3
  12. package/dist/tree/index.mjs +49 -22
  13. package/dist/tree/index.mjs.map +1 -1
  14. package/dist/{types-B_zhyAqR.d.cts → types-eEu8SeiQ.d.cts} +4 -0
  15. package/dist/{types-B_zhyAqR.d.ts → types-eEu8SeiQ.d.ts} +4 -0
  16. package/package.json +13 -16
  17. package/src/components/FloatingToolbar/index.tsx +37 -3
  18. package/src/lib/page-snapshot/__tests__/capture-integration.test.ts +85 -0
  19. package/src/lib/page-snapshot/__tests__/engine.test.ts +36 -0
  20. package/src/lib/page-snapshot/__tests__/redaction-integration.test.ts +99 -0
  21. package/src/lib/page-snapshot/__tests__/tokens.test.ts +17 -0
  22. package/src/lib/page-snapshot/capture/__tests__/budget.test.ts +49 -0
  23. package/src/lib/page-snapshot/capture/__tests__/chrome-filter.test.ts +47 -0
  24. package/src/lib/page-snapshot/capture/__tests__/fold.test.ts +66 -0
  25. package/src/lib/page-snapshot/capture/__tests__/scope.test.ts +74 -0
  26. package/src/lib/page-snapshot/capture/__tests__/walk.test.ts +129 -0
  27. package/src/lib/page-snapshot/capture/accessible-name.ts +73 -0
  28. package/src/lib/page-snapshot/capture/budget.ts +95 -0
  29. package/src/lib/page-snapshot/capture/chrome-filter.ts +81 -0
  30. package/src/lib/page-snapshot/capture/classify.ts +111 -0
  31. package/src/lib/page-snapshot/capture/dom-utils.ts +111 -0
  32. package/src/lib/page-snapshot/capture/fold.ts +96 -0
  33. package/src/lib/page-snapshot/capture/scope.ts +169 -0
  34. package/src/lib/page-snapshot/capture/walk.ts +250 -0
  35. package/src/lib/page-snapshot/cst/__tests__/serialize.test.ts +50 -0
  36. package/src/lib/page-snapshot/cst/directives.ts +47 -0
  37. package/src/lib/page-snapshot/cst/payload.ts +50 -0
  38. package/src/lib/page-snapshot/cst/serialize.ts +84 -0
  39. package/src/lib/page-snapshot/cst/types.ts +115 -0
  40. package/src/lib/page-snapshot/engine.ts +176 -0
  41. package/src/lib/page-snapshot/index.ts +93 -0
  42. package/src/lib/page-snapshot/react/PageSnapshotChip.tsx +72 -0
  43. package/src/lib/page-snapshot/react/PageSnapshotPreview.tsx +78 -0
  44. package/src/lib/page-snapshot/react/__tests__/PageSnapshotChip.test.tsx +54 -0
  45. package/src/lib/page-snapshot/react/__tests__/provider.test.tsx +103 -0
  46. package/src/lib/page-snapshot/react/__tests__/use-page-snapshot-toggle.test.tsx +62 -0
  47. package/src/lib/page-snapshot/react/provider.tsx +162 -0
  48. package/src/lib/page-snapshot/react/use-page-snapshot-toggle.ts +47 -0
  49. package/src/lib/page-snapshot/react/use-page-snapshot.ts +67 -0
  50. package/src/lib/page-snapshot/redaction/__tests__/audit.test.ts +25 -0
  51. package/src/lib/page-snapshot/redaction/__tests__/heuristics.test.ts +73 -0
  52. package/src/lib/page-snapshot/redaction/__tests__/luhn.test.ts +26 -0
  53. package/src/lib/page-snapshot/redaction/__tests__/patterns.test.ts +60 -0
  54. package/src/lib/page-snapshot/redaction/audit.ts +58 -0
  55. package/src/lib/page-snapshot/redaction/heuristics.ts +75 -0
  56. package/src/lib/page-snapshot/redaction/index.ts +75 -0
  57. package/src/lib/page-snapshot/redaction/luhn.ts +25 -0
  58. package/src/lib/page-snapshot/redaction/patterns.ts +111 -0
  59. package/src/lib/page-snapshot/refs/__tests__/registry.test.ts +24 -0
  60. package/src/lib/page-snapshot/refs/registry.ts +46 -0
  61. package/src/lib/page-snapshot/staleness/__tests__/hash.test.ts +34 -0
  62. package/src/lib/page-snapshot/staleness/hash.ts +20 -0
  63. package/src/lib/page-snapshot/tokens.ts +15 -0
  64. package/src/tools/AudioPlayer/context/PlayerProvider.tsx +13 -14
  65. package/src/tools/AudioPlayer/hooks/useAudioElementEvents.ts +55 -6
  66. package/src/tools/AudioPlayer/lazy.tsx +13 -27
  67. package/src/tools/AudioPlayer/parts/Meta/TimeDisplay.tsx +2 -5
  68. package/src/tools/Chat/README.md +267 -39
  69. package/src/tools/Chat/composer/Composer.tsx +471 -0
  70. package/src/tools/Chat/composer/ComposerActionBar.tsx +65 -0
  71. package/src/tools/Chat/composer/ComposerBanner.tsx +128 -0
  72. package/src/tools/Chat/composer/ComposerButton.tsx +64 -0
  73. package/src/tools/Chat/composer/ComposerFooter.tsx +90 -0
  74. package/src/tools/Chat/composer/ComposerMenuButton.tsx +62 -0
  75. package/src/tools/Chat/composer/ComposerModelPicker.tsx +104 -0
  76. package/src/tools/Chat/composer/ComposerRichTextarea.tsx +88 -0
  77. package/src/tools/Chat/composer/ComposerToolPill.tsx +95 -0
  78. package/src/tools/Chat/composer/index.ts +45 -0
  79. package/src/tools/Chat/composer/size-context.tsx +26 -0
  80. package/src/tools/Chat/composer/types.ts +143 -0
  81. package/src/tools/Chat/composer/useComposerActions.tsx +164 -0
  82. package/src/tools/Chat/context/ChatProvider.tsx +54 -3
  83. package/src/tools/Chat/core/__tests__/metadata.test.ts +69 -0
  84. package/src/tools/Chat/core/index.ts +23 -1
  85. package/src/tools/Chat/core/markdown.ts +1 -1
  86. package/src/tools/Chat/core/metadata.ts +47 -0
  87. package/src/tools/Chat/core/payload-dispatch.ts +1 -1
  88. package/src/tools/Chat/core/transport/http.ts +71 -32
  89. package/src/tools/Chat/core/transport/sse.ts +18 -10
  90. package/src/tools/Chat/highlight/HighlightOverlay.tsx +101 -0
  91. package/src/tools/Chat/highlight/README.md +103 -0
  92. package/src/tools/Chat/highlight/SpotlightCanvas.tsx +153 -0
  93. package/src/tools/Chat/highlight/__tests__/HighlightOverlay.test.tsx +112 -0
  94. package/src/tools/Chat/highlight/__tests__/resolveRef.test.ts +55 -0
  95. package/src/tools/Chat/highlight/index.ts +21 -0
  96. package/src/tools/Chat/highlight/resolveRef.ts +42 -0
  97. package/src/tools/Chat/highlight/types.ts +49 -0
  98. package/src/tools/Chat/highlight/useHighlightTargets.ts +128 -0
  99. package/src/tools/Chat/hooks/index.ts +0 -5
  100. package/src/tools/Chat/hooks/useAutoFocusOnStreamEnd.ts +28 -47
  101. package/src/tools/Chat/hooks/useChat.ts +47 -14
  102. package/src/tools/Chat/hooks/useChatComposer.ts +2 -2
  103. package/src/tools/Chat/hooks/useChatLayout.ts +1 -1
  104. package/src/tools/Chat/hooks/useStreamEndFocus.ts +54 -0
  105. package/src/tools/Chat/index.ts +25 -219
  106. package/src/tools/Chat/launcher/ChatDock.tsx +1 -1
  107. package/src/tools/Chat/launcher/ChatLauncher.tsx +1 -1
  108. package/src/tools/Chat/launcher/{ChatHeader.tsx → header/ChatHeader.tsx} +24 -11
  109. package/src/tools/Chat/launcher/{ChatHeaderActionButton.tsx → header/ChatHeaderActionButton.tsx} +34 -3
  110. package/src/tools/Chat/launcher/{ChatHeaderLanguageButton.tsx → header/ChatHeaderLanguageButton.tsx} +2 -2
  111. package/src/tools/Chat/launcher/{ChatHeaderModeToggle.tsx → header/ChatHeaderModeToggle.tsx} +1 -1
  112. package/src/tools/Chat/launcher/{ChatHeaderResetButton.tsx → header/ChatHeaderResetButton.tsx} +2 -1
  113. package/src/tools/Chat/launcher/{HeaderSlots.tsx → header/HeaderSlots.tsx} +3 -3
  114. package/src/tools/Chat/launcher/header/index.ts +26 -0
  115. package/src/tools/Chat/launcher/index.ts +3 -10
  116. package/src/tools/Chat/lazy.tsx +38 -284
  117. package/src/tools/Chat/{components → messages}/MessageBubble.tsx +58 -5
  118. package/src/tools/Chat/{components → messages}/MessageList.tsx +8 -25
  119. package/src/tools/Chat/messages/blocks/MessageBlocks.tsx +131 -0
  120. package/src/tools/Chat/messages/blocks/builtin.tsx +91 -0
  121. package/src/tools/Chat/messages/blocks/index.ts +12 -0
  122. package/src/tools/Chat/messages/blocks/registry.tsx +42 -0
  123. package/src/tools/Chat/messages/blocks/renderers/AudioBlock.tsx +20 -0
  124. package/src/tools/Chat/messages/blocks/renderers/CodeBlock.tsx +19 -0
  125. package/src/tools/Chat/messages/blocks/renderers/GalleryBlock.tsx +26 -0
  126. package/src/tools/Chat/messages/blocks/renderers/ImageBlock.tsx +27 -0
  127. package/src/tools/Chat/messages/blocks/renderers/JsonBlock.tsx +12 -0
  128. package/src/tools/Chat/messages/blocks/renderers/LottieBlock.tsx +11 -0
  129. package/src/tools/Chat/messages/blocks/renderers/MapBlock.tsx +36 -0
  130. package/src/tools/Chat/messages/blocks/renderers/MermaidBlock.tsx +11 -0
  131. package/src/tools/Chat/messages/blocks/renderers/VideoBlock.tsx +24 -0
  132. package/src/tools/Chat/messages/blocks/renderers/types.ts +8 -0
  133. package/src/tools/Chat/{components → messages}/index.ts +11 -5
  134. package/src/tools/Chat/public.ts +212 -0
  135. package/src/tools/Chat/shell/ChatRoot.tsx +326 -0
  136. package/src/tools/Chat/{components → shell}/EmptyState.tsx +4 -2
  137. package/src/tools/Chat/shell/index.ts +15 -0
  138. package/src/tools/Chat/types/block.ts +120 -0
  139. package/src/tools/Chat/types/config.ts +0 -5
  140. package/src/tools/Chat/types/index.ts +17 -0
  141. package/src/tools/Chat/types/message.ts +3 -0
  142. package/src/tools/Chat/utils/index.ts +4 -0
  143. package/src/tools/CodeEditor/README.md +4 -6
  144. package/src/tools/CodeEditor/components/DiffEditor.tsx +48 -13
  145. package/src/tools/CodeEditor/components/Editor.tsx +96 -44
  146. package/src/tools/CodeEditor/context/EditorProvider.tsx +34 -17
  147. package/src/tools/CodeEditor/hooks/useEditorTheme.ts +92 -99
  148. package/src/tools/CodeEditor/hooks/useMonaco.ts +37 -22
  149. package/src/tools/CodeEditor/lazy.tsx +6 -0
  150. package/src/tools/CodeEditor/lib/index.ts +1 -1
  151. package/src/tools/CodeEditor/lib/themes.ts +3 -39
  152. package/src/tools/CronScheduler/CronScheduler.client.tsx +230 -61
  153. package/src/tools/CronScheduler/components/CustomInput.tsx +21 -4
  154. package/src/tools/CronScheduler/components/DayChips.tsx +13 -11
  155. package/src/tools/CronScheduler/components/MonthDayGrid.tsx +4 -4
  156. package/src/tools/CronScheduler/components/SchedulePreview.tsx +7 -3
  157. package/src/tools/CronScheduler/components/TimeSelector.tsx +1 -1
  158. package/src/tools/CronScheduler/index.tsx +1 -1
  159. package/src/tools/CronScheduler/types/index.ts +8 -3
  160. package/src/tools/CronScheduler/utils/cron-humanize.ts +61 -16
  161. package/src/tools/CronScheduler/utils/cron-parser.ts +13 -4
  162. package/src/tools/FileIcon/FileIcon.tsx +24 -39
  163. package/src/tools/FileIcon/get-file-icon.ts +73 -0
  164. package/src/tools/FileIcon/icons/icon-data.ts +399 -0
  165. package/src/tools/FileIcon/index.ts +4 -0
  166. package/src/tools/FileIcon/loader.ts +17 -35
  167. package/src/tools/FileIcon/specialFolders.ts +18 -0
  168. package/src/tools/Gallery/components/lightbox/GalleryLightbox.tsx +112 -35
  169. package/src/tools/Gallery/components/media/GalleryVideo.tsx +21 -2
  170. package/src/tools/Gallery/components/preview/GalleryCarousel.tsx +11 -1
  171. package/src/tools/Gallery/hooks/usePreloadImages.ts +54 -7
  172. package/src/tools/ImageViewer/components/ImageInfo.tsx +12 -1
  173. package/src/tools/ImageViewer/components/ImageToolbar.tsx +51 -43
  174. package/src/tools/ImageViewer/components/ImageViewer.tsx +106 -26
  175. package/src/tools/ImageViewer/hooks/useImageLoading.ts +13 -0
  176. package/src/tools/ImageViewer/utils/constants.ts +3 -0
  177. package/src/tools/ImageViewer/utils/index.ts +1 -0
  178. package/src/tools/JsonForm/JsonSchemaForm.tsx +4 -1
  179. package/src/tools/JsonForm/templates/ArrayFieldTemplate.tsx +5 -3
  180. package/src/tools/JsonForm/templates/BaseInputTemplate.tsx +7 -4
  181. package/src/tools/JsonForm/templates/ErrorListTemplate.tsx +3 -1
  182. package/src/tools/JsonForm/templates/ObjectFieldTemplate.tsx +23 -3
  183. package/src/tools/JsonForm/widgets/ColorWidget.tsx +20 -12
  184. package/src/tools/JsonForm/widgets/NumberWidget.tsx +14 -9
  185. package/src/tools/JsonForm/widgets/RadioWidget.tsx +78 -0
  186. package/src/tools/JsonForm/widgets/SelectWidget.tsx +1 -0
  187. package/src/tools/JsonForm/widgets/SliderWidget.tsx +7 -4
  188. package/src/tools/JsonForm/widgets/TextWidget.tsx +41 -17
  189. package/src/tools/JsonForm/widgets/index.ts +1 -0
  190. package/src/tools/JsonTree/components/JsonContent.tsx +115 -40
  191. package/src/tools/LottiePlayer/LottiePlayer.client.tsx +177 -72
  192. package/src/tools/LottiePlayer/index.tsx +14 -4
  193. package/src/tools/LottiePlayer/lazy.tsx +11 -3
  194. package/src/tools/LottiePlayer/types.ts +31 -1
  195. package/src/tools/LottiePlayer/useLottie.ts +32 -9
  196. package/src/tools/LottiePlayer/usePrefersReducedMotion.ts +46 -0
  197. package/src/tools/Map/components/LayerSwitcher.tsx +54 -21
  198. package/src/tools/Map/components/MapCluster.tsx +28 -21
  199. package/src/tools/Map/components/MapContainer.tsx +11 -4
  200. package/src/tools/Map/components/MapLegend.tsx +46 -15
  201. package/src/tools/Map/components/MapMarker.tsx +31 -2
  202. package/src/tools/Map/hooks/useMapEvents.ts +64 -105
  203. package/src/tools/MarkdownEditor/MarkdownEditor.tsx +61 -6
  204. package/src/tools/MarkdownEditor/MentionList.tsx +37 -4
  205. package/src/tools/MarkdownEditor/createMentionSuggestion.ts +11 -0
  206. package/src/tools/MarkdownEditor/lazy.tsx +32 -7
  207. package/src/tools/MarkdownEditor/styles.css +13 -0
  208. package/src/tools/MarkdownMessage/CodeBlock.tsx +40 -17
  209. package/src/tools/MarkdownMessage/MarkdownMessage.tsx +26 -6
  210. package/src/tools/MarkdownMessage/components.tsx +22 -9
  211. package/src/tools/MarkdownMessage/types.ts +24 -1
  212. package/src/tools/Mermaid/Mermaid.client.tsx +27 -5
  213. package/src/tools/Mermaid/components/MermaidErrorPanel.tsx +31 -0
  214. package/src/tools/Mermaid/components/MermaidFullscreenModal.tsx +14 -17
  215. package/src/tools/Mermaid/hooks/useMermaidRenderer.ts +264 -168
  216. package/src/tools/Mermaid/hooks/useMermaidValidation.ts +76 -10
  217. package/src/tools/Mermaid/index.tsx +6 -0
  218. package/src/tools/Mermaid/utils/mermaid-helpers.ts +141 -18
  219. package/src/tools/OpenapiViewer/components/DocsLayout/EndpointDoc/SchemaFields/FieldRow.tsx +11 -1
  220. package/src/tools/OpenapiViewer/components/DocsLayout/EndpointDoc/SchemaFields/buildTree.ts +49 -20
  221. package/src/tools/OpenapiViewer/components/DocsLayout/EndpointDoc/index.tsx +7 -0
  222. package/src/tools/OpenapiViewer/components/DocsLayout/grouping.ts +7 -4
  223. package/src/tools/OpenapiViewer/constants.ts +3 -0
  224. package/src/tools/OpenapiViewer/hooks/useOpenApiSchema.ts +73 -11
  225. package/src/tools/OpenapiViewer/utils/schemaExport.ts +26 -6
  226. package/src/tools/PrettyCode/PrettyCode.client.tsx +23 -16
  227. package/src/tools/PrettyCode/lazy.tsx +1 -1
  228. package/src/tools/SpeechRecognition/README.md +1 -1
  229. package/src/tools/SpeechRecognition/__tests__/language.test.ts +9 -3
  230. package/src/tools/SpeechRecognition/components/RecordingPulse.tsx +59 -0
  231. package/src/tools/SpeechRecognition/components/index.ts +2 -0
  232. package/src/tools/SpeechRecognition/core/engine/external.ts +24 -7
  233. package/src/tools/SpeechRecognition/core/language.ts +23 -6
  234. package/src/tools/SpeechRecognition/hooks/usePushToTalk.ts +36 -5
  235. package/src/tools/SpeechRecognition/hooks/useSpeechRecognition.ts +18 -11
  236. package/src/tools/SpeechRecognition/widgets/VoiceComposerSlot.tsx +94 -26
  237. package/src/tools/SpeechRecognition/widgets/index.ts +1 -1
  238. package/src/tools/Tree/README.md +4 -8
  239. package/src/tools/Tree/TreeRoot.tsx +22 -10
  240. package/src/tools/Tree/components/TreeContent.tsx +24 -4
  241. package/src/tools/Tree/components/TreeLabel.tsx +8 -2
  242. package/src/tools/Tree/components/TreeRow.tsx +16 -6
  243. package/src/tools/Tree/data/flatten.ts +10 -4
  244. package/src/tools/Tree/types.ts +4 -0
  245. package/src/tools/Uploader/components/UploadAddButton.tsx +29 -6
  246. package/src/tools/Uploader/components/UploadDropzone.tsx +63 -7
  247. package/src/tools/Uploader/components/UploadPageDropOverlay.tsx +19 -5
  248. package/src/tools/Uploader/components/UploadPreviewItem.tsx +47 -17
  249. package/src/tools/Uploader/components/UploadPreviewList.tsx +24 -12
  250. package/src/tools/Uploader/utils/formatters.ts +8 -3
  251. package/src/tools/VideoPlayer/README.md +87 -230
  252. package/src/tools/VideoPlayer/VideoPlayer.tsx +82 -0
  253. package/src/tools/VideoPlayer/canvas/canvas-dispatcher.tsx +34 -0
  254. package/src/tools/VideoPlayer/canvas/hls-canvas.tsx +39 -0
  255. package/src/tools/VideoPlayer/canvas/iframe-canvas.tsx +33 -0
  256. package/src/tools/VideoPlayer/canvas/index.ts +12 -0
  257. package/src/tools/VideoPlayer/canvas/jsx-augmentation.ts +47 -0
  258. package/src/tools/VideoPlayer/canvas/native-canvas.tsx +38 -0
  259. package/src/tools/VideoPlayer/canvas/vimeo-canvas.tsx +40 -0
  260. package/src/tools/VideoPlayer/canvas/youtube-canvas.tsx +78 -0
  261. package/src/tools/VideoPlayer/index.ts +51 -65
  262. package/src/tools/VideoPlayer/lazy.tsx +11 -54
  263. package/src/tools/VideoPlayer/parts/controls-bar.tsx +35 -0
  264. package/src/tools/VideoPlayer/parts/fullscreen.tsx +19 -0
  265. package/src/tools/VideoPlayer/parts/index.ts +15 -0
  266. package/src/tools/VideoPlayer/parts/pip.tsx +19 -0
  267. package/src/tools/VideoPlayer/parts/play-button.tsx +19 -0
  268. package/src/tools/VideoPlayer/parts/playback-rate.tsx +31 -0
  269. package/src/tools/VideoPlayer/parts/poster.tsx +3 -0
  270. package/src/tools/VideoPlayer/parts/seek-bar.tsx +26 -0
  271. package/src/tools/VideoPlayer/parts/volume.tsx +32 -0
  272. package/src/tools/VideoPlayer/styles/video-player.css +141 -0
  273. package/src/tools/VideoPlayer/types.ts +82 -0
  274. package/src/tools/VideoPlayer/utils/parse-embed-url.ts +70 -0
  275. package/src/tools/VideoPlayer/utils/vimeo-id.ts +24 -0
  276. package/src/tools/VideoPlayer/utils/youtube-id.ts +64 -0
  277. package/src/tools/index.ts +37 -29
  278. package/src/tools/Chat/components/AudioToggle.tsx +0 -78
  279. package/src/tools/Chat/components/ChatRoot.tsx +0 -305
  280. package/src/tools/Chat/components/Composer.tsx +0 -216
  281. package/src/tools/Chat/hooks/useChatScroll.ts +0 -145
  282. package/src/tools/Chat/types.ts +0 -9
  283. package/src/tools/JsonTree/components/JsonToolbar.tsx +0 -95
  284. package/src/tools/JsonTree/hooks/useElementCorner.ts +0 -84
  285. package/src/tools/JsonTree/hooks/useNavbarHeight.ts +0 -83
  286. package/src/tools/OpenapiViewer/components/DocsLayout/schemaFields.ts +0 -121
  287. package/src/tools/Tour/README.md +0 -373
  288. package/src/tools/Tour/components/Tour.tsx +0 -12
  289. package/src/tools/Tour/components/TourContent.tsx +0 -171
  290. package/src/tools/Tour/components/TourNavigation.tsx +0 -77
  291. package/src/tools/Tour/components/TourProgress.tsx +0 -88
  292. package/src/tools/Tour/components/TourSpotlight.tsx +0 -199
  293. package/src/tools/Tour/components/index.ts +0 -5
  294. package/src/tools/Tour/context/TourContext.ts +0 -19
  295. package/src/tools/Tour/context/TourProvider.tsx +0 -292
  296. package/src/tools/Tour/context/index.ts +0 -2
  297. package/src/tools/Tour/hooks/index.ts +0 -3
  298. package/src/tools/Tour/hooks/useKeyboardNavigation.ts +0 -59
  299. package/src/tools/Tour/hooks/useStepTarget.ts +0 -121
  300. package/src/tools/Tour/hooks/useTour.ts +0 -42
  301. package/src/tools/Tour/index.ts +0 -38
  302. package/src/tools/Tour/types/index.ts +0 -224
  303. package/src/tools/Tour/utils/dom.ts +0 -98
  304. package/src/tools/Tour/utils/index.ts +0 -3
  305. package/src/tools/Tour/utils/logger.ts +0 -3
  306. package/src/tools/Tour/utils/scrollIntoView.ts +0 -24
  307. package/src/tools/VideoPlayer/components/VideoControls.tsx +0 -138
  308. package/src/tools/VideoPlayer/components/VideoErrorFallback.tsx +0 -172
  309. package/src/tools/VideoPlayer/components/VideoPlayer.tsx +0 -201
  310. package/src/tools/VideoPlayer/components/index.ts +0 -14
  311. package/src/tools/VideoPlayer/context/VideoPlayerContext.tsx +0 -52
  312. package/src/tools/VideoPlayer/context/index.ts +0 -8
  313. package/src/tools/VideoPlayer/hooks/index.ts +0 -12
  314. package/src/tools/VideoPlayer/hooks/useVideoPlayerSettings.ts +0 -71
  315. package/src/tools/VideoPlayer/hooks/useVideoPositionCache.ts +0 -117
  316. package/src/tools/VideoPlayer/providers/NativeProvider.tsx +0 -284
  317. package/src/tools/VideoPlayer/providers/StreamProvider.tsx +0 -505
  318. package/src/tools/VideoPlayer/providers/VidstackProvider.tsx +0 -397
  319. package/src/tools/VideoPlayer/providers/index.ts +0 -8
  320. package/src/tools/VideoPlayer/types/index.ts +0 -38
  321. package/src/tools/VideoPlayer/types/player.ts +0 -116
  322. package/src/tools/VideoPlayer/types/provider.ts +0 -93
  323. package/src/tools/VideoPlayer/types/sources.ts +0 -97
  324. package/src/tools/VideoPlayer/utils/debug.ts +0 -14
  325. package/src/tools/VideoPlayer/utils/fileSource.ts +0 -78
  326. package/src/tools/VideoPlayer/utils/index.ts +0 -12
  327. package/src/tools/VideoPlayer/utils/resolvers.ts +0 -75
  328. /package/src/tools/Chat/{config.ts → constants.ts} +0 -0
  329. /package/src/tools/Chat/launcher/{ChatHeaderAudioToggle.tsx → header/ChatHeaderAudioToggle.tsx} +0 -0
  330. /package/src/tools/Chat/{components → messages}/Attachments.tsx +0 -0
  331. /package/src/tools/Chat/{components → messages}/JumpToLatest.tsx +0 -0
  332. /package/src/tools/Chat/{components → messages}/MessageActions.tsx +0 -0
  333. /package/src/tools/Chat/{components → messages}/Sources.tsx +0 -0
  334. /package/src/tools/Chat/{components → messages}/StreamingIndicator.tsx +0 -0
  335. /package/src/tools/Chat/{components → messages}/ToolCalls.tsx +0 -0
  336. /package/src/tools/Chat/{components → shell}/ErrorBanner.tsx +0 -0
@@ -1,95 +0,0 @@
1
- 'use client';
2
-
3
- import { ChevronDown, ChevronUp, Download } from 'lucide-react';
4
- import React, { memo } from 'react';
5
-
6
- import { Button, CopyButton } from '@djangocfg/ui-core/components';
7
-
8
- interface JsonToolbarProps {
9
- /** Viewport right coordinate (distance from right edge) for fixed positioning */
10
- right: number;
11
- /** Bottom edge of the container in viewport coords */
12
- bottom: number;
13
- /** Top edge — used only to detect if block is fully off-screen */
14
- top: number;
15
- isExpanded: boolean;
16
- onToggleExpand: () => void;
17
- jsonString: string;
18
- onDownload: () => void;
19
- showExpandControls: boolean;
20
- showActionButtons: boolean;
21
- }
22
-
23
- const BUTTON_CLASS = 'h-6 w-6 rounded-sm bg-muted/80 hover:bg-muted border border-border/50 backdrop-blur-sm';
24
- const TOOLBAR_H = 24 + 8 + 8;
25
- const OFFSET = 8;
26
-
27
- /**
28
- * JsonToolbar — floating toolbar for JsonTree.
29
- *
30
- * Memoised: re-renders only when any prop changes. Position props
31
- * (`top`, `right`, `bottom`) are primitives, so default shallow
32
- * comparison is sufficient.
33
- */
34
- const JsonToolbar = memo(({
35
- top,
36
- right,
37
- bottom,
38
- isExpanded,
39
- onToggleExpand,
40
- jsonString,
41
- onDownload,
42
- showExpandControls,
43
- showActionButtons,
44
- }: JsonToolbarProps) => {
45
- const viewportHeight = window.visualViewport?.height ?? document.documentElement.clientHeight;
46
-
47
- // Hide when block is fully above or below viewport
48
- if (bottom <= 0 || top >= viewportHeight) return null;
49
- // Hide when block is too small to fit toolbar
50
- if (bottom - top < TOOLBAR_H) return null;
51
-
52
- // Anchor to bottom-right of block, clamped so toolbar stays in viewport
53
- const toolbarBottom = Math.min(bottom - OFFSET, viewportHeight - OFFSET);
54
-
55
- return (
56
- <div
57
- className="flex items-center gap-1"
58
- style={{ position: 'fixed', bottom: viewportHeight - toolbarBottom, right: right + OFFSET, zIndex: 30 }}
59
- >
60
- {showExpandControls && (
61
- <Button
62
- variant="ghost"
63
- size="icon"
64
- onClick={onToggleExpand}
65
- className={BUTTON_CLASS}
66
- title={isExpanded ? 'Collapse All' : 'Expand All'}
67
- >
68
- {isExpanded ? <ChevronUp className="h-3 w-3" /> : <ChevronDown className="h-3 w-3" />}
69
- </Button>
70
- )}
71
-
72
- {showActionButtons && (
73
- <>
74
- <CopyButton
75
- value={jsonString}
76
- variant="ghost"
77
- size="icon"
78
- className={BUTTON_CLASS}
79
- iconClassName="h-3 w-3"
80
- title="Copy JSON"
81
- />
82
- <Button
83
- variant="ghost"
84
- size="icon"
85
- onClick={onDownload}
86
- className={BUTTON_CLASS}
87
- title="Download JSON"
88
- >
89
- <Download className="h-3 w-3" />
90
- </Button>
91
- </>
92
- )}
93
- </div>
94
- );
95
- });
@@ -1,84 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
-
5
- interface Corner {
6
- top: number;
7
- right: number;
8
- bottom: number;
9
- }
10
-
11
- /**
12
- * Tracks the top-right corner of a referenced element in viewport coordinates.
13
- * Returns { top, right } in px — ready for `position: fixed` toolbar placement.
14
- *
15
- * Uses `visualViewport` for accurate viewport width — correctly handles:
16
- * - DevTools panel open (docked left/right/bottom)
17
- * - Browser zoom
18
- * - Mobile virtual keyboard / pinch-zoom
19
- * - Scrollbars
20
- *
21
- * Falls back to `document.documentElement.clientWidth` (excludes scrollbars,
22
- * matches `position: fixed` coordinate space) when visualViewport is unavailable.
23
- *
24
- * Updates on:
25
- * - Any ancestor scroll (capture phase)
26
- * - visualViewport resize/scroll
27
- * - ResizeObserver on the element itself
28
- */
29
- export function useElementCorner(ref: React.RefObject<HTMLElement | null>) {
30
- const [corner, setCorner] = useState<Corner | null>(null);
31
- const updateRef = useRef<() => void>(() => {});
32
-
33
- updateRef.current = () => {
34
- if (!ref.current) return;
35
- const rect = ref.current.getBoundingClientRect();
36
-
37
- // `position: fixed` is relative to the layout viewport (document.documentElement.clientWidth),
38
- // NOT window.innerWidth (which includes scrollbar gutter).
39
- // visualViewport.width is the visible area — same as layout viewport when no zoom/keyboard.
40
- const viewportWidth =
41
- window.visualViewport?.width ?? document.documentElement.clientWidth;
42
-
43
- setCorner({
44
- top: rect.top,
45
- right: viewportWidth - rect.right,
46
- bottom: rect.bottom,
47
- });
48
- };
49
-
50
- useEffect(() => {
51
- const handler = () => updateRef.current();
52
-
53
- handler();
54
-
55
- // Element size changes
56
- const ro = new ResizeObserver(handler);
57
- if (ref.current) ro.observe(ref.current);
58
-
59
- // Any ancestor scroll (capture catches all, including overflow:auto containers)
60
- window.addEventListener('scroll', handler, { capture: true, passive: true });
61
-
62
- // visualViewport handles: DevTools resize, browser zoom, mobile keyboard
63
- const vv = window.visualViewport;
64
- if (vv) {
65
- vv.addEventListener('resize', handler);
66
- vv.addEventListener('scroll', handler);
67
- } else {
68
- window.addEventListener('resize', handler, { passive: true });
69
- }
70
-
71
- return () => {
72
- ro.disconnect();
73
- window.removeEventListener('scroll', handler, { capture: true });
74
- if (vv) {
75
- vv.removeEventListener('resize', handler);
76
- vv.removeEventListener('scroll', handler);
77
- } else {
78
- window.removeEventListener('resize', handler);
79
- }
80
- };
81
- }, [ref]);
82
-
83
- return corner;
84
- }
@@ -1,83 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
-
5
- /**
6
- * Detects the height of any element covering the top of the viewport.
7
- *
8
- * Strategy: uses elementFromPoint() along the top of the viewport to find
9
- * whatever is actually rendered there — fixed, sticky, or in-flow elements.
10
- * Walks up the DOM from the hit element to find the topmost covering block.
11
- *
12
- * Performance:
13
- * - Samples a few x-points across the viewport top (not the whole width)
14
- * - Throttled with requestAnimationFrame
15
- * - Only re-runs on resize (navbars rarely change height on scroll)
16
- */
17
-
18
- const SAMPLE_POINTS = 5; // how many x positions to probe across viewport
19
-
20
- function measureNavbarHeight(): number {
21
- const vv = window.visualViewport;
22
- const viewportWidth = vv?.width ?? document.documentElement.clientWidth;
23
-
24
- let maxBottom = 0;
25
-
26
- for (let i = 0; i < SAMPLE_POINTS; i++) {
27
- const x = (viewportWidth / (SAMPLE_POINTS + 1)) * (i + 1);
28
-
29
- // Probe just below the very top — y=1 to avoid hitting browser chrome
30
- const el = document.elementFromPoint(x, 1);
31
- if (!el || el === document.documentElement || el === document.body) continue;
32
-
33
- const rect = el.getBoundingClientRect();
34
- // Only count elements that are anchored at the very top (top ≤ 2px)
35
- if (rect.top <= 2 && rect.bottom > maxBottom) {
36
- maxBottom = rect.bottom;
37
- }
38
- }
39
-
40
- return maxBottom;
41
- }
42
-
43
- export function useNavbarHeight(): number {
44
- const [height, setHeight] = useState(0);
45
- const rafRef = useRef<number | null>(null);
46
-
47
- const scheduleUpdate = () => {
48
- if (rafRef.current !== null) return;
49
- rafRef.current = requestAnimationFrame(() => {
50
- rafRef.current = null;
51
- setHeight(measureNavbarHeight());
52
- });
53
- };
54
-
55
- useEffect(() => {
56
- // Initial measure after first paint
57
- scheduleUpdate();
58
-
59
- // Navbars can change height on resize (mobile keyboard, orientation)
60
- const vv = window.visualViewport;
61
- if (vv) {
62
- vv.addEventListener('resize', scheduleUpdate);
63
- } else {
64
- window.addEventListener('resize', scheduleUpdate, { passive: true });
65
- }
66
-
67
- // Watch for navbar being added/removed from DOM
68
- const mo = new MutationObserver(scheduleUpdate);
69
- mo.observe(document.body, { childList: true, subtree: false });
70
-
71
- return () => {
72
- if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);
73
- if (vv) {
74
- vv.removeEventListener('resize', scheduleUpdate);
75
- } else {
76
- window.removeEventListener('resize', scheduleUpdate);
77
- }
78
- mo.disconnect();
79
- };
80
- }, []);
81
-
82
- return height;
83
- }
@@ -1,121 +0,0 @@
1
- /**
2
- * Flatten a JSON Schema node into a flat list of (name, type, required,
3
- * description) rows, ready to feed into the existing parameter table.
4
- *
5
- * Rules:
6
- * - ``type: object`` → one row per property.
7
- * - ``type: array`` → recurse into items; prefix each row with ``[].``
8
- * so the caller sees "[].username string" etc.
9
- * - Nested objects → dot-joined path: ``category.name``. We expand
10
- * one level; deeper graphs get a single summary
11
- * row ("category.* (object)") to keep the table
12
- * readable.
13
- *
14
- * This is a presentation helper — not a full form generator. It powers
15
- * the read-only fields table shown in the docs longread.
16
- */
17
-
18
- type JsonSchemaNode = Record<string, unknown> & {
19
- type?: string;
20
- properties?: Record<string, JsonSchemaNode>;
21
- required?: string[];
22
- items?: JsonSchemaNode;
23
- enum?: unknown[];
24
- description?: string;
25
- format?: string;
26
- };
27
-
28
- export interface SchemaField {
29
- name: string;
30
- type: string;
31
- required: boolean;
32
- description?: string;
33
- }
34
-
35
- const MAX_DEPTH = 2;
36
-
37
- function describeType(node: JsonSchemaNode): string {
38
- if (!node.type && node.properties) return 'object';
39
- const base = node.type || 'any';
40
- if (base === 'array') {
41
- const itemType = node.items ? describeType(node.items) : 'any';
42
- return `array<${itemType}>`;
43
- }
44
- if (Array.isArray(node.enum) && node.enum.length > 0) {
45
- return `${base} enum`;
46
- }
47
- if (node.format) return `${base} (${node.format})`;
48
- return base;
49
- }
50
-
51
- export function schemaToFields(
52
- schema: JsonSchemaNode | undefined,
53
- prefix = '',
54
- depth = 0,
55
- ): SchemaField[] {
56
- if (!schema || depth > MAX_DEPTH) return [];
57
-
58
- // Unwrap arrays: show the inner item's fields, prefixed with ``[]``.
59
- if (schema.type === 'array') {
60
- if (!schema.items) {
61
- return [{ name: prefix || '[]', type: 'array', required: false }];
62
- }
63
- const inner = schemaToFields(schema.items, prefix ? `${prefix}[]` : '[]', depth);
64
- if (inner.length === 0) {
65
- return [
66
- {
67
- name: prefix || '[]',
68
- type: describeType(schema),
69
- required: false,
70
- description: schema.description,
71
- },
72
- ];
73
- }
74
- return inner;
75
- }
76
-
77
- // Primitives and unknown — single row.
78
- if (schema.type !== 'object' && !schema.properties) {
79
- return [
80
- {
81
- name: prefix || '(body)',
82
- type: describeType(schema),
83
- required: false,
84
- description: schema.description,
85
- },
86
- ];
87
- }
88
-
89
- // Objects — one row per property, recurse for nested objects/arrays.
90
- const required = new Set(schema.required ?? []);
91
- const rows: SchemaField[] = [];
92
- const props = schema.properties ?? {};
93
- for (const [key, node] of Object.entries(props)) {
94
- const fullName = prefix ? `${prefix}.${key}` : key;
95
- const isRequired = required.has(key);
96
-
97
- const isNestedExpandable =
98
- (node.type === 'object' && node.properties) ||
99
- (node.type === 'array' && node.items);
100
-
101
- if (isNestedExpandable && depth < MAX_DEPTH) {
102
- // Leaf summary row for the parent itself (so the user sees
103
- // its description) + recurse for inner fields.
104
- rows.push({
105
- name: fullName,
106
- type: describeType(node),
107
- required: isRequired,
108
- description: node.description,
109
- });
110
- rows.push(...schemaToFields(node, fullName, depth + 1));
111
- } else {
112
- rows.push({
113
- name: fullName,
114
- type: describeType(node),
115
- required: isRequired,
116
- description: node.description,
117
- });
118
- }
119
- }
120
- return rows;
121
- }