@strapi/content-type-builder 5.25.0 → 5.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/admin/components/AIChat/Chat.js +431 -0
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -0
  3. package/dist/admin/components/AIChat/Chat.mjs +429 -0
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -0
  5. package/dist/admin/components/AIChat/FeedbackModal.js +237 -0
  6. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -0
  7. package/dist/admin/components/AIChat/FeedbackModal.mjs +233 -0
  8. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -0
  9. package/dist/admin/components/AIChat/UploadCodeModal.js +427 -0
  10. package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -0
  11. package/dist/admin/components/AIChat/UploadCodeModal.mjs +423 -0
  12. package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -0
  13. package/dist/admin/components/AIChat/UploadFigmaModal.js +377 -0
  14. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -0
  15. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +373 -0
  16. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -0
  17. package/dist/admin/components/AIChat/components/Alert.js +46 -0
  18. package/dist/admin/components/AIChat/components/Alert.js.map +1 -0
  19. package/dist/admin/components/AIChat/components/Alert.mjs +44 -0
  20. package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -0
  21. package/dist/admin/components/AIChat/components/AnimatedBox.js +34 -0
  22. package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -0
  23. package/dist/admin/components/AIChat/components/AnimatedBox.mjs +32 -0
  24. package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -0
  25. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js +92 -0
  26. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -0
  27. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs +90 -0
  28. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -0
  29. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js +100 -0
  30. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -0
  31. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +97 -0
  32. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -0
  33. package/dist/admin/components/AIChat/components/Base64Image.js +127 -0
  34. package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -0
  35. package/dist/admin/components/AIChat/components/Base64Image.mjs +125 -0
  36. package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -0
  37. package/dist/admin/components/AIChat/components/Collapsible.js +71 -0
  38. package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -0
  39. package/dist/admin/components/AIChat/components/Collapsible.mjs +66 -0
  40. package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -0
  41. package/dist/admin/components/AIChat/components/Dropzone.js +172 -0
  42. package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -0
  43. package/dist/admin/components/AIChat/components/Dropzone.mjs +167 -0
  44. package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -0
  45. package/dist/admin/components/AIChat/components/FloatingPanel.js +166 -0
  46. package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -0
  47. package/dist/admin/components/AIChat/components/FloatingPanel.mjs +163 -0
  48. package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -0
  49. package/dist/admin/components/AIChat/components/FullScreenImage.js +190 -0
  50. package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -0
  51. package/dist/admin/components/AIChat/components/FullScreenImage.mjs +187 -0
  52. package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -0
  53. package/dist/admin/components/AIChat/components/ImagePreview.js +87 -0
  54. package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -0
  55. package/dist/admin/components/AIChat/components/ImagePreview.mjs +85 -0
  56. package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -0
  57. package/dist/admin/components/AIChat/components/Input.js +126 -0
  58. package/dist/admin/components/AIChat/components/Input.js.map +1 -0
  59. package/dist/admin/components/AIChat/components/Input.mjs +121 -0
  60. package/dist/admin/components/AIChat/components/Input.mjs.map +1 -0
  61. package/dist/admin/components/AIChat/components/Messages/Marker.js +138 -0
  62. package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -0
  63. package/dist/admin/components/AIChat/components/Messages/Marker.mjs +136 -0
  64. package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -0
  65. package/dist/admin/components/AIChat/components/Messages/Message.js +214 -0
  66. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -0
  67. package/dist/admin/components/AIChat/components/Messages/Message.mjs +212 -0
  68. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -0
  69. package/dist/admin/components/AIChat/components/ResizableTextArea.js +78 -0
  70. package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -0
  71. package/dist/admin/components/AIChat/components/ResizableTextArea.mjs +76 -0
  72. package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -0
  73. package/dist/admin/components/AIChat/components/SimpleMenu.js +60 -0
  74. package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -0
  75. package/dist/admin/components/AIChat/components/SimpleMenu.mjs +35 -0
  76. package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -0
  77. package/dist/admin/components/AIChat/components/StepModal.js +175 -0
  78. package/dist/admin/components/AIChat/components/StepModal.js.map +1 -0
  79. package/dist/admin/components/AIChat/components/StepModal.mjs +171 -0
  80. package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -0
  81. package/dist/admin/components/AIChat/components/animations.js +67 -0
  82. package/dist/admin/components/AIChat/components/animations.js.map +1 -0
  83. package/dist/admin/components/AIChat/components/animations.mjs +65 -0
  84. package/dist/admin/components/AIChat/components/animations.mjs.map +1 -0
  85. package/dist/admin/components/AIChat/components/icons/FigmaIcon.js +50 -0
  86. package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -0
  87. package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs +48 -0
  88. package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -0
  89. package/dist/admin/components/AIChat/components/icons/StopIcon.js +25 -0
  90. package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -0
  91. package/dist/admin/components/AIChat/components/icons/StopIcon.mjs +23 -0
  92. package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -0
  93. package/dist/admin/components/AIChat/hooks/useAIFetch.js +107 -0
  94. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -0
  95. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +96 -0
  96. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -0
  97. package/dist/admin/components/AIChat/hooks/useAttachments.js +152 -0
  98. package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -0
  99. package/dist/admin/components/AIChat/hooks/useAttachments.mjs +150 -0
  100. package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -0
  101. package/dist/admin/components/AIChat/hooks/useChatTitle.js +47 -0
  102. package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -0
  103. package/dist/admin/components/AIChat/hooks/useChatTitle.mjs +45 -0
  104. package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -0
  105. package/dist/admin/components/AIChat/hooks/useCodeUpload.js +212 -0
  106. package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -0
  107. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs +207 -0
  108. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -0
  109. package/dist/admin/components/AIChat/hooks/useFeedback.js +76 -0
  110. package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -0
  111. package/dist/admin/components/AIChat/hooks/useFeedback.mjs +74 -0
  112. package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -0
  113. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js +206 -0
  114. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -0
  115. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs +200 -0
  116. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -0
  117. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js +115 -0
  118. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -0
  119. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs +113 -0
  120. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -0
  121. package/dist/admin/components/AIChat/hooks/useTranslations.js +19 -0
  122. package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -0
  123. package/dist/admin/components/AIChat/hooks/useTranslations.mjs +17 -0
  124. package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -0
  125. package/dist/admin/components/AIChat/lib/aiClient.js +168 -0
  126. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -0
  127. package/dist/admin/components/AIChat/lib/aiClient.mjs +161 -0
  128. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -0
  129. package/dist/admin/components/AIChat/lib/constants.js +16 -0
  130. package/dist/admin/components/AIChat/lib/constants.js.map +1 -0
  131. package/dist/admin/components/AIChat/lib/constants.mjs +10 -0
  132. package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -0
  133. package/dist/admin/components/AIChat/lib/misc.js +8 -0
  134. package/dist/admin/components/AIChat/lib/misc.js.map +1 -0
  135. package/dist/admin/components/AIChat/lib/misc.mjs +6 -0
  136. package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -0
  137. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +46 -0
  138. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -0
  139. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +44 -0
  140. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -0
  141. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +151 -0
  142. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -0
  143. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +148 -0
  144. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -0
  145. package/dist/admin/components/AIChat/providers/ChatProvider.js +191 -0
  146. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -0
  147. package/dist/admin/components/AIChat/providers/ChatProvider.mjs +187 -0
  148. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -0
  149. package/dist/admin/components/AIChat/providers/SchemaProvider.js +90 -0
  150. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -0
  151. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +88 -0
  152. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -0
  153. package/dist/admin/components/ComponentList.js +1 -0
  154. package/dist/admin/components/ComponentList.js.map +1 -1
  155. package/dist/admin/components/ComponentList.mjs +1 -0
  156. package/dist/admin/components/ComponentList.mjs.map +1 -1
  157. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  158. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  159. package/dist/admin/components/DataManager/reducer.js +48 -6
  160. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  161. package/dist/admin/components/DataManager/reducer.mjs +48 -6
  162. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  163. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  164. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  165. package/dist/admin/pages/App/index.js +60 -29
  166. package/dist/admin/pages/App/index.js.map +1 -1
  167. package/dist/admin/pages/App/index.mjs +62 -31
  168. package/dist/admin/pages/App/index.mjs.map +1 -1
  169. package/dist/admin/pages/ListView/EmptyState.js +75 -9
  170. package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
  171. package/dist/admin/pages/ListView/EmptyState.mjs +77 -11
  172. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
  173. package/dist/admin/src/components/AIChat/Chat.d.ts +2 -0
  174. package/dist/admin/src/components/AIChat/FeedbackModal.d.ts +13 -0
  175. package/dist/admin/src/components/AIChat/UploadCodeModal.d.ts +12 -0
  176. package/dist/admin/src/components/AIChat/UploadFigmaModal.d.ts +12 -0
  177. package/dist/admin/src/components/AIChat/components/Alert.d.ts +6 -0
  178. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +13 -0
  179. package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +9 -0
  180. package/dist/admin/src/components/AIChat/components/Attachments/components/Attachment.d.ts +27 -0
  181. package/dist/admin/src/components/AIChat/components/Base64Image.d.ts +9 -0
  182. package/dist/admin/src/components/AIChat/components/Collapsible.d.ts +18 -0
  183. package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +35 -0
  184. package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +34 -0
  185. package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +20 -0
  186. package/dist/admin/src/components/AIChat/components/ImagePreview.d.ts +8 -0
  187. package/dist/admin/src/components/AIChat/components/ImagePreviewGroup.d.ts +7 -0
  188. package/dist/admin/src/components/AIChat/components/Input.d.ts +43 -0
  189. package/dist/admin/src/components/AIChat/components/Messages/Marker.d.ts +2 -0
  190. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +5 -0
  191. package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +9 -0
  192. package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +32 -0
  193. package/dist/admin/src/components/AIChat/components/StepModal.d.ts +37 -0
  194. package/dist/admin/src/components/AIChat/components/animations.d.ts +8 -0
  195. package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +5 -0
  196. package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +5 -0
  197. package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +147 -0
  198. package/dist/admin/src/components/AIChat/hooks/useAttachments.d.ts +8 -0
  199. package/dist/admin/src/components/AIChat/hooks/useChatTitle.d.ts +13 -0
  200. package/dist/admin/src/components/AIChat/hooks/useCodeUpload.d.ts +31 -0
  201. package/dist/admin/src/components/AIChat/hooks/useFeedback.d.ts +7 -0
  202. package/dist/admin/src/components/AIChat/hooks/useFigmaUpload.d.ts +61 -0
  203. package/dist/admin/src/components/AIChat/hooks/useLastSeenSchemas.d.ts +10 -0
  204. package/dist/admin/src/components/AIChat/hooks/useTranslations.d.ts +3 -0
  205. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +32 -0
  206. package/dist/admin/src/components/AIChat/lib/constants.d.ts +12 -0
  207. package/dist/admin/src/components/AIChat/lib/fileToAttachment.d.ts +2 -0
  208. package/dist/admin/src/components/AIChat/lib/misc.d.ts +1 -0
  209. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +3 -0
  210. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +16 -0
  211. package/dist/admin/src/components/AIChat/lib/types/annotations.d.ts +19 -0
  212. package/dist/admin/src/components/AIChat/lib/types/attachments.d.ts +15 -0
  213. package/dist/admin/src/components/AIChat/lib/types/feedback.d.ts +1 -0
  214. package/dist/admin/src/components/AIChat/lib/types/messages.d.ts +26 -0
  215. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +20 -0
  216. package/dist/admin/src/components/AIChat/providers/ChatProvider.d.ts +30 -0
  217. package/dist/admin/src/components/AIChat/providers/SchemaProvider.d.ts +10 -0
  218. package/dist/admin/src/components/ComponentList.d.ts +1 -1
  219. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +1 -1
  220. package/dist/admin/translations/ar.json.js +187 -2
  221. package/dist/admin/translations/ar.json.js.map +1 -1
  222. package/dist/admin/translations/ar.json.mjs +187 -3
  223. package/dist/admin/translations/ar.json.mjs.map +1 -1
  224. package/dist/admin/translations/de.json.js +42 -7
  225. package/dist/admin/translations/de.json.js.map +1 -1
  226. package/dist/admin/translations/de.json.mjs +42 -7
  227. package/dist/admin/translations/de.json.mjs.map +1 -1
  228. package/dist/admin/translations/en.json.js +53 -2
  229. package/dist/admin/translations/en.json.js.map +1 -1
  230. package/dist/admin/translations/en.json.mjs +53 -2
  231. package/dist/admin/translations/en.json.mjs.map +1 -1
  232. package/dist/admin/translations/es.json.js +37 -15
  233. package/dist/admin/translations/es.json.js.map +1 -1
  234. package/dist/admin/translations/es.json.mjs +37 -15
  235. package/dist/admin/translations/es.json.mjs.map +1 -1
  236. package/dist/admin/translations/fr.json.js +165 -3
  237. package/dist/admin/translations/fr.json.js.map +1 -1
  238. package/dist/admin/translations/fr.json.mjs +165 -4
  239. package/dist/admin/translations/fr.json.mjs.map +1 -1
  240. package/dist/admin/translations/id.json.js +93 -23
  241. package/dist/admin/translations/id.json.js.map +1 -1
  242. package/dist/admin/translations/id.json.mjs +93 -23
  243. package/dist/admin/translations/id.json.mjs.map +1 -1
  244. package/dist/admin/translations/it.json.js +75 -6
  245. package/dist/admin/translations/it.json.js.map +1 -1
  246. package/dist/admin/translations/it.json.mjs +75 -6
  247. package/dist/admin/translations/it.json.mjs.map +1 -1
  248. package/dist/admin/translations/ja.json.js +191 -5
  249. package/dist/admin/translations/ja.json.js.map +1 -1
  250. package/dist/admin/translations/ja.json.mjs +191 -6
  251. package/dist/admin/translations/ja.json.mjs.map +1 -1
  252. package/dist/admin/translations/ko.json.js +70 -16
  253. package/dist/admin/translations/ko.json.js.map +1 -1
  254. package/dist/admin/translations/ko.json.mjs +70 -16
  255. package/dist/admin/translations/ko.json.mjs.map +1 -1
  256. package/dist/admin/translations/ms.json.js +104 -31
  257. package/dist/admin/translations/ms.json.js.map +1 -1
  258. package/dist/admin/translations/ms.json.mjs +104 -31
  259. package/dist/admin/translations/ms.json.mjs.map +1 -1
  260. package/dist/admin/translations/nl.json.js +95 -15
  261. package/dist/admin/translations/nl.json.js.map +1 -1
  262. package/dist/admin/translations/nl.json.mjs +95 -15
  263. package/dist/admin/translations/nl.json.mjs.map +1 -1
  264. package/dist/admin/translations/pl.json.js +55 -11
  265. package/dist/admin/translations/pl.json.js.map +1 -1
  266. package/dist/admin/translations/pl.json.mjs +55 -11
  267. package/dist/admin/translations/pl.json.mjs.map +1 -1
  268. package/dist/admin/translations/pt-BR.json.js +54 -10
  269. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  270. package/dist/admin/translations/pt-BR.json.mjs +54 -10
  271. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  272. package/dist/admin/translations/pt.json.js +187 -2
  273. package/dist/admin/translations/pt.json.js.map +1 -1
  274. package/dist/admin/translations/pt.json.mjs +187 -3
  275. package/dist/admin/translations/pt.json.mjs.map +1 -1
  276. package/dist/admin/translations/ru.json.js +26 -1
  277. package/dist/admin/translations/ru.json.js.map +1 -1
  278. package/dist/admin/translations/ru.json.mjs +26 -1
  279. package/dist/admin/translations/ru.json.mjs.map +1 -1
  280. package/dist/admin/translations/sk.json.js +21 -1
  281. package/dist/admin/translations/sk.json.js.map +1 -1
  282. package/dist/admin/translations/sk.json.mjs +21 -1
  283. package/dist/admin/translations/sk.json.mjs.map +1 -1
  284. package/dist/admin/translations/sv.json.js +21 -1
  285. package/dist/admin/translations/sv.json.js.map +1 -1
  286. package/dist/admin/translations/sv.json.mjs +21 -1
  287. package/dist/admin/translations/sv.json.mjs.map +1 -1
  288. package/dist/admin/translations/th.json.js +21 -1
  289. package/dist/admin/translations/th.json.js.map +1 -1
  290. package/dist/admin/translations/th.json.mjs +21 -1
  291. package/dist/admin/translations/th.json.mjs.map +1 -1
  292. package/dist/admin/translations/tr.json.js +21 -1
  293. package/dist/admin/translations/tr.json.js.map +1 -1
  294. package/dist/admin/translations/tr.json.mjs +21 -1
  295. package/dist/admin/translations/tr.json.mjs.map +1 -1
  296. package/dist/admin/translations/uk.json.js +21 -2
  297. package/dist/admin/translations/uk.json.js.map +1 -1
  298. package/dist/admin/translations/uk.json.mjs +21 -2
  299. package/dist/admin/translations/uk.json.mjs.map +1 -1
  300. package/dist/admin/translations/zh-Hans.json.js +222 -133
  301. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  302. package/dist/admin/translations/zh-Hans.json.mjs +222 -133
  303. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  304. package/dist/admin/translations/zh.json.js +21 -1
  305. package/dist/admin/translations/zh.json.js.map +1 -1
  306. package/dist/admin/translations/zh.json.mjs +21 -1
  307. package/dist/admin/translations/zh.json.mjs.map +1 -1
  308. package/dist/server/index.js +2 -0
  309. package/dist/server/index.js.map +1 -1
  310. package/dist/server/index.mjs +2 -0
  311. package/dist/server/index.mjs.map +1 -1
  312. package/dist/server/register.js +98 -0
  313. package/dist/server/register.js.map +1 -0
  314. package/dist/server/register.mjs +96 -0
  315. package/dist/server/register.mjs.map +1 -0
  316. package/dist/server/src/controllers/ai/auth.d.ts +1 -0
  317. package/dist/server/src/controllers/ai/auth.d.ts.map +1 -0
  318. package/dist/server/src/controllers/ai/index.d.ts +1 -0
  319. package/dist/server/src/controllers/ai/index.d.ts.map +1 -0
  320. package/dist/server/src/index.d.ts +1 -0
  321. package/dist/server/src/index.d.ts.map +1 -1
  322. package/dist/server/src/register.d.ts +11 -0
  323. package/dist/server/src/register.d.ts.map +1 -0
  324. package/package.json +12 -5
  325. package/dist/admin/components/DataManager/utils/formatSchemas.js +0 -21
  326. package/dist/admin/components/DataManager/utils/formatSchemas.js.map +0 -1
  327. package/dist/admin/components/DataManager/utils/formatSchemas.mjs +0 -18
  328. package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +0 -1
