@strapi/content-type-builder 5.37.1 → 5.38.1
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.
- package/dist/admin/components/AIChat/Chat.js.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +2 -2
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Alert.js.map +1 -1
- package/dist/admin/components/AIChat/components/Alert.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/AnimatedBox.js.map +1 -1
- package/dist/admin/components/AIChat/components/AnimatedBox.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.js.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/AttachmentPreview.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.js +2 -6
- package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.mjs +3 -7
- package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.js.map +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.mjs +1 -1
- package/dist/admin/components/AIChat/components/ImagePreview.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Input.js +1 -5
- package/dist/admin/components/AIChat/components/Input.js.map +1 -1
- package/dist/admin/components/AIChat/components/Input.mjs +4 -7
- package/dist/admin/components/AIChat/components/Input.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Marker.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs +2 -2
- package/dist/admin/components/AIChat/components/Messages/Marker.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/ResizableTextArea.js.map +1 -1
- package/dist/admin/components/AIChat/components/ResizableTextArea.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -1
- package/dist/admin/components/AIChat/components/SimpleMenu.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.js.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/animations.js.map +1 -1
- package/dist/admin/components/AIChat/components/animations.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.js.map +1 -1
- package/dist/admin/components/AIChat/components/icons/FigmaIcon.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/icons/StopIcon.js.map +1 -1
- package/dist/admin/components/AIChat/components/icons/StopIcon.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAttachments.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAttachments.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useChatTitle.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useChatTitle.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useLastSeenSchemas.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useTranslations.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useTranslations.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.js.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/misc.js.map +1 -1
- package/dist/admin/components/AIChat/lib/misc.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
- package/dist/admin/components/ApplyConditionButton.js.map +1 -1
- package/dist/admin/components/ApplyConditionButton.mjs.map +1 -1
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -1
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeList.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeList.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldsList.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/OptionBoxWrapper.js.map +1 -1
- package/dist/admin/components/AttributeOptions/OptionBoxWrapper.mjs.map +1 -1
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AttributeRow.mjs +1 -1
- package/dist/admin/components/AttributeRow.mjs.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -1
- package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -1
- package/dist/admin/components/CTBSession/sessionContext.js.map +1 -1
- package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentIcon/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/ComponentRow.js.map +1 -1
- package/dist/admin/components/ComponentRow.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +2 -2
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/undoRedo.js.map +1 -1
- package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -1
- package/dist/admin/components/DataManager/useDataManager.js.map +1 -1
- package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +1 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/ExitPrompt.js.map +1 -1
- package/dist/admin/components/ExitPrompt.mjs.map +1 -1
- package/dist/admin/components/Footers.js.map +1 -1
- package/dist/admin/components/Footers.mjs +2 -2
- package/dist/admin/components/Footers.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/attributeOptions.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/attributeOptions.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/commonBaseForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/commonBaseForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/form.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/form.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/nameField.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/nameField.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/componentField.js.map +1 -1
- package/dist/admin/components/FormModal/component/componentField.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.js.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/dynamiczoneForm.js.map +1 -1
- package/dist/admin/components/FormModal/dynamiczoneForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/createUid.js.map +1 -1
- package/dist/admin/components/FormModal/utils/createUid.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
- package/dist/admin/components/FormModalEndActions.js.map +1 -1
- package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -1
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +1 -5
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +1 -5
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
- package/dist/admin/components/IconPicker/constants.js.map +1 -1
- package/dist/admin/components/IconPicker/constants.mjs.map +1 -1
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +1 -1
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/PluralName.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/Components.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SelectComponents.js.map +1 -1
- package/dist/admin/components/SelectComponents.mjs.map +1 -1
- package/dist/admin/components/SelectDateType.js.map +1 -1
- package/dist/admin/components/SelectDateType.mjs.map +1 -1
- package/dist/admin/components/SelectNumber.js.map +1 -1
- package/dist/admin/components/SelectNumber.mjs.map +1 -1
- package/dist/admin/components/SingularName.js.map +1 -1
- package/dist/admin/components/SingularName.mjs.map +1 -1
- package/dist/admin/components/Status.js.map +1 -1
- package/dist/admin/components/Status.mjs.map +1 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/components/TextareaEnum.js.map +1 -1
- package/dist/admin/components/TextareaEnum.mjs.map +1 -1
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/icons/Curve.js.map +1 -1
- package/dist/admin/icons/Curve.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +1 -1
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/reducers.js +4 -4
- package/dist/admin/reducers.js.map +1 -1
- package/dist/admin/reducers.mjs +4 -4
- package/dist/admin/reducers.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +36 -3
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +36 -3
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/utils/conditions.js.map +1 -1
- package/dist/admin/utils/conditions.mjs.map +1 -1
- package/dist/admin/utils/findAttribute.js.map +1 -1
- package/dist/admin/utils/findAttribute.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getAttributeDisplayedType.js.map +1 -1
- package/dist/admin/utils/getAttributeDisplayedType.mjs.map +1 -1
- package/dist/admin/utils/getMaxDepth.js.map +1 -1
- package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
- package/dist/admin/utils/makeUnique.js.map +1 -1
- package/dist/admin/utils/makeUnique.mjs.map +1 -1
- package/dist/admin/utils/nameToSlug.js.map +1 -1
- package/dist/admin/utils/nameToSlug.mjs.map +1 -1
- package/dist/admin/utils/parseDateValue.js.map +1 -1
- package/dist/admin/utils/parseDateValue.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/timeFormat.js.map +1 -1
- package/dist/admin/utils/timeFormat.mjs.map +1 -1
- package/dist/admin/utils/toRegressedEnumValue.js.map +1 -1
- package/dist/admin/utils/toRegressedEnumValue.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/builder.js.map +1 -1
- package/dist/server/controllers/builder.mjs.map +1 -1
- package/dist/server/controllers/component-categories.js.map +1 -1
- package/dist/server/controllers/component-categories.mjs.map +1 -1
- package/dist/server/controllers/components.js.map +1 -1
- package/dist/server/controllers/components.mjs +1 -1
- package/dist/server/controllers/components.mjs.map +1 -1
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +1 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/schema.js.map +1 -1
- package/dist/server/controllers/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/component-category.js.map +1 -1
- package/dist/server/controllers/validation/component-category.mjs.map +1 -1
- package/dist/server/controllers/validation/component.js.map +1 -1
- package/dist/server/controllers/validation/component.mjs +1 -1
- package/dist/server/controllers/validation/component.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/controllers/validation/data-transform.js.map +1 -1
- package/dist/server/controllers/validation/data-transform.mjs.map +1 -1
- package/dist/server/controllers/validation/model-schema.js.map +1 -1
- package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +1 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +0 -1
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +1 -2
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/middlewares/is-development-mode.js.map +1 -1
- package/dist/server/middlewares/is-development-mode.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/builder.js.map +1 -1
- package/dist/server/services/builder.mjs.map +1 -1
- package/dist/server/services/component-categories.js.map +1 -1
- package/dist/server/services/component-categories.mjs +1 -1
- package/dist/server/services/component-categories.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs +1 -1
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/constants.js.map +1 -1
- package/dist/server/services/constants.mjs.map +1 -1
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +1 -1
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +2 -2
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +3 -3
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +1 -1
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/utils/attributes.js.map +1 -1
- package/dist/server/utils/attributes.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/utils/typeguards.js.map +1 -1
- package/dist/server/utils/typeguards.mjs.map +1 -1
- package/package.json +15 -10
|
@@ -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":";;;;;;;;;AAkBA,MAAMA,6BAAeC,
|
|
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 {
|
|
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":";;;;;;;AAkBA,MAAMA,6BAAeC,
|
|
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,
|
|
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 {
|
|
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,
|
|
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","
|
|
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 {
|
|
3
|
-
import {
|
|
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
|
|
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","
|
|
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":";;;;;;;;;AAQA,MAAMA,MAAAA,GAASC,0BAAS;;;;;;;AAOxB,CAAC;AAED,MAAMC,cAAAA,GAAiBC,
|
|
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 {
|
|
3
|
+
import { ChevronDown, Cross, Check, Loader } from '@strapi/icons';
|
|
4
4
|
import { Link as Link$1 } from 'react-router-dom';
|
|
5
|
-
import {
|
|
5
|
+
import { styled, keyframes } from 'styled-components';
|
|
6
6
|
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../Collapsible.mjs';
|
|
7
7
|
|
|
8
8
|
const rotate = keyframes`
|