@strapi/content-type-builder 5.25.0 → 5.27.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 (332) hide show
  1. package/dist/admin/components/AIChat/Chat.js +435 -0
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -0
  3. package/dist/admin/components/AIChat/Chat.mjs +433 -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/ContentTypeBuilderNav/ContentTypeBuilderNav.js +165 -161
  158. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  159. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +165 -161
  160. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  161. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  162. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  163. package/dist/admin/components/DataManager/reducer.js +48 -6
  164. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  165. package/dist/admin/components/DataManager/reducer.mjs +48 -6
  166. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  167. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  168. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  169. package/dist/admin/pages/App/index.js +60 -29
  170. package/dist/admin/pages/App/index.js.map +1 -1
  171. package/dist/admin/pages/App/index.mjs +62 -31
  172. package/dist/admin/pages/App/index.mjs.map +1 -1
  173. package/dist/admin/pages/ListView/EmptyState.js +75 -9
  174. package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
  175. package/dist/admin/pages/ListView/EmptyState.mjs +77 -11
  176. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
  177. package/dist/admin/src/components/AIChat/Chat.d.ts +2 -0
  178. package/dist/admin/src/components/AIChat/FeedbackModal.d.ts +13 -0
  179. package/dist/admin/src/components/AIChat/UploadCodeModal.d.ts +12 -0
  180. package/dist/admin/src/components/AIChat/UploadFigmaModal.d.ts +12 -0
  181. package/dist/admin/src/components/AIChat/components/Alert.d.ts +6 -0
  182. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +13 -0
  183. package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +9 -0
  184. package/dist/admin/src/components/AIChat/components/Attachments/components/Attachment.d.ts +27 -0
  185. package/dist/admin/src/components/AIChat/components/Base64Image.d.ts +9 -0
  186. package/dist/admin/src/components/AIChat/components/Collapsible.d.ts +18 -0
  187. package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +35 -0
  188. package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +34 -0
  189. package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +20 -0
  190. package/dist/admin/src/components/AIChat/components/ImagePreview.d.ts +8 -0
  191. package/dist/admin/src/components/AIChat/components/ImagePreviewGroup.d.ts +7 -0
  192. package/dist/admin/src/components/AIChat/components/Input.d.ts +43 -0
  193. package/dist/admin/src/components/AIChat/components/Messages/Marker.d.ts +2 -0
  194. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +5 -0
  195. package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +9 -0
  196. package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +32 -0
  197. package/dist/admin/src/components/AIChat/components/StepModal.d.ts +37 -0
  198. package/dist/admin/src/components/AIChat/components/animations.d.ts +8 -0
  199. package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +5 -0
  200. package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +5 -0
  201. package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +147 -0
  202. package/dist/admin/src/components/AIChat/hooks/useAttachments.d.ts +8 -0
  203. package/dist/admin/src/components/AIChat/hooks/useChatTitle.d.ts +13 -0
  204. package/dist/admin/src/components/AIChat/hooks/useCodeUpload.d.ts +31 -0
  205. package/dist/admin/src/components/AIChat/hooks/useFeedback.d.ts +7 -0
  206. package/dist/admin/src/components/AIChat/hooks/useFigmaUpload.d.ts +61 -0
  207. package/dist/admin/src/components/AIChat/hooks/useLastSeenSchemas.d.ts +10 -0
  208. package/dist/admin/src/components/AIChat/hooks/useTranslations.d.ts +3 -0
  209. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +32 -0
  210. package/dist/admin/src/components/AIChat/lib/constants.d.ts +12 -0
  211. package/dist/admin/src/components/AIChat/lib/fileToAttachment.d.ts +2 -0
  212. package/dist/admin/src/components/AIChat/lib/misc.d.ts +1 -0
  213. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +3 -0
  214. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +16 -0
  215. package/dist/admin/src/components/AIChat/lib/types/annotations.d.ts +19 -0
  216. package/dist/admin/src/components/AIChat/lib/types/attachments.d.ts +15 -0
  217. package/dist/admin/src/components/AIChat/lib/types/feedback.d.ts +1 -0
  218. package/dist/admin/src/components/AIChat/lib/types/messages.d.ts +26 -0
  219. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +20 -0
  220. package/dist/admin/src/components/AIChat/providers/ChatProvider.d.ts +30 -0
  221. package/dist/admin/src/components/AIChat/providers/SchemaProvider.d.ts +10 -0
  222. package/dist/admin/src/components/ComponentList.d.ts +1 -1
  223. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +1 -1
  224. package/dist/admin/translations/ar.json.js +187 -2
  225. package/dist/admin/translations/ar.json.js.map +1 -1
  226. package/dist/admin/translations/ar.json.mjs +187 -3
  227. package/dist/admin/translations/ar.json.mjs.map +1 -1
  228. package/dist/admin/translations/de.json.js +42 -7
  229. package/dist/admin/translations/de.json.js.map +1 -1
  230. package/dist/admin/translations/de.json.mjs +42 -7
  231. package/dist/admin/translations/de.json.mjs.map +1 -1
  232. package/dist/admin/translations/en.json.js +53 -2
  233. package/dist/admin/translations/en.json.js.map +1 -1
  234. package/dist/admin/translations/en.json.mjs +53 -2
  235. package/dist/admin/translations/en.json.mjs.map +1 -1
  236. package/dist/admin/translations/es.json.js +37 -15
  237. package/dist/admin/translations/es.json.js.map +1 -1
  238. package/dist/admin/translations/es.json.mjs +37 -15
  239. package/dist/admin/translations/es.json.mjs.map +1 -1
  240. package/dist/admin/translations/fr.json.js +165 -3
  241. package/dist/admin/translations/fr.json.js.map +1 -1
  242. package/dist/admin/translations/fr.json.mjs +165 -4
  243. package/dist/admin/translations/fr.json.mjs.map +1 -1
  244. package/dist/admin/translations/id.json.js +93 -23
  245. package/dist/admin/translations/id.json.js.map +1 -1
  246. package/dist/admin/translations/id.json.mjs +93 -23
  247. package/dist/admin/translations/id.json.mjs.map +1 -1
  248. package/dist/admin/translations/it.json.js +75 -6
  249. package/dist/admin/translations/it.json.js.map +1 -1
  250. package/dist/admin/translations/it.json.mjs +75 -6
  251. package/dist/admin/translations/it.json.mjs.map +1 -1
  252. package/dist/admin/translations/ja.json.js +191 -5
  253. package/dist/admin/translations/ja.json.js.map +1 -1
  254. package/dist/admin/translations/ja.json.mjs +191 -6
  255. package/dist/admin/translations/ja.json.mjs.map +1 -1
  256. package/dist/admin/translations/ko.json.js +70 -16
  257. package/dist/admin/translations/ko.json.js.map +1 -1
  258. package/dist/admin/translations/ko.json.mjs +70 -16
  259. package/dist/admin/translations/ko.json.mjs.map +1 -1
  260. package/dist/admin/translations/ms.json.js +104 -31
  261. package/dist/admin/translations/ms.json.js.map +1 -1
  262. package/dist/admin/translations/ms.json.mjs +104 -31
  263. package/dist/admin/translations/ms.json.mjs.map +1 -1
  264. package/dist/admin/translations/nl.json.js +95 -15
  265. package/dist/admin/translations/nl.json.js.map +1 -1
  266. package/dist/admin/translations/nl.json.mjs +95 -15
  267. package/dist/admin/translations/nl.json.mjs.map +1 -1
  268. package/dist/admin/translations/pl.json.js +55 -11
  269. package/dist/admin/translations/pl.json.js.map +1 -1
  270. package/dist/admin/translations/pl.json.mjs +55 -11
  271. package/dist/admin/translations/pl.json.mjs.map +1 -1
  272. package/dist/admin/translations/pt-BR.json.js +54 -10
  273. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  274. package/dist/admin/translations/pt-BR.json.mjs +54 -10
  275. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  276. package/dist/admin/translations/pt.json.js +187 -2
  277. package/dist/admin/translations/pt.json.js.map +1 -1
  278. package/dist/admin/translations/pt.json.mjs +187 -3
  279. package/dist/admin/translations/pt.json.mjs.map +1 -1
  280. package/dist/admin/translations/ru.json.js +26 -1
  281. package/dist/admin/translations/ru.json.js.map +1 -1
  282. package/dist/admin/translations/ru.json.mjs +26 -1
  283. package/dist/admin/translations/ru.json.mjs.map +1 -1
  284. package/dist/admin/translations/sk.json.js +21 -1
  285. package/dist/admin/translations/sk.json.js.map +1 -1
  286. package/dist/admin/translations/sk.json.mjs +21 -1
  287. package/dist/admin/translations/sk.json.mjs.map +1 -1
  288. package/dist/admin/translations/sv.json.js +21 -1
  289. package/dist/admin/translations/sv.json.js.map +1 -1
  290. package/dist/admin/translations/sv.json.mjs +21 -1
  291. package/dist/admin/translations/sv.json.mjs.map +1 -1
  292. package/dist/admin/translations/th.json.js +21 -1
  293. package/dist/admin/translations/th.json.js.map +1 -1
  294. package/dist/admin/translations/th.json.mjs +21 -1
  295. package/dist/admin/translations/th.json.mjs.map +1 -1
  296. package/dist/admin/translations/tr.json.js +21 -1
  297. package/dist/admin/translations/tr.json.js.map +1 -1
  298. package/dist/admin/translations/tr.json.mjs +21 -1
  299. package/dist/admin/translations/tr.json.mjs.map +1 -1
  300. package/dist/admin/translations/uk.json.js +21 -2
  301. package/dist/admin/translations/uk.json.js.map +1 -1
  302. package/dist/admin/translations/uk.json.mjs +21 -2
  303. package/dist/admin/translations/uk.json.mjs.map +1 -1
  304. package/dist/admin/translations/zh-Hans.json.js +222 -133
  305. package/dist/admin/translations/zh-Hans.json.js.map +1 -1
  306. package/dist/admin/translations/zh-Hans.json.mjs +222 -133
  307. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
  308. package/dist/admin/translations/zh.json.js +21 -1
  309. package/dist/admin/translations/zh.json.js.map +1 -1
  310. package/dist/admin/translations/zh.json.mjs +21 -1
  311. package/dist/admin/translations/zh.json.mjs.map +1 -1
  312. package/dist/server/index.js +2 -0
  313. package/dist/server/index.js.map +1 -1
  314. package/dist/server/index.mjs +2 -0
  315. package/dist/server/index.mjs.map +1 -1
  316. package/dist/server/register.js +98 -0
  317. package/dist/server/register.js.map +1 -0
  318. package/dist/server/register.mjs +96 -0
  319. package/dist/server/register.mjs.map +1 -0
  320. package/dist/server/src/controllers/ai/auth.d.ts +1 -0
  321. package/dist/server/src/controllers/ai/auth.d.ts.map +1 -0
  322. package/dist/server/src/controllers/ai/index.d.ts +1 -0
  323. package/dist/server/src/controllers/ai/index.d.ts.map +1 -0
  324. package/dist/server/src/index.d.ts +1 -0
  325. package/dist/server/src/index.d.ts.map +1 -1
  326. package/dist/server/src/register.d.ts +11 -0
  327. package/dist/server/src/register.d.ts.map +1 -0
  328. package/package.json +12 -5
  329. package/dist/admin/components/DataManager/utils/formatSchemas.js +0 -21
  330. package/dist/admin/components/DataManager/utils/formatSchemas.js.map +0 -1
  331. package/dist/admin/components/DataManager/utils/formatSchemas.mjs +0 -18
  332. package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +0 -1