@@ -0,0 +1,167 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useContext, useCallback, useEffect, createContext } from 'react';
3
+ import { Flex, Box, Typography } from '@strapi/design-system';
4
+ import { useDropzone } from 'react-dropzone';
5
+
6
+ const useClipboardPasteImages = ({ onAddFiles, isEnabled = false })=>{
7
+ const handlePaste = useCallback(async (e)=>{
8
+ if (!isEnabled) return;
9
+ // Try to get items from clipboard
10
+ const items = e.clipboardData?.items;
11
+ if (!items || items.length === 0) return;
12
+ const files = [];
13
+ // Process clipboard items
14
+ for (const item of items){
15
+ if (item.kind === 'file') {
16
+ const file = item.getAsFile();
17
+ if (file && file.type.startsWith('image/')) {
18
+ files.push(file);
19
+ }
20
+ }
21
+ }
22
+ if (files.length > 0) {
23
+ onAddFiles(files);
24
+ e.preventDefault(); // Prevent the default paste behavior
25
+ }
26
+ }, [
27
+ isEnabled,
28
+ onAddFiles
29
+ ]);
30
+ // Set up the paste event listener
31
+ useEffect(()=>{
32
+ document.addEventListener('paste', handlePaste);
33
+ return ()=>{
34
+ document.removeEventListener('paste', handlePaste);
35
+ };
36
+ }, [
37
+ handlePaste
38
+ ]);
39
+ };
40
+ const DropzoneContext = /*#__PURE__*/ createContext({});
41
+ const useDropzoneContext = ()=>useContext(DropzoneContext);
42
+ const Root = ({ children, isEnabled = true, onAddFiles = ()=>{}, accept = {
43
+ 'image/*': []
44
+ }, ...props })=>{
45
+ // Use clipboard paste hook for handling clipboard events
46
+ useClipboardPasteImages({
47
+ onAddFiles,
48
+ isEnabled,
49
+ accept
50
+ });
51
+ // Use dropzone for drag and drop functionality
52
+ const { getRootProps, isDragActive } = useDropzone({
53
+ onDrop: onAddFiles,
54
+ noClick: true,
55
+ noKeyboard: true,
56
+ accept
57
+ });
58
+ return /*#__PURE__*/ jsx(DropzoneContext.Provider, {
59
+ value: {
60
+ isEnabled,
61
+ isDragActive,
62
+ onAddFiles
63
+ },
64
+ children: /*#__PURE__*/ jsx(Flex, {
65
+ direction: "column",
66
+ alignItems: "flex-start",
67
+ width: "100%",
68
+ position: "relative",
69
+ ...getRootProps(),
70
+ ...props,
71
+ children: children
72
+ })
73
+ });
74
+ };
75
+ const Area = ({ error, title, ...props })=>{
76
+ const { isEnabled, isDragActive } = useDropzoneContext();
77
+ // If not dragging, don't render the dropzone area
78
+ if (!isDragActive) {
79
+ return null;
80
+ }
81
+ const displayTitle = title || 'Drop images here';
82
+ return /*#__PURE__*/ jsxs(Flex, {
83
+ position: "absolute",
84
+ top: 0,
85
+ left: 0,
86
+ right: 0,
87
+ bottom: 0,
88
+ zIndex: 2,
89
+ cursor: isEnabled ? 'pointer' : 'not-allowed',
90
+ width: "100%",
91
+ height: "100%",
92
+ borderStyle: "dashed",
93
+ borderColor: error ? 'danger600' : 'primary500',
94
+ background: error ? 'danger100' : 'primary100',
95
+ hasRadius: true,
96
+ padding: 7,
97
+ justifyContent: "center",
98
+ direction: "column",
99
+ alignItems: "center",
100
+ gap: 2,
101
+ ...props,
102
+ children: [
103
+ /*#__PURE__*/ jsx(Box, {
104
+ width: "24px",
105
+ height: "24px",
106
+ children: /*#__PURE__*/ jsxs("svg", {
107
+ width: "24",
108
+ height: "24",
109
+ viewBox: "0 0 24 24",
110
+ fill: "none",
111
+ xmlns: "http://www.w3.org/2000/svg",
112
+ children: [
113
+ /*#__PURE__*/ jsx("path", {
114
+ d: "M19.5 13.572L12 6.072L4.5 13.572",
115
+ stroke: "currentColor",
116
+ strokeWidth: "2",
117
+ strokeLinecap: "round",
118
+ strokeLinejoin: "round"
119
+ }),
120
+ /*#__PURE__*/ jsx("path", {
121
+ d: "M12 6.072V20.072",
122
+ stroke: "currentColor",
123
+ strokeWidth: "2",
124
+ strokeLinecap: "round",
125
+ strokeLinejoin: "round"
126
+ }),
127
+ /*#__PURE__*/ jsx("path", {
128
+ d: "M3.9998 20.072H20.0001",
129
+ stroke: "currentColor",
130
+ strokeWidth: "2",
131
+ strokeLinecap: "round",
132
+ strokeLinejoin: "round"
133
+ })
134
+ ]
135
+ })
136
+ }),
137
+ /*#__PURE__*/ jsxs(Flex, {
138
+ direction: "column",
139
+ alignItems: "center",
140
+ gap: 2,
141
+ children: [
142
+ /*#__PURE__*/ jsx(Typography, {
143
+ variant: "omega",
144
+ textColor: "neutral600",
145
+ textAlign: "center",
146
+ children: displayTitle
147
+ }),
148
+ error && /*#__PURE__*/ jsx(Typography, {
149
+ variant: "pi",
150
+ textColor: "danger600",
151
+ children: error
152
+ })
153
+ ]
154
+ })
155
+ ]
156
+ });
157
+ };
158
+ /* -------------------------------------------------------------------------------------------------
159
+ * Dropzone Compound
160
+ * -----------------------------------------------------------------------------------------------*/ const Dropzone = {
161
+ Root,
162
+ Area,
163
+ useDropzoneContext
164
+ };
165
+
166
+ export { Dropzone, Root, useClipboardPasteImages, useDropzoneContext };
167
+ //# sourceMappingURL=Dropzone.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropzone.mjs","sources":["../../../../../admin/src/components/AIChat/components/Dropzone.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect } from 'react';\n\nimport { Flex, Box, Typography } from '@strapi/design-system';\nimport { useDropzone } from 'react-dropzone';\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UseClipboardPasteProps {\n onAddFiles: (files: File[]) => void;\n isEnabled?: boolean;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const useClipboardPasteImages = ({\n onAddFiles,\n isEnabled = false,\n}: UseClipboardPasteProps) => {\n const handlePaste = useCallback(\n async (e: ClipboardEvent) => {\n if (!isEnabled) return;\n // Try to get items from clipboard\n const items = e.clipboardData?.items;\n\n if (!items || items.length === 0) return;\n\n const files: File[] = [];\n\n // Process clipboard items\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && file.type.startsWith('image/')) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n onAddFiles(files);\n e.preventDefault(); // Prevent the default paste behavior\n }\n },\n [isEnabled, onAddFiles]\n );\n\n // Set up the paste event listener\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, [handlePaste]);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneContextValue {\n isEnabled?: boolean;\n isDragActive?: boolean;\n onAddFiles?: (files: File[]) => void;\n}\n\nconst DropzoneContext = createContext<DropzoneContextValue>({});\n\nexport const useDropzoneContext = () => useContext(DropzoneContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface DropzoneRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isEnabled?: boolean;\n onAddFiles?: (files: File[]) => void;\n accept?: {\n [key: string]: string[];\n };\n}\n\nexport const Root = ({\n children,\n isEnabled = true,\n onAddFiles = () => {},\n accept = { 'image/*': [] },\n ...props\n}: DropzoneRootProps) => {\n // Use clipboard paste hook for handling clipboard events\n useClipboardPasteImages({ onAddFiles, isEnabled, accept });\n\n // Use dropzone for drag and drop functionality\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: onAddFiles,\n noClick: true,\n noKeyboard: true,\n accept,\n });\n\n return (\n <DropzoneContext.Provider\n value={{\n isEnabled,\n isDragActive,\n onAddFiles,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n position=\"relative\"\n {...getRootProps()}\n {...props}\n >\n {children}\n </Flex>\n </DropzoneContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropzoneAreaProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n error?: string | null;\n title?: string;\n}\n\nconst Area = ({ error, title, ...props }: DropzoneAreaProps) => {\n const { isEnabled, isDragActive } = useDropzoneContext();\n\n // If not dragging, don't render the dropzone area\n if (!isDragActive) {\n return null;\n }\n\n const displayTitle = title || 'Drop images here';\n\n return (\n <Flex\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={2}\n cursor={isEnabled ? 'pointer' : 'not-allowed'}\n width=\"100%\"\n height=\"100%\"\n borderStyle=\"dashed\"\n borderColor={error ? 'danger600' : 'primary500'}\n background={error ? 'danger100' : 'primary100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Box width=\"24px\" height=\"24px\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.5 13.572L12 6.072L4.5 13.572\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6.072V20.072\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.9998 20.072H20.0001\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Box>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {displayTitle}\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Dropzone Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Dropzone = {\n Root,\n Area,\n useDropzoneContext,\n};\n"],"names":["useClipboardPasteImages","onAddFiles","isEnabled","handlePaste","useCallback","e","items","clipboardData","length","files","item","kind","file","getAsFile","type","startsWith","push","preventDefault","useEffect","document","addEventListener","removeEventListener","DropzoneContext","createContext","useDropzoneContext","useContext","Root","children","accept","props","getRootProps","isDragActive","useDropzone","onDrop","noClick","noKeyboard","_jsx","Provider","value","Flex","direction","alignItems","width","position","Area","error","title","displayTitle","_jsxs","top","left","right","bottom","zIndex","cursor","height","borderStyle","borderColor","background","hasRadius","padding","justifyContent","gap","Box","svg","viewBox","fill","xmlns","path","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Typography","variant","textColor","textAlign","Dropzone"],"mappings":";;;;;AAiBO,MAAMA,0BAA0B,CAAC,EACtCC,UAAU,EACVC,SAAAA,GAAY,KAAK,EACM,GAAA;IACvB,MAAMC,WAAAA,GAAcC,YAClB,OAAOC,CAAAA,GAAAA;AACL,QAAA,IAAI,CAACH,SAAW,EAAA;;QAEhB,MAAMI,KAAAA,GAAQD,CAAEE,CAAAA,aAAa,EAAED,KAAAA;AAE/B,QAAA,IAAI,CAACA,KAAAA,IAASA,KAAME,CAAAA,MAAM,KAAK,CAAG,EAAA;AAElC,QAAA,MAAMC,QAAgB,EAAE;;QAGxB,KAAK,MAAMC,QAAQJ,KAAO,CAAA;YACxB,IAAII,IAAAA,CAAKC,IAAI,KAAK,MAAQ,EAAA;gBACxB,MAAMC,IAAAA,GAAOF,KAAKG,SAAS,EAAA;AAC3B,gBAAA,IAAID,QAAQA,IAAKE,CAAAA,IAAI,CAACC,UAAU,CAAC,QAAW,CAAA,EAAA;AAC1CN,oBAAAA,KAAAA,CAAMO,IAAI,CAACJ,IAAAA,CAAAA;AACb;AACF;AACF;QAEA,IAAIH,KAAAA,CAAMD,MAAM,GAAG,CAAG,EAAA;YACpBP,UAAWQ,CAAAA,KAAAA,CAAAA;YACXJ,CAAEY,CAAAA,cAAc;AAClB;KAEF,EAAA;AAACf,QAAAA,SAAAA;AAAWD,QAAAA;AAAW,KAAA,CAAA;;IAIzBiB,SAAU,CAAA,IAAA;QACRC,QAASC,CAAAA,gBAAgB,CAAC,OAASjB,EAAAA,WAAAA,CAAAA;QACnC,OAAO,IAAA;YACLgB,QAASE,CAAAA,mBAAmB,CAAC,OAASlB,EAAAA,WAAAA,CAAAA;AACxC,SAAA;KACC,EAAA;AAACA,QAAAA;AAAY,KAAA,CAAA;AAClB;AAYA,MAAMmB,eAAAA,iBAAkBC,cAAoC,EAAC,CAAA;AAEhDC,MAAAA,kBAAAA,GAAqB,IAAMC,UAAAA,CAAWH,eAAiB;AAevDI,MAAAA,IAAAA,GAAO,CAAC,EACnBC,QAAQ,EACRzB,SAAY,GAAA,IAAI,EAChBD,UAAAA,GAAa,IAAO,EAAC,EACrB2B,MAAS,GAAA;AAAE,IAAA,SAAA,EAAW;AAAG,CAAC,EAC1B,GAAGC,KACe,EAAA,GAAA;;IAElB7B,uBAAwB,CAAA;AAAEC,QAAAA,UAAAA;AAAYC,QAAAA,SAAAA;AAAW0B,QAAAA;AAAO,KAAA,CAAA;;AAGxD,IAAA,MAAM,EAAEE,YAAY,EAAEC,YAAY,EAAE,GAAGC,WAAY,CAAA;QACjDC,MAAQhC,EAAAA,UAAAA;QACRiC,OAAS,EAAA,IAAA;QACTC,UAAY,EAAA,IAAA;AACZP,QAAAA;AACF,KAAA,CAAA;IAEA,qBACEQ,GAAA,CAACd,gBAAgBe,QAAQ,EAAA;QACvBC,KAAO,EAAA;AACLpC,YAAAA,SAAAA;AACA6B,YAAAA,YAAAA;AACA9B,YAAAA;AACF,SAAA;AAEA,QAAA,QAAA,gBAAAmC,GAACG,CAAAA,IAAAA,EAAAA;YACCC,SAAU,EAAA,QAAA;YACVC,UAAW,EAAA,YAAA;YACXC,KAAM,EAAA,MAAA;YACNC,QAAS,EAAA,UAAA;AACR,YAAA,GAAGb,YAAc,EAAA;AACjB,YAAA,GAAGD,KAAK;AAERF,YAAAA,QAAAA,EAAAA;;;AAIT;AAWA,MAAMiB,IAAAA,GAAO,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGjB,KAA0B,EAAA,GAAA;AACzD,IAAA,MAAM,EAAE3B,SAAS,EAAE6B,YAAY,EAAE,GAAGP,kBAAAA,EAAAA;;AAGpC,IAAA,IAAI,CAACO,YAAc,EAAA;QACjB,OAAO,IAAA;AACT;AAEA,IAAA,MAAMgB,eAAeD,KAAS,IAAA,kBAAA;AAE9B,IAAA,qBACEE,IAACT,CAAAA,IAAAA,EAAAA;QACCI,QAAS,EAAA,UAAA;QACTM,GAAK,EAAA,CAAA;QACLC,IAAM,EAAA,CAAA;QACNC,KAAO,EAAA,CAAA;QACPC,MAAQ,EAAA,CAAA;QACRC,MAAQ,EAAA,CAAA;AACRC,QAAAA,MAAAA,EAAQpD,YAAY,SAAY,GAAA,aAAA;QAChCwC,KAAM,EAAA,MAAA;QACNa,MAAO,EAAA,MAAA;QACPC,WAAY,EAAA,QAAA;AACZC,QAAAA,WAAAA,EAAaZ,QAAQ,WAAc,GAAA,YAAA;AACnCa,QAAAA,UAAAA,EAAYb,QAAQ,WAAc,GAAA,YAAA;QAClCc,SAAS,EAAA,IAAA;QACTC,OAAS,EAAA,CAAA;QACTC,cAAe,EAAA,QAAA;QACfrB,SAAU,EAAA,QAAA;QACVC,UAAW,EAAA,QAAA;QACXqB,GAAK,EAAA,CAAA;AACJ,QAAA,GAAGjC,KAAK;;0BAETO,GAAC2B,CAAAA,GAAAA,EAAAA;gBAAIrB,KAAM,EAAA,MAAA;gBAAOa,MAAO,EAAA,MAAA;AACvB,gBAAA,QAAA,gBAAAP,IAACgB,CAAAA,KAAAA,EAAAA;oBACCtB,KAAM,EAAA,IAAA;oBACNa,MAAO,EAAA,IAAA;oBACPU,OAAQ,EAAA,WAAA;oBACRC,IAAK,EAAA,MAAA;oBACLC,KAAM,EAAA,4BAAA;;sCAEN/B,GAACgC,CAAAA,MAAAA,EAAAA;4BACCC,CAAE,EAAA,kCAAA;4BACFC,MAAO,EAAA,cAAA;4BACPC,WAAY,EAAA,GAAA;4BACZC,aAAc,EAAA,OAAA;4BACdC,cAAe,EAAA;;sCAEjBrC,GAACgC,CAAAA,MAAAA,EAAAA;4BACCC,CAAE,EAAA,kBAAA;4BACFC,MAAO,EAAA,cAAA;4BACPC,WAAY,EAAA,GAAA;4BACZC,aAAc,EAAA,OAAA;4BACdC,cAAe,EAAA;;sCAEjBrC,GAACgC,CAAAA,MAAAA,EAAAA;4BACCC,CAAE,EAAA,wBAAA;4BACFC,MAAO,EAAA,cAAA;4BACPC,WAAY,EAAA,GAAA;4BACZC,aAAc,EAAA,OAAA;4BACdC,cAAe,EAAA;;;;;0BAIrBzB,IAACT,CAAAA,IAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,QAAA;gBAASqB,GAAK,EAAA,CAAA;;kCAChD1B,GAACsC,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;wBAAQC,SAAU,EAAA,YAAA;wBAAaC,SAAU,EAAA,QAAA;AAC1D9B,wBAAAA,QAAAA,EAAAA;;AAEFF,oBAAAA,KAAAA,kBACCT,GAACsC,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKC,SAAU,EAAA,WAAA;AAChC/B,wBAAAA,QAAAA,EAAAA;;;;;;AAMb,CAAA;AAEA;;2GAIaiC,QAAW,GAAA;AACtBpD,IAAAA,IAAAA;AACAkB,IAAAA,IAAAA;AACApB,IAAAA;AACF;;;;"}
@@ -0,0 +1,166 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+ var Icons = require('@strapi/icons');
7
+ var styledComponents = require('styled-components');
8
+ var animations = require('./animations.js');
9
+
10
+ const PanelContext = /*#__PURE__*/ React.createContext({
11
+ size: 'md',
12
+ position: 'bottom-right',
13
+ isOpen: false,
14
+ onToggle: ()=>{}
15
+ });
16
+ const PANEL_SIZES = {
17
+ sm: {
18
+ width: '350px',
19
+ height: '500px'
20
+ },
21
+ md: {
22
+ width: '480px',
23
+ height: '600px'
24
+ },
25
+ lg: {
26
+ width: '600px',
27
+ height: '700px'
28
+ }
29
+ };
30
+ const PANEL_POSITIONS = {
31
+ 'bottom-right': {
32
+ bottom: 4,
33
+ right: 4
34
+ },
35
+ 'bottom-left': {
36
+ bottom: 4,
37
+ left: 4
38
+ },
39
+ 'top-right': {
40
+ top: 4,
41
+ right: 4
42
+ },
43
+ 'top-left': {
44
+ top: 4,
45
+ left: 4
46
+ }
47
+ };
48
+ const FixedWrapper = styledComponents.styled(designSystem.Box)`
49
+ position: fixed;
50
+ display: flex;
51
+ flex-direction: column;
52
+ z-index: 11;
53
+ align-items: ${({ $position })=>$position.includes('right') ? 'flex-end' : 'flex-start'};
54
+ ${({ $position, theme })=>Object.entries(PANEL_POSITIONS[$position]).reduce((acc, [key, value])=>({
55
+ ...acc,
56
+ [key]: theme.spaces[value]
57
+ }), {})}
58
+ `;
59
+ const PanelContainer = styledComponents.styled(designSystem.Box)`
60
+ width: ${({ $size })=>PANEL_SIZES[$size].width};
61
+ max-height: 85vh;
62
+ max-width: 85vw;
63
+ display: flex;
64
+ flex-direction: column;
65
+ height: ${({ $size })=>PANEL_SIZES[$size].height};
66
+
67
+ @media (prefers-reduced-motion: no-preference) {
68
+ animation-duration: 200ms;
69
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
70
+
71
+ &[data-state='open'] {
72
+ animation-name: ${({ $position })=>$position.startsWith('top') ? animations.ANIMATIONS.slideDownIn : animations.ANIMATIONS.slideUpIn};
73
+ }
74
+
75
+ &[data-state='closed'] {
76
+ animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);
77
+ animation-name: ${({ $position })=>$position.startsWith('top') ? animations.ANIMATIONS.slideDownOut : animations.ANIMATIONS.slideUpOut};
78
+ }
79
+ }
80
+ `;
81
+ const Root = ({ children, size = 'md', position = 'bottom-right', isOpen = false, onToggle = ()=>{}, toggleIcon })=>{
82
+ return /*#__PURE__*/ jsxRuntime.jsx(PanelContext.Provider, {
83
+ value: {
84
+ size,
85
+ position,
86
+ isOpen,
87
+ onToggle
88
+ },
89
+ children: /*#__PURE__*/ jsxRuntime.jsxs(FixedWrapper, {
90
+ $position: position,
91
+ children: [
92
+ isOpen ? /*#__PURE__*/ jsxRuntime.jsx(PanelContainer, {
93
+ $size: size,
94
+ $position: position,
95
+ background: "neutral0",
96
+ shadow: "popupShadow",
97
+ hasRadius: true,
98
+ borderColor: "neutral200",
99
+ borderStyle: "solid",
100
+ borderWidth: "1px",
101
+ "data-state": isOpen ? 'open' : 'closed',
102
+ children: children
103
+ }) : null,
104
+ toggleIcon && !isOpen && toggleIcon
105
+ ]
106
+ })
107
+ });
108
+ };
109
+ /* -------------------------------------------------------------------------------------------------
110
+ * Header
111
+ * -----------------------------------------------------------------------------------------------*/ const Header = ({ children })=>// Adjust padding to fit title and right icons
112
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
113
+ padding: [
114
+ 2,
115
+ 2,
116
+ 2,
117
+ 4
118
+ ],
119
+ borderColor: "neutral150",
120
+ borderStyle: "solid",
121
+ borderWidth: "0 0 1px 0",
122
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
123
+ justifyContent: "space-between",
124
+ alignItems: "center",
125
+ children: children
126
+ })
127
+ });
128
+ /* -------------------------------------------------------------------------------------------------
129
+ * Body
130
+ * -----------------------------------------------------------------------------------------------*/ const Body = ({ children })=>{
131
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
132
+ padding: 4,
133
+ flex: "1",
134
+ overflow: "auto",
135
+ children: children
136
+ });
137
+ };
138
+ /* -------------------------------------------------------------------------------------------------
139
+ * Footer
140
+ * -----------------------------------------------------------------------------------------------*/ const Footer = ({ children })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
141
+ padding: 4,
142
+ children: children
143
+ });
144
+ /* -------------------------------------------------------------------------------------------------
145
+ * Close Panel
146
+ * -----------------------------------------------------------------------------------------------*/ const Close = ({ label })=>{
147
+ const { onToggle } = usePanel();
148
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
149
+ onClick: onToggle,
150
+ variant: "ghost",
151
+ label: label || 'Close',
152
+ children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Cross, {})
153
+ });
154
+ };
155
+ const Panel = {
156
+ Root,
157
+ Header,
158
+ Body,
159
+ Footer,
160
+ Close
161
+ };
162
+ const usePanel = ()=>React.useContext(PanelContext);
163
+
164
+ exports.Panel = Panel;
165
+ exports.usePanel = usePanel;
166
+ //# sourceMappingURL=FloatingPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingPanel.js","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useContext, createContext } from 'react';
3
+ import { Box, Flex, IconButton } from '@strapi/design-system';
4
+ import { Cross } from '@strapi/icons';
5
+ import { styled } from 'styled-components';
6
+ import { ANIMATIONS } from './animations.mjs';
7
+
8
+ const PanelContext = /*#__PURE__*/ createContext({
9
+ size: 'md',
10
+ position: 'bottom-right',
11
+ isOpen: false,
12
+ onToggle: ()=>{}
13
+ });
14
+ const PANEL_SIZES = {
15
+ sm: {
16
+ width: '350px',
17
+ height: '500px'
18
+ },
19
+ md: {
20
+ width: '480px',
21
+ height: '600px'
22
+ },
23
+ lg: {
24
+ width: '600px',
25
+ height: '700px'
26
+ }
27
+ };
28
+ const PANEL_POSITIONS = {
29
+ 'bottom-right': {
30
+ bottom: 4,
31
+ right: 4
32
+ },
33
+ 'bottom-left': {
34
+ bottom: 4,
35
+ left: 4
36
+ },
37
+ 'top-right': {
38
+ top: 4,
39
+ right: 4
40
+ },
41
+ 'top-left': {
42
+ top: 4,
43
+ left: 4
44
+ }
45
+ };
46
+ const FixedWrapper = styled(Box)`
47
+ position: fixed;
48
+ display: flex;
49
+ flex-direction: column;
50
+ z-index: 11;
51
+ align-items: ${({ $position })=>$position.includes('right') ? 'flex-end' : 'flex-start'};
52
+ ${({ $position, theme })=>Object.entries(PANEL_POSITIONS[$position]).reduce((acc, [key, value])=>({
53
+ ...acc,
54
+ [key]: theme.spaces[value]
55
+ }), {})}
56
+ `;
57
+ const PanelContainer = styled(Box)`
58
+ width: ${({ $size })=>PANEL_SIZES[$size].width};
59
+ max-height: 85vh;
60
+ max-width: 85vw;
61
+ display: flex;
62
+ flex-direction: column;
63
+ height: ${({ $size })=>PANEL_SIZES[$size].height};
64
+
65
+ @media (prefers-reduced-motion: no-preference) {
66
+ animation-duration: 200ms;
67
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
68
+
69
+ &[data-state='open'] {
70
+ animation-name: ${({ $position })=>$position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};
71
+ }
72
+
73
+ &[data-state='closed'] {
74
+ animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);
75
+ animation-name: ${({ $position })=>$position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};
76
+ }
77
+ }
78
+ `;
79
+ const Root = ({ children, size = 'md', position = 'bottom-right', isOpen = false, onToggle = ()=>{}, toggleIcon })=>{
80
+ return /*#__PURE__*/ jsx(PanelContext.Provider, {
81
+ value: {
82
+ size,
83
+ position,
84
+ isOpen,
85
+ onToggle
86
+ },
87
+ children: /*#__PURE__*/ jsxs(FixedWrapper, {
88
+ $position: position,
89
+ children: [
90
+ isOpen ? /*#__PURE__*/ jsx(PanelContainer, {
91
+ $size: size,
92
+ $position: position,
93
+ background: "neutral0",
94
+ shadow: "popupShadow",
95
+ hasRadius: true,
96
+ borderColor: "neutral200",
97
+ borderStyle: "solid",
98
+ borderWidth: "1px",
99
+ "data-state": isOpen ? 'open' : 'closed',
100
+ children: children
101
+ }) : null,
102
+ toggleIcon && !isOpen && toggleIcon
103
+ ]
104
+ })
105
+ });
106
+ };
107
+ /* -------------------------------------------------------------------------------------------------
108
+ * Header
109
+ * -----------------------------------------------------------------------------------------------*/ const Header = ({ children })=>// Adjust padding to fit title and right icons
110
+ /*#__PURE__*/ jsx(Box, {
111
+ padding: [
112
+ 2,
113
+ 2,
114
+ 2,
115
+ 4
116
+ ],
117
+ borderColor: "neutral150",
118
+ borderStyle: "solid",
119
+ borderWidth: "0 0 1px 0",
120
+ children: /*#__PURE__*/ jsx(Flex, {
121
+ justifyContent: "space-between",
122
+ alignItems: "center",
123
+ children: children
124
+ })
125
+ });
126
+ /* -------------------------------------------------------------------------------------------------
127
+ * Body
128
+ * -----------------------------------------------------------------------------------------------*/ const Body = ({ children })=>{
129
+ return /*#__PURE__*/ jsx(Box, {
130
+ padding: 4,
131
+ flex: "1",
132
+ overflow: "auto",
133
+ children: children
134
+ });
135
+ };
136
+ /* -------------------------------------------------------------------------------------------------
137
+ * Footer
138
+ * -----------------------------------------------------------------------------------------------*/ const Footer = ({ children })=>/*#__PURE__*/ jsx(Box, {
139
+ padding: 4,
140
+ children: children
141
+ });
142
+ /* -------------------------------------------------------------------------------------------------
143
+ * Close Panel
144
+ * -----------------------------------------------------------------------------------------------*/ const Close = ({ label })=>{
145
+ const { onToggle } = usePanel();
146
+ return /*#__PURE__*/ jsx(IconButton, {
147
+ onClick: onToggle,
148
+ variant: "ghost",
149
+ label: label || 'Close',
150
+ children: /*#__PURE__*/ jsx(Cross, {})
151
+ });
152
+ };
153
+ const Panel = {
154
+ Root,
155
+ Header,
156
+ Body,
157
+ Footer,
158
+ Close
159
+ };
160
+ const usePanel = ()=>useContext(PanelContext);
161
+
162
+ export { Panel, usePanel };
163
+ //# sourceMappingURL=FloatingPanel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingPanel.mjs","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}