@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 @@
1
+ {"version":3,"file":"ResizableTextArea.mjs","sources":["../../../../../admin/src/components/AIChat/components/ResizableTextArea.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface TextAreaProps {\n value: string;\n onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n placeholder?: string;\n}\n\nconst TextAreaElement = styled(Box).attrs({ as: 'textarea' })`\n border: none;\n resize: none;\n background: transparent;\n outline: none !important;\n width: 100%;\n min-height: 44px;\n max-height: 160px;\n line-height: ${({ theme }) => theme.lineHeights[4]};\n font-size: ${({ theme }) => theme.fontSizes[2]};\n color: ${({ theme }) => theme.colors.neutral800};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n overflow-y: auto;\n\n /* Show partial lines when content exceeds visible area */\n height: ${({ rows, theme }) =>\n rows === 5\n ? `calc(${rows} * ${theme.lineHeights[4]} * 1em + 0.7em)`\n : `calc(${rows} * ${theme.lineHeights[4]} * 1em)`};\n\n &:disabled,\n &::placeholder {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nexport const ResizableTextArea = ({ value, onChange, onSubmit, placeholder }: TextAreaProps) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [rows, setRows] = useState(1);\n\n const calculateRows = (text: string) => {\n if (!text) return 1;\n // Count newlines in the text\n const lineCount = (text.match(/\\n/g) || []).length + 1;\n // Limit to a maximum of 5 rows\n return Math.min(lineCount, 5);\n };\n\n // Update rows when value changes\n useEffect(() => {\n setRows(calculateRows(value));\n }, [value]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (!textareaRef.current?.value.trim()) {\n return;\n }\n\n if (e.key === 'Enter' && !e.shiftKey && onSubmit) {\n e.preventDefault();\n onSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n // Ensure focus is maintained after submission using a small delay\n // This helps ensure the focus happens after any other effects from submission\n setTimeout(() => {\n textareaRef.current?.focus();\n }, 10);\n }\n };\n\n useEffect(() => {\n textareaRef.current?.focus();\n }, [textareaRef]);\n\n return (\n <TextAreaElement\n ref={textareaRef}\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={rows}\n />\n );\n};\n"],"names":["TextAreaElement","styled","Box","attrs","as","theme","lineHeights","fontSizes","colors","neutral800","spaces","rows","neutral600","ResizableTextArea","value","onChange","onSubmit","placeholder","textareaRef","useRef","setRows","useState","calculateRows","text","lineCount","match","length","Math","min","useEffect","handleKeyDown","e","current","trim","key","shiftKey","preventDefault","setTimeout","focus","_jsx","ref","onKeyDown"],"mappings":";;;;;AAYA,MAAMA,eAAkBC,GAAAA,MAAAA,CAAOC,GAAKC,CAAAA,CAAAA,KAAK,CAAC;IAAEC,EAAI,EAAA;AAAW,CAAA,CAAE;;;;;;;;eAQ9C,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC;aACxC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;SACxC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAACC,UAAU,CAAC;kBAChC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMK,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;AAIzC,UAAA,EAAE,CAAC,EAAEC,IAAI,EAAEN,KAAK,EAAE,GACxBM,IAAAA,KAAS,CACL,GAAA,CAAC,KAAK,EAAEA,IAAAA,CAAK,GAAG,EAAEN,MAAMC,WAAW,CAAC,CAAE,CAAA,CAAC,eAAe,CAAC,GACvD,CAAC,KAAK,EAAEK,IAAK,CAAA,GAAG,EAAEN,KAAAA,CAAMC,WAAW,CAAC,CAAA,CAAE,CAAC,OAAO,CAAC,CAAC;;;;WAI7C,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAMG,CAAAA,MAAM,CAACI,UAAU,CAAC;;AAEpD,CAAC;AAEM,MAAMC,iBAAoB,GAAA,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,EAAiB,GAAA;AACzF,IAAA,MAAMC,cAAcC,MAA4B,CAAA,IAAA,CAAA;AAChD,IAAA,MAAM,CAACR,IAAAA,EAAMS,OAAQ,CAAA,GAAGC,QAAS,CAAA,CAAA,CAAA;AAEjC,IAAA,MAAMC,gBAAgB,CAACC,IAAAA,GAAAA;QACrB,IAAI,CAACA,MAAM,OAAO,CAAA;;QAElB,MAAMC,SAAAA,GAAY,CAACD,IAAKE,CAAAA,KAAK,CAAC,KAAA,CAAA,IAAU,EAAC,EAAGC,MAAM,GAAG,CAAA;;QAErD,OAAOC,IAAAA,CAAKC,GAAG,CAACJ,SAAW,EAAA,CAAA,CAAA;AAC7B,KAAA;;IAGAK,SAAU,CAAA,IAAA;AACRT,QAAAA,OAAAA,CAAQE,aAAcR,CAAAA,KAAAA,CAAAA,CAAAA;KACrB,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEV,IAAA,MAAMgB,gBAAgB,CAACC,CAAAA,GAAAA;AACrB,QAAA,IAAI,CAACb,WAAAA,CAAYc,OAAO,EAAElB,MAAMmB,IAAQ,EAAA,EAAA;AACtC,YAAA;AACF;QAEA,IAAIF,CAAAA,CAAEG,GAAG,KAAK,OAAA,IAAW,CAACH,CAAEI,CAAAA,QAAQ,IAAInB,QAAU,EAAA;AAChDe,YAAAA,CAAAA,CAAEK,cAAc,EAAA;YAChBpB,QAASe,CAAAA,CAAAA,CAAAA;;;YAGTM,UAAW,CAAA,IAAA;AACTnB,gBAAAA,WAAAA,CAAYc,OAAO,EAAEM,KAAAA,EAAAA;aACpB,EAAA,EAAA,CAAA;AACL;AACF,KAAA;IAEAT,SAAU,CAAA,IAAA;AACRX,QAAAA,WAAAA,CAAYc,OAAO,EAAEM,KAAAA,EAAAA;KACpB,EAAA;AAACpB,QAAAA;AAAY,KAAA,CAAA;AAEhB,IAAA,qBACEqB,GAACvC,CAAAA,eAAAA,EAAAA;QACCwC,GAAKtB,EAAAA,WAAAA;QACLJ,KAAOA,EAAAA,KAAAA;QACPC,QAAUA,EAAAA,QAAAA;QACV0B,SAAWX,EAAAA,aAAAA;QACXb,WAAaA,EAAAA,WAAAA;QACbN,IAAMA,EAAAA;;AAGZ;;;;"}
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
25
+
26
+ const SimpleMenu = /*#__PURE__*/ React__namespace.forwardRef(({ children, onOpen, onClose, popoverPlacement, ...props }, forwardedRef)=>{
27
+ const triggerRef = React__namespace.useRef(null);
28
+ const composedRef = designSystem.useComposedRefs(forwardedRef, triggerRef);
29
+ const handleOpenChange = (isOpen)=>{
30
+ if (isOpen && typeof onOpen === 'function') {
31
+ onOpen();
32
+ } else if (!isOpen && typeof onClose === 'function') {
33
+ onClose();
34
+ }
35
+ };
36
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
37
+ onOpenChange: handleOpenChange,
38
+ children: [
39
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Trigger, {
40
+ ref: composedRef,
41
+ ...props,
42
+ children: props.label
43
+ }),
44
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Content, {
45
+ zIndex: 10000,
46
+ popoverPlacement: popoverPlacement,
47
+ children: children
48
+ })
49
+ ]
50
+ });
51
+ });
52
+ const MenuItem = designSystem.Menu.Item;
53
+
54
+ Object.defineProperty(exports, "Menu", {
55
+ enumerable: true,
56
+ get: function () { return designSystem.Menu; }
57
+ });
58
+ exports.MenuItem = MenuItem;
59
+ exports.SimpleMenu = SimpleMenu;
60
+ //# sourceMappingURL=SimpleMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleMenu.js","sources":["../../../../../admin/src/components/AIChat/components/SimpleMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Menu, useComposedRefs } from '@strapi/design-system';\n\n/* -------------------------------------------------------------------------------------------------\n * SimpleMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype SimpleMenuProps = Menu.TriggerProps &\n Pick<Menu.ContentProps, 'popoverPlacement' | 'intersectionId'> & {\n children?: React.ReactNode;\n onOpen?: () => void;\n onClose?: () => void;\n };\n\nconst SimpleMenu = React.forwardRef<HTMLButtonElement, SimpleMenuProps>(\n ({ children, onOpen, onClose, popoverPlacement, ...props }, forwardedRef) => {\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const composedRef = useComposedRefs(forwardedRef, triggerRef);\n\n const handleOpenChange = (isOpen: boolean) => {\n if (isOpen && typeof onOpen === 'function') {\n onOpen();\n } else if (!isOpen && typeof onClose === 'function') {\n onClose();\n }\n };\n\n return (\n <Menu.Root onOpenChange={handleOpenChange}>\n <Menu.Trigger ref={composedRef} {...props}>\n {props.label}\n </Menu.Trigger>\n <Menu.Content zIndex={10000} popoverPlacement={popoverPlacement}>\n {children}\n </Menu.Content>\n </Menu.Root>\n );\n }\n);\n\nconst MenuItem = Menu.Item;\ntype MenuItemProps = Menu.ItemProps;\n\nexport { SimpleMenu, MenuItem, Menu };\nexport type { SimpleMenuProps, MenuItemProps };\n"],"names":["SimpleMenu","React","forwardRef","children","onOpen","onClose","popoverPlacement","props","forwardedRef","triggerRef","useRef","composedRef","useComposedRefs","handleOpenChange","isOpen","_jsxs","Menu","Root","onOpenChange","_jsx","Trigger","ref","label","Content","zIndex","MenuItem","Item"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,2BAAaC,gBAAMC,CAAAA,UAAU,CACjC,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,gBAAgB,EAAE,GAAGC,OAAO,EAAEC,YAAAA,GAAAA;IAC1D,MAAMC,UAAAA,GAAaR,gBAAMS,CAAAA,MAAM,CAAoB,IAAA,CAAA;IACnD,MAAMC,WAAAA,GAAcC,6BAAgBJ,YAAcC,EAAAA,UAAAA,CAAAA;AAElD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;QACxB,IAAIA,MAAAA,IAAU,OAAOV,MAAAA,KAAW,UAAY,EAAA;AAC1CA,YAAAA,MAAAA,EAAAA;AACF,SAAA,MAAO,IAAI,CAACU,MAAU,IAAA,OAAOT,YAAY,UAAY,EAAA;AACnDA,YAAAA,OAAAA,EAAAA;AACF;AACF,KAAA;IAEA,qBACEU,eAAA,CAACC,kBAAKC,IAAI,EAAA;QAACC,YAAcL,EAAAA,gBAAAA;;AACvB,0BAAAM,cAAA,CAACH,kBAAKI,OAAO,EAAA;gBAACC,GAAKV,EAAAA,WAAAA;AAAc,gBAAA,GAAGJ,KAAK;AACtCA,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMe;;AAET,0BAAAH,cAAA,CAACH,kBAAKO,OAAO,EAAA;gBAACC,MAAQ,EAAA,KAAA;gBAAOlB,gBAAkBA,EAAAA,gBAAAA;AAC5CH,gBAAAA,QAAAA,EAAAA;;;;AAIT,CAAA;AAGIsB,MAAAA,QAAAA,GAAWT,kBAAKU;;;;;;;;;"}
@@ -0,0 +1,35 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Menu, useComposedRefs } from '@strapi/design-system';
4
+ export { Menu } from '@strapi/design-system';
5
+
6
+ const SimpleMenu = /*#__PURE__*/ React.forwardRef(({ children, onOpen, onClose, popoverPlacement, ...props }, forwardedRef)=>{
7
+ const triggerRef = React.useRef(null);
8
+ const composedRef = useComposedRefs(forwardedRef, triggerRef);
9
+ const handleOpenChange = (isOpen)=>{
10
+ if (isOpen && typeof onOpen === 'function') {
11
+ onOpen();
12
+ } else if (!isOpen && typeof onClose === 'function') {
13
+ onClose();
14
+ }
15
+ };
16
+ return /*#__PURE__*/ jsxs(Menu.Root, {
17
+ onOpenChange: handleOpenChange,
18
+ children: [
19
+ /*#__PURE__*/ jsx(Menu.Trigger, {
20
+ ref: composedRef,
21
+ ...props,
22
+ children: props.label
23
+ }),
24
+ /*#__PURE__*/ jsx(Menu.Content, {
25
+ zIndex: 10000,
26
+ popoverPlacement: popoverPlacement,
27
+ children: children
28
+ })
29
+ ]
30
+ });
31
+ });
32
+ const MenuItem = Menu.Item;
33
+
34
+ export { MenuItem, SimpleMenu };
35
+ //# sourceMappingURL=SimpleMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleMenu.mjs","sources":["../../../../../admin/src/components/AIChat/components/SimpleMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Menu, useComposedRefs } from '@strapi/design-system';\n\n/* -------------------------------------------------------------------------------------------------\n * SimpleMenu\n * -----------------------------------------------------------------------------------------------*/\n\ntype SimpleMenuProps = Menu.TriggerProps &\n Pick<Menu.ContentProps, 'popoverPlacement' | 'intersectionId'> & {\n children?: React.ReactNode;\n onOpen?: () => void;\n onClose?: () => void;\n };\n\nconst SimpleMenu = React.forwardRef<HTMLButtonElement, SimpleMenuProps>(\n ({ children, onOpen, onClose, popoverPlacement, ...props }, forwardedRef) => {\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const composedRef = useComposedRefs(forwardedRef, triggerRef);\n\n const handleOpenChange = (isOpen: boolean) => {\n if (isOpen && typeof onOpen === 'function') {\n onOpen();\n } else if (!isOpen && typeof onClose === 'function') {\n onClose();\n }\n };\n\n return (\n <Menu.Root onOpenChange={handleOpenChange}>\n <Menu.Trigger ref={composedRef} {...props}>\n {props.label}\n </Menu.Trigger>\n <Menu.Content zIndex={10000} popoverPlacement={popoverPlacement}>\n {children}\n </Menu.Content>\n </Menu.Root>\n );\n }\n);\n\nconst MenuItem = Menu.Item;\ntype MenuItemProps = Menu.ItemProps;\n\nexport { SimpleMenu, MenuItem, Menu };\nexport type { SimpleMenuProps, MenuItemProps };\n"],"names":["SimpleMenu","React","forwardRef","children","onOpen","onClose","popoverPlacement","props","forwardedRef","triggerRef","useRef","composedRef","useComposedRefs","handleOpenChange","isOpen","_jsxs","Menu","Root","onOpenChange","_jsx","Trigger","ref","label","Content","zIndex","MenuItem","Item"],"mappings":";;;;;AAeA,MAAMA,2BAAaC,KAAMC,CAAAA,UAAU,CACjC,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,gBAAgB,EAAE,GAAGC,OAAO,EAAEC,YAAAA,GAAAA;IAC1D,MAAMC,UAAAA,GAAaR,KAAMS,CAAAA,MAAM,CAAoB,IAAA,CAAA;IACnD,MAAMC,WAAAA,GAAcC,gBAAgBJ,YAAcC,EAAAA,UAAAA,CAAAA;AAElD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;QACxB,IAAIA,MAAAA,IAAU,OAAOV,MAAAA,KAAW,UAAY,EAAA;AAC1CA,YAAAA,MAAAA,EAAAA;AACF,SAAA,MAAO,IAAI,CAACU,MAAU,IAAA,OAAOT,YAAY,UAAY,EAAA;AACnDA,YAAAA,OAAAA,EAAAA;AACF;AACF,KAAA;IAEA,qBACEU,IAAA,CAACC,KAAKC,IAAI,EAAA;QAACC,YAAcL,EAAAA,gBAAAA;;AACvB,0BAAAM,GAAA,CAACH,KAAKI,OAAO,EAAA;gBAACC,GAAKV,EAAAA,WAAAA;AAAc,gBAAA,GAAGJ,KAAK;AACtCA,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMe;;AAET,0BAAAH,GAAA,CAACH,KAAKO,OAAO,EAAA;gBAACC,MAAQ,EAAA,KAAA;gBAAOlB,gBAAkBA,EAAAA,gBAAAA;AAC5CH,gBAAAA,QAAAA,EAAAA;;;;AAIT,CAAA;AAGIsB,MAAAA,QAAAA,GAAWT,KAAKU;;;;"}
@@ -0,0 +1,175 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+
7
+ const StepModalContext = /*#__PURE__*/ React.createContext(null);
8
+ const useStepModal = ()=>{
9
+ const context = React.useContext(StepModalContext);
10
+ if (!context) {
11
+ throw new Error('useStepModal must be used within a StepModal');
12
+ }
13
+ return context;
14
+ };
15
+ const StepModal = ({ open, onOpenChange, title, children, onComplete, onCancel })=>{
16
+ const [currentStep, setCurrentStep] = React.useState(0);
17
+ const [isLoading, setIsLoading] = React.useState(false);
18
+ const [error, setError] = React.useState(null);
19
+ const childrenArray = React.Children.toArray(children).filter((child)=>/*#__PURE__*/ React.isValidElement(child)).map((child)=>child.props);
20
+ const totalSteps = childrenArray.length;
21
+ const isFirstStep = currentStep === 0;
22
+ const isLastStep = currentStep === totalSteps - 1;
23
+ // Reset states when modal opens/closes
24
+ React.useEffect(()=>{
25
+ if (!open) {
26
+ // Reset states when modal is closed
27
+ setCurrentStep(0);
28
+ setIsLoading(false);
29
+ setError(null);
30
+ }
31
+ }, [
32
+ open
33
+ ]);
34
+ const resetStates = ()=>{
35
+ setCurrentStep(0);
36
+ setIsLoading(false);
37
+ setError(null);
38
+ };
39
+ const handleCancel = ()=>{
40
+ onCancel?.();
41
+ resetStates();
42
+ onOpenChange(false);
43
+ };
44
+ const handleBack = ()=>{
45
+ setCurrentStep((prev)=>Math.max(0, prev - 1));
46
+ setError(null);
47
+ };
48
+ const nextStep = async ()=>{
49
+ const currentStepProps = childrenArray[currentStep];
50
+ if (currentStepProps.onNext) {
51
+ setIsLoading(true);
52
+ setError(null);
53
+ try {
54
+ if (isLastStep) {
55
+ onComplete?.();
56
+ resetStates();
57
+ onOpenChange(false);
58
+ } else {
59
+ await currentStepProps.onNext();
60
+ setCurrentStep((prev)=>prev + 1);
61
+ }
62
+ return true;
63
+ } catch (err) {
64
+ setError(err instanceof Error ? err : new Error(String(err)));
65
+ return false;
66
+ } finally{
67
+ setIsLoading(false);
68
+ }
69
+ } else {
70
+ // Default behavior: just move to next step
71
+ if (isLastStep) {
72
+ onComplete?.();
73
+ resetStates();
74
+ onOpenChange(false);
75
+ } else {
76
+ setCurrentStep((prev)=>prev + 1);
77
+ }
78
+ return true;
79
+ }
80
+ };
81
+ // Handle form submission (triggered by Enter key)
82
+ const handleFormSubmit = (e)=>{
83
+ e.preventDefault();
84
+ if (!isLoading && !childrenArray[currentStep]?.disableNext) {
85
+ nextStep();
86
+ }
87
+ };
88
+ const contextValue = {
89
+ currentStep,
90
+ goToStep: setCurrentStep,
91
+ nextStep,
92
+ prevStep: handleBack,
93
+ isFirstStep,
94
+ isLastStep,
95
+ totalSteps,
96
+ isLoading,
97
+ error,
98
+ setError
99
+ };
100
+ const currentChild = childrenArray[currentStep];
101
+ return /*#__PURE__*/ jsxRuntime.jsx(StepModalContext.Provider, {
102
+ value: contextValue,
103
+ children: open && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Root, {
104
+ open: true,
105
+ onOpenChange: handleCancel,
106
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Content, {
107
+ children: [
108
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Header, {
109
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
110
+ variant: "omega",
111
+ fontWeight: "bold",
112
+ children: currentChild?.title || title
113
+ })
114
+ }),
115
+ /*#__PURE__*/ jsxRuntime.jsxs("form", {
116
+ onSubmit: handleFormSubmit,
117
+ children: [
118
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Body, {
119
+ children: [
120
+ React.Children.toArray(children)[currentStep],
121
+ error && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
122
+ marginTop: 4,
123
+ padding: 3,
124
+ background: "danger100",
125
+ color: "danger600",
126
+ borderRadius: "4px",
127
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
128
+ variant: "pi",
129
+ children: error.message
130
+ })
131
+ })
132
+ ]
133
+ }),
134
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Footer, {
135
+ children: [
136
+ isFirstStep ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
137
+ variant: "tertiary",
138
+ onClick: handleCancel,
139
+ type: "button",
140
+ children: currentChild?.cancelLabel || 'Cancel'
141
+ }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
142
+ variant: "tertiary",
143
+ onClick: handleBack,
144
+ type: "button",
145
+ children: currentChild?.backLabel || 'Back'
146
+ }),
147
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
148
+ variant: "default",
149
+ type: "submit",
150
+ disabled: isLoading || currentChild?.disableNext,
151
+ loading: isLoading,
152
+ children: currentChild?.nextLabel || (isLastStep ? 'Complete' : 'Next')
153
+ })
154
+ ]
155
+ })
156
+ ]
157
+ })
158
+ ]
159
+ })
160
+ })
161
+ });
162
+ };
163
+ /* -------------------------------------------------------------------------------------------------
164
+ * Step
165
+ * -----------------------------------------------------------------------------------------------*/ const Step = ({ children })=>{
166
+ return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
167
+ children: children
168
+ });
169
+ };
170
+ StepModal.Step = Step;
171
+
172
+ exports.Step = Step;
173
+ exports.StepModal = StepModal;
174
+ exports.useStepModal = useStepModal;
175
+ //# sourceMappingURL=StepModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepModal.js","sources":["../../../../../admin/src/components/AIChat/components/StepModal.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useState,\n ReactNode,\n Children,\n isValidElement,\n FormEvent,\n useEffect,\n} from 'react';\n\nimport { Modal, Box, Button, Typography } from '@strapi/design-system';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StepModalContextType {\n currentStep: number;\n goToStep: (step: number) => void;\n nextStep: () => Promise<boolean>;\n prevStep: () => void;\n isFirstStep: boolean;\n isLastStep: boolean;\n totalSteps: number;\n isLoading: boolean;\n error: Error | null;\n setError: (error: Error | null) => void;\n}\n\nconst StepModalContext = createContext<StepModalContextType | null>(null);\n\nexport const useStepModal = () => {\n const context = useContext(StepModalContext);\n if (!context) {\n throw new Error('useStepModal must be used within a StepModal');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * StepModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StepModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n children: ReactNode;\n onComplete?: () => void;\n onCancel?: () => void;\n}\n\ninterface StepProps {\n title?: string;\n children: ReactNode;\n nextLabel?: string;\n cancelLabel?: string;\n backLabel?: string;\n disableNext?: boolean;\n onNext?: () => Promise<boolean> | boolean;\n}\n\nconst StepModal = ({\n open,\n onOpenChange,\n title,\n children,\n onComplete,\n onCancel,\n}: StepModalProps) => {\n const [currentStep, setCurrentStep] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const childrenArray = Children.toArray(children)\n .filter((child): child is React.ReactElement => isValidElement(child))\n .map((child) => child.props);\n\n const totalSteps = childrenArray.length;\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === totalSteps - 1;\n\n // Reset states when modal opens/closes\n useEffect(() => {\n if (!open) {\n // Reset states when modal is closed\n setCurrentStep(0);\n setIsLoading(false);\n setError(null);\n }\n }, [open]);\n\n const resetStates = () => {\n setCurrentStep(0);\n setIsLoading(false);\n setError(null);\n };\n\n const handleCancel = () => {\n onCancel?.();\n resetStates();\n onOpenChange(false);\n };\n\n const handleBack = () => {\n setCurrentStep((prev) => Math.max(0, prev - 1));\n setError(null);\n };\n\n const nextStep = async () => {\n const currentStepProps = childrenArray[currentStep];\n\n if (currentStepProps.onNext) {\n setIsLoading(true);\n setError(null);\n\n try {\n if (isLastStep) {\n onComplete?.();\n resetStates();\n onOpenChange(false);\n } else {\n await currentStepProps.onNext();\n setCurrentStep((prev) => prev + 1);\n }\n return true;\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n return false;\n } finally {\n setIsLoading(false);\n }\n } else {\n // Default behavior: just move to next step\n if (isLastStep) {\n onComplete?.();\n resetStates();\n onOpenChange(false);\n } else {\n setCurrentStep((prev) => prev + 1);\n }\n return true;\n }\n };\n\n // Handle form submission (triggered by Enter key)\n const handleFormSubmit = (e: FormEvent) => {\n e.preventDefault();\n if (!isLoading && !childrenArray[currentStep]?.disableNext) {\n nextStep();\n }\n };\n\n const contextValue = {\n currentStep,\n goToStep: setCurrentStep,\n nextStep,\n prevStep: handleBack,\n isFirstStep,\n isLastStep,\n totalSteps,\n isLoading,\n error,\n setError,\n };\n\n const currentChild = childrenArray[currentStep];\n\n return (\n <StepModalContext.Provider value={contextValue}>\n {open && (\n <Modal.Root open onOpenChange={handleCancel}>\n <Modal.Content>\n <Modal.Header>\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {currentChild?.title || title}\n </Typography>\n </Modal.Header>\n\n <form onSubmit={handleFormSubmit}>\n <Modal.Body>\n {Children.toArray(children)[currentStep]}\n\n {error && (\n <Box\n marginTop={4}\n padding={3}\n background=\"danger100\"\n color=\"danger600\"\n borderRadius=\"4px\"\n >\n <Typography variant=\"pi\">{error.message}</Typography>\n </Box>\n )}\n </Modal.Body>\n\n <Modal.Footer>\n {isFirstStep ? (\n <Button variant=\"tertiary\" onClick={handleCancel} type=\"button\">\n {currentChild?.cancelLabel || 'Cancel'}\n </Button>\n ) : (\n <Button variant=\"tertiary\" onClick={handleBack} type=\"button\">\n {currentChild?.backLabel || 'Back'}\n </Button>\n )}\n\n <Button\n variant=\"default\"\n type=\"submit\"\n disabled={isLoading || currentChild?.disableNext}\n loading={isLoading}\n >\n {currentChild?.nextLabel || (isLastStep ? 'Complete' : 'Next')}\n </Button>\n </Modal.Footer>\n </form>\n </Modal.Content>\n </Modal.Root>\n )}\n </StepModalContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step\n * -----------------------------------------------------------------------------------------------*/\n\nconst Step = ({ children }: StepProps) => {\n return <>{children}</>;\n};\n\nStepModal.Step = Step;\n\nexport { StepModal, Step };\n"],"names":["StepModalContext","createContext","useStepModal","context","useContext","Error","StepModal","open","onOpenChange","title","children","onComplete","onCancel","currentStep","setCurrentStep","useState","isLoading","setIsLoading","error","setError","childrenArray","Children","toArray","filter","child","isValidElement","map","props","totalSteps","length","isFirstStep","isLastStep","useEffect","resetStates","handleCancel","handleBack","prev","Math","max","nextStep","currentStepProps","onNext","err","String","handleFormSubmit","e","preventDefault","disableNext","contextValue","goToStep","prevStep","currentChild","_jsx","Provider","value","Modal","Root","_jsxs","Content","Header","Typography","variant","fontWeight","form","onSubmit","Body","Box","marginTop","padding","background","color","borderRadius","message","Footer","Button","onClick","type","cancelLabel","backLabel","disabled","loading","nextLabel","Step","_Fragment"],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useState, Children, isValidElement, useEffect, createContext, useContext } from 'react';
3
+ import { Modal, Typography, Box, Button } from '@strapi/design-system';
4
+
5
+ const StepModalContext = /*#__PURE__*/ createContext(null);
6
+ const useStepModal = ()=>{
7
+ const context = useContext(StepModalContext);
8
+ if (!context) {
9
+ throw new Error('useStepModal must be used within a StepModal');
10
+ }
11
+ return context;
12
+ };
13
+ const StepModal = ({ open, onOpenChange, title, children, onComplete, onCancel })=>{
14
+ const [currentStep, setCurrentStep] = useState(0);
15
+ const [isLoading, setIsLoading] = useState(false);
16
+ const [error, setError] = useState(null);
17
+ const childrenArray = Children.toArray(children).filter((child)=>/*#__PURE__*/ isValidElement(child)).map((child)=>child.props);
18
+ const totalSteps = childrenArray.length;
19
+ const isFirstStep = currentStep === 0;
20
+ const isLastStep = currentStep === totalSteps - 1;
21
+ // Reset states when modal opens/closes
22
+ useEffect(()=>{
23
+ if (!open) {
24
+ // Reset states when modal is closed
25
+ setCurrentStep(0);
26
+ setIsLoading(false);
27
+ setError(null);
28
+ }
29
+ }, [
30
+ open
31
+ ]);
32
+ const resetStates = ()=>{
33
+ setCurrentStep(0);
34
+ setIsLoading(false);
35
+ setError(null);
36
+ };
37
+ const handleCancel = ()=>{
38
+ onCancel?.();
39
+ resetStates();
40
+ onOpenChange(false);
41
+ };
42
+ const handleBack = ()=>{
43
+ setCurrentStep((prev)=>Math.max(0, prev - 1));
44
+ setError(null);
45
+ };
46
+ const nextStep = async ()=>{
47
+ const currentStepProps = childrenArray[currentStep];
48
+ if (currentStepProps.onNext) {
49
+ setIsLoading(true);
50
+ setError(null);
51
+ try {
52
+ if (isLastStep) {
53
+ onComplete?.();
54
+ resetStates();
55
+ onOpenChange(false);
56
+ } else {
57
+ await currentStepProps.onNext();
58
+ setCurrentStep((prev)=>prev + 1);
59
+ }
60
+ return true;
61
+ } catch (err) {
62
+ setError(err instanceof Error ? err : new Error(String(err)));
63
+ return false;
64
+ } finally{
65
+ setIsLoading(false);
66
+ }
67
+ } else {
68
+ // Default behavior: just move to next step
69
+ if (isLastStep) {
70
+ onComplete?.();
71
+ resetStates();
72
+ onOpenChange(false);
73
+ } else {
74
+ setCurrentStep((prev)=>prev + 1);
75
+ }
76
+ return true;
77
+ }
78
+ };
79
+ // Handle form submission (triggered by Enter key)
80
+ const handleFormSubmit = (e)=>{
81
+ e.preventDefault();
82
+ if (!isLoading && !childrenArray[currentStep]?.disableNext) {
83
+ nextStep();
84
+ }
85
+ };
86
+ const contextValue = {
87
+ currentStep,
88
+ goToStep: setCurrentStep,
89
+ nextStep,
90
+ prevStep: handleBack,
91
+ isFirstStep,
92
+ isLastStep,
93
+ totalSteps,
94
+ isLoading,
95
+ error,
96
+ setError
97
+ };
98
+ const currentChild = childrenArray[currentStep];
99
+ return /*#__PURE__*/ jsx(StepModalContext.Provider, {
100
+ value: contextValue,
101
+ children: open && /*#__PURE__*/ jsx(Modal.Root, {
102
+ open: true,
103
+ onOpenChange: handleCancel,
104
+ children: /*#__PURE__*/ jsxs(Modal.Content, {
105
+ children: [
106
+ /*#__PURE__*/ jsx(Modal.Header, {
107
+ children: /*#__PURE__*/ jsx(Typography, {
108
+ variant: "omega",
109
+ fontWeight: "bold",
110
+ children: currentChild?.title || title
111
+ })
112
+ }),
113
+ /*#__PURE__*/ jsxs("form", {
114
+ onSubmit: handleFormSubmit,
115
+ children: [
116
+ /*#__PURE__*/ jsxs(Modal.Body, {
117
+ children: [
118
+ Children.toArray(children)[currentStep],
119
+ error && /*#__PURE__*/ jsx(Box, {
120
+ marginTop: 4,
121
+ padding: 3,
122
+ background: "danger100",
123
+ color: "danger600",
124
+ borderRadius: "4px",
125
+ children: /*#__PURE__*/ jsx(Typography, {
126
+ variant: "pi",
127
+ children: error.message
128
+ })
129
+ })
130
+ ]
131
+ }),
132
+ /*#__PURE__*/ jsxs(Modal.Footer, {
133
+ children: [
134
+ isFirstStep ? /*#__PURE__*/ jsx(Button, {
135
+ variant: "tertiary",
136
+ onClick: handleCancel,
137
+ type: "button",
138
+ children: currentChild?.cancelLabel || 'Cancel'
139
+ }) : /*#__PURE__*/ jsx(Button, {
140
+ variant: "tertiary",
141
+ onClick: handleBack,
142
+ type: "button",
143
+ children: currentChild?.backLabel || 'Back'
144
+ }),
145
+ /*#__PURE__*/ jsx(Button, {
146
+ variant: "default",
147
+ type: "submit",
148
+ disabled: isLoading || currentChild?.disableNext,
149
+ loading: isLoading,
150
+ children: currentChild?.nextLabel || (isLastStep ? 'Complete' : 'Next')
151
+ })
152
+ ]
153
+ })
154
+ ]
155
+ })
156
+ ]
157
+ })
158
+ })
159
+ });
160
+ };
161
+ /* -------------------------------------------------------------------------------------------------
162
+ * Step
163
+ * -----------------------------------------------------------------------------------------------*/ const Step = ({ children })=>{
164
+ return /*#__PURE__*/ jsx(Fragment, {
165
+ children: children
166
+ });
167
+ };
168
+ StepModal.Step = Step;
169
+
170
+ export { Step, StepModal, useStepModal };
171
+ //# sourceMappingURL=StepModal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepModal.mjs","sources":["../../../../../admin/src/components/AIChat/components/StepModal.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useState,\n ReactNode,\n Children,\n isValidElement,\n FormEvent,\n useEffect,\n} from 'react';\n\nimport { Modal, Box, Button, Typography } from '@strapi/design-system';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StepModalContextType {\n currentStep: number;\n goToStep: (step: number) => void;\n nextStep: () => Promise<boolean>;\n prevStep: () => void;\n isFirstStep: boolean;\n isLastStep: boolean;\n totalSteps: number;\n isLoading: boolean;\n error: Error | null;\n setError: (error: Error | null) => void;\n}\n\nconst StepModalContext = createContext<StepModalContextType | null>(null);\n\nexport const useStepModal = () => {\n const context = useContext(StepModalContext);\n if (!context) {\n throw new Error('useStepModal must be used within a StepModal');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * StepModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StepModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n children: ReactNode;\n onComplete?: () => void;\n onCancel?: () => void;\n}\n\ninterface StepProps {\n title?: string;\n children: ReactNode;\n nextLabel?: string;\n cancelLabel?: string;\n backLabel?: string;\n disableNext?: boolean;\n onNext?: () => Promise<boolean> | boolean;\n}\n\nconst StepModal = ({\n open,\n onOpenChange,\n title,\n children,\n onComplete,\n onCancel,\n}: StepModalProps) => {\n const [currentStep, setCurrentStep] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const childrenArray = Children.toArray(children)\n .filter((child): child is React.ReactElement => isValidElement(child))\n .map((child) => child.props);\n\n const totalSteps = childrenArray.length;\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === totalSteps - 1;\n\n // Reset states when modal opens/closes\n useEffect(() => {\n if (!open) {\n // Reset states when modal is closed\n setCurrentStep(0);\n setIsLoading(false);\n setError(null);\n }\n }, [open]);\n\n const resetStates = () => {\n setCurrentStep(0);\n setIsLoading(false);\n setError(null);\n };\n\n const handleCancel = () => {\n onCancel?.();\n resetStates();\n onOpenChange(false);\n };\n\n const handleBack = () => {\n setCurrentStep((prev) => Math.max(0, prev - 1));\n setError(null);\n };\n\n const nextStep = async () => {\n const currentStepProps = childrenArray[currentStep];\n\n if (currentStepProps.onNext) {\n setIsLoading(true);\n setError(null);\n\n try {\n if (isLastStep) {\n onComplete?.();\n resetStates();\n onOpenChange(false);\n } else {\n await currentStepProps.onNext();\n setCurrentStep((prev) => prev + 1);\n }\n return true;\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n return false;\n } finally {\n setIsLoading(false);\n }\n } else {\n // Default behavior: just move to next step\n if (isLastStep) {\n onComplete?.();\n resetStates();\n onOpenChange(false);\n } else {\n setCurrentStep((prev) => prev + 1);\n }\n return true;\n }\n };\n\n // Handle form submission (triggered by Enter key)\n const handleFormSubmit = (e: FormEvent) => {\n e.preventDefault();\n if (!isLoading && !childrenArray[currentStep]?.disableNext) {\n nextStep();\n }\n };\n\n const contextValue = {\n currentStep,\n goToStep: setCurrentStep,\n nextStep,\n prevStep: handleBack,\n isFirstStep,\n isLastStep,\n totalSteps,\n isLoading,\n error,\n setError,\n };\n\n const currentChild = childrenArray[currentStep];\n\n return (\n <StepModalContext.Provider value={contextValue}>\n {open && (\n <Modal.Root open onOpenChange={handleCancel}>\n <Modal.Content>\n <Modal.Header>\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {currentChild?.title || title}\n </Typography>\n </Modal.Header>\n\n <form onSubmit={handleFormSubmit}>\n <Modal.Body>\n {Children.toArray(children)[currentStep]}\n\n {error && (\n <Box\n marginTop={4}\n padding={3}\n background=\"danger100\"\n color=\"danger600\"\n borderRadius=\"4px\"\n >\n <Typography variant=\"pi\">{error.message}</Typography>\n </Box>\n )}\n </Modal.Body>\n\n <Modal.Footer>\n {isFirstStep ? (\n <Button variant=\"tertiary\" onClick={handleCancel} type=\"button\">\n {currentChild?.cancelLabel || 'Cancel'}\n </Button>\n ) : (\n <Button variant=\"tertiary\" onClick={handleBack} type=\"button\">\n {currentChild?.backLabel || 'Back'}\n </Button>\n )}\n\n <Button\n variant=\"default\"\n type=\"submit\"\n disabled={isLoading || currentChild?.disableNext}\n loading={isLoading}\n >\n {currentChild?.nextLabel || (isLastStep ? 'Complete' : 'Next')}\n </Button>\n </Modal.Footer>\n </form>\n </Modal.Content>\n </Modal.Root>\n )}\n </StepModalContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step\n * -----------------------------------------------------------------------------------------------*/\n\nconst Step = ({ children }: StepProps) => {\n return <>{children}</>;\n};\n\nStepModal.Step = Step;\n\nexport { StepModal, Step };\n"],"names":["StepModalContext","createContext","useStepModal","context","useContext","Error","StepModal","open","onOpenChange","title","children","onComplete","onCancel","currentStep","setCurrentStep","useState","isLoading","setIsLoading","error","setError","childrenArray","Children","toArray","filter","child","isValidElement","map","props","totalSteps","length","isFirstStep","isLastStep","useEffect","resetStates","handleCancel","handleBack","prev","Math","max","nextStep","currentStepProps","onNext","err","String","handleFormSubmit","e","preventDefault","disableNext","contextValue","goToStep","prevStep","currentChild","_jsx","Provider","value","Modal","Root","_jsxs","Content","Header","Typography","variant","fontWeight","form","onSubmit","Body","Box","marginTop","padding","background","color","borderRadius","message","Footer","Button","onClick","type","cancelLabel","backLabel","disabled","loading","nextLabel","Step","_Fragment"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ var styledComponents = require('styled-components');
4
+
5
+ const ANIMATIONS = {
6
+ fadeIn: styledComponents.keyframes`
7
+ from {
8
+ opacity: 0;
9
+ }
10
+ to {
11
+ opacity: 1;
12
+ }
13
+ `,
14
+ scaleIn: styledComponents.keyframes`
15
+ from {
16
+ opacity: 0;
17
+ transform: scale(0.7);
18
+ }
19
+ to {
20
+ opacity: 1;
21
+ transform: scale(1);
22
+ }
23
+ `,
24
+ slideUpIn: styledComponents.keyframes`
25
+ from {
26
+ opacity: 0;
27
+ transform: translateY(10px);
28
+ }
29
+ to {
30
+ opacity: 1;
31
+ transform: translateY(0);
32
+ }
33
+ `,
34
+ slideUpOut: styledComponents.keyframes`
35
+ from {
36
+ opacity: 1;
37
+ transform: translateY(0);
38
+ }
39
+ to {
40
+ opacity: 0;
41
+ transform: translateY(10px);
42
+ }
43
+ `,
44
+ slideDownIn: styledComponents.keyframes`
45
+ from {
46
+ opacity: 0;
47
+ transform: translateY(-10px);
48
+ }
49
+ to {
50
+ opacity: 1;
51
+ transform: translateY(0);
52
+ }
53
+ `,
54
+ slideDownOut: styledComponents.keyframes`
55
+ from {
56
+ opacity: 1;
57
+ transform: translateY(0);
58
+ }
59
+ to {
60
+ opacity: 0;
61
+ transform: translateY(-10px);
62
+ }
63
+ `
64
+ };
65
+
66
+ exports.ANIMATIONS = ANIMATIONS;
67
+ //# sourceMappingURL=animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.js","sources":["../../../../../admin/src/components/AIChat/components/animations.ts"],"sourcesContent":["import { keyframes } from 'styled-components';\n\nexport const ANIMATIONS = {\n fadeIn: keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n `,\n\n scaleIn: keyframes`\n from {\n opacity: 0;\n transform: scale(0.7);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n `,\n\n slideUpIn: keyframes`\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n `,\n\n slideUpOut: keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(10px);\n }\n `,\n\n slideDownIn: keyframes`\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n `,\n\n slideDownOut: keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-10px);\n }\n `,\n};\n"],"names":["ANIMATIONS","fadeIn","keyframes","scaleIn","slideUpIn","slideUpOut","slideDownIn","slideDownOut"],"mappings":";;;;MAEaA,UAAa,GAAA;AACxBC,IAAAA,MAAAA,EAAQC,0BAAS;;;;;;;EAOjB,CAAC;AAEDC,IAAAA,OAAAA,EAASD,0BAAS;;;;;;;;;EASlB,CAAC;AAEDE,IAAAA,SAAAA,EAAWF,0BAAS;;;;;;;;;EASpB,CAAC;AAEDG,IAAAA,UAAAA,EAAYH,0BAAS;;;;;;;;;EASrB,CAAC;AAEDI,IAAAA,WAAAA,EAAaJ,0BAAS;;;;;;;;;EAStB,CAAC;AAEDK,IAAAA,YAAAA,EAAcL,0BAAS;;;;;;;;;EASvB;AACF;;;;"}