@@ -0,0 +1,427 @@
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 AttachmentPreview = require('./components/Attachments/AttachmentPreview.js');
8
+ var StepModal = require('./components/StepModal.js');
9
+ var useAttachments = require('./hooks/useAttachments.js');
10
+ var useCodeUpload = require('./hooks/useCodeUpload.js');
11
+ var useTranslations = require('./hooks/useTranslations.js');
12
+ var constants = require('./lib/constants.js');
13
+ var misc = require('./lib/misc.js');
14
+ var ChatProvider = require('./providers/ChatProvider.js');
15
+
16
+ const UploadProjectContext = /*#__PURE__*/ React.createContext({
17
+ isCodeUploadOpen: false,
18
+ submitOnFinish: false,
19
+ openCodeUpload: ()=>{},
20
+ closeCodeUpload: ()=>{}
21
+ });
22
+ const useUploadProjectToChat = ()=>React.useContext(UploadProjectContext);
23
+ const UploadProjectToChatProvider = ({ children })=>{
24
+ const [isCodeUploadOpen, setIsCodeUploadOpen] = React.useState(false);
25
+ const [submitOnFinish, setSubmitOnFinish] = React.useState(false);
26
+ const openCodeUpload = (submitOnFinish)=>{
27
+ setIsCodeUploadOpen(true);
28
+ setSubmitOnFinish(submitOnFinish ?? false);
29
+ };
30
+ const closeCodeUpload = ()=>setIsCodeUploadOpen(false);
31
+ return /*#__PURE__*/ jsxRuntime.jsxs(UploadProjectContext.Provider, {
32
+ value: {
33
+ isCodeUploadOpen,
34
+ submitOnFinish,
35
+ openCodeUpload,
36
+ closeCodeUpload
37
+ },
38
+ children: [
39
+ isCodeUploadOpen && /*#__PURE__*/ jsxRuntime.jsx(UploadCodeModal, {}),
40
+ children
41
+ ]
42
+ });
43
+ };
44
+ const DropZone = ({ importType, onAddFiles, error })=>{
45
+ const [dragOver, setDragOver] = React.useState(false);
46
+ const inputRef = React.useRef(null);
47
+ const { t } = useTranslations.useTranslations();
48
+ const handleDragOver = (event)=>{
49
+ event.preventDefault();
50
+ };
51
+ const handleDragEnter = (event)=>{
52
+ event.preventDefault();
53
+ setDragOver(true);
54
+ };
55
+ const handleDragLeave = ()=>setDragOver(false);
56
+ const handleClick = (e)=>{
57
+ e.preventDefault();
58
+ inputRef.current?.click();
59
+ };
60
+ const handleChange = ()=>{
61
+ const files = inputRef.current?.files;
62
+ if (files) {
63
+ onAddFiles(Array.from(files));
64
+ }
65
+ };
66
+ /**
67
+ * Recursively reads a directory and its contents
68
+ */ const readDirectory = async (entry)=>{
69
+ const reader = entry.createReader();
70
+ const getEntries = ()=>{
71
+ return new Promise((resolve, reject)=>{
72
+ reader.readEntries(resolve, reject);
73
+ });
74
+ };
75
+ const files = [];
76
+ let entries = [];
77
+ // Read entries in batches until no more entries are left
78
+ do {
79
+ entries = await getEntries();
80
+ for (const entry of entries){
81
+ if (entry.isFile) {
82
+ const fileEntry = entry;
83
+ const file = await new Promise((resolve, reject)=>{
84
+ fileEntry.file(resolve, reject);
85
+ });
86
+ // Store the full path including the directory structure
87
+ Object.defineProperty(file, 'webkitRelativePath', {
88
+ writable: true,
89
+ value: entry.fullPath.substring(1)
90
+ });
91
+ files.push(file);
92
+ } else if (entry.isDirectory) {
93
+ // Recursively process subdirectories
94
+ const dirEntry = entry;
95
+ const subFiles = await readDirectory(dirEntry);
96
+ files.push(...subFiles);
97
+ }
98
+ }
99
+ }while (entries.length > 0)
100
+ return files;
101
+ };
102
+ const handleDrop = async (e)=>{
103
+ e.preventDefault();
104
+ setDragOver(false);
105
+ if (!e.dataTransfer?.items) {
106
+ return;
107
+ }
108
+ // For folder upload, process directories recursively
109
+ if (importType === 'folder') {
110
+ const items = e.dataTransfer.items;
111
+ const allFiles = [];
112
+ for(let i = 0; i < items.length; i++){
113
+ const item = items[i];
114
+ // Use webkitGetAsEntry to access the file system entry
115
+ const entry = item.webkitGetAsEntry?.();
116
+ if (entry) {
117
+ if (entry.isDirectory) {
118
+ const files = await readDirectory(entry);
119
+ allFiles.push(...files);
120
+ } else if (entry.isFile) {
121
+ const file = await new Promise((resolve, reject)=>{
122
+ entry.file(resolve, reject);
123
+ });
124
+ allFiles.push(file);
125
+ }
126
+ }
127
+ }
128
+ if (allFiles.length > 0) {
129
+ onAddFiles(allFiles);
130
+ }
131
+ } else {
132
+ // For zip files, just import them regularly
133
+ if (e.dataTransfer.files) {
134
+ onAddFiles(Array.from(e.dataTransfer.files));
135
+ }
136
+ }
137
+ };
138
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
139
+ position: "relative",
140
+ cursor: "pointer",
141
+ width: "100%",
142
+ height: "100%",
143
+ minHeight: "140px",
144
+ borderStyle: "dashed",
145
+ borderColor: dragOver ? 'primary500' : error ? 'danger600' : 'neutral200',
146
+ background: dragOver ? 'primary100' : error ? 'danger100' : 'neutral100',
147
+ hasRadius: true,
148
+ padding: 7,
149
+ justifyContent: "center",
150
+ direction: "column",
151
+ alignItems: "center",
152
+ gap: 2,
153
+ onDragEnter: handleDragEnter,
154
+ onDragLeave: handleDragLeave,
155
+ onDragOver: handleDragOver,
156
+ onDrop: handleDrop,
157
+ children: [
158
+ importType === 'zip' ? /*#__PURE__*/ jsxRuntime.jsx(Icons.FileZip, {
159
+ width: '24px',
160
+ height: '24px'
161
+ }) : /*#__PURE__*/ jsxRuntime.jsx(Icons.Folder, {
162
+ width: '24px',
163
+ height: '24px'
164
+ }),
165
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
166
+ direction: "column",
167
+ alignItems: "center",
168
+ gap: 2,
169
+ children: [
170
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
171
+ variant: "omega",
172
+ textColor: "neutral600",
173
+ textAlign: "center",
174
+ children: [
175
+ importType === 'zip' ? t('chat.code-upload.drop-zone', 'Drop here a .zip file here or') : t('chat.code-upload.drop-zone-folder', 'Drop here a folder here or'),
176
+ ' ',
177
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
178
+ variant: "omega",
179
+ textColor: "primary600",
180
+ onClick: handleClick,
181
+ children: t('chat.code-upload.drop-zone-browse', 'browse files')
182
+ })
183
+ ]
184
+ }),
185
+ error && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
186
+ variant: "pi",
187
+ textColor: "danger600",
188
+ children: error
189
+ })
190
+ ]
191
+ }),
192
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
193
+ tag: "input",
194
+ position: "absolute",
195
+ left: 0,
196
+ right: 0,
197
+ bottom: 0,
198
+ top: 0,
199
+ width: "100%",
200
+ name: "code",
201
+ "aria-label": "Upload project",
202
+ tabIndex: -1,
203
+ zIndex: 1,
204
+ ref: inputRef,
205
+ onChange: handleChange,
206
+ style: {
207
+ opacity: 0,
208
+ cursor: 'pointer'
209
+ },
210
+ type: "file",
211
+ ...importType === 'zip' ? {
212
+ accept: '.zip',
213
+ multiple: false
214
+ } : {
215
+ multiple: true,
216
+ webkitdirectory: '',
217
+ directory: ''
218
+ }
219
+ })
220
+ ]
221
+ });
222
+ };
223
+ const CodeUploadStep = ({ setFileName, error, processZipFile, processFolder })=>{
224
+ const { t } = useTranslations.useTranslations();
225
+ const { nextStep } = StepModal.useStepModal();
226
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
227
+ direction: "column",
228
+ gap: 6,
229
+ alignItems: "start",
230
+ width: "100%",
231
+ children: [
232
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
233
+ direction: "column",
234
+ gap: 2,
235
+ alignItems: "start",
236
+ children: [
237
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
238
+ variant: "beta",
239
+ children: t('chat.code-upload.title', 'Import code')
240
+ }),
241
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
242
+ variant: "omega",
243
+ textColor: "neutral600",
244
+ children: t('chat.code-upload.description', 'Your app will be analyzed by AI. Make sure to remove all sensitive data before importation.')
245
+ })
246
+ ]
247
+ }),
248
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
249
+ gap: 3,
250
+ width: "100%",
251
+ wrap: "wrap",
252
+ children: [
253
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
254
+ flex: 1,
255
+ minWidth: "200px",
256
+ children: /*#__PURE__*/ jsxRuntime.jsx(DropZone, {
257
+ importType: "zip",
258
+ onAddFiles: (files)=>{
259
+ if (files.length > 0) {
260
+ const file = files[0];
261
+ setFileName(file.name.replace('.zip', ''));
262
+ nextStep();
263
+ processZipFile(file);
264
+ }
265
+ },
266
+ error: error
267
+ })
268
+ }),
269
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
270
+ flex: 1,
271
+ minWidth: "200px",
272
+ children: /*#__PURE__*/ jsxRuntime.jsx(DropZone, {
273
+ importType: "folder",
274
+ onAddFiles: async (files)=>{
275
+ if (files.length > 0) {
276
+ try {
277
+ // Get the folder name from the first file's path
278
+ const firstFile = files[0];
279
+ const folderPath = firstFile.webkitRelativePath || '';
280
+ const folderName = folderPath.split('/')[0] || 'Project';
281
+ setFileName(folderName);
282
+ nextStep();
283
+ // Process the folder files
284
+ await processFolder(files);
285
+ } catch (err) {
286
+ console.error('Error processing folder:', err);
287
+ }
288
+ }
289
+ },
290
+ error: error
291
+ })
292
+ })
293
+ ]
294
+ })
295
+ ]
296
+ });
297
+ };
298
+ const CodeConfirmationStep = ({ projectName, isLoading, error })=>{
299
+ const { t } = useTranslations.useTranslations();
300
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
301
+ direction: "column",
302
+ gap: 6,
303
+ alignItems: "start",
304
+ width: "100%",
305
+ children: [
306
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
307
+ direction: "column",
308
+ gap: 2,
309
+ alignItems: "start",
310
+ children: [
311
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
312
+ variant: "beta",
313
+ children: t('chat.code-upload.confirmation-title', 'Confirm Code Import')
314
+ }),
315
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
316
+ variant: "omega",
317
+ textColor: "neutral600",
318
+ children: t('chat.code-upload.confirmation-description', 'Your code is ready to be imported. Click finish to add it to your chat.')
319
+ })
320
+ ]
321
+ }),
322
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
323
+ width: "100%",
324
+ children: /*#__PURE__*/ jsxRuntime.jsx(AttachmentPreview.AttachmentPreview, {
325
+ attachment: {
326
+ id: misc.generateId(),
327
+ status: isLoading ? 'loading' : 'ready',
328
+ filename: projectName || '',
329
+ url: '',
330
+ type: 'file',
331
+ mediaType: constants.STRAPI_CODE_MIME_TYPE
332
+ },
333
+ error: error,
334
+ minWidth: "256px"
335
+ })
336
+ })
337
+ ]
338
+ });
339
+ };
340
+ /* -------------------------------------------------------------------------------------------------
341
+ * Modal
342
+ * -----------------------------------------------------------------------------------------------*/ const UploadCodeModal = ()=>{
343
+ const [projectName, setProjectName] = React.useState(null);
344
+ const [projectAttachment, setProjectAttachment] = React.useState(null);
345
+ const { t } = useTranslations.useTranslations();
346
+ // Attach files to the chat
347
+ const { addAttachments } = useAttachments.useAttachments();
348
+ const { processZipFile, processFolder, isLoading, error } = useCodeUpload.useCodeUpload({
349
+ onSuccess: (file)=>setProjectAttachment(file)
350
+ });
351
+ const { isCodeUploadOpen, closeCodeUpload, submitOnFinish } = useUploadProjectToChat();
352
+ const { sendMessage, openChat, input, setInput } = ChatProvider.useStrapiChat();
353
+ const handleCancel = ()=>{
354
+ setProjectName(null);
355
+ setProjectAttachment(null);
356
+ closeCodeUpload();
357
+ };
358
+ const handleComplete = async ()=>{
359
+ // Ensure chat is opened
360
+ openChat();
361
+ if (projectAttachment && submitOnFinish) {
362
+ sendMessage({
363
+ role: 'user',
364
+ parts: [
365
+ {
366
+ type: 'text',
367
+ text: 'Create schemas from my uploaded project'
368
+ },
369
+ projectAttachment
370
+ ]
371
+ });
372
+ } else if (projectAttachment) {
373
+ // If input is empty, set a predefined message
374
+ if (!input) {
375
+ setInput('Create schemas from my uploaded project');
376
+ }
377
+ // Attach files to the chat input
378
+ addAttachments([
379
+ projectAttachment
380
+ ]);
381
+ }
382
+ closeCodeUpload();
383
+ };
384
+ const validateUploadStep = ()=>{
385
+ return !!projectAttachment;
386
+ };
387
+ return /*#__PURE__*/ jsxRuntime.jsxs(StepModal.StepModal, {
388
+ open: isCodeUploadOpen,
389
+ onOpenChange: (isOpen)=>{
390
+ if (!isOpen) handleCancel();
391
+ },
392
+ title: t('chat.code-upload.header', 'Import code'),
393
+ onCancel: handleCancel,
394
+ onComplete: handleComplete,
395
+ children: [
396
+ /*#__PURE__*/ jsxRuntime.jsx(StepModal.StepModal.Step, {
397
+ title: t('chat.code-upload.step1-title', 'Import code'),
398
+ nextLabel: t('chat.code-upload.continue-button', 'Continue'),
399
+ cancelLabel: t('common.cancel', 'Cancel'),
400
+ disableNext: !projectAttachment || isLoading,
401
+ onNext: validateUploadStep,
402
+ children: /*#__PURE__*/ jsxRuntime.jsx(CodeUploadStep, {
403
+ setFileName: setProjectName,
404
+ error: error,
405
+ processZipFile: processZipFile,
406
+ processFolder: processFolder
407
+ })
408
+ }),
409
+ /*#__PURE__*/ jsxRuntime.jsx(StepModal.StepModal.Step, {
410
+ title: t('chat.code-upload.step2-title', 'Confirm'),
411
+ nextLabel: t('common.finish', 'Finish'),
412
+ backLabel: t('form.button.back', 'Back'),
413
+ disableNext: !projectAttachment || isLoading,
414
+ children: /*#__PURE__*/ jsxRuntime.jsx(CodeConfirmationStep, {
415
+ projectName: projectName,
416
+ isLoading: isLoading,
417
+ error: error
418
+ })
419
+ })
420
+ ]
421
+ });
422
+ };
423
+
424
+ exports.UploadCodeModal = UploadCodeModal;
425
+ exports.UploadProjectToChatProvider = UploadProjectToChatProvider;
426
+ exports.useUploadProjectToChat = useUploadProjectToChat;
427
+ //# sourceMappingURL=UploadCodeModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadCodeModal.js","sources":["../../../../admin/src/components/AIChat/UploadCodeModal.tsx"],"sourcesContent":["import { createContext, useContext, useRef, useState } from 'react';\n\nimport { Flex, Typography, Box } from '@strapi/design-system';\nimport { Folder, FileZip } from '@strapi/icons';\n\nimport { AttachmentPreview } from './components/Attachments/AttachmentPreview';\nimport { StepModal, useStepModal } from './components/StepModal';\nimport { useAttachments } from './hooks/useAttachments';\nimport { useCodeUpload } from './hooks/useCodeUpload';\nimport { useTranslations } from './hooks/useTranslations';\nimport { STRAPI_CODE_MIME_TYPE } from './lib/constants';\nimport { generateId } from './lib/misc';\nimport { Attachment } from './lib/types/attachments';\nimport { useStrapiChat } from './providers/ChatProvider';\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\ninterface UploadProjectContextType {\n isCodeUploadOpen: boolean;\n submitOnFinish: boolean;\n openCodeUpload: (submitOnFinish?: boolean) => void;\n closeCodeUpload: () => void;\n}\n\nconst UploadProjectContext = createContext<UploadProjectContextType>({\n isCodeUploadOpen: false,\n submitOnFinish: false,\n openCodeUpload: () => {},\n closeCodeUpload: () => {},\n});\n\nexport const useUploadProjectToChat = () => useContext(UploadProjectContext);\n\nexport const UploadProjectToChatProvider = ({ children }: { children: React.ReactNode }) => {\n const [isCodeUploadOpen, setIsCodeUploadOpen] = useState(false);\n const [submitOnFinish, setSubmitOnFinish] = useState(false);\n\n const openCodeUpload = (submitOnFinish?: boolean) => {\n setIsCodeUploadOpen(true);\n setSubmitOnFinish(submitOnFinish ?? false);\n };\n\n const closeCodeUpload = () => setIsCodeUploadOpen(false);\n\n return (\n <UploadProjectContext.Provider\n value={{ isCodeUploadOpen, submitOnFinish, openCodeUpload, closeCodeUpload }}\n >\n {isCodeUploadOpen && <UploadCodeModal />}\n {children}\n </UploadProjectContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Drop Zone\n * -----------------------------------------------------------------------------------------------*/\ninterface DropZoneProps {\n importType: 'folder' | 'zip';\n onAddFiles: (files: File[]) => void;\n error?: string | null;\n}\n\nconst DropZone = ({ importType, onAddFiles, error }: DropZoneProps) => {\n const [dragOver, setDragOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const { t } = useTranslations();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n if (files) {\n onAddFiles(Array.from(files));\n }\n };\n\n /**\n * Recursively reads a directory and its contents\n */\n const readDirectory = async (entry: FileSystemDirectoryEntry): Promise<File[]> => {\n const reader = entry.createReader();\n const getEntries = (): Promise<FileSystemEntry[]> => {\n return new Promise((resolve, reject) => {\n reader.readEntries(resolve, reject);\n });\n };\n\n const files: File[] = [];\n let entries: FileSystemEntry[] = [];\n\n // Read entries in batches until no more entries are left\n do {\n entries = await getEntries();\n for (const entry of entries) {\n if (entry.isFile) {\n const fileEntry = entry as FileSystemFileEntry;\n const file = await new Promise<File>((resolve, reject) => {\n fileEntry.file(resolve, reject);\n });\n\n // Store the full path including the directory structure\n Object.defineProperty(file, 'webkitRelativePath', {\n writable: true,\n value: entry.fullPath.substring(1), // Remove leading slash\n });\n\n files.push(file);\n } else if (entry.isDirectory) {\n // Recursively process subdirectories\n const dirEntry = entry as FileSystemDirectoryEntry;\n const subFiles = await readDirectory(dirEntry);\n files.push(...subFiles);\n }\n }\n } while (entries.length > 0);\n\n return files;\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n setDragOver(false);\n\n if (!e.dataTransfer?.items) {\n return;\n }\n\n // For folder upload, process directories recursively\n if (importType === 'folder') {\n const items = e.dataTransfer.items;\n const allFiles: File[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n // Use webkitGetAsEntry to access the file system entry\n const entry = item.webkitGetAsEntry?.();\n\n if (entry) {\n if (entry.isDirectory) {\n const files = await readDirectory(entry as FileSystemDirectoryEntry);\n allFiles.push(...files);\n } else if (entry.isFile) {\n const file = await new Promise<File>((resolve, reject) => {\n (entry as FileSystemFileEntry).file(resolve, reject);\n });\n allFiles.push(file);\n }\n }\n }\n\n if (allFiles.length > 0) {\n onAddFiles(allFiles);\n }\n } else {\n // For zip files, just import them regularly\n if (e.dataTransfer.files) {\n onAddFiles(Array.from(e.dataTransfer.files));\n }\n }\n };\n\n return (\n <Flex\n position=\"relative\"\n cursor=\"pointer\"\n width=\"100%\"\n height=\"100%\"\n minHeight=\"140px\"\n borderStyle=\"dashed\"\n borderColor={dragOver ? 'primary500' : error ? 'danger600' : 'neutral200'}\n background={dragOver ? 'primary100' : error ? 'danger100' : 'neutral100'}\n hasRadius\n padding={7}\n justifyContent=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n gap={2}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {importType === 'zip' ? (\n <FileZip width={'24px'} height={'24px'} />\n ) : (\n <Folder width={'24px'} height={'24px'} />\n )}\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {importType === 'zip'\n ? t('chat.code-upload.drop-zone', 'Drop here a .zip file here or')\n : t('chat.code-upload.drop-zone-folder', 'Drop here a folder here or')}{' '}\n <Typography variant=\"omega\" textColor=\"primary600\" onClick={handleClick}>\n {t('chat.code-upload.drop-zone-browse', 'browse files')}\n </Typography>\n </Typography>\n {error && (\n <Typography variant=\"pi\" textColor=\"danger600\">\n {error}\n </Typography>\n )}\n </Flex>\n <Box\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n name=\"code\"\n aria-label=\"Upload project\"\n tabIndex={-1}\n zIndex={1}\n ref={inputRef}\n onChange={handleChange}\n style={{ opacity: 0, cursor: 'pointer' }}\n type=\"file\"\n {...(importType === 'zip'\n ? { accept: '.zip', multiple: false }\n : { multiple: true, webkitdirectory: '', directory: '' })}\n />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step 1 - Upload Code\n * -----------------------------------------------------------------------------------------------*/\ninterface CodeUploadStepProps {\n setFileName: (name: string | null) => void;\n error: string | null;\n processZipFile: (file: File) => void;\n processFolder: (files: File[]) => Promise<Attachment>;\n}\n\nconst CodeUploadStep = ({\n setFileName,\n error,\n processZipFile,\n processFolder,\n}: CodeUploadStepProps) => {\n const { t } = useTranslations();\n const { nextStep } = useStepModal();\n\n return (\n <Flex direction=\"column\" gap={6} alignItems=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} alignItems=\"start\">\n <Typography variant=\"beta\">{t('chat.code-upload.title', 'Import code')}</Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {t(\n 'chat.code-upload.description',\n 'Your app will be analyzed by AI. Make sure to remove all sensitive data before importation.'\n )}\n </Typography>\n </Flex>\n\n <Flex gap={3} width=\"100%\" wrap=\"wrap\">\n <Box flex={1} minWidth=\"200px\">\n <DropZone\n importType=\"zip\"\n onAddFiles={(files: FileList | File[]) => {\n if (files.length > 0) {\n const file = files[0];\n setFileName(file.name.replace('.zip', ''));\n nextStep();\n processZipFile(file);\n }\n }}\n error={error}\n />\n </Box>\n <Box flex={1} minWidth=\"200px\">\n <DropZone\n importType=\"folder\"\n onAddFiles={async (files: File[]) => {\n if (files.length > 0) {\n try {\n // Get the folder name from the first file's path\n const firstFile = files[0];\n const folderPath = firstFile.webkitRelativePath || '';\n const folderName = folderPath.split('/')[0] || 'Project';\n\n setFileName(folderName);\n nextStep();\n\n // Process the folder files\n await processFolder(files);\n } catch (err) {\n console.error('Error processing folder:', err);\n }\n }\n }}\n error={error}\n />\n </Box>\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step 2 - Confirmation\n * -----------------------------------------------------------------------------------------------*/\ninterface CodeConfirmationStepProps {\n projectName: string | null;\n isLoading: boolean;\n error: string | null;\n}\n\nconst CodeConfirmationStep = ({ projectName, isLoading, error }: CodeConfirmationStepProps) => {\n const { t } = useTranslations();\n\n return (\n <Flex direction=\"column\" gap={6} alignItems=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} alignItems=\"start\">\n <Typography variant=\"beta\">\n {t('chat.code-upload.confirmation-title', 'Confirm Code Import')}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {t(\n 'chat.code-upload.confirmation-description',\n 'Your code is ready to be imported. Click finish to add it to your chat.'\n )}\n </Typography>\n </Flex>\n\n <Box width=\"100%\">\n <AttachmentPreview\n attachment={{\n id: generateId(),\n status: isLoading ? 'loading' : 'ready',\n filename: projectName || '',\n url: '',\n type: 'file',\n mediaType: STRAPI_CODE_MIME_TYPE,\n }}\n error={error}\n minWidth=\"256px\"\n />\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\nexport const UploadCodeModal = () => {\n const [projectName, setProjectName] = useState<string | null>(null);\n const [projectAttachment, setProjectAttachment] = useState<Attachment | null>(null);\n const { t } = useTranslations();\n\n // Attach files to the chat\n const { addAttachments } = useAttachments();\n\n const { processZipFile, processFolder, isLoading, error } = useCodeUpload({\n onSuccess: (file) => setProjectAttachment(file),\n });\n\n const { isCodeUploadOpen, closeCodeUpload, submitOnFinish } = useUploadProjectToChat();\n const { sendMessage, openChat, input, setInput } = useStrapiChat();\n\n const handleCancel = () => {\n setProjectName(null);\n setProjectAttachment(null);\n closeCodeUpload();\n };\n\n const handleComplete = async () => {\n // Ensure chat is opened\n openChat();\n\n if (projectAttachment && submitOnFinish) {\n sendMessage({\n role: 'user',\n parts: [\n {\n type: 'text',\n text: 'Create schemas from my uploaded project',\n },\n projectAttachment,\n ],\n });\n } else if (projectAttachment) {\n // If input is empty, set a predefined message\n if (!input) {\n setInput('Create schemas from my uploaded project');\n }\n // Attach files to the chat input\n addAttachments([projectAttachment]);\n }\n\n closeCodeUpload();\n };\n\n const validateUploadStep = () => {\n return !!projectAttachment;\n };\n\n return (\n <StepModal\n open={isCodeUploadOpen}\n onOpenChange={(isOpen) => {\n if (!isOpen) handleCancel();\n }}\n title={t('chat.code-upload.header', 'Import code')}\n onCancel={handleCancel}\n onComplete={handleComplete}\n >\n <StepModal.Step\n title={t('chat.code-upload.step1-title', 'Import code')}\n nextLabel={t('chat.code-upload.continue-button', 'Continue')}\n cancelLabel={t('common.cancel', 'Cancel')}\n disableNext={!projectAttachment || isLoading}\n onNext={validateUploadStep}\n >\n <CodeUploadStep\n setFileName={setProjectName}\n error={error}\n processZipFile={processZipFile}\n processFolder={processFolder}\n />\n </StepModal.Step>\n\n <StepModal.Step\n title={t('chat.code-upload.step2-title', 'Confirm')}\n nextLabel={t('common.finish', 'Finish')}\n backLabel={t('form.button.back', 'Back')}\n disableNext={!projectAttachment || isLoading}\n >\n <CodeConfirmationStep projectName={projectName} isLoading={isLoading} error={error} />\n </StepModal.Step>\n </StepModal>\n );\n};\n"],"names":["UploadProjectContext","createContext","isCodeUploadOpen","submitOnFinish","openCodeUpload","closeCodeUpload","useUploadProjectToChat","useContext","UploadProjectToChatProvider","children","setIsCodeUploadOpen","useState","setSubmitOnFinish","_jsxs","Provider","value","_jsx","UploadCodeModal","DropZone","importType","onAddFiles","error","dragOver","setDragOver","inputRef","useRef","t","useTranslations","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleClick","e","current","click","handleChange","files","Array","from","readDirectory","entry","reader","createReader","getEntries","Promise","resolve","reject","readEntries","entries","isFile","fileEntry","file","Object","defineProperty","writable","fullPath","substring","push","isDirectory","dirEntry","subFiles","length","handleDrop","dataTransfer","items","allFiles","i","item","webkitGetAsEntry","Flex","position","cursor","width","height","minHeight","borderStyle","borderColor","background","hasRadius","padding","justifyContent","direction","alignItems","gap","onDragEnter","onDragLeave","onDragOver","onDrop","FileZip","Folder","Typography","variant","textColor","textAlign","onClick","Box","tag","left","right","bottom","top","name","aria-label","tabIndex","zIndex","ref","onChange","style","opacity","type","accept","multiple","webkitdirectory","directory","CodeUploadStep","setFileName","processZipFile","processFolder","nextStep","useStepModal","wrap","flex","minWidth","replace","firstFile","folderPath","webkitRelativePath","folderName","split","err","console","CodeConfirmationStep","projectName","isLoading","AttachmentPreview","attachment","id","generateId","status","filename","url","mediaType","STRAPI_CODE_MIME_TYPE","setProjectName","projectAttachment","setProjectAttachment","addAttachments","useAttachments","useCodeUpload","onSuccess","sendMessage","openChat","input","setInput","useStrapiChat","handleCancel","handleComplete","role","parts","text","validateUploadStep","StepModal","open","onOpenChange","isOpen","title","onCancel","onComplete","Step","nextLabel","cancelLabel","disableNext","onNext","backLabel"],"mappings":"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"}