@djangocfg/ui-tools 2.1.412 → 2.1.413

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 (812) hide show
  1. package/README.md +2 -1
  2. package/dist/file-icon/index.cjs +3 -3
  3. package/dist/file-icon/index.cjs.map +1 -1
  4. package/dist/file-icon/index.d.cts +1 -1
  5. package/dist/file-icon/index.d.ts +1 -1
  6. package/dist/file-icon/index.mjs +3 -3
  7. package/dist/file-icon/index.mjs.map +1 -1
  8. package/dist/tree/index.cjs +44 -7
  9. package/dist/tree/index.cjs.map +1 -1
  10. package/dist/tree/index.d.cts +2 -2
  11. package/dist/tree/index.d.ts +2 -2
  12. package/dist/tree/index.mjs +44 -7
  13. package/dist/tree/index.mjs.map +1 -1
  14. package/dist/{types-eEu8SeiQ.d.cts → types-j2vhn4Kv.d.cts} +34 -1
  15. package/dist/{types-eEu8SeiQ.d.ts → types-j2vhn4Kv.d.ts} +34 -1
  16. package/package.json +168 -63
  17. package/src/lib/page-snapshot/react/provider.tsx +1 -1
  18. package/src/tools/{Chat → chat}/composer/fileToAttachment.ts +1 -1
  19. package/src/tools/{Chat → chat}/composer/useComposerAttach.tsx +1 -1
  20. package/src/tools/{Chat → chat}/index.ts +1 -1
  21. package/src/tools/{Chat → chat}/launcher/header/ChatHeaderLanguageButton.tsx +2 -2
  22. package/src/tools/{Chat → chat}/messages/MessageBubble.tsx +1 -1
  23. package/src/tools/{Chat → chat}/messages/blocks/builtin.tsx +1 -1
  24. package/src/tools/{Chat → chat}/messages/blocks/renderers/AudioBlock.tsx +1 -1
  25. package/src/tools/{Chat → chat}/messages/blocks/renderers/CodeBlock.tsx +2 -2
  26. package/src/tools/{Chat → chat}/messages/blocks/renderers/GalleryBlock.tsx +2 -2
  27. package/src/tools/{Chat → chat}/messages/blocks/renderers/ImageBlock.tsx +1 -1
  28. package/src/tools/{Chat → chat}/messages/blocks/renderers/JsonBlock.tsx +1 -1
  29. package/src/tools/{Chat → chat}/messages/blocks/renderers/LottieBlock.tsx +1 -1
  30. package/src/tools/{Chat → chat}/messages/blocks/renderers/MapBlock.tsx +2 -2
  31. package/src/tools/{Chat → chat}/messages/blocks/renderers/MermaidBlock.tsx +1 -1
  32. package/src/tools/{Chat → chat}/messages/blocks/renderers/VideoBlock.tsx +2 -2
  33. package/src/tools/data/DataGrid/context/DataGridContext.tsx +441 -0
  34. package/src/tools/data/DataGrid/context/index.ts +4 -0
  35. package/src/tools/data/DataGrid/index.ts +29 -0
  36. package/src/tools/data/DataGrid/lazy.tsx +23 -0
  37. package/src/tools/data/DataGrid/parts/DataGrid.tsx +125 -0
  38. package/src/tools/data/DataGrid/parts/DataGridCell.tsx +30 -0
  39. package/src/tools/data/DataGrid/parts/DataGridHeader.tsx +111 -0
  40. package/src/tools/data/DataGrid/parts/DataGridPagination.tsx +105 -0
  41. package/src/tools/data/DataGrid/parts/DataGridRow.tsx +84 -0
  42. package/src/tools/data/DataGrid/parts/index.ts +7 -0
  43. package/src/tools/data/DataGrid/types.ts +95 -0
  44. package/src/tools/data/DataTable/context/DataTableContext.tsx +433 -0
  45. package/src/tools/data/DataTable/context/index.ts +4 -0
  46. package/src/tools/data/DataTable/index.ts +28 -0
  47. package/src/tools/data/DataTable/lazy.tsx +23 -0
  48. package/src/tools/data/DataTable/parts/DataTable.tsx +132 -0
  49. package/src/tools/data/DataTable/parts/DataTableHeader.tsx +103 -0
  50. package/src/tools/data/DataTable/parts/DataTablePagination.tsx +105 -0
  51. package/src/tools/data/DataTable/parts/DataTableRow.tsx +96 -0
  52. package/src/tools/data/DataTable/parts/index.ts +6 -0
  53. package/src/tools/data/DataTable/types.ts +88 -0
  54. package/src/tools/{JsonTree → data/JsonTree}/index.tsx +2 -2
  55. package/src/tools/{JsonTree → data/JsonTree}/lazy.tsx +1 -1
  56. package/src/tools/data/Kanban/context/KanbanContext.tsx +163 -0
  57. package/src/tools/data/Kanban/context/index.ts +4 -0
  58. package/src/tools/data/Kanban/index.ts +26 -0
  59. package/src/tools/data/Kanban/lazy.tsx +23 -0
  60. package/src/tools/data/Kanban/parts/Kanban.tsx +77 -0
  61. package/src/tools/data/Kanban/parts/KanbanCard.tsx +76 -0
  62. package/src/tools/data/Kanban/parts/KanbanColumn.tsx +79 -0
  63. package/src/tools/data/Kanban/parts/KanbanDragOverlay.tsx +46 -0
  64. package/src/tools/data/Kanban/parts/index.ts +6 -0
  65. package/src/tools/data/Kanban/types.ts +45 -0
  66. package/src/tools/data/Listbox/context/ListboxProvider.tsx +616 -0
  67. package/src/tools/data/Listbox/context/index.ts +8 -0
  68. package/src/tools/data/Listbox/index.ts +23 -0
  69. package/src/tools/data/Listbox/lazy.tsx +31 -0
  70. package/src/tools/data/Listbox/parts/ListboxGroup.tsx +71 -0
  71. package/src/tools/data/Listbox/parts/ListboxItem.tsx +151 -0
  72. package/src/tools/data/Listbox/parts/index.ts +12 -0
  73. package/src/tools/data/Listbox/types.ts +98 -0
  74. package/src/tools/data/Masonry/README.md +79 -0
  75. package/src/tools/data/Masonry/context/MasonryProvider.tsx +1205 -0
  76. package/src/tools/data/Masonry/context/index.ts +8 -0
  77. package/src/tools/data/Masonry/index.ts +13 -0
  78. package/src/tools/data/Masonry/lazy.tsx +20 -0
  79. package/src/tools/data/Masonry/parts/index.ts +2 -0
  80. package/src/tools/data/Masonry/types.ts +44 -0
  81. package/src/tools/data/Timeline/context/TimelineProvider.tsx +474 -0
  82. package/src/tools/data/Timeline/context/index.ts +16 -0
  83. package/src/tools/data/Timeline/index.ts +24 -0
  84. package/src/tools/data/Timeline/lazy.tsx +27 -0
  85. package/src/tools/data/Timeline/parts/index.ts +2 -0
  86. package/src/tools/data/Timeline/types.ts +25 -0
  87. package/src/tools/{Tree → data/Tree}/README.md +66 -2
  88. package/src/tools/{Tree → data/Tree}/TreeRoot.tsx +66 -3
  89. package/src/tools/{Tree → data/Tree}/index.tsx +3 -0
  90. package/src/tools/{Tree → data/Tree}/lazy.tsx +1 -1
  91. package/src/tools/{Tree → data/Tree}/types.ts +36 -0
  92. package/src/tools/{Map → dev/Map}/lazy.tsx +1 -1
  93. package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/CollapseToggle.tsx +1 -1
  94. package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/MarkdownMessage.tsx +1 -1
  95. package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/components.tsx +1 -1
  96. package/src/tools/{Mermaid → dev/Mermaid}/Mermaid.client.tsx +2 -2
  97. package/src/tools/{Mermaid → dev/Mermaid}/lazy.tsx +1 -1
  98. package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/lazy.tsx +1 -1
  99. package/src/tools/{PrettyCode → dev/PrettyCode}/PrettyCode.client.tsx +2 -2
  100. package/src/tools/{PrettyCode → dev/PrettyCode}/lazy.tsx +1 -1
  101. package/src/tools/{CodeEditor → forms/CodeEditor}/lazy.tsx +1 -1
  102. package/src/tools/forms/FileUpload/FileUpload.tsx +1326 -0
  103. package/src/tools/forms/FileUpload/index.ts +21 -0
  104. package/src/tools/forms/FileUpload/lazy.tsx +19 -0
  105. package/src/tools/forms/FileUpload/types.ts +83 -0
  106. package/src/tools/{JsonForm → forms/JsonForm}/lazy.tsx +1 -1
  107. package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/lazy.tsx +1 -1
  108. package/src/tools/index.ts +305 -31
  109. package/src/tools/input/Combobox/context/ComboboxContext.tsx +30 -0
  110. package/src/tools/input/Combobox/context/index.ts +6 -0
  111. package/src/tools/input/Combobox/index.ts +45 -0
  112. package/src/tools/input/Combobox/lazy.tsx +72 -0
  113. package/src/tools/input/Combobox/parts/Combobox.tsx +392 -0
  114. package/src/tools/input/Combobox/parts/index.ts +10 -0
  115. package/src/tools/input/Combobox/types.ts +67 -0
  116. package/src/tools/{CronScheduler → input/CronScheduler}/index.tsx +1 -1
  117. package/src/tools/{CronScheduler → input/CronScheduler}/lazy.tsx +1 -1
  118. package/src/tools/input/Scroller/context/ScrollerContext.tsx +30 -0
  119. package/src/tools/input/Scroller/context/index.ts +6 -0
  120. package/src/tools/input/Scroller/index.ts +34 -0
  121. package/src/tools/input/Scroller/lazy.tsx +32 -0
  122. package/src/tools/input/Scroller/parts/Scroller.tsx +193 -0
  123. package/src/tools/input/Scroller/parts/index.ts +6 -0
  124. package/src/tools/input/Scroller/types.ts +37 -0
  125. package/src/tools/input/Sortable/context/SortableContext.tsx +30 -0
  126. package/src/tools/input/Sortable/context/index.ts +6 -0
  127. package/src/tools/input/Sortable/index.ts +40 -0
  128. package/src/tools/input/Sortable/lazy.tsx +42 -0
  129. package/src/tools/input/Sortable/parts/Sortable.tsx +144 -0
  130. package/src/tools/input/Sortable/parts/index.ts +7 -0
  131. package/src/tools/input/Sortable/types.ts +40 -0
  132. package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/audio/defaults.ts +2 -2
  133. package/src/tools/{SpeechRecognition → input/SpeechRecognition}/lazy.tsx +1 -1
  134. package/src/tools/{SpeechRecognition → input/SpeechRecognition}/widgets/VoiceComposerSlot.tsx +1 -1
  135. package/src/tools/{ImageViewer → media/ImageViewer}/components/ImageInfo.tsx +1 -1
  136. package/src/tools/{ImageViewer → media/ImageViewer}/hooks/useImageLoading.ts +1 -1
  137. package/src/tools/{ImageViewer → media/ImageViewer}/lazy.tsx +1 -1
  138. package/src/tools/{LottiePlayer → media/LottiePlayer}/lazy.tsx +1 -1
  139. package/src/tools/overlay/ResponsiveDialog/context/ResponsiveDialogContext.tsx +30 -0
  140. package/src/tools/overlay/ResponsiveDialog/context/index.ts +6 -0
  141. package/src/tools/overlay/ResponsiveDialog/index.ts +48 -0
  142. package/src/tools/overlay/ResponsiveDialog/lazy.tsx +90 -0
  143. package/src/tools/overlay/ResponsiveDialog/parts/ResponsiveDialog.tsx +87 -0
  144. package/src/tools/overlay/ResponsiveDialog/parts/index.ts +10 -0
  145. package/src/tools/overlay/ResponsiveDialog/types.ts +26 -0
  146. package/src/tools/overlay/ScrollSpy/context/ScrollSpyContext.tsx +30 -0
  147. package/src/tools/overlay/ScrollSpy/context/index.ts +6 -0
  148. package/src/tools/overlay/ScrollSpy/index.ts +40 -0
  149. package/src/tools/overlay/ScrollSpy/lazy.tsx +52 -0
  150. package/src/tools/overlay/ScrollSpy/parts/ScrollSpy.tsx +184 -0
  151. package/src/tools/overlay/ScrollSpy/parts/index.ts +8 -0
  152. package/src/tools/overlay/ScrollSpy/types.ts +41 -0
  153. package/src/tools/overlay/SelectionToolbar/context/SelectionToolbarContext.tsx +30 -0
  154. package/src/tools/overlay/SelectionToolbar/context/index.ts +6 -0
  155. package/src/tools/overlay/SelectionToolbar/index.ts +37 -0
  156. package/src/tools/overlay/SelectionToolbar/lazy.tsx +42 -0
  157. package/src/tools/overlay/SelectionToolbar/parts/SelectionToolbar.tsx +162 -0
  158. package/src/tools/overlay/SelectionToolbar/parts/index.ts +7 -0
  159. package/src/tools/overlay/SelectionToolbar/types.ts +31 -0
  160. package/src/tools/overlay/Tour/context/TourContext.tsx +30 -0
  161. package/src/tools/overlay/Tour/context/index.ts +6 -0
  162. package/src/tools/overlay/Tour/index.ts +40 -0
  163. package/src/tools/overlay/Tour/lazy.tsx +42 -0
  164. package/src/tools/overlay/Tour/parts/Tour.tsx +278 -0
  165. package/src/tools/overlay/Tour/parts/index.ts +8 -0
  166. package/src/tools/overlay/Tour/types.ts +42 -0
  167. package/src/tools/visual/ColorPicker/ColorPicker.tsx +257 -0
  168. package/src/tools/visual/ColorPicker/context/ColorPickerContext.tsx +28 -0
  169. package/src/tools/visual/ColorPicker/context/ColorPickerStore.tsx +166 -0
  170. package/src/tools/visual/ColorPicker/context/index.ts +2 -0
  171. package/src/tools/visual/ColorPicker/index.ts +15 -0
  172. package/src/tools/visual/ColorPicker/lazy.tsx +24 -0
  173. package/src/tools/visual/ColorPicker/lib/color-utils.ts +323 -0
  174. package/src/tools/visual/ColorPicker/parts/ColorPickerAlphaSlider.tsx +72 -0
  175. package/src/tools/visual/ColorPicker/parts/ColorPickerArea.tsx +155 -0
  176. package/src/tools/visual/ColorPicker/parts/ColorPickerEyeDropper.tsx +73 -0
  177. package/src/tools/visual/ColorPicker/parts/ColorPickerFormatSelect.tsx +64 -0
  178. package/src/tools/visual/ColorPicker/parts/ColorPickerHueSlider.tsx +64 -0
  179. package/src/tools/visual/ColorPicker/parts/ColorPickerInput.tsx +512 -0
  180. package/src/tools/visual/ColorPicker/parts/ColorPickerSwatch.tsx +63 -0
  181. package/src/tools/visual/ColorPicker/parts/index.ts +7 -0
  182. package/src/tools/visual/ColorPicker/types.ts +77 -0
  183. package/src/tools/{FileIcon → visual/FileIcon}/treeAdapter.tsx +1 -1
  184. package/src/tools/visual/Fps/Fps.tsx +94 -0
  185. package/src/tools/visual/Fps/index.ts +2 -0
  186. package/src/tools/visual/Fps/lazy.tsx +14 -0
  187. package/src/tools/visual/Fps/types.ts +42 -0
  188. package/src/tools/visual/Gauge/Gauge.tsx +401 -0
  189. package/src/tools/visual/Gauge/index.ts +10 -0
  190. package/src/tools/visual/Gauge/lazy.tsx +14 -0
  191. package/src/tools/visual/Gauge/types.ts +34 -0
  192. package/src/tools/visual/Marquee/Marquee.tsx +637 -0
  193. package/src/tools/visual/Marquee/index.ts +7 -0
  194. package/src/tools/visual/Marquee/lazy.tsx +14 -0
  195. package/src/tools/visual/Marquee/types.ts +40 -0
  196. package/src/tools/visual/QRCode/QRCode.tsx +468 -0
  197. package/src/tools/visual/QRCode/index.ts +10 -0
  198. package/src/tools/visual/QRCode/lazy.tsx +19 -0
  199. package/src/tools/visual/QRCode/types.ts +57 -0
  200. package/src/tools/visual/Rating/Rating.tsx +868 -0
  201. package/src/tools/visual/Rating/index.ts +2 -0
  202. package/src/tools/visual/Rating/lazy.tsx +20 -0
  203. package/src/tools/visual/Rating/types.ts +79 -0
  204. /package/src/tools/{Chat → chat}/README.md +0 -0
  205. /package/src/tools/{Chat → chat}/composer/AttachContext.tsx +0 -0
  206. /package/src/tools/{Chat → chat}/composer/Composer.tsx +0 -0
  207. /package/src/tools/{Chat → chat}/composer/ComposerActionBar.tsx +0 -0
  208. /package/src/tools/{Chat → chat}/composer/ComposerBanner.tsx +0 -0
  209. /package/src/tools/{Chat → chat}/composer/ComposerButton.tsx +0 -0
  210. /package/src/tools/{Chat → chat}/composer/ComposerFooter.tsx +0 -0
  211. /package/src/tools/{Chat → chat}/composer/ComposerMenuButton.tsx +0 -0
  212. /package/src/tools/{Chat → chat}/composer/ComposerModelPicker.tsx +0 -0
  213. /package/src/tools/{Chat → chat}/composer/ComposerRichTextarea.tsx +0 -0
  214. /package/src/tools/{Chat → chat}/composer/ComposerToolPill.tsx +0 -0
  215. /package/src/tools/{Chat → chat}/composer/index.ts +0 -0
  216. /package/src/tools/{Chat → chat}/composer/size-context.tsx +0 -0
  217. /package/src/tools/{Chat → chat}/composer/types.ts +0 -0
  218. /package/src/tools/{Chat → chat}/composer/useComposerActions.tsx +0 -0
  219. /package/src/tools/{Chat → chat}/constants.ts +0 -0
  220. /package/src/tools/{Chat → chat}/context/ChatProvider.tsx +0 -0
  221. /package/src/tools/{Chat → chat}/context/index.ts +0 -0
  222. /package/src/tools/{Chat → chat}/core/__tests__/metadata.test.ts +0 -0
  223. /package/src/tools/{Chat → chat}/core/audio/audioBus.ts +0 -0
  224. /package/src/tools/{Chat → chat}/core/audio/defaults.ts +0 -0
  225. /package/src/tools/{Chat → chat}/core/audio/index.ts +0 -0
  226. /package/src/tools/{Chat → chat}/core/audio/preferences.ts +0 -0
  227. /package/src/tools/{Chat → chat}/core/audio/sounds/error.ts +0 -0
  228. /package/src/tools/{Chat → chat}/core/audio/sounds/mention.ts +0 -0
  229. /package/src/tools/{Chat → chat}/core/audio/sounds/notification.ts +0 -0
  230. /package/src/tools/{Chat → chat}/core/audio/sounds/received.ts +0 -0
  231. /package/src/tools/{Chat → chat}/core/audio/sounds/sent.ts +0 -0
  232. /package/src/tools/{Chat → chat}/core/audio/sounds/start.ts +0 -0
  233. /package/src/tools/{Chat → chat}/core/audio/types.ts +0 -0
  234. /package/src/tools/{Chat → chat}/core/ids.ts +0 -0
  235. /package/src/tools/{Chat → chat}/core/index.ts +0 -0
  236. /package/src/tools/{Chat → chat}/core/logger.ts +0 -0
  237. /package/src/tools/{Chat → chat}/core/markdown.ts +0 -0
  238. /package/src/tools/{Chat → chat}/core/metadata.ts +0 -0
  239. /package/src/tools/{Chat → chat}/core/payload-dispatch.ts +0 -0
  240. /package/src/tools/{Chat → chat}/core/persona.ts +0 -0
  241. /package/src/tools/{Chat → chat}/core/reducer.ts +0 -0
  242. /package/src/tools/{Chat → chat}/core/transport/http.ts +0 -0
  243. /package/src/tools/{Chat → chat}/core/transport/index.ts +0 -0
  244. /package/src/tools/{Chat → chat}/core/transport/mappers/index.ts +0 -0
  245. /package/src/tools/{Chat → chat}/core/transport/mappers/pydantic-ai.ts +0 -0
  246. /package/src/tools/{Chat → chat}/core/transport/mock.ts +0 -0
  247. /package/src/tools/{Chat → chat}/core/transport/pydantic-ai-transport.ts +0 -0
  248. /package/src/tools/{Chat → chat}/core/transport/sse.ts +0 -0
  249. /package/src/tools/{Chat → chat}/core/transport/types.ts +0 -0
  250. /package/src/tools/{Chat → chat}/hooks/index.ts +0 -0
  251. /package/src/tools/{Chat → chat}/hooks/useAutoFocusOnStreamEnd.ts +0 -0
  252. /package/src/tools/{Chat → chat}/hooks/useChat.ts +0 -0
  253. /package/src/tools/{Chat → chat}/hooks/useChatAudio.ts +0 -0
  254. /package/src/tools/{Chat → chat}/hooks/useChatComposer.ts +0 -0
  255. /package/src/tools/{Chat → chat}/hooks/useChatDockPrefs.ts +0 -0
  256. /package/src/tools/{Chat → chat}/hooks/useChatHistory.ts +0 -0
  257. /package/src/tools/{Chat → chat}/hooks/useChatLayout.ts +0 -0
  258. /package/src/tools/{Chat → chat}/hooks/useChatLightbox.ts +0 -0
  259. /package/src/tools/{Chat → chat}/hooks/useChatReset.ts +0 -0
  260. /package/src/tools/{Chat → chat}/hooks/useChatUnread.ts +0 -0
  261. /package/src/tools/{Chat → chat}/hooks/useChatUnreadNotifier.ts +0 -0
  262. /package/src/tools/{Chat → chat}/hooks/useFocusOnEmptyClick.ts +0 -0
  263. /package/src/tools/{Chat → chat}/hooks/useStreamEndFocus.ts +0 -0
  264. /package/src/tools/{Chat → chat}/hooks/useVisitorFingerprint.ts +0 -0
  265. /package/src/tools/{Chat → chat}/launcher/ChatDock.tsx +0 -0
  266. /package/src/tools/{Chat → chat}/launcher/ChatFAB.tsx +0 -0
  267. /package/src/tools/{Chat → chat}/launcher/ChatGreeting.tsx +0 -0
  268. /package/src/tools/{Chat → chat}/launcher/ChatLauncher.tsx +0 -0
  269. /package/src/tools/{Chat → chat}/launcher/ChatUnreadPreview.tsx +0 -0
  270. /package/src/tools/{Chat → chat}/launcher/header/ChatHeader.tsx +0 -0
  271. /package/src/tools/{Chat → chat}/launcher/header/ChatHeaderActionButton.tsx +0 -0
  272. /package/src/tools/{Chat → chat}/launcher/header/ChatHeaderAudioToggle.tsx +0 -0
  273. /package/src/tools/{Chat → chat}/launcher/header/ChatHeaderModeToggle.tsx +0 -0
  274. /package/src/tools/{Chat → chat}/launcher/header/ChatHeaderResetButton.tsx +0 -0
  275. /package/src/tools/{Chat → chat}/launcher/header/HeaderSlots.tsx +0 -0
  276. /package/src/tools/{Chat → chat}/launcher/header/index.ts +0 -0
  277. /package/src/tools/{Chat → chat}/launcher/index.ts +0 -0
  278. /package/src/tools/{Chat → chat}/launcher/types.ts +0 -0
  279. /package/src/tools/{Chat → chat}/launcher/useChatPresence.ts +0 -0
  280. /package/src/tools/{Chat → chat}/lazy.tsx +0 -0
  281. /package/src/tools/{Chat → chat}/messages/Attachments.tsx +0 -0
  282. /package/src/tools/{Chat → chat}/messages/JumpToLatest.tsx +0 -0
  283. /package/src/tools/{Chat → chat}/messages/MessageActions.tsx +0 -0
  284. /package/src/tools/{Chat → chat}/messages/MessageList.tsx +0 -0
  285. /package/src/tools/{Chat → chat}/messages/Sources.tsx +0 -0
  286. /package/src/tools/{Chat → chat}/messages/StreamingIndicator.tsx +0 -0
  287. /package/src/tools/{Chat → chat}/messages/ToolCalls.tsx +0 -0
  288. /package/src/tools/{Chat → chat}/messages/blocks/MessageBlocks.tsx +0 -0
  289. /package/src/tools/{Chat → chat}/messages/blocks/index.ts +0 -0
  290. /package/src/tools/{Chat → chat}/messages/blocks/registry.tsx +0 -0
  291. /package/src/tools/{Chat → chat}/messages/blocks/renderers/types.ts +0 -0
  292. /package/src/tools/{Chat → chat}/messages/index.ts +0 -0
  293. /package/src/tools/{Chat → chat}/notifier/createBrowserNotifier.ts +0 -0
  294. /package/src/tools/{Chat → chat}/notifier/createCrossTabNotifier.ts +0 -0
  295. /package/src/tools/{Chat → chat}/notifier/faviconBadge.ts +0 -0
  296. /package/src/tools/{Chat → chat}/notifier/index.ts +0 -0
  297. /package/src/tools/{Chat → chat}/notifier/titleRotator.ts +0 -0
  298. /package/src/tools/{Chat → chat}/notifier/types.ts +0 -0
  299. /package/src/tools/{Chat → chat}/notifier/visibility.ts +0 -0
  300. /package/src/tools/{Chat → chat}/public.ts +0 -0
  301. /package/src/tools/{Chat → chat}/settings/README.md +0 -0
  302. /package/src/tools/{Chat → chat}/settings/__tests__/useChatSettings.test.tsx +0 -0
  303. /package/src/tools/{Chat → chat}/settings/__tests__/useLocalStorage.test.tsx +0 -0
  304. /package/src/tools/{Chat → chat}/settings/index.ts +0 -0
  305. /package/src/tools/{Chat → chat}/settings/types.ts +0 -0
  306. /package/src/tools/{Chat → chat}/settings/useChatSettings.ts +0 -0
  307. /package/src/tools/{Chat → chat}/shell/ChatRoot.tsx +0 -0
  308. /package/src/tools/{Chat → chat}/shell/EmptyState.tsx +0 -0
  309. /package/src/tools/{Chat → chat}/shell/ErrorBanner.tsx +0 -0
  310. /package/src/tools/{Chat → chat}/shell/index.ts +0 -0
  311. /package/src/tools/{Chat → chat}/styles/bubbleTokens.ts +0 -0
  312. /package/src/tools/{Chat → chat}/styles/index.ts +0 -0
  313. /package/src/tools/{Chat → chat}/styles/useChatStyles.ts +0 -0
  314. /package/src/tools/{Chat → chat}/types/attachment.ts +0 -0
  315. /package/src/tools/{Chat → chat}/types/block.ts +0 -0
  316. /package/src/tools/{Chat → chat}/types/config.ts +0 -0
  317. /package/src/tools/{Chat → chat}/types/events.ts +0 -0
  318. /package/src/tools/{Chat → chat}/types/index.ts +0 -0
  319. /package/src/tools/{Chat → chat}/types/labels.ts +0 -0
  320. /package/src/tools/{Chat → chat}/types/message.ts +0 -0
  321. /package/src/tools/{Chat → chat}/types/persona.ts +0 -0
  322. /package/src/tools/{Chat → chat}/types/session.ts +0 -0
  323. /package/src/tools/{Chat → chat}/types/tool-call.ts +0 -0
  324. /package/src/tools/{Chat → chat}/types/transport.ts +0 -0
  325. /package/src/tools/{Chat → chat}/utils/collectImageAttachments.ts +0 -0
  326. /package/src/tools/{Chat → chat}/utils/index.ts +0 -0
  327. /package/src/tools/{Chat → chat}/utils/sanitizeDraft.ts +0 -0
  328. /package/src/tools/{JsonTree → data/JsonTree}/README.md +0 -0
  329. /package/src/tools/{JsonTree → data/JsonTree}/components/JsonContent.tsx +0 -0
  330. /package/src/tools/{JsonTree → data/JsonTree}/hooks/useJsonExpand.ts +0 -0
  331. /package/src/tools/{JsonTree → data/JsonTree}/types.ts +0 -0
  332. /package/src/tools/{Tree → data/Tree}/components/TreeChevron.tsx +0 -0
  333. /package/src/tools/{Tree → data/Tree}/components/TreeContent.tsx +0 -0
  334. /package/src/tools/{Tree → data/Tree}/components/TreeEmpty.tsx +0 -0
  335. /package/src/tools/{Tree → data/Tree}/components/TreeError.tsx +0 -0
  336. /package/src/tools/{Tree → data/Tree}/components/TreeIcon.tsx +0 -0
  337. /package/src/tools/{Tree → data/Tree}/components/TreeIndentGuides.tsx +0 -0
  338. /package/src/tools/{Tree → data/Tree}/components/TreeLabel.tsx +0 -0
  339. /package/src/tools/{Tree → data/Tree}/components/TreeRow.tsx +0 -0
  340. /package/src/tools/{Tree → data/Tree}/components/TreeSearchInput.tsx +0 -0
  341. /package/src/tools/{Tree → data/Tree}/components/TreeSkeleton.tsx +0 -0
  342. /package/src/tools/{Tree → data/Tree}/components/index.ts +0 -0
  343. /package/src/tools/{Tree → data/Tree}/context/TreeContext.tsx +0 -0
  344. /package/src/tools/{Tree → data/Tree}/context/hooks.ts +0 -0
  345. /package/src/tools/{Tree → data/Tree}/context/index.ts +0 -0
  346. /package/src/tools/{Tree → data/Tree}/data/appearance.ts +0 -0
  347. /package/src/tools/{Tree → data/Tree}/data/childCache.ts +0 -0
  348. /package/src/tools/{Tree → data/Tree}/data/createDemoTree.ts +0 -0
  349. /package/src/tools/{Tree → data/Tree}/data/flatten.ts +0 -0
  350. /package/src/tools/{Tree → data/Tree}/data/index.ts +0 -0
  351. /package/src/tools/{Tree → data/Tree}/data/persist.ts +0 -0
  352. /package/src/tools/{Tree → data/Tree}/hooks/index.ts +0 -0
  353. /package/src/tools/{Tree → data/Tree}/hooks/useTreeKeyboard.ts +0 -0
  354. /package/src/tools/{Tree → data/Tree}/hooks/useTreeTypeAhead.ts +0 -0
  355. /package/src/tools/{Map → dev/Map}/README.md +0 -0
  356. /package/src/tools/{Map → dev/Map}/components/CustomOverlay.tsx +0 -0
  357. /package/src/tools/{Map → dev/Map}/components/DrawControl.tsx +0 -0
  358. /package/src/tools/{Map → dev/Map}/components/GeocoderControl.tsx +0 -0
  359. /package/src/tools/{Map → dev/Map}/components/LayerSwitcher.tsx +0 -0
  360. /package/src/tools/{Map → dev/Map}/components/MapCluster.tsx +0 -0
  361. /package/src/tools/{Map → dev/Map}/components/MapContainer.tsx +0 -0
  362. /package/src/tools/{Map → dev/Map}/components/MapControls.tsx +0 -0
  363. /package/src/tools/{Map → dev/Map}/components/MapLegend.tsx +0 -0
  364. /package/src/tools/{Map → dev/Map}/components/MapMarker.tsx +0 -0
  365. /package/src/tools/{Map → dev/Map}/components/MapPopup.tsx +0 -0
  366. /package/src/tools/{Map → dev/Map}/components/MapSource.tsx +0 -0
  367. /package/src/tools/{Map → dev/Map}/components/index.ts +0 -0
  368. /package/src/tools/{Map → dev/Map}/context/MapContext.tsx +0 -0
  369. /package/src/tools/{Map → dev/Map}/context/index.ts +0 -0
  370. /package/src/tools/{Map → dev/Map}/hooks/index.ts +0 -0
  371. /package/src/tools/{Map → dev/Map}/hooks/useMap.ts +0 -0
  372. /package/src/tools/{Map → dev/Map}/hooks/useMapControl.ts +0 -0
  373. /package/src/tools/{Map → dev/Map}/hooks/useMapEvents.ts +0 -0
  374. /package/src/tools/{Map → dev/Map}/hooks/useMapLayers.ts +0 -0
  375. /package/src/tools/{Map → dev/Map}/hooks/useMapViewport.ts +0 -0
  376. /package/src/tools/{Map → dev/Map}/hooks/useMarkers.ts +0 -0
  377. /package/src/tools/{Map → dev/Map}/hooks/useSpiderfy.ts +0 -0
  378. /package/src/tools/{Map → dev/Map}/index.ts +0 -0
  379. /package/src/tools/{Map → dev/Map}/layers/cluster.ts +0 -0
  380. /package/src/tools/{Map → dev/Map}/layers/index.ts +0 -0
  381. /package/src/tools/{Map → dev/Map}/layers/line.ts +0 -0
  382. /package/src/tools/{Map → dev/Map}/layers/point.ts +0 -0
  383. /package/src/tools/{Map → dev/Map}/layers/polygon.ts +0 -0
  384. /package/src/tools/{Map → dev/Map}/styles/index.ts +0 -0
  385. /package/src/tools/{Map → dev/Map}/types.ts +0 -0
  386. /package/src/tools/{Map → dev/Map}/utils/geo.ts +0 -0
  387. /package/src/tools/{Map → dev/Map}/utils/index.ts +0 -0
  388. /package/src/tools/{Map → dev/Map}/utils/spiderfy.ts +0 -0
  389. /package/src/tools/{Map → dev/Map}/utils/transform.ts +0 -0
  390. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/ActionRow.tsx +0 -0
  391. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/ChatMessageRow.tsx +0 -0
  392. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/CodeBlock.tsx +0 -0
  393. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/README.md +0 -0
  394. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/index.ts +0 -0
  395. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/linkRules.ts +0 -0
  396. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/plainText.ts +0 -0
  397. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/sanitize.ts +0 -0
  398. /package/src/tools/{MarkdownMessage → dev/MarkdownMessage}/types.ts +0 -0
  399. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/FlowDiagram.ts +0 -0
  400. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/functions/getEdges.ts +0 -0
  401. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/functions/getNodes.ts +0 -0
  402. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/functions/getStyles.ts +0 -0
  403. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/functions/index.ts +0 -0
  404. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/index.ts +0 -0
  405. /package/src/tools/{Mermaid → dev/Mermaid}/builders/FlowDiagram/types.ts +0 -0
  406. /package/src/tools/{Mermaid → dev/Mermaid}/builders/JourneyDiagram/JourneyDiagram.ts +0 -0
  407. /package/src/tools/{Mermaid → dev/Mermaid}/builders/JourneyDiagram/index.ts +0 -0
  408. /package/src/tools/{Mermaid → dev/Mermaid}/builders/JourneyDiagram/types.ts +0 -0
  409. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/SequenceDiagram.ts +0 -0
  410. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/functions/getActivations.ts +0 -0
  411. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/functions/getBlocks.ts +0 -0
  412. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/functions/getMessages.ts +0 -0
  413. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/functions/getNotes.ts +0 -0
  414. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/functions/index.ts +0 -0
  415. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/index.ts +0 -0
  416. /package/src/tools/{Mermaid → dev/Mermaid}/builders/SequenceDiagram/types.ts +0 -0
  417. /package/src/tools/{Mermaid → dev/Mermaid}/builders/core/DiagramStore.ts +0 -0
  418. /package/src/tools/{Mermaid → dev/Mermaid}/builders/core/index.ts +0 -0
  419. /package/src/tools/{Mermaid → dev/Mermaid}/builders/core/sanitize.ts +0 -0
  420. /package/src/tools/{Mermaid → dev/Mermaid}/builders/core/theme.ts +0 -0
  421. /package/src/tools/{Mermaid → dev/Mermaid}/builders/core/types.ts +0 -0
  422. /package/src/tools/{Mermaid → dev/Mermaid}/builders/index.ts +0 -0
  423. /package/src/tools/{Mermaid → dev/Mermaid}/components/MermaidCodeViewer.tsx +0 -0
  424. /package/src/tools/{Mermaid → dev/Mermaid}/components/MermaidErrorPanel.tsx +0 -0
  425. /package/src/tools/{Mermaid → dev/Mermaid}/components/MermaidFullscreenModal.tsx +0 -0
  426. /package/src/tools/{Mermaid → dev/Mermaid}/hooks/index.ts +0 -0
  427. /package/src/tools/{Mermaid → dev/Mermaid}/hooks/useMermaidCleanup.ts +0 -0
  428. /package/src/tools/{Mermaid → dev/Mermaid}/hooks/useMermaidFullscreen.ts +0 -0
  429. /package/src/tools/{Mermaid → dev/Mermaid}/hooks/useMermaidRenderer.ts +0 -0
  430. /package/src/tools/{Mermaid → dev/Mermaid}/hooks/useMermaidValidation.ts +0 -0
  431. /package/src/tools/{Mermaid → dev/Mermaid}/index.tsx +0 -0
  432. /package/src/tools/{Mermaid → dev/Mermaid}/utils/mermaid-helpers.ts +0 -0
  433. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/README.md +0 -0
  434. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/ApiIntroSection.tsx +0 -0
  435. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/DocsView.tsx +0 -0
  436. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/CodeSamples/LanguageTabs.tsx +0 -0
  437. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/CodeSamples/index.tsx +0 -0
  438. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/CodeSamples/useCodeSnippet.ts +0 -0
  439. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Header/MetaActions.tsx +0 -0
  440. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Header/MethodBadge.tsx +0 -0
  441. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Header/PathDisplay.tsx +0 -0
  442. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Header/index.tsx +0 -0
  443. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Parameters/ParamGroup.tsx +0 -0
  444. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Parameters/ParamRow.tsx +0 -0
  445. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Parameters/index.tsx +0 -0
  446. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/RequestBody/index.tsx +0 -0
  447. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Responses/ResponseBody.tsx +0 -0
  448. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Responses/ResponseRow.tsx +0 -0
  449. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Responses/StatusTag.tsx +0 -0
  450. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Responses/index.tsx +0 -0
  451. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/SchemaFields/FieldRow.tsx +0 -0
  452. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/SchemaFields/buildTree.ts +0 -0
  453. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/SchemaFields/index.tsx +0 -0
  454. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/SchemaFields/types.ts +0 -0
  455. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Section/SectionHeader.tsx +0 -0
  456. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Section/defaults.ts +0 -0
  457. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/Section/index.tsx +0 -0
  458. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/context.tsx +0 -0
  459. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/hooks/useSectionHash.ts +0 -0
  460. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/index.tsx +0 -0
  461. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/store/index.ts +0 -0
  462. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/store/selectors.ts +0 -0
  463. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/EndpointDoc/types.ts +0 -0
  464. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/SchemaCopyMenu.tsx +0 -0
  465. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/BrandHeader.tsx +0 -0
  466. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/CategoryBlock.tsx +0 -0
  467. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/EndpointRow.tsx +0 -0
  468. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/SchemaSection.tsx +0 -0
  469. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/SearchInput.tsx +0 -0
  470. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/SidebarBody.tsx +0 -0
  471. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/Toolbar.tsx +0 -0
  472. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/buildVM.ts +0 -0
  473. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/index.tsx +0 -0
  474. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/types.ts +0 -0
  475. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/Sidebar/useDebouncedValue.ts +0 -0
  476. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/SlideInPlayground.tsx +0 -0
  477. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/TryItSheet.tsx +0 -0
  478. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/anchor.ts +0 -0
  479. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/grouping.ts +0 -0
  480. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/index.tsx +0 -0
  481. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/DocsLayout/sidebarLabel.ts +0 -0
  482. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/index.ts +0 -0
  483. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/BodyFormEditor.tsx +0 -0
  484. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/EndpointDraftSync.tsx +0 -0
  485. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/EndpointResetButton.tsx +0 -0
  486. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/RequestPanel.tsx +0 -0
  487. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/PrettyView.tsx +0 -0
  488. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/PreviewView.tsx +0 -0
  489. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/RawView.tsx +0 -0
  490. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/StatusBar.tsx +0 -0
  491. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/ViewTabs.tsx +0 -0
  492. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/detectContent.ts +0 -0
  493. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/index.tsx +0 -0
  494. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/types.ts +0 -0
  495. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ResponsePanel/useResponseView.ts +0 -0
  496. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/SendButton.tsx +0 -0
  497. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/components/shared/ui.tsx +0 -0
  498. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/constants.ts +0 -0
  499. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/context/PlaygroundContext.tsx +0 -0
  500. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/hooks/index.ts +0 -0
  501. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/hooks/useDocsUrlSync.ts +0 -0
  502. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/hooks/useEndpointDraft.ts +0 -0
  503. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/hooks/useMobile.ts +0 -0
  504. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/hooks/useOpenApiSchema.ts +0 -0
  505. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/index.tsx +0 -0
  506. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/types.ts +0 -0
  507. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/apiKeyManager.ts +0 -0
  508. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/codeSamples.ts +0 -0
  509. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/formatters.ts +0 -0
  510. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/index.ts +0 -0
  511. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/operationToHar.ts +0 -0
  512. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/sampler.ts +0 -0
  513. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/schemaExport.ts +0 -0
  514. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/scrollParent.ts +0 -0
  515. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/url.ts +0 -0
  516. /package/src/tools/{OpenapiViewer → dev/OpenapiViewer}/utils/versionManager.ts +0 -0
  517. /package/src/tools/{PrettyCode → dev/PrettyCode}/README.md +0 -0
  518. /package/src/tools/{PrettyCode → dev/PrettyCode}/index.tsx +0 -0
  519. /package/src/tools/{PrettyCode → dev/PrettyCode}/registerPrismLanguages.ts +0 -0
  520. /package/src/tools/{CodeEditor → forms/CodeEditor}/README.md +0 -0
  521. /package/src/tools/{CodeEditor → forms/CodeEditor}/components/DiffEditor.tsx +0 -0
  522. /package/src/tools/{CodeEditor → forms/CodeEditor}/components/Editor.tsx +0 -0
  523. /package/src/tools/{CodeEditor → forms/CodeEditor}/components/index.ts +0 -0
  524. /package/src/tools/{CodeEditor → forms/CodeEditor}/context/EditorProvider.tsx +0 -0
  525. /package/src/tools/{CodeEditor → forms/CodeEditor}/context/index.ts +0 -0
  526. /package/src/tools/{CodeEditor → forms/CodeEditor}/hooks/index.ts +0 -0
  527. /package/src/tools/{CodeEditor → forms/CodeEditor}/hooks/useEditor.ts +0 -0
  528. /package/src/tools/{CodeEditor → forms/CodeEditor}/hooks/useEditorTheme.ts +0 -0
  529. /package/src/tools/{CodeEditor → forms/CodeEditor}/hooks/useLanguage.ts +0 -0
  530. /package/src/tools/{CodeEditor → forms/CodeEditor}/hooks/useMonaco.ts +0 -0
  531. /package/src/tools/{CodeEditor → forms/CodeEditor}/index.ts +0 -0
  532. /package/src/tools/{CodeEditor → forms/CodeEditor}/lib/index.ts +0 -0
  533. /package/src/tools/{CodeEditor → forms/CodeEditor}/lib/languages.ts +0 -0
  534. /package/src/tools/{CodeEditor → forms/CodeEditor}/lib/themes.ts +0 -0
  535. /package/src/tools/{CodeEditor → forms/CodeEditor}/types/index.ts +0 -0
  536. /package/src/tools/{CodeEditor → forms/CodeEditor}/workers/index.ts +0 -0
  537. /package/src/tools/{CodeEditor → forms/CodeEditor}/workers/setup.ts +0 -0
  538. /package/src/tools/{JsonForm → forms/JsonForm}/JsonSchemaForm.tsx +0 -0
  539. /package/src/tools/{JsonForm → forms/JsonForm}/README.md +0 -0
  540. /package/src/tools/{JsonForm → forms/JsonForm}/examples/BotConfigExample.tsx +0 -0
  541. /package/src/tools/{JsonForm → forms/JsonForm}/examples/RealBotConfigExample.tsx +0 -0
  542. /package/src/tools/{JsonForm → forms/JsonForm}/index.ts +0 -0
  543. /package/src/tools/{JsonForm → forms/JsonForm}/templates/ArrayFieldItemTemplate.tsx +0 -0
  544. /package/src/tools/{JsonForm → forms/JsonForm}/templates/ArrayFieldTemplate.tsx +0 -0
  545. /package/src/tools/{JsonForm → forms/JsonForm}/templates/BaseInputTemplate.tsx +0 -0
  546. /package/src/tools/{JsonForm → forms/JsonForm}/templates/ErrorListTemplate.tsx +0 -0
  547. /package/src/tools/{JsonForm → forms/JsonForm}/templates/FieldTemplate.tsx +0 -0
  548. /package/src/tools/{JsonForm → forms/JsonForm}/templates/ObjectFieldTemplate.tsx +0 -0
  549. /package/src/tools/{JsonForm → forms/JsonForm}/templates/index.ts +0 -0
  550. /package/src/tools/{JsonForm → forms/JsonForm}/types.ts +0 -0
  551. /package/src/tools/{JsonForm → forms/JsonForm}/utils.ts +0 -0
  552. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/CheckboxWidget.tsx +0 -0
  553. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/ColorWidget.tsx +0 -0
  554. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/NumberWidget.tsx +0 -0
  555. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/RadioWidget.tsx +0 -0
  556. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/SelectWidget.tsx +0 -0
  557. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/SliderWidget.tsx +0 -0
  558. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/SwitchWidget.tsx +0 -0
  559. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/TextWidget.tsx +0 -0
  560. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/TextareaWidget.tsx +0 -0
  561. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/_useWidgetEnv.ts +0 -0
  562. /package/src/tools/{JsonForm → forms/JsonForm}/widgets/index.ts +0 -0
  563. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/MarkdownEditor.tsx +0 -0
  564. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/MentionList.tsx +0 -0
  565. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/README.md +0 -0
  566. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/createMentionSuggestion.ts +0 -0
  567. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/index.ts +0 -0
  568. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/mentionPresets.test.ts +0 -0
  569. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/mentionPresets.ts +0 -0
  570. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/styles.css +0 -0
  571. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/submitOnEnter.ts +0 -0
  572. /package/src/tools/{MarkdownEditor → forms/MarkdownEditor}/types.ts +0 -0
  573. /package/src/tools/{Uploader → forms/Uploader}/README.md +0 -0
  574. /package/src/tools/{Uploader → forms/Uploader}/components/UploadAddButton.tsx +0 -0
  575. /package/src/tools/{Uploader → forms/Uploader}/components/UploadDropzone.tsx +0 -0
  576. /package/src/tools/{Uploader → forms/Uploader}/components/UploadPageDropOverlay.tsx +0 -0
  577. /package/src/tools/{Uploader → forms/Uploader}/components/UploadPreviewItem.tsx +0 -0
  578. /package/src/tools/{Uploader → forms/Uploader}/components/UploadPreviewList.tsx +0 -0
  579. /package/src/tools/{Uploader → forms/Uploader}/components/Uploader.tsx +0 -0
  580. /package/src/tools/{Uploader → forms/Uploader}/components/index.ts +0 -0
  581. /package/src/tools/{Uploader → forms/Uploader}/context/UploadProvider.tsx +0 -0
  582. /package/src/tools/{Uploader → forms/Uploader}/context/index.ts +0 -0
  583. /package/src/tools/{Uploader → forms/Uploader}/hooks/index.ts +0 -0
  584. /package/src/tools/{Uploader → forms/Uploader}/hooks/useClipboardPaste.ts +0 -0
  585. /package/src/tools/{Uploader → forms/Uploader}/hooks/useUploadEvents.ts +0 -0
  586. /package/src/tools/{Uploader → forms/Uploader}/hooks/useUploadProvider.ts +0 -0
  587. /package/src/tools/{Uploader → forms/Uploader}/index.ts +0 -0
  588. /package/src/tools/{Uploader → forms/Uploader}/types/index.ts +0 -0
  589. /package/src/tools/{Uploader → forms/Uploader}/utils/assetTypes.ts +0 -0
  590. /package/src/tools/{Uploader → forms/Uploader}/utils/formatters.ts +0 -0
  591. /package/src/tools/{Uploader → forms/Uploader}/utils/index.ts +0 -0
  592. /package/src/tools/{Uploader → forms/Uploader}/utils/logger.ts +0 -0
  593. /package/src/tools/{Uploader → forms/Uploader}/utils/transformers.ts +0 -0
  594. /package/src/tools/{CronScheduler → input/CronScheduler}/CronScheduler.client.tsx +0 -0
  595. /package/src/tools/{CronScheduler → input/CronScheduler}/components/CronCheatsheet.tsx +0 -0
  596. /package/src/tools/{CronScheduler → input/CronScheduler}/components/CustomInput.tsx +0 -0
  597. /package/src/tools/{CronScheduler → input/CronScheduler}/components/DayChips.tsx +0 -0
  598. /package/src/tools/{CronScheduler → input/CronScheduler}/components/MonthDayGrid.tsx +0 -0
  599. /package/src/tools/{CronScheduler → input/CronScheduler}/components/SchedulePreview.tsx +0 -0
  600. /package/src/tools/{CronScheduler → input/CronScheduler}/components/ScheduleTypeSelector.tsx +0 -0
  601. /package/src/tools/{CronScheduler → input/CronScheduler}/components/TimeSelector.tsx +0 -0
  602. /package/src/tools/{CronScheduler → input/CronScheduler}/components/index.ts +0 -0
  603. /package/src/tools/{CronScheduler → input/CronScheduler}/context/CronSchedulerContext.tsx +0 -0
  604. /package/src/tools/{CronScheduler → input/CronScheduler}/context/hooks.ts +0 -0
  605. /package/src/tools/{CronScheduler → input/CronScheduler}/context/index.ts +0 -0
  606. /package/src/tools/{CronScheduler → input/CronScheduler}/types/index.ts +0 -0
  607. /package/src/tools/{CronScheduler → input/CronScheduler}/utils/cron-builder.ts +0 -0
  608. /package/src/tools/{CronScheduler → input/CronScheduler}/utils/cron-humanize.ts +0 -0
  609. /package/src/tools/{CronScheduler → input/CronScheduler}/utils/cron-parser.ts +0 -0
  610. /package/src/tools/{CronScheduler → input/CronScheduler}/utils/index.ts +0 -0
  611. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/README.md +0 -0
  612. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/__tests__/ids.test.ts +0 -0
  613. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/__tests__/language.test.ts +0 -0
  614. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/__tests__/reducer.test.ts +0 -0
  615. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/__tests__/transcript.test.ts +0 -0
  616. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/DevicePicker.tsx +0 -0
  617. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/DictationButton.tsx +0 -0
  618. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/EngineBadge.tsx +0 -0
  619. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/ErrorBanner.tsx +0 -0
  620. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/LanguagePicker.tsx +0 -0
  621. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/MicMeter.tsx +0 -0
  622. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/PushToTalkHint.tsx +0 -0
  623. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/RecordingPulse.tsx +0 -0
  624. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/TranscriptView.tsx +0 -0
  625. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/components/index.ts +0 -0
  626. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/context/SpeechRecognitionProvider.tsx +0 -0
  627. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/context/index.ts +0 -0
  628. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/external.ts +0 -0
  629. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/http.ts +0 -0
  630. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/index.ts +0 -0
  631. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/mediarecorder.ts +0 -0
  632. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/websocket.ts +0 -0
  633. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/engine/webspeech.ts +0 -0
  634. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/ids.ts +0 -0
  635. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/index.ts +0 -0
  636. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/language.ts +0 -0
  637. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/languages-catalog.ts +0 -0
  638. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/logger.ts +0 -0
  639. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/reducer.ts +0 -0
  640. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/core/transcript.ts +0 -0
  641. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/index.ts +0 -0
  642. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useDictation.ts +0 -0
  643. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useEnginePrefs.ts +0 -0
  644. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useMicDevices.ts +0 -0
  645. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useMicLevel.ts +0 -0
  646. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/usePushToTalk.ts +0 -0
  647. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useResolvedLanguage.ts +0 -0
  648. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useSpeechLanguageInfo.ts +0 -0
  649. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useSpeechRecognition.ts +0 -0
  650. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/hooks/useVoiceSupport.ts +0 -0
  651. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/index.ts +0 -0
  652. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/store/index.ts +0 -0
  653. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/store/prefsStore.ts +0 -0
  654. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/types.ts +0 -0
  655. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/widgets/DictationField.tsx +0 -0
  656. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/widgets/VoiceMessageRecorder.tsx +0 -0
  657. /package/src/tools/{SpeechRecognition → input/SpeechRecognition}/widgets/index.ts +0 -0
  658. /package/src/tools/{AudioPlayer → media/AudioPlayer}/Player.tsx +0 -0
  659. /package/src/tools/{AudioPlayer → media/AudioPlayer}/PlayerShell.tsx +0 -0
  660. /package/src/tools/{AudioPlayer → media/AudioPlayer}/README.md +0 -0
  661. /package/src/tools/{AudioPlayer → media/AudioPlayer}/audio/audioContext.ts +0 -0
  662. /package/src/tools/{AudioPlayer → media/AudioPlayer}/audio/decodePeaks.ts +0 -0
  663. /package/src/tools/{AudioPlayer → media/AudioPlayer}/audio/index.ts +0 -0
  664. /package/src/tools/{AudioPlayer → media/AudioPlayer}/audio/mediaElementSourceCache.ts +0 -0
  665. /package/src/tools/{AudioPlayer → media/AudioPlayer}/audio/peaksCache.ts +0 -0
  666. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/AudioRefContext.tsx +0 -0
  667. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/ControlsContext.tsx +0 -0
  668. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/LevelsContext.tsx +0 -0
  669. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/MetaContext.tsx +0 -0
  670. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/PlayerProvider.tsx +0 -0
  671. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/StateContext.tsx +0 -0
  672. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/index.ts +0 -0
  673. /package/src/tools/{AudioPlayer → media/AudioPlayer}/context/selectors.ts +0 -0
  674. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/index.ts +0 -0
  675. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useActivePlayer.ts +0 -0
  676. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useAnalyser.ts +0 -0
  677. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useAudioElementEvents.ts +0 -0
  678. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useKeyboardShortcuts.ts +0 -0
  679. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useMediaSession.ts +0 -0
  680. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/usePeaks.ts +0 -0
  681. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/usePlayerPreferences.ts +0 -0
  682. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/usePlayheadLoop.ts +0 -0
  683. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useResizeObserver.ts +0 -0
  684. /package/src/tools/{AudioPlayer → media/AudioPlayer}/hooks/useThemeWatcher.ts +0 -0
  685. /package/src/tools/{AudioPlayer → media/AudioPlayer}/index.ts +0 -0
  686. /package/src/tools/{AudioPlayer → media/AudioPlayer}/lazy.tsx +0 -0
  687. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/ControlsRow.tsx +0 -0
  688. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/IconButton.tsx +0 -0
  689. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/LoopButton.tsx +0 -0
  690. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/PlayButton.tsx +0 -0
  691. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/SkipButton.tsx +0 -0
  692. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/VolumeControl.tsx +0 -0
  693. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Controls/index.ts +0 -0
  694. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Cover/Cover.tsx +0 -0
  695. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Cover/CoverPlaceholder.tsx +0 -0
  696. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Cover/ReactivePulse.tsx +0 -0
  697. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Cover/index.ts +0 -0
  698. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/ErrorState/ErrorState.tsx +0 -0
  699. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/ErrorState/index.ts +0 -0
  700. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Layout/CompactLayout.tsx +0 -0
  701. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Layout/DefaultLayout.tsx +0 -0
  702. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Layout/index.ts +0 -0
  703. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Meta/Artist.tsx +0 -0
  704. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Meta/TimeDisplay.tsx +0 -0
  705. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Meta/Title.tsx +0 -0
  706. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Meta/index.ts +0 -0
  707. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Skeleton/CoverSkeleton.tsx +0 -0
  708. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Skeleton/MetaSkeleton.tsx +0 -0
  709. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Skeleton/index.ts +0 -0
  710. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/BarsWaveform.tsx +0 -0
  711. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/LiveWaveform.tsx +0 -0
  712. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/PeaksWaveform.tsx +0 -0
  713. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/ProgressBar.tsx +0 -0
  714. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/Waveform.tsx +0 -0
  715. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/WaveformSkeleton.tsx +0 -0
  716. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/index.ts +0 -0
  717. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/waveformInteraction.ts +0 -0
  718. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/Waveform/waveformRenderer.ts +0 -0
  719. /package/src/tools/{AudioPlayer → media/AudioPlayer}/parts/index.ts +0 -0
  720. /package/src/tools/{AudioPlayer → media/AudioPlayer}/store/activePlayerBus.ts +0 -0
  721. /package/src/tools/{AudioPlayer → media/AudioPlayer}/store/createLevelsStore.ts +0 -0
  722. /package/src/tools/{AudioPlayer → media/AudioPlayer}/store/index.ts +0 -0
  723. /package/src/tools/{AudioPlayer → media/AudioPlayer}/store/preferencesStore.ts +0 -0
  724. /package/src/tools/{AudioPlayer → media/AudioPlayer}/styles/webview-safe.css +0 -0
  725. /package/src/tools/{AudioPlayer → media/AudioPlayer}/types.ts +0 -0
  726. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/bucketize.ts +0 -0
  727. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/clamp.ts +0 -0
  728. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/dpr.ts +0 -0
  729. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/formatTime.ts +0 -0
  730. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/index.ts +0 -0
  731. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/readCssVar.ts +0 -0
  732. /package/src/tools/{AudioPlayer → media/AudioPlayer}/utils/resolveCanvasColor.ts +0 -0
  733. /package/src/tools/{Gallery → media/Gallery}/components/Gallery.tsx +0 -0
  734. /package/src/tools/{Gallery → media/Gallery}/components/compact/GalleryCompact.tsx +0 -0
  735. /package/src/tools/{Gallery → media/Gallery}/components/compact/index.ts +0 -0
  736. /package/src/tools/{Gallery → media/Gallery}/components/index.ts +0 -0
  737. /package/src/tools/{Gallery → media/Gallery}/components/lightbox/GalleryLightbox.tsx +0 -0
  738. /package/src/tools/{Gallery → media/Gallery}/components/lightbox/index.ts +0 -0
  739. /package/src/tools/{Gallery → media/Gallery}/components/media/GalleryImage.tsx +0 -0
  740. /package/src/tools/{Gallery → media/Gallery}/components/media/GalleryMedia.tsx +0 -0
  741. /package/src/tools/{Gallery → media/Gallery}/components/media/GalleryVideo.tsx +0 -0
  742. /package/src/tools/{Gallery → media/Gallery}/components/media/index.ts +0 -0
  743. /package/src/tools/{Gallery → media/Gallery}/components/preview/GalleryCarousel.tsx +0 -0
  744. /package/src/tools/{Gallery → media/Gallery}/components/preview/GalleryGrid.tsx +0 -0
  745. /package/src/tools/{Gallery → media/Gallery}/components/preview/index.ts +0 -0
  746. /package/src/tools/{Gallery → media/Gallery}/components/shared/ImageSpinner.tsx +0 -0
  747. /package/src/tools/{Gallery → media/Gallery}/components/shared/index.ts +0 -0
  748. /package/src/tools/{Gallery → media/Gallery}/components/thumbnails/GalleryThumbnails.tsx +0 -0
  749. /package/src/tools/{Gallery → media/Gallery}/components/thumbnails/GalleryThumbnailsVirtual.tsx +0 -0
  750. /package/src/tools/{Gallery → media/Gallery}/components/thumbnails/index.ts +0 -0
  751. /package/src/tools/{Gallery → media/Gallery}/hooks/index.ts +0 -0
  752. /package/src/tools/{Gallery → media/Gallery}/hooks/useGallery.ts +0 -0
  753. /package/src/tools/{Gallery → media/Gallery}/hooks/useImageDimensions.ts +0 -0
  754. /package/src/tools/{Gallery → media/Gallery}/hooks/usePinchZoom.ts +0 -0
  755. /package/src/tools/{Gallery → media/Gallery}/hooks/usePreloadImages.ts +0 -0
  756. /package/src/tools/{Gallery → media/Gallery}/hooks/useSwipe.ts +0 -0
  757. /package/src/tools/{Gallery → media/Gallery}/hooks/useVirtualList.ts +0 -0
  758. /package/src/tools/{Gallery → media/Gallery}/hooks/useZoom.ts +0 -0
  759. /package/src/tools/{Gallery → media/Gallery}/index.ts +0 -0
  760. /package/src/tools/{Gallery → media/Gallery}/types.ts +0 -0
  761. /package/src/tools/{Gallery → media/Gallery}/utils/imageAnalysis.ts +0 -0
  762. /package/src/tools/{Gallery → media/Gallery}/utils/index.ts +0 -0
  763. /package/src/tools/{Gallery → media/Gallery}/utils/normalizeUrl.ts +0 -0
  764. /package/src/tools/{ImageViewer → media/ImageViewer}/README.md +0 -0
  765. /package/src/tools/{ImageViewer → media/ImageViewer}/components/ImageToolbar.tsx +0 -0
  766. /package/src/tools/{ImageViewer → media/ImageViewer}/components/ImageViewer.tsx +0 -0
  767. /package/src/tools/{ImageViewer → media/ImageViewer}/components/index.ts +0 -0
  768. /package/src/tools/{ImageViewer → media/ImageViewer}/hooks/index.ts +0 -0
  769. /package/src/tools/{ImageViewer → media/ImageViewer}/hooks/useImageTransform.ts +0 -0
  770. /package/src/tools/{ImageViewer → media/ImageViewer}/index.ts +0 -0
  771. /package/src/tools/{ImageViewer → media/ImageViewer}/types.ts +0 -0
  772. /package/src/tools/{ImageViewer → media/ImageViewer}/utils/constants.ts +0 -0
  773. /package/src/tools/{ImageViewer → media/ImageViewer}/utils/debug.ts +0 -0
  774. /package/src/tools/{ImageViewer → media/ImageViewer}/utils/index.ts +0 -0
  775. /package/src/tools/{ImageViewer → media/ImageViewer}/utils/lqip.ts +0 -0
  776. /package/src/tools/{LottiePlayer → media/LottiePlayer}/LottiePlayer.client.tsx +0 -0
  777. /package/src/tools/{LottiePlayer → media/LottiePlayer}/index.tsx +0 -0
  778. /package/src/tools/{LottiePlayer → media/LottiePlayer}/types.ts +0 -0
  779. /package/src/tools/{LottiePlayer → media/LottiePlayer}/useLottie.ts +0 -0
  780. /package/src/tools/{LottiePlayer → media/LottiePlayer}/usePrefersReducedMotion.ts +0 -0
  781. /package/src/tools/{VideoPlayer → media/VideoPlayer}/README.md +0 -0
  782. /package/src/tools/{VideoPlayer → media/VideoPlayer}/VideoPlayer.tsx +0 -0
  783. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/canvas-dispatcher.tsx +0 -0
  784. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/hls-canvas.tsx +0 -0
  785. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/iframe-canvas.tsx +0 -0
  786. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/index.ts +0 -0
  787. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/jsx-augmentation.ts +0 -0
  788. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/native-canvas.tsx +0 -0
  789. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/vimeo-canvas.tsx +0 -0
  790. /package/src/tools/{VideoPlayer → media/VideoPlayer}/canvas/youtube-canvas.tsx +0 -0
  791. /package/src/tools/{VideoPlayer → media/VideoPlayer}/index.ts +0 -0
  792. /package/src/tools/{VideoPlayer → media/VideoPlayer}/lazy.tsx +0 -0
  793. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/controls-bar.tsx +0 -0
  794. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/fullscreen.tsx +0 -0
  795. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/index.ts +0 -0
  796. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/pip.tsx +0 -0
  797. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/play-button.tsx +0 -0
  798. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/playback-rate.tsx +0 -0
  799. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/poster.tsx +0 -0
  800. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/seek-bar.tsx +0 -0
  801. /package/src/tools/{VideoPlayer → media/VideoPlayer}/parts/volume.tsx +0 -0
  802. /package/src/tools/{VideoPlayer → media/VideoPlayer}/styles/video-player.css +0 -0
  803. /package/src/tools/{VideoPlayer → media/VideoPlayer}/types.ts +0 -0
  804. /package/src/tools/{VideoPlayer → media/VideoPlayer}/utils/parse-embed-url.ts +0 -0
  805. /package/src/tools/{VideoPlayer → media/VideoPlayer}/utils/vimeo-id.ts +0 -0
  806. /package/src/tools/{VideoPlayer → media/VideoPlayer}/utils/youtube-id.ts +0 -0
  807. /package/src/tools/{FileIcon → visual/FileIcon}/FileIcon.tsx +0 -0
  808. /package/src/tools/{FileIcon → visual/FileIcon}/get-file-icon.ts +0 -0
  809. /package/src/tools/{FileIcon → visual/FileIcon}/icons/icon-data.ts +0 -0
  810. /package/src/tools/{FileIcon → visual/FileIcon}/index.ts +0 -0
  811. /package/src/tools/{FileIcon → visual/FileIcon}/loader.ts +0 -0
  812. /package/src/tools/{FileIcon → visual/FileIcon}/specialFolders.ts +0 -0
