@strapi/content-type-builder 5.37.1 → 5.38.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 (433) hide show
  1. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  2. package/dist/admin/components/AIChat/Chat.mjs +2 -2
  3. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  4. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  5. package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -1
  6. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  7. package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -1
  8. package/dist/admin/components/AIChat/UploadCodeModal.mjs +1 -1
  9. package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -1
  10. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  11. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  12. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Alert.js.map +1 -1
  14. package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -1
  15. package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -1
  16. package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -1
  18. package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -1
  19. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -1
  20. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +1 -1
  21. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -1
  22. package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
  23. package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
  24. package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
  25. package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
  26. package/dist/admin/components/AIChat/components/Dropzone.js +2 -6
  27. package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -1
  28. package/dist/admin/components/AIChat/components/Dropzone.mjs +3 -7
  29. package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -1
  30. package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -1
  31. package/dist/admin/components/AIChat/components/FloatingPanel.mjs +1 -1
  32. package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -1
  33. package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
  34. package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
  35. package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -1
  36. package/dist/admin/components/AIChat/components/ImagePreview.mjs +1 -1
  37. package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -1
  38. package/dist/admin/components/AIChat/components/Input.js +1 -5
  39. package/dist/admin/components/AIChat/components/Input.js.map +1 -1
  40. package/dist/admin/components/AIChat/components/Input.mjs +4 -7
  41. package/dist/admin/components/AIChat/components/Input.mjs.map +1 -1
  42. package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -1
  43. package/dist/admin/components/AIChat/components/Messages/Marker.mjs +2 -2
  44. package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -1
  45. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  46. package/dist/admin/components/AIChat/components/Messages/Message.mjs +1 -1
  47. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  48. package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -1
  49. package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -1
  50. package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -1
  51. package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -1
  52. package/dist/admin/components/AIChat/components/StepModal.js.map +1 -1
  53. package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -1
  54. package/dist/admin/components/AIChat/components/animations.js.map +1 -1
  55. package/dist/admin/components/AIChat/components/animations.mjs.map +1 -1
  56. package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -1
  57. package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -1
  58. package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -1
  59. package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -1
  60. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
  61. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
  62. package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -1
  63. package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -1
  64. package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -1
  65. package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -1
  66. package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
  67. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -1
  68. package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
  69. package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
  70. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -1
  71. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -1
  72. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -1
  73. package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -1
  74. package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -1
  75. package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -1
  76. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  77. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  78. package/dist/admin/components/AIChat/lib/constants.js.map +1 -1
  79. package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -1
  80. package/dist/admin/components/AIChat/lib/misc.js.map +1 -1
  81. package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -1
  82. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
  83. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
  84. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  85. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  86. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
  87. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
  88. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  89. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  90. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  91. package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
  92. package/dist/admin/components/ApplyConditionButton.js.map +1 -1
  93. package/dist/admin/components/ApplyConditionButton.mjs.map +1 -1
  94. package/dist/admin/components/AttributeIcon.js.map +1 -1
  95. package/dist/admin/components/AttributeIcon.mjs +1 -1
  96. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  97. package/dist/admin/components/AttributeOptions/AttributeList.js.map +1 -1
  98. package/dist/admin/components/AttributeOptions/AttributeList.mjs.map +1 -1
  99. package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
  100. package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
  101. package/dist/admin/components/AttributeOptions/AttributeOptions.js.map +1 -1
  102. package/dist/admin/components/AttributeOptions/AttributeOptions.mjs.map +1 -1
  103. package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
  104. package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
  105. package/dist/admin/components/AttributeOptions/CustomFieldsList.js.map +1 -1
  106. package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs.map +1 -1
  107. package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
  108. package/dist/admin/components/AttributeOptions/EmptyAttributes.mjs.map +1 -1
  109. package/dist/admin/components/AttributeOptions/OptionBoxWrapper.js.map +1 -1
  110. package/dist/admin/components/AttributeOptions/OptionBoxWrapper.mjs.map +1 -1
  111. package/dist/admin/components/AttributeRow.js.map +1 -1
  112. package/dist/admin/components/AttributeRow.mjs +1 -1
  113. package/dist/admin/components/AttributeRow.mjs.map +1 -1
  114. package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
  115. package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
  116. package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
  117. package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
  118. package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
  119. package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
  120. package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -1
  121. package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -1
  122. package/dist/admin/components/CTBSession/sessionContext.js.map +1 -1
  123. package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -1
  124. package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -1
  125. package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -1
  126. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  127. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  128. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  129. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  130. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  131. package/dist/admin/components/ComponentCard/ComponentCard.mjs +1 -1
  132. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  133. package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.js.map +1 -1
  134. package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.mjs.map +1 -1
  135. package/dist/admin/components/ComponentList.js.map +1 -1
  136. package/dist/admin/components/ComponentList.mjs.map +1 -1
  137. package/dist/admin/components/ComponentRow.js.map +1 -1
  138. package/dist/admin/components/ComponentRow.mjs.map +1 -1
  139. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  140. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +2 -2
  141. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  142. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  143. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  144. package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
  145. package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
  146. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  147. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  148. package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
  149. package/dist/admin/components/CustomRadioGroup/Styles.mjs +1 -1
  150. package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
  151. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  152. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  153. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  154. package/dist/admin/components/DataManager/DataManagerProvider.mjs +1 -1
  155. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  156. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  157. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  158. package/dist/admin/components/DataManager/undoRedo.js.map +1 -1
  159. package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -1
  160. package/dist/admin/components/DataManager/useDataManager.js.map +1 -1
  161. package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -1
  162. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  163. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  164. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  165. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
  166. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -1
  167. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -1
  168. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -1
  169. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -1
  170. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  171. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
  172. package/dist/admin/components/DisplayedType.js.map +1 -1
  173. package/dist/admin/components/DisplayedType.mjs.map +1 -1
  174. package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
  175. package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
  176. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  177. package/dist/admin/components/DynamicZoneList.mjs +1 -1
  178. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  179. package/dist/admin/components/ExitPrompt.js.map +1 -1
  180. package/dist/admin/components/ExitPrompt.mjs.map +1 -1
  181. package/dist/admin/components/Footers.js.map +1 -1
  182. package/dist/admin/components/Footers.mjs +2 -2
  183. package/dist/admin/components/Footers.mjs.map +1 -1
  184. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  185. package/dist/admin/components/FormModal/FormModal.mjs +1 -1
  186. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  187. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  188. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  189. package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
  190. package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
  191. package/dist/admin/components/FormModal/attributes/attributeOptions.js.map +1 -1
  192. package/dist/admin/components/FormModal/attributes/attributeOptions.mjs.map +1 -1
  193. package/dist/admin/components/FormModal/attributes/baseForm.js.map +1 -1
  194. package/dist/admin/components/FormModal/attributes/baseForm.mjs.map +1 -1
  195. package/dist/admin/components/FormModal/attributes/commonBaseForm.js.map +1 -1
  196. package/dist/admin/components/FormModal/attributes/commonBaseForm.mjs.map +1 -1
  197. package/dist/admin/components/FormModal/attributes/form.js.map +1 -1
  198. package/dist/admin/components/FormModal/attributes/form.mjs.map +1 -1
  199. package/dist/admin/components/FormModal/attributes/nameField.js.map +1 -1
  200. package/dist/admin/components/FormModal/attributes/nameField.mjs.map +1 -1
  201. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  202. package/dist/admin/components/FormModal/attributes/types.mjs +1 -1
  203. package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
  204. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  205. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  206. package/dist/admin/components/FormModal/component/componentField.js.map +1 -1
  207. package/dist/admin/components/FormModal/component/componentField.mjs.map +1 -1
  208. package/dist/admin/components/FormModal/component/componentForm.js.map +1 -1
  209. package/dist/admin/components/FormModal/component/componentForm.mjs.map +1 -1
  210. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  211. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  212. package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
  213. package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
  214. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
  215. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs.map +1 -1
  216. package/dist/admin/components/FormModal/dynamiczoneForm.js.map +1 -1
  217. package/dist/admin/components/FormModal/dynamiczoneForm.mjs.map +1 -1
  218. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  219. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  220. package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.js.map +1 -1
  221. package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.mjs.map +1 -1
  222. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
  223. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
  224. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  225. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  226. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  227. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  228. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  229. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  230. package/dist/admin/components/FormModal/utils/createUid.js.map +1 -1
  231. package/dist/admin/components/FormModal/utils/createUid.mjs.map +1 -1
  232. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  233. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  234. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
  235. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
  236. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  237. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  238. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  239. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  240. package/dist/admin/components/FormModalEndActions.js.map +1 -1
  241. package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
  242. package/dist/admin/components/FormModalHeader.js.map +1 -1
  243. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  244. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  245. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  246. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  247. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  248. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -1
  249. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -1
  250. package/dist/admin/components/FormModalSubHeader.js.map +1 -1
  251. package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
  252. package/dist/admin/components/GenericInputs.js +1 -5
  253. package/dist/admin/components/GenericInputs.js.map +1 -1
  254. package/dist/admin/components/GenericInputs.mjs +1 -5
  255. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  256. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  257. package/dist/admin/components/IconPicker/IconPicker.mjs +1 -1
  258. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  259. package/dist/admin/components/IconPicker/constants.js.map +1 -1
  260. package/dist/admin/components/IconPicker/constants.mjs.map +1 -1
  261. package/dist/admin/components/List.js.map +1 -1
  262. package/dist/admin/components/List.mjs +1 -1
  263. package/dist/admin/components/List.mjs.map +1 -1
  264. package/dist/admin/components/PluralName.js.map +1 -1
  265. package/dist/admin/components/PluralName.mjs.map +1 -1
  266. package/dist/admin/components/Relation/Relation.js.map +1 -1
  267. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  268. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  269. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  270. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
  271. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
  272. package/dist/admin/components/Relation/RelationNaturePicker/Components.js.map +1 -1
  273. package/dist/admin/components/Relation/RelationNaturePicker/Components.mjs.map +1 -1
  274. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
  275. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +1 -1
  276. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
  277. package/dist/admin/components/SelectCategory.js.map +1 -1
  278. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  279. package/dist/admin/components/SelectComponent.js.map +1 -1
  280. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  281. package/dist/admin/components/SelectComponents.js.map +1 -1
  282. package/dist/admin/components/SelectComponents.mjs.map +1 -1
  283. package/dist/admin/components/SelectDateType.js.map +1 -1
  284. package/dist/admin/components/SelectDateType.mjs.map +1 -1
  285. package/dist/admin/components/SelectNumber.js.map +1 -1
  286. package/dist/admin/components/SelectNumber.mjs.map +1 -1
  287. package/dist/admin/components/SingularName.js.map +1 -1
  288. package/dist/admin/components/SingularName.mjs.map +1 -1
  289. package/dist/admin/components/Status.js.map +1 -1
  290. package/dist/admin/components/Status.mjs.map +1 -1
  291. package/dist/admin/components/TabForm.js.map +1 -1
  292. package/dist/admin/components/TabForm.mjs.map +1 -1
  293. package/dist/admin/components/TextareaEnum.js.map +1 -1
  294. package/dist/admin/components/TextareaEnum.mjs.map +1 -1
  295. package/dist/admin/constants.js.map +1 -1
  296. package/dist/admin/constants.mjs.map +1 -1
  297. package/dist/admin/icons/Curve.js.map +1 -1
  298. package/dist/admin/icons/Curve.mjs.map +1 -1
  299. package/dist/admin/index.js.map +1 -1
  300. package/dist/admin/index.mjs.map +1 -1
  301. package/dist/admin/pages/App/index.js.map +1 -1
  302. package/dist/admin/pages/App/index.mjs.map +1 -1
  303. package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
  304. package/dist/admin/pages/ListView/EmptyState.mjs +1 -1
  305. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
  306. package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
  307. package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
  308. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  309. package/dist/admin/pages/ListView/ListView.mjs +1 -1
  310. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  311. package/dist/admin/reducers.js +4 -4
  312. package/dist/admin/reducers.js.map +1 -1
  313. package/dist/admin/reducers.mjs +4 -4
  314. package/dist/admin/reducers.mjs.map +1 -1
  315. package/dist/admin/utils/conditions.js.map +1 -1
  316. package/dist/admin/utils/conditions.mjs.map +1 -1
  317. package/dist/admin/utils/findAttribute.js.map +1 -1
  318. package/dist/admin/utils/findAttribute.mjs.map +1 -1
  319. package/dist/admin/utils/formAPI.js.map +1 -1
  320. package/dist/admin/utils/formAPI.mjs.map +1 -1
  321. package/dist/admin/utils/getAttributeDisplayedType.js.map +1 -1
  322. package/dist/admin/utils/getAttributeDisplayedType.mjs.map +1 -1
  323. package/dist/admin/utils/getMaxDepth.js.map +1 -1
  324. package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
  325. package/dist/admin/utils/getRelationType.js.map +1 -1
  326. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  327. package/dist/admin/utils/getTrad.js.map +1 -1
  328. package/dist/admin/utils/getTrad.mjs.map +1 -1
  329. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  330. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  331. package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
  332. package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
  333. package/dist/admin/utils/makeUnique.js.map +1 -1
  334. package/dist/admin/utils/makeUnique.mjs.map +1 -1
  335. package/dist/admin/utils/nameToSlug.js.map +1 -1
  336. package/dist/admin/utils/nameToSlug.mjs.map +1 -1
  337. package/dist/admin/utils/parseDateValue.js.map +1 -1
  338. package/dist/admin/utils/parseDateValue.mjs.map +1 -1
  339. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  340. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  341. package/dist/admin/utils/timeFormat.js.map +1 -1
  342. package/dist/admin/utils/timeFormat.mjs.map +1 -1
  343. package/dist/admin/utils/toRegressedEnumValue.js.map +1 -1
  344. package/dist/admin/utils/toRegressedEnumValue.mjs.map +1 -1
  345. package/dist/server/bootstrap.js.map +1 -1
  346. package/dist/server/bootstrap.mjs.map +1 -1
  347. package/dist/server/config.js.map +1 -1
  348. package/dist/server/config.mjs.map +1 -1
  349. package/dist/server/controllers/builder.js.map +1 -1
  350. package/dist/server/controllers/builder.mjs.map +1 -1
  351. package/dist/server/controllers/component-categories.js.map +1 -1
  352. package/dist/server/controllers/component-categories.mjs.map +1 -1
  353. package/dist/server/controllers/components.js.map +1 -1
  354. package/dist/server/controllers/components.mjs +1 -1
  355. package/dist/server/controllers/components.mjs.map +1 -1
  356. package/dist/server/controllers/content-types.js.map +1 -1
  357. package/dist/server/controllers/content-types.mjs +1 -1
  358. package/dist/server/controllers/content-types.mjs.map +1 -1
  359. package/dist/server/controllers/index.js.map +1 -1
  360. package/dist/server/controllers/index.mjs.map +1 -1
  361. package/dist/server/controllers/schema.js.map +1 -1
  362. package/dist/server/controllers/schema.mjs.map +1 -1
  363. package/dist/server/controllers/validation/common.js.map +1 -1
  364. package/dist/server/controllers/validation/common.mjs.map +1 -1
  365. package/dist/server/controllers/validation/component-category.js.map +1 -1
  366. package/dist/server/controllers/validation/component-category.mjs.map +1 -1
  367. package/dist/server/controllers/validation/component.js.map +1 -1
  368. package/dist/server/controllers/validation/component.mjs +1 -1
  369. package/dist/server/controllers/validation/component.mjs.map +1 -1
  370. package/dist/server/controllers/validation/content-type.js.map +1 -1
  371. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  372. package/dist/server/controllers/validation/data-transform.js.map +1 -1
  373. package/dist/server/controllers/validation/data-transform.mjs.map +1 -1
  374. package/dist/server/controllers/validation/model-schema.js.map +1 -1
  375. package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
  376. package/dist/server/controllers/validation/relations.js.map +1 -1
  377. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  378. package/dist/server/controllers/validation/schema.js.map +1 -1
  379. package/dist/server/controllers/validation/schema.mjs +1 -1
  380. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  381. package/dist/server/controllers/validation/types.js +0 -1
  382. package/dist/server/controllers/validation/types.js.map +1 -1
  383. package/dist/server/controllers/validation/types.mjs +1 -2
  384. package/dist/server/controllers/validation/types.mjs.map +1 -1
  385. package/dist/server/index.js +8 -8
  386. package/dist/server/middlewares/is-development-mode.js.map +1 -1
  387. package/dist/server/middlewares/is-development-mode.mjs.map +1 -1
  388. package/dist/server/register.js.map +1 -1
  389. package/dist/server/register.mjs.map +1 -1
  390. package/dist/server/routes/admin.js.map +1 -1
  391. package/dist/server/routes/admin.mjs.map +1 -1
  392. package/dist/server/routes/content-api.js.map +1 -1
  393. package/dist/server/routes/content-api.mjs.map +1 -1
  394. package/dist/server/routes/index.js.map +1 -1
  395. package/dist/server/routes/index.mjs.map +1 -1
  396. package/dist/server/services/api-handler.js.map +1 -1
  397. package/dist/server/services/api-handler.mjs.map +1 -1
  398. package/dist/server/services/builder.js.map +1 -1
  399. package/dist/server/services/builder.mjs.map +1 -1
  400. package/dist/server/services/component-categories.js.map +1 -1
  401. package/dist/server/services/component-categories.mjs +1 -1
  402. package/dist/server/services/component-categories.mjs.map +1 -1
  403. package/dist/server/services/components.js.map +1 -1
  404. package/dist/server/services/components.mjs +1 -1
  405. package/dist/server/services/components.mjs.map +1 -1
  406. package/dist/server/services/constants.js.map +1 -1
  407. package/dist/server/services/constants.mjs.map +1 -1
  408. package/dist/server/services/content-types.js.map +1 -1
  409. package/dist/server/services/content-types.mjs +1 -1
  410. package/dist/server/services/content-types.mjs.map +1 -1
  411. package/dist/server/services/index.js.map +1 -1
  412. package/dist/server/services/index.mjs.map +1 -1
  413. package/dist/server/services/schema-builder/component-builder.js.map +1 -1
  414. package/dist/server/services/schema-builder/component-builder.mjs +1 -1
  415. package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
  416. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  417. package/dist/server/services/schema-builder/content-type-builder.mjs +2 -2
  418. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  419. package/dist/server/services/schema-builder/index.js.map +1 -1
  420. package/dist/server/services/schema-builder/index.mjs +3 -3
  421. package/dist/server/services/schema-builder/index.mjs.map +1 -1
  422. package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
  423. package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
  424. package/dist/server/services/schema.js.map +1 -1
  425. package/dist/server/services/schema.mjs +1 -1
  426. package/dist/server/services/schema.mjs.map +1 -1
  427. package/dist/server/utils/attributes.js.map +1 -1
  428. package/dist/server/utils/attributes.mjs.map +1 -1
  429. package/dist/server/utils/index.js.map +1 -1
  430. package/dist/server/utils/index.mjs.map +1 -1
  431. package/dist/server/utils/typeguards.js.map +1 -1
  432. package/dist/server/utils/typeguards.mjs.map +1 -1
  433. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPanel.js","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"FloatingPanel.js","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useContext, createContext } from 'react';
