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