@@ -0,0 +1,323 @@
1
+ import type { ColorValue, HSVColorValue, ColorFormat } from '../types';
2
+
3
+ export function hexToRgb(hex: string, alpha?: number): ColorValue {
4
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
5
+ return result
6
+ ? {
7
+ r: Number.parseInt(result[1] ?? '0', 16),
8
+ g: Number.parseInt(result[2] ?? '0', 16),
9
+ b: Number.parseInt(result[3] ?? '0', 16),
10
+ a: alpha ?? 1,
11
+ }
12
+ : { r: 0, g: 0, b: 0, a: alpha ?? 1 };
13
+ }
14
+
15
+ export function rgbToHex(color: ColorValue): string {
16
+ const toHex = (n: number) => {
17
+ const hex = Math.round(n).toString(16);
18
+ return hex.length === 1 ? `0${hex}` : hex;
19
+ };
20
+ return `#${toHex(color.r)}${toHex(color.g)}${toHex(color.b)}`;
21
+ }
22
+
23
+ export function rgbToHsv(color: ColorValue): HSVColorValue {
24
+ const r = color.r / 255;
25
+ const g = color.g / 255;
26
+ const b = color.b / 255;
27
+
28
+ const max = Math.max(r, g, b);
29
+ const min = Math.min(r, g, b);
30
+ const diff = max - min;
31
+
32
+ let h = 0;
33
+ if (diff !== 0) {
34
+ switch (max) {
35
+ case r:
36
+ h = ((g - b) / diff) % 6;
37
+ break;
38
+ case g:
39
+ h = (b - r) / diff + 2;
40
+ break;
41
+ case b:
42
+ h = (r - g) / diff + 4;
43
+ break;
44
+ }
45
+ }
46
+ h = Math.round(h * 60);
47
+ if (h < 0) h += 360;
48
+
49
+ const s = max === 0 ? 0 : diff / max;
50
+ const v = max;
51
+
52
+ return {
53
+ h,
54
+ s: Math.round(s * 100),
55
+ v: Math.round(v * 100),
56
+ a: color.a,
57
+ };
58
+ }
59
+
60
+ export function hsvToRgb(hsv: HSVColorValue): ColorValue {
61
+ const h = hsv.h / 360;
62
+ const s = hsv.s / 100;
63
+ const v = hsv.v / 100;
64
+
65
+ const i = Math.floor(h * 6);
66
+ const f = h * 6 - i;
67
+ const p = v * (1 - s);
68
+ const q = v * (1 - f * s);
69
+ const t = v * (1 - (1 - f) * s);
70
+
71
+ let r: number;
72
+ let g: number;
73
+ let b: number;
74
+
75
+ switch (i % 6) {
76
+ case 0: {
77
+ r = v;
78
+ g = t;
79
+ b = p;
80
+ break;
81
+ }
82
+ case 1: {
83
+ r = q;
84
+ g = v;
85
+ b = p;
86
+ break;
87
+ }
88
+ case 2: {
89
+ r = p;
90
+ g = v;
91
+ b = t;
92
+ break;
93
+ }
94
+ case 3: {
95
+ r = p;
96
+ g = q;
97
+ b = v;
98
+ break;
99
+ }
100
+ case 4: {
101
+ r = t;
102
+ g = p;
103
+ b = v;
104
+ break;
105
+ }
106
+ case 5: {
107
+ r = v;
108
+ g = p;
109
+ b = q;
110
+ break;
111
+ }
112
+ default: {
113
+ r = 0;
114
+ g = 0;
115
+ b = 0;
116
+ }
117
+ }
118
+
119
+ return {
120
+ r: Math.round(r * 255),
121
+ g: Math.round(g * 255),
122
+ b: Math.round(b * 255),
123
+ a: hsv.a,
124
+ };
125
+ }
126
+
127
+ export function colorToString(color: ColorValue, format: ColorFormat = 'hex'): string {
128
+ switch (format) {
129
+ case 'hex':
130
+ return rgbToHex(color);
131
+ case 'rgb':
132
+ return color.a < 1
133
+ ? `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`
134
+ : `rgb(${color.r}, ${color.g}, ${color.b})`;
135
+ case 'hsl': {
136
+ const hsl = rgbToHsl(color);
137
+ return color.a < 1
138
+ ? `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${color.a})`
139
+ : `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;
140
+ }
141
+ case 'hsb': {
142
+ const hsv = rgbToHsv(color);
143
+ return color.a < 1
144
+ ? `hsba(${hsv.h}, ${hsv.s}%, ${hsv.v}%, ${color.a})`
145
+ : `hsb(${hsv.h}, ${hsv.s}%, ${hsv.v}%)`;
146
+ }
147
+ default:
148
+ return rgbToHex(color);
149
+ }
150
+ }
151
+
152
+ export function rgbToHsl(color: ColorValue) {
153
+ const r = color.r / 255;
154
+ const g = color.g / 255;
155
+ const b = color.b / 255;
156
+
157
+ const max = Math.max(r, g, b);
158
+ const min = Math.min(r, g, b);
159
+ const diff = max - min;
160
+ const sum = max + min;
161
+
162
+ const l = sum / 2;
163
+
164
+ let h = 0;
165
+ let s = 0;
166
+
167
+ if (diff !== 0) {
168
+ s = l > 0.5 ? diff / (2 - sum) : diff / sum;
169
+
170
+ if (max === r) {
171
+ h = (g - b) / diff + (g < b ? 6 : 0);
172
+ } else if (max === g) {
173
+ h = (b - r) / diff + 2;
174
+ } else if (max === b) {
175
+ h = (r - g) / diff + 4;
176
+ }
177
+ h /= 6;
178
+ }
179
+
180
+ return {
181
+ h: Math.round(h * 360),
182
+ s: Math.round(s * 100),
183
+ l: Math.round(l * 100),
184
+ };
185
+ }
186
+
187
+ export function hslToRgb(
188
+ hsl: { h: number; s: number; l: number },
189
+ alpha = 1,
190
+ ): ColorValue {
191
+ const h = hsl.h / 360;
192
+ const s = hsl.s / 100;
193
+ const l = hsl.l / 100;
194
+
195
+ const c = (1 - Math.abs(2 * l - 1)) * s;
196
+ const x = c * (1 - Math.abs(((h * 6) % 2) - 1));
197
+ const m = l - c / 2;
198
+
199
+ let r = 0;
200
+ let g = 0;
201
+ let b = 0;
202
+
203
+ if (h >= 0 && h < 1 / 6) {
204
+ r = c;
205
+ g = x;
206
+ b = 0;
207
+ } else if (h >= 1 / 6 && h < 2 / 6) {
208
+ r = x;
209
+ g = c;
210
+ b = 0;
211
+ } else if (h >= 2 / 6 && h < 3 / 6) {
212
+ r = 0;
213
+ g = c;
214
+ b = x;
215
+ } else if (h >= 3 / 6 && h < 4 / 6) {
216
+ r = 0;
217
+ g = x;
218
+ b = c;
219
+ } else if (h >= 4 / 6 && h < 5 / 6) {
220
+ r = x;
221
+ g = 0;
222
+ b = c;
223
+ } else if (h >= 5 / 6 && h < 1) {
224
+ r = c;
225
+ g = 0;
226
+ b = x;
227
+ }
228
+
229
+ return {
230
+ r: Math.round((r + m) * 255),
231
+ g: Math.round((g + m) * 255),
232
+ b: Math.round((b + m) * 255),
233
+ a: alpha,
234
+ };
235
+ }
236
+
237
+ export function parseColorString(value: string): ColorValue | null {
238
+ const trimmed = value.trim();
239
+
240
+ if (trimmed.startsWith('#')) {
241
+ const hexMatch = trimmed.match(/^#([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/);
242
+ if (hexMatch) {
243
+ return hexToRgb(trimmed);
244
+ }
245
+ }
246
+
247
+ const rgbMatch = trimmed.match(
248
+ /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)$/,
249
+ );
250
+ if (rgbMatch) {
251
+ return {
252
+ r: Number.parseInt(rgbMatch[1] ?? '0', 10),
253
+ g: Number.parseInt(rgbMatch[2] ?? '0', 10),
254
+ b: Number.parseInt(rgbMatch[3] ?? '0', 10),
255
+ a: rgbMatch[4] ? Number.parseFloat(rgbMatch[4]) : 1,
256
+ };
257
+ }
258
+
259
+ const hslMatch = trimmed.match(
260
+ /^hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*([\d.]+))?\s*\)$/,
261
+ );
262
+ if (hslMatch) {
263
+ const h = Number.parseInt(hslMatch[1] ?? '0', 10);
264
+ const s = Number.parseInt(hslMatch[2] ?? '0', 10) / 100;
265
+ const l = Number.parseInt(hslMatch[3] ?? '0', 10) / 100;
266
+ const a = hslMatch[4] ? Number.parseFloat(hslMatch[4]) : 1;
267
+
268
+ const c = (1 - Math.abs(2 * l - 1)) * s;
269
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
270
+ const m = l - c / 2;
271
+
272
+ let r = 0;
273
+ let g = 0;
274
+ let b = 0;
275
+
276
+ if (h >= 0 && h < 60) {
277
+ r = c;
278
+ g = x;
279
+ b = 0;
280
+ } else if (h >= 60 && h < 120) {
281
+ r = x;
282
+ g = c;
283
+ b = 0;
284
+ } else if (h >= 120 && h < 180) {
285
+ r = 0;
286
+ g = c;
287
+ b = x;
288
+ } else if (h >= 180 && h < 240) {
289
+ r = 0;
290
+ g = x;
291
+ b = c;
292
+ } else if (h >= 240 && h < 300) {
293
+ r = x;
294
+ g = 0;
295
+ b = c;
296
+ } else if (h >= 300 && h < 360) {
297
+ r = c;
298
+ g = 0;
299
+ b = x;
300
+ }
301
+
302
+ return {
303
+ r: Math.round((r + m) * 255),
304
+ g: Math.round((g + m) * 255),
305
+ b: Math.round((b + m) * 255),
306
+ a,
307
+ };
308
+ }
309
+
310
+ const hsbMatch = trimmed.match(
311
+ /^hsba?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*([\d.]+))?\s*\)$/,
312
+ );
313
+ if (hsbMatch) {
314
+ const h = Number.parseInt(hsbMatch[1] ?? '0', 10);
315
+ const s = Number.parseInt(hsbMatch[2] ?? '0', 10);
316
+ const v = Number.parseInt(hsbMatch[3] ?? '0', 10);
317
+ const a = hsbMatch[4] ? Number.parseFloat(hsbMatch[4]) : 1;
318
+
319
+ return hsvToRgb({ h, s, v, a });
320
+ }
321
+
322
+ return null;
323
+ }
@@ -0,0 +1,72 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { Slider } from '@djangocfg/ui-core/components';
5
+ import { cn } from '@djangocfg/ui-core/lib';
6
+ import { useColorPickerContext } from '../context/ColorPickerContext';
7
+ import { useStoreContext, useStore } from '../context/ColorPickerStore';
8
+
9
+ const ALPHA_SLIDER_NAME = 'ColorPickerAlphaSlider';
10
+
11
+ export function ColorPickerAlphaSlider(props: React.ComponentProps<typeof Slider>) {
12
+ const { className, ...sliderProps } = props;
13
+
14
+ const context = useColorPickerContext(ALPHA_SLIDER_NAME);
15
+ const store = useStoreContext(ALPHA_SLIDER_NAME);
16
+
17
+ const color = useStore((state) => state.color);
18
+ const hsv = useStore((state) => state.hsv);
19
+
20
+ const onValueChange = React.useCallback(
21
+ (values: number[]) => {
22
+ const alpha = (values[0] ?? 0) / 100;
23
+ const newColor = { ...color, a: alpha };
24
+ const newHsv = { ...hsv, a: alpha };
25
+ store.setColor(newColor);
26
+ store.setHsv(newHsv);
27
+ },
28
+ [color, hsv, store],
29
+ );
30
+
31
+ const opaqueColor = `rgb(${color?.r ?? 0}, ${color?.g ?? 0}, ${color?.b ?? 0})`;
32
+ const transparentColor = `rgba(${color?.r ?? 0}, ${color?.g ?? 0}, ${color?.b ?? 0}, 0)`;
33
+
34
+ return (
35
+ <div
36
+ className={cn(
37
+ 'relative flex w-full touch-none select-none items-center',
38
+ className,
39
+ )}
40
+ >
41
+ {/* Checkerboard background */}
42
+ <div
43
+ className="pointer-events-none absolute inset-x-0 h-3 rounded-full"
44
+ style={{
45
+ background:
46
+ 'linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%)',
47
+ backgroundSize: '8px 8px',
48
+ backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',
49
+ }}
50
+ />
51
+ {/* Alpha gradient overlay */}
52
+ <div
53
+ className="pointer-events-none absolute inset-x-0 h-3 rounded-full"
54
+ style={{
55
+ background: `linear-gradient(to right, ${transparentColor}, ${opaqueColor})`,
56
+ }}
57
+ />
58
+ <Slider
59
+ data-slot="color-picker-alpha-slider"
60
+ {...sliderProps}
61
+ max={100}
62
+ step={1}
63
+ disabled={context.disabled}
64
+ className="relative z-10 w-full"
65
+ value={[Math.round((color?.a ?? 1) * 100)]}
66
+ onValueChange={onValueChange}
67
+ />
68
+ </div>
69
+ );
70
+ }
71
+
72
+ ColorPickerAlphaSlider.displayName = ALPHA_SLIDER_NAME;
@@ -0,0 +1,155 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { useComposedRefs } from '@djangocfg/ui-core/lib';
5
+ import { cn } from '@djangocfg/ui-core/lib';
6
+ import { useColorPickerContext } from '../context/ColorPickerContext';
7
+ import { useStoreContext } from '../context/ColorPickerStore';
8
+ import { useStore } from '../context/ColorPickerStore';
9
+ import { hsvToRgb } from '../lib/color-utils';
10
+ import type { HSVColorValue } from '../types';
11
+
12
+ const AREA_NAME = 'ColorPickerArea';
13
+
14
+ export function ColorPickerArea(props: React.ComponentProps<'div'> & { asChild?: boolean }) {
15
+ const {
16
+ asChild,
17
+ onPointerDown: onPointerDownProp,
18
+ onPointerMove: onPointerMoveProp,
19
+ onPointerUp: onPointerUpProp,
20
+ className,
21
+ ref,
22
+ ...areaProps
23
+ } = props;
24
+
25
+ const propsRef = React.useRef({
26
+ onPointerDown: onPointerDownProp,
27
+ onPointerMove: onPointerMoveProp,
28
+ onPointerUp: onPointerUpProp,
29
+ });
30
+ React.useEffect(() => {
31
+ propsRef.current = {
32
+ onPointerDown: onPointerDownProp,
33
+ onPointerMove: onPointerMoveProp,
34
+ onPointerUp: onPointerUpProp,
35
+ };
36
+ });
37
+
38
+ const context = useColorPickerContext(AREA_NAME);
39
+ const store = useStoreContext(AREA_NAME);
40
+
41
+ const hsv = useStore((state) => state.hsv);
42
+
43
+ const isDraggingRef = React.useRef(false);
44
+ const areaRef = React.useRef<HTMLDivElement>(null);
45
+ const composedRef = useComposedRefs(ref, areaRef);
46
+
47
+ const updateColorFromPosition = React.useCallback(
48
+ (clientX: number, clientY: number) => {
49
+ if (!areaRef.current) return;
50
+
51
+ const rect = areaRef.current.getBoundingClientRect();
52
+ const x = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
53
+ const y = Math.max(
54
+ 0,
55
+ Math.min(1, 1 - (clientY - rect.top) / rect.height),
56
+ );
57
+
58
+ const newHsv: HSVColorValue = {
59
+ h: hsv?.h ?? 0,
60
+ s: Math.round(x * 100),
61
+ v: Math.round(y * 100),
62
+ a: hsv?.a ?? 1,
63
+ };
64
+
65
+ store.setHsv(newHsv);
66
+ store.setColor(hsvToRgb(newHsv));
67
+ },
68
+ [hsv, store],
69
+ );
70
+
71
+ const onPointerDown = React.useCallback(
72
+ (event: React.PointerEvent<HTMLDivElement>) => {
73
+ if (context.disabled) return;
74
+ propsRef.current.onPointerDown?.(event);
75
+ if (event.defaultPrevented) return;
76
+
77
+ isDraggingRef.current = true;
78
+ areaRef.current?.setPointerCapture(event.pointerId);
79
+ updateColorFromPosition(event.clientX, event.clientY);
80
+ },
81
+ [context.disabled, updateColorFromPosition],
82
+ );
83
+
84
+ const onPointerMove = React.useCallback(
85
+ (event: React.PointerEvent<HTMLDivElement>) => {
86
+ propsRef.current.onPointerMove?.(event);
87
+ if (event.defaultPrevented) return;
88
+
89
+ if (isDraggingRef.current) {
90
+ updateColorFromPosition(event.clientX, event.clientY);
91
+ }
92
+ },
93
+ [updateColorFromPosition],
94
+ );
95
+
96
+ const onPointerUp = React.useCallback(
97
+ (event: React.PointerEvent<HTMLDivElement>) => {
98
+ propsRef.current.onPointerUp?.(event);
99
+ if (event.defaultPrevented) return;
100
+
101
+ isDraggingRef.current = false;
102
+ areaRef.current?.releasePointerCapture(event.pointerId);
103
+ },
104
+ [],
105
+ );
106
+
107
+ const hue = hsv?.h ?? 0;
108
+ const backgroundHue = hsvToRgb({ h: hue, s: 100, v: 100, a: 1 });
109
+
110
+ return (
111
+ <div
112
+ data-slot="color-picker-area"
113
+ {...areaProps}
114
+ className={cn(
115
+ 'relative h-40 w-full cursor-crosshair touch-none rounded-sm border',
116
+ context.disabled && 'pointer-events-none opacity-50',
117
+ className,
118
+ )}
119
+ ref={composedRef}
120
+ onPointerDown={onPointerDown}
121
+ onPointerMove={onPointerMove}
122
+ onPointerUp={onPointerUp}
123
+ >
124
+ <div className="absolute inset-0 overflow-hidden rounded-sm">
125
+ <div
126
+ className="absolute inset-0"
127
+ style={{
128
+ backgroundColor: `rgb(${backgroundHue.r}, ${backgroundHue.g}, ${backgroundHue.b})`,
129
+ }}
130
+ />
131
+ <div
132
+ className="absolute inset-0"
133
+ style={{
134
+ background: 'linear-gradient(to right, #fff, transparent)',
135
+ }}
136
+ />
137
+ <div
138
+ className="absolute inset-0"
139
+ style={{
140
+ background: 'linear-gradient(to bottom, transparent, #000)',
141
+ }}
142
+ />
143
+ </div>
144
+ <div
145
+ className="absolute size-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-sm"
146
+ style={{
147
+ left: `${hsv?.s ?? 0}%`,
148
+ top: `${100 - (hsv?.v ?? 0)}%`,
149
+ }}
150
+ />
151
+ </div>
152
+ );
153
+ }
154
+
155
+ ColorPickerArea.displayName = AREA_NAME;
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+
3
+ import { PipetteIcon } from 'lucide-react';
4
+ import * as React from 'react';
5
+ import { Button } from '@djangocfg/ui-core/components';
6
+ import { useColorPickerContext } from '../context/ColorPickerContext';
7
+ import { useStoreContext, useStore } from '../context/ColorPickerStore';
8
+ import { hexToRgb, rgbToHsv } from '../lib/color-utils';
9
+
10
+ const EYE_DROPPER_NAME = 'ColorPickerEyeDropper';
11
+
12
+ interface EyeDropper {
13
+ open: (options?: { signal?: AbortSignal }) => Promise<{ sRGBHex: string }>;
14
+ }
15
+
16
+ declare global {
17
+ interface Window {
18
+ EyeDropper?: {
19
+ new (): EyeDropper;
20
+ };
21
+ }
22
+ }
23
+
24
+ export function ColorPickerEyeDropper(props: React.ComponentProps<typeof Button>) {
25
+ const { size: sizeProp, children, disabled, ...buttonProps } = props;
26
+
27
+ const context = useColorPickerContext(EYE_DROPPER_NAME);
28
+ const store = useStoreContext(EYE_DROPPER_NAME);
29
+
30
+ const color = useStore((state) => state.color);
31
+
32
+ const isDisabled = disabled || context.disabled;
33
+
34
+ const onEyeDropper = React.useCallback(async () => {
35
+ if (!window.EyeDropper) return;
36
+
37
+ try {
38
+ const eyeDropper = new window.EyeDropper();
39
+ const result = await eyeDropper.open();
40
+
41
+ if (result.sRGBHex) {
42
+ const currentAlpha = color?.a ?? 1;
43
+ const newColor = hexToRgb(result.sRGBHex, currentAlpha);
44
+ const newHsv = rgbToHsv(newColor);
45
+ store.setColor(newColor);
46
+ store.setHsv(newHsv);
47
+ }
48
+ } catch (error) {
49
+ console.warn('EyeDropper error:', error);
50
+ }
51
+ }, [color, store]);
52
+
53
+ const hasEyeDropper = typeof window !== 'undefined' && !!window.EyeDropper;
54
+
55
+ if (!hasEyeDropper) return null;
56
+
57
+ const size = sizeProp ?? (children ? 'default' : 'icon');
58
+
59
+ return (
60
+ <Button
61
+ data-slot="color-picker-eye-dropper"
62
+ {...buttonProps}
63
+ variant="outline"
64
+ size={size}
65
+ onClick={onEyeDropper}
66
+ disabled={isDisabled}
67
+ >
68
+ {children ?? <PipetteIcon />}
69
+ </Button>
70
+ );
71
+ }
72
+
73
+ ColorPickerEyeDropper.displayName = EYE_DROPPER_NAME;
@@ -0,0 +1,64 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import {
5
+ Select,
6
+ SelectContent,
7
+ SelectItem,
8
+ SelectTrigger,
9
+ SelectValue,
10
+ } from '@djangocfg/ui-core/components';
11
+ import { cn } from '@djangocfg/ui-core/lib';
12
+ import { useColorPickerContext } from '../context/ColorPickerContext';
13
+ import { useStoreContext, useStore } from '../context/ColorPickerStore';
14
+ import { colorFormats } from '../types';
15
+ import type { ColorFormat } from '../types';
16
+
17
+ const FORMAT_SELECT_NAME = 'ColorPickerFormatSelect';
18
+
19
+ export function ColorPickerFormatSelect(
20
+ props: Omit<React.ComponentProps<typeof Select>, 'value' | 'onValueChange'> & {
21
+ className?: string;
22
+ }
23
+ ) {
24
+ const { disabled, className, ...selectProps } = props;
25
+
26
+ const context = useColorPickerContext(FORMAT_SELECT_NAME);
27
+ const store = useStoreContext(FORMAT_SELECT_NAME);
28
+ const isDisabled = disabled || context.disabled;
29
+
30
+ const format = useStore((state) => state.format);
31
+
32
+ const onFormatChange = React.useCallback(
33
+ (value: string) => {
34
+ store.setFormat(value as ColorFormat);
35
+ },
36
+ [store],
37
+ );
38
+
39
+ return (
40
+ <Select
41
+ data-slot="color-picker-format-select"
42
+ {...selectProps}
43
+ value={format}
44
+ onValueChange={onFormatChange}
45
+ disabled={isDisabled}
46
+ >
47
+ <SelectTrigger
48
+ data-slot="color-picker-format-select-trigger"
49
+ className={cn('h-8 text-xs', className)}
50
+ >
51
+ <SelectValue />
52
+ </SelectTrigger>
53
+ <SelectContent>
54
+ {colorFormats.map((format) => (
55
+ <SelectItem key={format} value={format}>
56
+ {format.toUpperCase()}
57
+ </SelectItem>
58
+ ))}
59
+ </SelectContent>
60
+ </Select>
61
+ );
62
+ }
63
+
64
+ ColorPickerFormatSelect.displayName = FORMAT_SELECT_NAME;