2
+ import { createContext, useContext } from 'react';
3
3
  import { Box, Flex, IconButton } from '@strapi/design-system';
4
4
  import { Cross } from '@strapi/icons';
5
5
  import { styled } from 'styled-components';
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPanel.mjs","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"FloatingPanel.mjs","sources":["../../../../../admin/src/components/AIChat/components/FloatingPanel.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, IconButton } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\n\ntype PanelSize = 'sm' | 'md' | 'lg';\ntype PanelPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\ninterface PanelContextValue {\n size: PanelSize;\n position: PanelPosition;\n isOpen: boolean;\n onToggle: () => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({\n size: 'md',\n position: 'bottom-right',\n isOpen: false,\n onToggle: () => {},\n});\n\nconst PANEL_SIZES: Record<PanelSize, { width: string; height: string }> = {\n sm: { width: '350px', height: '500px' },\n md: { width: '480px', height: '600px' },\n lg: { width: '600px', height: '700px' },\n};\n\nconst PANEL_POSITIONS: Record<PanelPosition, { [key: string]: number }> = {\n 'bottom-right': { bottom: 4, right: 4 },\n 'bottom-left': { bottom: 4, left: 4 },\n 'top-right': { top: 4, right: 4 },\n 'top-left': { top: 4, left: 4 },\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel Root\n * -----------------------------------------------------------------------------------------------*/\ninterface RootProps {\n children: React.ReactNode;\n size?: PanelSize;\n position?: PanelPosition;\n isOpen?: boolean;\n onToggle?: () => void;\n toggleIcon?: React.ReactNode;\n}\n\nconst FixedWrapper = styled(Box)<{ $position: PanelPosition }>`\n position: fixed;\n display: flex;\n flex-direction: column;\n z-index: 11;\n align-items: ${({ $position }) => ($position.includes('right') ? 'flex-end' : 'flex-start')};\n ${({ $position, theme }) =>\n Object.entries(PANEL_POSITIONS[$position]).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: theme.spaces[value],\n }),\n {}\n )}\n`;\n\nconst PanelContainer = styled(Box)<{ $size: PanelSize; $position: PanelPosition }>`\n width: ${({ $size }) => PANEL_SIZES[$size].width};\n max-height: 85vh;\n max-width: 85vw;\n display: flex;\n flex-direction: column;\n height: ${({ $size }) => PANEL_SIZES[$size].height};\n\n @media (prefers-reduced-motion: no-preference) {\n animation-duration: 200ms;\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n &[data-state='open'] {\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownIn : ANIMATIONS.slideUpIn};\n }\n\n &[data-state='closed'] {\n animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\n animation-name: ${({ $position }) =>\n $position.startsWith('top') ? ANIMATIONS.slideDownOut : ANIMATIONS.slideUpOut};\n }\n }\n`;\n\nconst Root = ({\n children,\n size = 'md',\n position = 'bottom-right',\n isOpen = false,\n onToggle = () => {},\n toggleIcon,\n}: RootProps) => {\n return (\n <PanelContext.Provider value={{ size, position, isOpen, onToggle }}>\n <FixedWrapper $position={position}>\n {isOpen ? (\n <PanelContainer\n $size={size}\n $position={position}\n background=\"neutral0\"\n shadow=\"popupShadow\"\n hasRadius\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n data-state={isOpen ? 'open' : 'closed'}\n >\n {children}\n </PanelContainer>\n ) : null}\n {toggleIcon && !isOpen && toggleIcon}\n </FixedWrapper>\n </PanelContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\nconst Header = ({ children }: { children: React.ReactNode }) => (\n // Adjust padding to fit title and right icons\n <Box padding={[2, 2, 2, 4]} borderColor=\"neutral150\" borderStyle=\"solid\" borderWidth=\"0 0 1px 0\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n {children}\n </Flex>\n </Box>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\nconst Body = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box padding={4} flex=\"1\" overflow=\"auto\">\n {children}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Footer\n * -----------------------------------------------------------------------------------------------*/\nconst Footer = ({ children }: { children: React.ReactNode }) => <Box padding={4}>{children}</Box>;\n\n/* -------------------------------------------------------------------------------------------------\n * Close Panel\n * -----------------------------------------------------------------------------------------------*/\nconst Close = ({ label }: { label?: string }) => {\n const { onToggle } = usePanel();\n\n return (\n <IconButton onClick={onToggle} variant=\"ghost\" label={label || 'Close'}>\n <Cross />\n </IconButton>\n );\n};\n\nexport const Panel = {\n Root,\n Header,\n Body,\n Footer,\n Close,\n};\n\nexport const usePanel = () => useContext(PanelContext);\n"],"names":["PanelContext","createContext","size","position","isOpen","onToggle","PANEL_SIZES","sm","width","height","md","lg","PANEL_POSITIONS","bottom","right","left","top","FixedWrapper","styled","Box","$position","includes","theme","Object","entries","reduce","acc","key","value","spaces","PanelContainer","$size","startsWith","ANIMATIONS","slideDownIn","slideUpIn","slideDownOut","slideUpOut","Root","children","toggleIcon","_jsx","Provider","_jsxs","background","shadow","hasRadius","borderColor","borderStyle","borderWidth","data-state","Header","padding","Flex","justifyContent","alignItems","Body","flex","overflow","Footer","Close","label","usePanel","IconButton","onClick","variant","Cross","Panel","useContext"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FullScreenImage.js","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":"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"}
1
+ {"version":3,"file":"FullScreenImage.js","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FullScreenImage.mjs","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":"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"}
1
+ {"version":3,"file":"FullScreenImage.mjs","sources":["../../../../../admin/src/components/AIChat/components/FullScreenImage.tsx"],"sourcesContent":["import { useEffect, useRef, createContext, useContext, useState, ReactNode } from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageContextType {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n src: string;\n alt: string;\n}\n\nconst FullScreenImageContext = createContext<FullScreenImageContextType | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FullScreenImageProps {\n src: string;\n alt: string;\n onClose?: () => void;\n}\n\ninterface FullScreenImageRootProps extends FullScreenImageProps {\n children: ReactNode;\n defaultOpen?: boolean;\n}\n\ninterface FullScreenImageTriggerProps {\n children: ReactNode;\n asChild?: boolean;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\nexport const setOpacity = (hex: string, alpha: number) =>\n `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 500;\n pointer-events: auto; /* Explicitly enable pointer events */\n background: ${(props) => setOpacity(props.theme.colors.neutral800, 0.2)};\n`;\n\nconst ImageWrapper = styled.div`\n max-width: 80vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto; /* Explicitly enable pointer events */\n position: relative;\n animation: ${ANIMATIONS.scaleIn} 0.3s ease;\n`;\n\nconst StyledImg = styled(Base64Img)`\n max-width: 100%;\n max-height: 90vh;\n object-fit: contain;\n pointer-events: auto; /* Explicitly enable pointer events */\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Modal\n * -----------------------------------------------------------------------------------------------*/\n\n// Use the existing FullScreenImage as our modal component\nconst ImageModal = ({ src, alt, onClose }: FullScreenImageProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n // Close on ESC key press\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n // Stop propagation to prevent closing parent modals\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n\n // The next 3 lines are critical: they completely stop the event\n e.stopImmediatePropagation();\n e.cancelBubble = true; // For older browsers\n return false;\n }\n };\n\n // Use capture phase to intercept event before it reaches other components\n window.addEventListener('keydown', handleKeyDown, true);\n return () => window.removeEventListener('keydown', handleKeyDown, true);\n }, [onClose]);\n\n // Setup click handlers\n useEffect(() => {\n const handleOverlayClick = (e: MouseEvent) => {\n // Only close if clicking directly on the overlay (not its children)\n if (e.target === overlayRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.();\n }\n };\n\n const handleWrapperClick = (e: MouseEvent) => {\n // Stop propagation for clicks on the image wrapper\n e.stopPropagation();\n };\n\n const overlay = overlayRef.current;\n const wrapper = wrapperRef.current;\n\n if (overlay) {\n overlay.addEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.addEventListener('click', handleWrapperClick);\n }\n\n return () => {\n if (overlay) {\n overlay.removeEventListener('click', handleOverlayClick);\n }\n\n if (wrapper) {\n wrapper.removeEventListener('click', handleWrapperClick);\n }\n };\n }, [onClose]);\n\n // Using createPortal to render directly at document body level\n return createPortal(\n <Overlay ref={overlayRef}>\n <ImageWrapper ref={wrapperRef}>\n <StyledImg src={src} alt={alt} />\n </ImageWrapper>\n </Overlay>,\n document.body\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\n// Root component that provides context\nconst Root = ({ children, src, alt, onClose, defaultOpen = false }: FullScreenImageRootProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n const open = () => setIsOpen(true);\n const close = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n return (\n <FullScreenImageContext.Provider value={{ isOpen, open, close, src, alt }}>\n {children}\n {isOpen && <ImageModal src={src} alt={alt} onClose={close} />}\n </FullScreenImageContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hooks\n * -----------------------------------------------------------------------------------------------*/\n\n// Hook to use the context\nconst useFullScreenImage = () => {\n const context = useContext(FullScreenImageContext);\n if (!context) {\n throw new Error('useFullScreenImage must be used within a FullScreenImage.Root');\n }\n return context;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\n// Trigger component that opens the full screen image\nconst Trigger = ({ children, asChild = false }: FullScreenImageTriggerProps) => {\n const { open } = useFullScreenImage();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n open();\n };\n\n if (asChild) {\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer', display: 'contents' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div onClick={handleClick} style={{ cursor: 'pointer' }}>\n {children}\n </div>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Export\n * -----------------------------------------------------------------------------------------------*/\n\nexport const FullScreenImage = {\n Root,\n Trigger,\n};\n"],"names":["FullScreenImageContext","createContext","undefined","setOpacity","hex","alpha","Math","floor","toString","padStart","Overlay","styled","div","props","theme","colors","neutral800","ImageWrapper","ANIMATIONS","scaleIn","StyledImg","Base64Img","ImageModal","src","alt","onClose","overlayRef","useRef","wrapperRef","useEffect","handleKeyDown","e","key","preventDefault","stopPropagation","stopImmediatePropagation","cancelBubble","window","addEventListener","removeEventListener","handleOverlayClick","target","current","handleWrapperClick","overlay","wrapper","createPortal","_jsx","ref","document","body","Root","children","defaultOpen","isOpen","setIsOpen","useState","open","close","_jsxs","Provider","value","useFullScreenImage","context","useContext","Error","Trigger","asChild","handleClick","onClick","style","cursor","display","FullScreenImage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImagePreview.js","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,uBAAOG,CAAAA,qBAAAA,CAAU;;;;;;aAMtB,EAAEC,qBAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,uBAAOO,CAAAA,iBAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEYC,MAAAA,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAW,GAAA,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,cAAA,CAACC,gCAAgBC,IAAI,EAAA;QAACC,GAAKP,EAAAA,QAAAA;QAAUQ,GAAKP,EAAAA,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,eAACjB,CAAAA,aAAAA,EAAAA;YAAckB,IAAK,EAAA,QAAA;YAAShB,SAAWQ,EAAAA,QAAAA;;8BACtCO,eAACE,CAAAA,uBAAAA,EAAAA;;sCACCP,cAACQ,CAAAA,yBAAAA,EAAAA;4BAAaC,OAASX,EAAAA,QAAAA;4BAAUY,eAAiBX,EAAAA;;sCAClDC,cAACW,CAAAA,uBAAAA,EAAAA;4BAAWC,QAAS,EAAA,KAAA;oDACnBZ,cAAA,CAACC,gCAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,cAACc,CAAAA,uBAAAA,EAAAA;oCAAWC,KAAM,EAAA,SAAA;oCAAUC,IAAK,EAAA,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,cAACiB,CAAAA,YAAAA,EAAAA,EAAAA;;;;sCAIPjB,cAACnB,CAAAA,cAAAA,EAAAA;4BAAeqC,OAASnB,EAAAA,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,cAAChB,CAAAA,SAAAA,EAAAA;gCAAUmB,GAAKP,EAAAA,QAAAA;gCAAUQ,GAAKP,EAAAA;;;;;8BAInCG,cAACmB,CAAAA,qBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,cAACoB,CAAAA,wBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,cAACqB,CAAAA,sBAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}
1
+ {"version":3,"file":"ImagePreview.js","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,uBAAAA,CAAOC,gBAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,uBAAAA,CAAOG,qBAAAA,CAAU;;;;;;aAMtB,EAAEC,qBAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,uBAAAA,CAAOO,iBAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAAA,CAAMC,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEM,MAAMC,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAAA,GAAW,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,cAAA,CAACC,gCAAgBC,IAAI,EAAA;QAACC,GAAAA,EAAKP,QAAAA;QAAUQ,GAAAA,EAAKP,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,eAAA,CAACjB,aAAAA,EAAAA;YAAckB,IAAAA,EAAK,QAAA;YAAShB,SAAAA,EAAWQ,QAAAA;;8BACtCO,eAAA,CAACE,uBAAAA,EAAAA;;sCACCP,cAAA,CAACQ,yBAAAA,EAAAA;4BAAaC,OAAAA,EAASX,QAAAA;4BAAUY,eAAAA,EAAiBX;;sCAClDC,cAAA,CAACW,uBAAAA,EAAAA;4BAAWC,QAAAA,EAAS,KAAA;oDACnBZ,cAAA,CAACC,gCAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,cAAA,CAACc,uBAAAA,EAAAA;oCAAWC,KAAAA,EAAM,SAAA;oCAAUC,IAAAA,EAAK,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,cAAA,CAACiB,YAAAA,EAAAA,EAAAA;;;;sCAIPjB,cAAA,CAACnB,cAAAA,EAAAA;4BAAeqC,OAAAA,EAASnB,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,cAAA,CAAChB,SAAAA,EAAAA;gCAAUmB,GAAAA,EAAKP,QAAAA;gCAAUQ,GAAAA,EAAKP;;;;;8BAInCG,cAAA,CAACmB,qBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,cAAA,CAACoB,wBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,cAAA,CAACqB,sBAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Box, Card, CardHeader, CardCheckbox, CardAction, IconButton, CardBody, CardContent, CardTitle } from '@strapi/design-system';
2
+ import { CardHeader, CardCheckbox, CardAction, IconButton, CardBody, CardContent, CardTitle, Card, Box } from '@strapi/design-system';
3
3
  import { Expand } from '@strapi/icons';
4
4
  import { styled } from 'styled-components';
5
5
  import { ANIMATIONS } from './animations.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"ImagePreview.mjs","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,MAAOG,CAAAA,SAAAA,CAAU;;;;;;aAMtB,EAAEC,UAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,MAAOO,CAAAA,IAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEYC,MAAAA,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAW,GAAA,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,GAAA,CAACC,gBAAgBC,IAAI,EAAA;QAACC,GAAKP,EAAAA,QAAAA;QAAUQ,GAAKP,EAAAA,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,IAACjB,CAAAA,aAAAA,EAAAA;YAAckB,IAAK,EAAA,QAAA;YAAShB,SAAWQ,EAAAA,QAAAA;;8BACtCO,IAACE,CAAAA,UAAAA,EAAAA;;sCACCP,GAACQ,CAAAA,YAAAA,EAAAA;4BAAaC,OAASX,EAAAA,QAAAA;4BAAUY,eAAiBX,EAAAA;;sCAClDC,GAACW,CAAAA,UAAAA,EAAAA;4BAAWC,QAAS,EAAA,KAAA;oDACnBZ,GAAA,CAACC,gBAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,GAACc,CAAAA,UAAAA,EAAAA;oCAAWC,KAAM,EAAA,SAAA;oCAAUC,IAAK,EAAA,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,GAACiB,CAAAA,MAAAA,EAAAA,EAAAA;;;;sCAIPjB,GAACnB,CAAAA,cAAAA,EAAAA;4BAAeqC,OAASnB,EAAAA,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,GAAChB,CAAAA,SAAAA,EAAAA;gCAAUmB,GAAKP,EAAAA,QAAAA;gCAAUQ,GAAKP,EAAAA;;;;;8BAInCG,GAACmB,CAAAA,QAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,GAACoB,CAAAA,WAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,GAACqB,CAAAA,SAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}
1
+ {"version":3,"file":"ImagePreview.mjs","sources":["../../../../../admin/src/components/AIChat/components/ImagePreview.tsx"],"sourcesContent":["import {\n Box,\n Card,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardAction,\n CardTitle,\n IconButton,\n} from '@strapi/design-system';\nimport { Expand } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { ANIMATIONS } from './animations';\nimport { Base64Img } from './Base64Image';\nimport { FullScreenImage } from './FullScreenImage';\n\ninterface Base64ImageProps {\n imageUrl: string;\n imageName: string;\n selected?: boolean;\n onSelect?: (selected: boolean) => void;\n}\n\nconst ImageContainer = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 160px;\n width: 100%;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n cursor: pointer;\n`;\n\nconst StyledImg = styled(Base64Img)`\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n // make it appear gracefully when first rendering\n animation: ${ANIMATIONS.fadeIn} 0.3s ease;\n`;\n\nconst CardContainer = styled(Card)<{ $selected?: boolean }>`\n height: 100%;\n width: 100%;\n ${({ $selected, theme }) =>\n $selected\n ? `\n border: 2px solid ${theme.colors.primary600};\n outline: 0px solid transparent;\n `\n : `\n border: 2px solid transparent;\n outline: 1px solid ${theme.colors.neutral200};\n `}\n transition: all 0.2s ease-in-out;\n`;\n\nexport const ImagePreview = ({\n imageUrl,\n imageName,\n selected = false,\n onSelect,\n}: Base64ImageProps) => {\n return (\n <FullScreenImage.Root src={imageUrl} alt={imageName}>\n <CardContainer role=\"button\" $selected={selected}>\n <CardHeader>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n <CardAction position=\"end\">\n <FullScreenImage.Trigger>\n <IconButton label=\"Preview\" type=\"button\">\n <Expand />\n </IconButton>\n </FullScreenImage.Trigger>\n </CardAction>\n <ImageContainer onClick={onSelect}>\n <StyledImg src={imageUrl} alt={imageName} />\n </ImageContainer>\n </CardHeader>\n\n <CardBody>\n <CardContent>\n <CardTitle>{imageName}</CardTitle>\n </CardContent>\n </CardBody>\n </CardContainer>\n </FullScreenImage.Root>\n );\n};\n"],"names":["ImageContainer","styled","Box","StyledImg","Base64Img","ANIMATIONS","fadeIn","CardContainer","Card","$selected","theme","colors","primary600","neutral200","ImagePreview","imageUrl","imageName","selected","onSelect","_jsx","FullScreenImage","Root","src","alt","_jsxs","role","CardHeader","CardCheckbox","checked","onCheckedChange","CardAction","position","Trigger","IconButton","label","type","Expand","onClick","CardBody","CardContent","CardTitle"],"mappings":";;;;;;;;AAyBA,MAAMA,cAAAA,GAAiBC,MAAAA,CAAOC,GAAAA,CAAI;;;;;;;;;AASlC,CAAC;AAED,MAAMC,SAAAA,GAAYF,MAAAA,CAAOG,SAAAA,CAAU;;;;;;aAMtB,EAAEC,UAAAA,CAAWC,MAAM,CAAC;AACjC,CAAC;AAED,MAAMC,aAAAA,GAAgBN,MAAAA,CAAOO,IAAAA,CAA8B;;;EAGzD,EAAE,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE,GACrBD,YACI;AACgB,wBAAA,EAAEC,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAE9C,IAAA,CAAC,GACG;;AAEiB,yBAAA,EAAEF,KAAAA,CAAMC,MAAM,CAACE,UAAU,CAAC;AAC/C,IAAA,CAAC;;AAEL,CAAC;AAEM,MAAMC,YAAAA,GAAe,CAAC,EAC3BC,QAAQ,EACRC,SAAS,EACTC,QAAAA,GAAW,KAAK,EAChBC,QAAQ,EACS,GAAA;IACjB,qBACEC,GAAA,CAACC,gBAAgBC,IAAI,EAAA;QAACC,GAAAA,EAAKP,QAAAA;QAAUQ,GAAAA,EAAKP,SAAAA;AACxC,QAAA,QAAA,gBAAAQ,IAAA,CAACjB,aAAAA,EAAAA;YAAckB,IAAAA,EAAK,QAAA;YAAShB,SAAAA,EAAWQ,QAAAA;;8BACtCO,IAAA,CAACE,UAAAA,EAAAA;;sCACCP,GAAA,CAACQ,YAAAA,EAAAA;4BAAaC,OAAAA,EAASX,QAAAA;4BAAUY,eAAAA,EAAiBX;;sCAClDC,GAAA,CAACW,UAAAA,EAAAA;4BAAWC,QAAAA,EAAS,KAAA;oDACnBZ,GAAA,CAACC,gBAAgBY,OAAO,EAAA;AACtB,gCAAA,QAAA,gBAAAb,GAAA,CAACc,UAAAA,EAAAA;oCAAWC,KAAAA,EAAM,SAAA;oCAAUC,IAAAA,EAAK,QAAA;AAC/B,oCAAA,QAAA,gBAAAhB,GAAA,CAACiB,MAAAA,EAAAA,EAAAA;;;;sCAIPjB,GAAA,CAACnB,cAAAA,EAAAA;4BAAeqC,OAAAA,EAASnB,QAAAA;AACvB,4BAAA,QAAA,gBAAAC,GAAA,CAAChB,SAAAA,EAAAA;gCAAUmB,GAAAA,EAAKP,QAAAA;gCAAUQ,GAAAA,EAAKP;;;;;8BAInCG,GAAA,CAACmB,QAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAnB,GAAA,CAACoB,WAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAApB,GAAA,CAACqB,SAAAA,EAAAA;AAAWxB,4BAAAA,QAAAA,EAAAA;;;;;;;AAMxB;;;;"}
@@ -6,7 +6,6 @@ var designSystem = require('@strapi/design-system');
6
6
  var styledComponents = require('styled-components');
7
7
 
8
8
  const InputContext = /*#__PURE__*/ React.createContext({});
9
- const useInput = ()=>React.useContext(InputContext);
10
9
  const Root = ({ children, isLoading = false, ...props })=>{
11
10
  return /*#__PURE__*/ jsxRuntime.jsx(InputContext.Provider, {
12
11
  value: {
@@ -115,12 +114,9 @@ const Content = ({ children, disclaimer, error = false, ...props })=>{
115
114
  HeaderItem,
116
115
  Attachments,
117
116
  Content,
118
- Actions,
119
- useInput
120
- };
117
+ Actions};
121
118
 
122
119
  exports.Input = Input;
123
120
  exports.InputContext = InputContext;
124
121
  exports.Root = Root;
125
- exports.useInput = useInput;
126
122
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../../admin/src/components/AIChat/components/Input.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Input Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputContextValue {\n isLoading?: boolean;\n}\n\nexport const InputContext = createContext<InputContextValue>({});\n\nexport const useInput = () => useContext(InputContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Input Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport const Root = ({ children, isLoading = false, ...props }: InputRootProps) => {\n return (\n <InputContext.Provider\n value={{\n isLoading,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems={'flex-start'}\n width=\"100%\"\n position=\"relative\"\n {...props}\n >\n {children}\n </Flex>\n </InputContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n isThinking?: boolean;\n thinkingMessage?: string;\n}\n\nconst Header = ({ children, ...props }: HeaderProps) => {\n return (\n <Box\n position=\"absolute\"\n bottom={'102%'}\n left={0}\n right={0}\n background=\"neutral0\"\n width=\"100%\"\n {...props}\n >\n {children}\n </Box>\n );\n};\n\nconst HeaderItem = styled(Box)`\n padding: ${({ theme }) => theme.spaces[3]} 0};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Input Attachments\n * -----------------------------------------------------------------------------------------------*/\ninterface InputAttachmentsProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n}\n\nconst Attachments = ({ children, gap = 2, ...props }: InputAttachmentsProps) => {\n return (\n <Flex gap={gap} wrap=\"wrap\" paddingBottom={2} maxHeight=\"150px\" overflow=\"auto\" {...props}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst InputContainer = styled(Box)`\n outline: none;\n box-shadow: none;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.primary600)};\n box-shadow: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger600 : theme.colors.primary600}\n 0px 0px 0px 2px;\n }\n`;\n\ninterface ContentProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n disclaimer?: string;\n error?: boolean;\n}\n\nconst Content = ({ children, disclaimer, error = false, ...props }: ContentProps) => {\n return (\n <InputContainer\n background=\"neutral0\"\n hasRadius\n borderColor={error ? 'danger600' : 'neutral200'}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n width=\"100%\"\n $hasError={error}\n {...props}\n >\n <Box padding={3}>{children}</Box>\n {disclaimer && (\n <Box\n background=\"neutral100\"\n padding={[2, 3]}\n borderColor=\"neutral200\"\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderRadius={'0 0 4px 4px'}\n >\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {disclaimer}\n </Typography>\n </Box>\n )}\n </InputContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Actions\n * -----------------------------------------------------------------------------------------------*/\n\nconst Actions = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap={2}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Input = {\n Root,\n Header,\n HeaderItem,\n Attachments,\n Content,\n Actions,\n useInput,\n};\n"],"names":["InputContext","createContext","useInput","useContext","Root","children","isLoading","props","_jsx","Provider","value","Flex","direction","alignItems","width","position","Header","Box","bottom","left","right","background","HeaderItem","styled","theme","spaces","Attachments","gap","wrap","paddingBottom","maxHeight","overflow","InputContainer","$hasError","colors","danger600","primary600","Content","disclaimer","error","_jsxs","hasRadius","borderColor","borderWidth","borderStyle","padding","borderRadius","Typography","variant","textColor","Actions","justifyContent","Input"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../../admin/src/components/AIChat/components/Input.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Input Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputContextValue {\n isLoading?: boolean;\n}\n\nexport const InputContext = createContext<InputContextValue>({});\n\nexport const useInput = () => useContext(InputContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Input Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport const Root = ({ children, isLoading = false, ...props }: InputRootProps) => {\n return (\n <InputContext.Provider\n value={{\n isLoading,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems={'flex-start'}\n width=\"100%\"\n position=\"relative\"\n {...props}\n >\n {children}\n </Flex>\n </InputContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n isThinking?: boolean;\n thinkingMessage?: string;\n}\n\nconst Header = ({ children, ...props }: HeaderProps) => {\n return (\n <Box\n position=\"absolute\"\n bottom={'102%'}\n left={0}\n right={0}\n background=\"neutral0\"\n width=\"100%\"\n {...props}\n >\n {children}\n </Box>\n );\n};\n\nconst HeaderItem = styled(Box)`\n padding: ${({ theme }) => theme.spaces[3]} 0};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Input Attachments\n * -----------------------------------------------------------------------------------------------*/\ninterface InputAttachmentsProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n}\n\nconst Attachments = ({ children, gap = 2, ...props }: InputAttachmentsProps) => {\n return (\n <Flex gap={gap} wrap=\"wrap\" paddingBottom={2} maxHeight=\"150px\" overflow=\"auto\" {...props}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst InputContainer = styled(Box)`\n outline: none;\n box-shadow: none;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.primary600)};\n box-shadow: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger600 : theme.colors.primary600}\n 0px 0px 0px 2px;\n }\n`;\n\ninterface ContentProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n disclaimer?: string;\n error?: boolean;\n}\n\nconst Content = ({ children, disclaimer, error = false, ...props }: ContentProps) => {\n return (\n <InputContainer\n background=\"neutral0\"\n hasRadius\n borderColor={error ? 'danger600' : 'neutral200'}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n width=\"100%\"\n $hasError={error}\n {...props}\n >\n <Box padding={3}>{children}</Box>\n {disclaimer && (\n <Box\n background=\"neutral100\"\n padding={[2, 3]}\n borderColor=\"neutral200\"\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderRadius={'0 0 4px 4px'}\n >\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {disclaimer}\n </Typography>\n </Box>\n )}\n </InputContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Actions\n * -----------------------------------------------------------------------------------------------*/\n\nconst Actions = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap={2}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Input = {\n Root,\n Header,\n HeaderItem,\n Attachments,\n Content,\n Actions,\n useInput,\n};\n"],"names":["InputContext","createContext","Root","children","isLoading","props","_jsx","Provider","value","Flex","direction","alignItems","width","position","Header","Box","bottom","left","right","background","HeaderItem","styled","theme","spaces","Attachments","gap","wrap","paddingBottom","maxHeight","overflow","InputContainer","$hasError","colors","danger600","primary600","Content","disclaimer","error","_jsxs","hasRadius","borderColor","borderWidth","borderStyle","padding","borderRadius","Typography","variant","textColor","Actions","justifyContent","Input"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useContext, createContext } from 'react';
3
- import { Box, Flex, Typography } from '@strapi/design-system';
2
+ import { createContext } from 'react';
3
+ import { Flex, Box, Typography } from '@strapi/design-system';
4
4
  import { styled } from 'styled-components';
5
5
 
6
6
  const InputContext = /*#__PURE__*/ createContext({});
7
- const useInput = ()=>useContext(InputContext);
8
7
  const Root = ({ children, isLoading = false, ...props })=>{
9
8
  return /*#__PURE__*/ jsx(InputContext.Provider, {
10
9
  value: {
@@ -113,9 +112,7 @@ const Content = ({ children, disclaimer, error = false, ...props })=>{
113
112
  HeaderItem,
114
113
  Attachments,
115
114
  Content,
116
- Actions,
117
- useInput
118
- };
115
+ Actions};
119
116
 
120
- export { Input, InputContext, Root, useInput };
117
+ export { Input, InputContext, Root };
121
118
  //# sourceMappingURL=Input.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sources":["../../../../../admin/src/components/AIChat/components/Input.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Input Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputContextValue {\n isLoading?: boolean;\n}\n\nexport const InputContext = createContext<InputContextValue>({});\n\nexport const useInput = () => useContext(InputContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Input Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport const Root = ({ children, isLoading = false, ...props }: InputRootProps) => {\n return (\n <InputContext.Provider\n value={{\n isLoading,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems={'flex-start'}\n width=\"100%\"\n position=\"relative\"\n {...props}\n >\n {children}\n </Flex>\n </InputContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n isThinking?: boolean;\n thinkingMessage?: string;\n}\n\nconst Header = ({ children, ...props }: HeaderProps) => {\n return (\n <Box\n position=\"absolute\"\n bottom={'102%'}\n left={0}\n right={0}\n background=\"neutral0\"\n width=\"100%\"\n {...props}\n >\n {children}\n </Box>\n );\n};\n\nconst HeaderItem = styled(Box)`\n padding: ${({ theme }) => theme.spaces[3]} 0};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Input Attachments\n * -----------------------------------------------------------------------------------------------*/\ninterface InputAttachmentsProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n}\n\nconst Attachments = ({ children, gap = 2, ...props }: InputAttachmentsProps) => {\n return (\n <Flex gap={gap} wrap=\"wrap\" paddingBottom={2} maxHeight=\"150px\" overflow=\"auto\" {...props}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst InputContainer = styled(Box)`\n outline: none;\n box-shadow: none;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.primary600)};\n box-shadow: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger600 : theme.colors.primary600}\n 0px 0px 0px 2px;\n }\n`;\n\ninterface ContentProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n disclaimer?: string;\n error?: boolean;\n}\n\nconst Content = ({ children, disclaimer, error = false, ...props }: ContentProps) => {\n return (\n <InputContainer\n background=\"neutral0\"\n hasRadius\n borderColor={error ? 'danger600' : 'neutral200'}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n width=\"100%\"\n $hasError={error}\n {...props}\n >\n <Box padding={3}>{children}</Box>\n {disclaimer && (\n <Box\n background=\"neutral100\"\n padding={[2, 3]}\n borderColor=\"neutral200\"\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderRadius={'0 0 4px 4px'}\n >\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {disclaimer}\n </Typography>\n </Box>\n )}\n </InputContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Actions\n * -----------------------------------------------------------------------------------------------*/\n\nconst Actions = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap={2}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Input = {\n Root,\n Header,\n HeaderItem,\n Attachments,\n Content,\n Actions,\n useInput,\n};\n"],"names":["InputContext","createContext","useInput","useContext","Root","children","isLoading","props","_jsx","Provider","value","Flex","direction","alignItems","width","position","Header","Box","bottom","left","right","background","HeaderItem","styled","theme","spaces","Attachments","gap","wrap","paddingBottom","maxHeight","overflow","InputContainer","$hasError","colors","danger600","primary600","Content","disclaimer","error","_jsxs","hasRadius","borderColor","borderWidth","borderStyle","padding","borderRadius","Typography","variant","textColor","Actions","justifyContent","Input"],"mappings":"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"}
1
+ {"version":3,"file":"Input.mjs","sources":["../../../../../admin/src/components/AIChat/components/Input.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Input Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputContextValue {\n isLoading?: boolean;\n}\n\nexport const InputContext = createContext<InputContextValue>({});\n\nexport const useInput = () => useContext(InputContext);\n\n/* -------------------------------------------------------------------------------------------------\n * Input Root\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface InputRootProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport const Root = ({ children, isLoading = false, ...props }: InputRootProps) => {\n return (\n <InputContext.Provider\n value={{\n isLoading,\n }}\n >\n <Flex\n direction=\"column\"\n alignItems={'flex-start'}\n width=\"100%\"\n position=\"relative\"\n {...props}\n >\n {children}\n </Flex>\n </InputContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n isThinking?: boolean;\n thinkingMessage?: string;\n}\n\nconst Header = ({ children, ...props }: HeaderProps) => {\n return (\n <Box\n position=\"absolute\"\n bottom={'102%'}\n left={0}\n right={0}\n background=\"neutral0\"\n width=\"100%\"\n {...props}\n >\n {children}\n </Box>\n );\n};\n\nconst HeaderItem = styled(Box)`\n padding: ${({ theme }) => theme.spaces[3]} 0};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Input Attachments\n * -----------------------------------------------------------------------------------------------*/\ninterface InputAttachmentsProps extends React.ComponentPropsWithoutRef<typeof Flex> {\n children: React.ReactNode;\n}\n\nconst Attachments = ({ children, gap = 2, ...props }: InputAttachmentsProps) => {\n return (\n <Flex gap={gap} wrap=\"wrap\" paddingBottom={2} maxHeight=\"150px\" overflow=\"auto\" {...props}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst InputContainer = styled(Box)`\n outline: none;\n box-shadow: none;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.primary600)};\n box-shadow: ${({ theme, $hasError }) =>\n $hasError ? theme.colors.danger600 : theme.colors.primary600}\n 0px 0px 0px 2px;\n }\n`;\n\ninterface ContentProps extends React.ComponentPropsWithoutRef<typeof Box> {\n children: React.ReactNode;\n disclaimer?: string;\n error?: boolean;\n}\n\nconst Content = ({ children, disclaimer, error = false, ...props }: ContentProps) => {\n return (\n <InputContainer\n background=\"neutral0\"\n hasRadius\n borderColor={error ? 'danger600' : 'neutral200'}\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n width=\"100%\"\n $hasError={error}\n {...props}\n >\n <Box padding={3}>{children}</Box>\n {disclaimer && (\n <Box\n background=\"neutral100\"\n padding={[2, 3]}\n borderColor=\"neutral200\"\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderRadius={'0 0 4px 4px'}\n >\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {disclaimer}\n </Typography>\n </Box>\n )}\n </InputContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Actions\n * -----------------------------------------------------------------------------------------------*/\n\nconst Actions = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap={2}>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Input Compound\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Input = {\n Root,\n Header,\n HeaderItem,\n Attachments,\n Content,\n Actions,\n useInput,\n};\n"],"names":["InputContext","createContext","Root","children","isLoading","props","_jsx","Provider","value","Flex","direction","alignItems","width","position","Header","Box","bottom","left","right","background","HeaderItem","styled","theme","spaces","Attachments","gap","wrap","paddingBottom","maxHeight","overflow","InputContainer","$hasError","colors","danger600","primary600","Content","disclaimer","error","_jsxs","hasRadius","borderColor","borderWidth","borderStyle","padding","borderRadius","Typography","variant","textColor","Actions","justifyContent","Input"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.js","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Marker.tsx"],"sourcesContent":["import { Typography, Flex, Box, Link } from '@strapi/design-system';\nimport { Check, Loader, Cross, ChevronDown } from '@strapi/icons';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { styled, keyframes } from 'styled-components';\n\nimport { MarkerContent } from '../../lib/types/messages';\nimport { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../Collapsible';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n animation: ${rotate} 1s linear infinite;\n`;\n\nconst RotatingIcon = styled(Box)<{ $open: boolean }>`\n transform: rotate(${({ $open }) => ($open ? '180deg' : '0deg')});\n transition: transform ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nconst Status = ({ status }: { status: string }) => {\n switch (status) {\n case 'update':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"warning500\">\n M\n </Typography>\n );\n case 'remove':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"danger500\">\n D\n </Typography>\n );\n case 'create':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"success500\">\n N\n </Typography>\n );\n default:\n return null;\n }\n};\n\nexport const Marker = ({ title, steps, state }: MarkerContent) => {\n const getStateIcon = () => {\n switch (state) {\n case 'success':\n return <Check fill=\"success500\" />;\n case 'loading':\n return <SpinningLoader />;\n case 'error':\n return <Cross fill=\"danger500\" />;\n default:\n return null;\n }\n };\n\n return (\n <Box\n borderWidth=\"1px\"\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n hasRadius\n marginBottom={3}\n width={'336px'}\n >\n <Collapsible defaultOpen={false}>\n <CollapsibleTrigger>\n {({ open }) => (\n <Box\n padding={3}\n borderColor=\"neutral200\"\n borderWidth={open ? '0 0 1px 0' : '0'}\n borderStyle=\"solid\"\n >\n <Flex gap={2} alignItems=\"center\">\n {getStateIcon()}\n <Typography>{title}</Typography>\n <Flex marginLeft=\"auto\">\n <RotatingIcon as={ChevronDown} $open={open} />\n </Flex>\n </Flex>\n </Box>\n )}\n </CollapsibleTrigger>\n <CollapsibleContent>\n <Flex gap={3} padding={3} direction=\"column\">\n {steps.map((step) => (\n <Flex\n key={step.id}\n gap={2}\n justifyContent=\"space-between\"\n width=\"100%\"\n padding={[0, 1]}\n >\n {/* <Typography>{step.description}</Typography> */}\n {step.link ? (\n <Link tag={RouterLink} to={step.link}>\n <Typography>{step.description}</Typography>\n </Link>\n ) : (\n <Typography>{step.description}</Typography>\n )}\n <Status status={step.status} />\n </Flex>\n ))}\n </Flex>\n </CollapsibleContent>\n </Collapsible>\n </Box>\n );\n};\n"],"names":["rotate","keyframes","SpinningLoader","styled","Loader","RotatingIcon","Box","$open","theme","motion","timings","easings","easeOutQuad","Status","status","_jsx","Typography","fontWeight","textColor","Marker","title","steps","state","getStateIcon","Check","fill","Cross","borderWidth","borderColor","borderStyle","hasRadius","marginBottom","width","_jsxs","Collapsible","defaultOpen","CollapsibleTrigger","open","padding","Flex","gap","alignItems","marginLeft","as","ChevronDown","CollapsibleContent","direction","map","step","justifyContent","link","Link","tag","RouterLink","to","description","id"],"mappings":"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"}
1
+ {"version":3,"file":"Marker.js","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Marker.tsx"],"sourcesContent":["import { Typography, Flex, Box, Link } from '@strapi/design-system';\nimport { Check, Loader, Cross, ChevronDown } from '@strapi/icons';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { styled, keyframes } from 'styled-components';\n\nimport { MarkerContent } from '../../lib/types/messages';\nimport { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../Collapsible';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst SpinningLoader = styled(Loader)`\n animation: ${rotate} 1s linear infinite;\n`;\n\nconst RotatingIcon = styled(Box)<{ $open: boolean }>`\n transform: rotate(${({ $open }) => ($open ? '180deg' : '0deg')});\n transition: transform ${({ theme }) => theme.motion.timings['200']}\n ${({ theme }) => theme.motion.easings.easeOutQuad};\n`;\n\nconst Status = ({ status }: { status: string }) => {\n switch (status) {\n case 'update':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"warning500\">\n M\n </Typography>\n );\n case 'remove':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"danger500\">\n D\n </Typography>\n );\n case 'create':\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"success500\">\n N\n </Typography>\n );\n default:\n return null;\n }\n};\n\nexport const Marker = ({ title, steps, state }: MarkerContent) => {\n const getStateIcon = () => {\n switch (state) {\n case 'success':\n return <Check fill=\"success500\" />;\n case 'loading':\n return <SpinningLoader />;\n case 'error':\n return <Cross fill=\"danger500\" />;\n default:\n return null;\n }\n };\n\n return (\n <Box\n borderWidth=\"1px\"\n borderColor=\"neutral200\"\n borderStyle=\"solid\"\n hasRadius\n marginBottom={3}\n width={'336px'}\n >\n <Collapsible defaultOpen={false}>\n <CollapsibleTrigger>\n {({ open }) => (\n <Box\n padding={3}\n borderColor=\"neutral200\"\n borderWidth={open ? '0 0 1px 0' : '0'}\n borderStyle=\"solid\"\n >\n <Flex gap={2} alignItems=\"center\">\n {getStateIcon()}\n <Typography>{title}</Typography>\n <Flex marginLeft=\"auto\">\n <RotatingIcon as={ChevronDown} $open={open} />\n </Flex>\n </Flex>\n </Box>\n )}\n </CollapsibleTrigger>\n <CollapsibleContent>\n <Flex gap={3} padding={3} direction=\"column\">\n {steps.map((step) => (\n <Flex\n key={step.id}\n gap={2}\n justifyContent=\"space-between\"\n width=\"100%\"\n padding={[0, 1]}\n >\n {/* <Typography>{step.description}</Typography> */}\n {step.link ? (\n <Link tag={RouterLink} to={step.link}>\n <Typography>{step.description}</Typography>\n </Link>\n ) : (\n <Typography>{step.description}</Typography>\n )}\n <Status status={step.status} />\n </Flex>\n ))}\n </Flex>\n </CollapsibleContent>\n </Collapsible>\n </Box>\n );\n};\n"],"names":["rotate","keyframes","SpinningLoader","styled","Loader","RotatingIcon","Box","$open","theme","motion","timings","easings","easeOutQuad","Status","status","_jsx","Typography","fontWeight","textColor","Marker","title","steps","state","getStateIcon","Check","fill","Cross","borderWidth","borderColor","borderStyle","hasRadius","marginBottom","width","_jsxs","Collapsible","defaultOpen","CollapsibleTrigger","open","padding","Flex","gap","alignItems","marginLeft","as","ChevronDown","CollapsibleContent","direction","map","step","justifyContent","link","Link","tag","RouterLink","to","description","id"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Box, Flex, Typography, Link } from '@strapi/design-system';
3
- import { Loader, ChevronDown, Cross, Check } from '@strapi/icons';
3
+ import { ChevronDown, Cross, Check, Loader } from '@strapi/icons';
4
4
  import { Link as Link$1 } from 'react-router-dom';
5
- import { keyframes, styled } from 'styled-components';
5
+ import { styled, keyframes } from 'styled-components';
6
6
  import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../Collapsible.mjs';
7
7
 
8
8
  const rotate = keyframes`